導航:首頁 > 操作系統 > 單片機用語言寫雙位數碼管

單片機用語言寫雙位數碼管

發布時間:2022-08-30 12:43:09

1. 單片機中二位數碼管的顯示,怎樣用c語言寫一段從0到99的程序啊

公陽,P0.2,P0.3 分別通過PNP管接個位,十位數碼管公共端,P1口輸出數據,都是低電平有效
#include <reg51.h>
sbit shi=P0^3; //十位公共極
sbit ge=P0^2; //個位公共極
#define Out P1 //數據輸出端
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽
// 實際顯示 0 1 2 3 4 5 6 7 8 9

//延時----------------------------
Delay(unsigned int t)
{
while(t--);
}
//主程序--------------------------
main()
{

unsigned char i=j=0;
while(1) //循環顯示
{
for(i=0;i<200;i++)
{
Out=tab[j%10];
ge=0;
Delay(1000);
ge=1;

Out=tab[j/10];
shi=0;
Delay(1000);
shi=1;
}
j++;
}
}

2. 怎樣在單片機中用C語言編寫一個2位數碼管顯示0到99。管腳接線圖如下:

//8欄位定義
//先進行宏定義,然後進行查表,輸出就OK了
unsigned int i ;
#define SEGA 0x04
#define SEGB 0x08
#define SEGC 0x10
#define SEGD 0x80
#define SEGE 0x20
#define SEGF 0x02
#define SEGG 0x01//
#define SEGDP 0x40//
#define NSEGG 0x7f//無解
#define NUM_0 SEGA + SEGB + SEGC + SEGD + SEGE + SEGF
#define NUM_1 SEGB + SEGC
#define NUM_2 SEGA + SEGB + SEGG + SEGE + SEGD
#define NUM_3 SEGA + SEGB + SEGC + SEGD + SEGG
#define NUM_4 SEGF + SEGG + SEGB + SEGC
#define NUM_5 SEGF + SEGG + SEGC + SEGD + SEGA
#define NUM_6 SEGA + SEGF + SEGE + SEGD + SEGC + SEGG
#define NUM_7 SEGA + SEGB + SEGC
#define NUM_8 SEGA + SEGB + SEGC + SEGD + SEGE + SEGF + SEGG
#define NUM_9 SEGA + SEGB + SEGC + SEGD + SEGF + SEGG
const unsigned char tNUMBER[] = {NUM_0,NUM_1,NUM_2,NUM_3,NUM_4,NUM_5,NUM_6,NUM_7,NUM_8,NUM_9};
if(i==9)
{P2 = tNUMBER[9];}
else
{P2 = 0x00;}
具體問題你也描述的不詳細,所以只能寫到這個地方了。

3. 利用單片機實現兩位數碼管顯示功能。

DAT EQU 30H

SCANLED EQU 32H

FSDAT EQU 33H

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR

ORG 0030H

MAIN:

MOV SP,#5FH

MOV TMOD,#01H

MOV TH0,#0F4H

MOV TL0,#048H

MOV P2,#00H

MOV SCANLED,#0

MOV 30H,#5

MOV 31H,#0

MOV FSDAT,#50

SETB EA

SETB ET0

SETB TR0

LOOP:

JB P3.0,LOOP1

JNB P3.0,$

INC FSDAT

MOV A,FSDAT

CJNE A,#100,LOOP01

LOOP01:

JC LOOP02

MOV FSDAT,#99

LOOP02:

MOV A,FSDAT

MOV B,#10

DIV AB

MOV 30H,A

MOV 31H,B

SJMP LOOP

LOOP1:

JB P3.1,LOOP2

JNB P3.1,$

MOV A,FSDAT

JZ LOOP11

DEC FSDAT

LOOP11:

MOV A,FSDAT

MOV B,#10

DIV AB

MOV 30H,A

MOV 31H,B

SJMP LOOP

LOOP2:

JB P3.2,LOOP

JNB P3.2,$

MOV FSDAT,#50

MOV 30H,#5

MOV 31H,#0

SJMP LOOP

;--------------------

T0ISR:

PUSH ACC

CLR TR0

MOV TH0,#0F4H

MOV TL0,#48H

SETB TR0

MOV DPTR,#LEDTAB1

T000:

MOV R0,#DAT

MOV A,SCANLED

ADD A,R0

MOV R0,A

MOV A,SCANLED

JNZ T001

MOV P2,#02H

SJMP T0DIS

T001:

MOV P2,#01H

T0DIS:

MOV A,@R0

MOVC A,@A+DPTR

CPL A

MOV P0,A

INC SCANLED

MOV A,SCANLED

ANL A,#01H

MOV SCANLED,A

POP ACC

RETI

;--------------------

LEDTAB1:

DB 0C0H ;"0" 00H

DB 0F9H ;"1" 01H

DB 0A4H ;"2" 02H

DB 0B0H ;"3" 03H

DB 99H ;"4" 04H

DB 92H ;"5" 05H

DB 82H ;"6" 06H

DB 0F8H ;"7" 07H

DB 80H ;"8" 08H

DB 90H ;"9" 09H

DB 88H ;"A" 0AH

DB 83H ;"B" 0BH

DB 0C6H ;"C" 0CH

DB 0A1H ;"D" 0DH

DB 86H ;"E" 0EH

DB 8EH ;"F" 0FH

