导航:首页 > 操作系统 > 单片机用语言写双位数码管

单片机用语言写双位数码管

发布时间: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--);
}
具体延时时间要根据你单片机的速度,晶振频率,指令计算

阅读全文

与单片机用语言写双位数码管相关的资料

热点内容
linuxwireshark使用教程 浏览:656
手机访问阿里服务器地址 浏览:678
程序员可以干什么 浏览:70
绩效考核权重分配算法 浏览:524
android应用logo 浏览:898
光遇安卓服墓土商店什么时候开 浏览:566
月收益翻倍的源码 浏览:638
asop源码放在哪里 浏览:989
电脑服务器密码怎么找 浏览:574
jdp转换pdf 浏览:749
把pdf导入iphone 浏览:508
米哈游租赁的云服务器是哪个 浏览:524
android直接打电话 浏览:1016
ubuntu停止命令 浏览:285
cnc攻丝编程 浏览:869
换个手机号码app怎么注册 浏览:320
怎么下载小猴口算app 浏览:116
轻链app的货怎么样 浏览:626
电脑里的u盘如何加密 浏览:372
我的世界全部版本服务器下载地址 浏览:50