求单片机0~99共阳数码数码管显示用C语言编写的程序谢谢!

求单片机0~99共阳数码数码管显示用C语言编写的程序谢谢!,第1张

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

uchar num,count,ge,shi;

void delayxms(uint);

void display(uchar,uchar);

uchar code table[]={0xc0,0xf9,0xa4,0xb0,

    0x99,0x92,0x82,0xf8,

0x80,0x98};

void main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

while(1)

{

display(shi,ge);

}

}

void T0_time() interrupt 1

{

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

count++;

if(count==5)

{

count=0;

num++;

if(num==100)

num=0;

shi=num/10;

ge=num%10;

}

}

void delayxms(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void display(uchar shi,uchar ge)

{

 P2=0x02;

 P0=table[ge];

 delayxms(20);

 P2=0x01;

 P0=table[shi];

 delayxms(20);

}

程序有点小区别。首先段码不同, 还有就是位选共阴是低电平,共阳是高电平。

共阴: 0x3F,/0/

0x06,/1/

0x5B,/2/

0x4F,/3/

0x66,/4/

0x6D,/5/

0x7D,/6/

0x07,/7/

0x7F,/8/

0x6F,/9/

共阳:

0xC0,/0/

0xF9,/1/

0xA4,/2/

0xB0,/3/

0x99,/4/

0x92,/5/

0x82,/6/

0xF8,/7/

0x80,/8/

0x90,/9/

ORG 0000H

JMP MAIN

ORG 0100H

MAIN: MOV DPTR,#TAB

MOV 1,#00H

DISP: MOV A,R1

MOVC A,@A+DPTR

MOV P1,A

LCALL DELAY

INC R1

CJNE R1,#0AH,DISP ;循环显示0-9这10个数据

SJMP $

TAB: DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H ;共阳码表

DELAY: MOV R4,#2 ;延时子程序

DLY100MS: MOV R5,#200

DLY5MS: MOV R6,#250

LOOP: DJNZ R6,LOOP

DJNZ R5,DLY5MS

DJNZ R4,DLY100MS

RET

以上就是关于求单片机0~99共阳数码数码管显示用C语言编写的程序谢谢!全部的内容,包括:求单片机0~99共阳数码数码管显示用C语言编写的程序谢谢!、共阴跟共阳数码管,程序是不是一样的只是连线不同吗、上电复位后P1口所接的一个共阳极数码管循环显示数字0~9 帮我编一个单片机的程序,谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10077238.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存