DB 0FFH ;" " 10H

;--------------------

4. 51單片機雙位共陽數碼管的匯編語言的動態顯示

簡單來說比如顯示01,那麼程序如下,只要循環調用這個子程序就可以
DISPLAY:
SETB P2.0
CLR P2.1
MOV P0,#0C0H
LCALL DELAY
CLR P2.0
SETB P2.1
MOV P0,#06H
LCALL DELAY
RET

5. 急求:單片機程序:兩位數碼管記秒【加分】;用匯編語言編寫

我前幾天剛做一個,用的是51單片機,12MHZ的晶振,2個共陰的數碼管,

ORG 0030H
MAIN:JB P3.7,$
LCALL DELAY
JB P3.7,$

STA: MOV R1,#00
STA1:LCALL DELAY1S
INC R1
MOV A,R1
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
MOV A,R1
JNB P3.7,S1
CJNE A,#99,STA1
SJMP STA
S1: JB P3.7,$
LCALL DELAY
JB P3.7,$
MOV P1,#00H
MOV P2,#00H
LCALL DELAY1S
SJMP MAIN
DELAY: MOV R2,#20
D3: MOV R3,#248
DJNZ R3,$
DJNZ R2,D3
RET
DELAY1S:MOV R5,#100
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET

TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
圖沒傳上來 去我空間里找吧http://hi..com/%B5%E7%D7%D3%B0%AE%BA%C3%D5%DF%D1%BE%D1%BE/blog/item/c92af7ce86941935f8dc6110.html

6. 求51單片機控制2個數碼管的程序

兩只數碼管段碼分別由P0,P2輸出控制,P0是十位,P2是個位。P3.2,P3.4分別接兩只按鍵,P32.清0,P3.4計數。
以上程序來自《單片機C語言程序設計實訓100例--基於8051+Proteus模擬》
#include
<reg52.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
uchar
DSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
uchar
Count
=
0;
void
main()
{
P0
=
0x00;
P2
=
0x00;
TMOD
=
0x06;
TH0=255;
TL0=255;
ET0=1;
EX0=1;
EA
=1;
IP
=0x02;
IT0=1;
TR0=1;
while(1)
{
P0
=
DSY_CODE[Count/10];
P2
=
DSY_CODE[Count%10];
}
}
void
Clear_Counter()
interrupt
0
{
Count
=
0;
}
void
Key_Counter()
interrupt
1
{
Count
=
(Count
+
1)
%100;
}

7. 單片機用匯編寫兩個數碼管顯示0到99循環的程序

1、新建項目,做好准備。

8. 單片機求助,用匯編語言寫一個雙位數碼管0到99循環

給你做一個C的吧
#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,dat,cnt=0;
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
if(number>1)number=0;
switch(number)
{
case 0:P2=0x02;P0=distab[dat/10];
break;
case 1:P2=0x01;P0=distab[dat%10];
break;
default:break;
}
}
void t1isr() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
cnt++;
if(cnt>=20)
{
dat++;
dat%=100;
}
}
main()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
ET1=1;
TR0=1;
ET0=1;
EA=1;
while(1);
}

9. 兩位數碼管連在51單片機上,怎樣用匯編語言編寫,求程序非常感謝

;一位數碼管連在51單片機上,按鍵後數碼管加1,按一下加1. SP1 EQU P3.2 ORG 0000H MOV 30H, #3FH ;0 MOV 31H, #06H ;1 MOV 32H, #5BH ;2 MOV 33H, #4FH ;3 MOV 34H, #66H ;4 MOV 35H, #6DH ;5 MOV 36H, #7DH ;6 MOV 37H, #07H ;7 MOV 38H, #7FH ;8 MOV 39H, #6FH ;9 M_0: MOV R0, #30H DISP: MOV P2, @R0 WT: JB SP1, $ MOV R6, #40 DJNZ R7, $ DJNZ R6, $ - 2 JB SP1, WT JNB SP1, $ INC R0 CJNE R0, #3AH, DISP SJMP M_0 END

10. C語言 單片機編寫兩位數碼管不用定時器延時1s,怎麼編

void delay(void) //延時子程序
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
具體延時時間要根據你單片機的速度,晶振頻率,指令計算

閱讀全文

與單片機用語言寫雙位數碼管相關的資料

熱點內容
php能寫前端嗎 瀏覽:3
伺服器如何更改raid模式 瀏覽:82
方舟伺服器怎麼導出來 瀏覽:606
手機顯示伺服器異常什麼鬼 瀏覽:377
新聞伺服器的網址是什麼 瀏覽:665
程序員年底招人 瀏覽:311
廣發app怎麼查房貸 瀏覽:856
安卓手機怎麼下土豆 瀏覽:913
只有一個app顯示網路異常怎麼回事 瀏覽:986
解壓玩具是水寶寶 瀏覽:817
壓縮機保護怎麼解決 瀏覽:944
單片機簡易電子時鍾 瀏覽:402
pdf影印版 瀏覽:689
單片機的中斷技術 瀏覽:626
表格加密才能打開 瀏覽:39
多態可以提高編譯可靠性嗎 瀏覽:599
拼好魔方的app怎麼下載 瀏覽:503
江蘇金稅盤測試伺服器地址是什麼 瀏覽:607
螺桿式壓縮冷凝機組 瀏覽:299
p在單片機里什麼意思 瀏覽:25