AT89c51单片机程序控制两个数码管显示00-59秒表的程序要怎么编啊?

AT89c51单片机程序控制两个数码管显示00-59秒表的程序要怎么编啊?,第1张

display(second)子函数与两个数码管的连接方式有关

void main(void )//主程序

{

TMOD=0x01// 定时器1工作方式一

ET0=1

EA=1

TH0=(65536-10000)/256//定时10ms

TL0=(65536-10000)%256

TR0=0//上电先不启动

while(1)

{

if(key1==0)//判断按键是否按下

{

Delay1ms(10)//延时消抖

if(key1==0)

{

while(key1==0)//等待按键抬起

TR0=!TR0//启动或停止

}

}

if(key2==0&&TR0==0)//判断按键是否按下及是否在走时

{

Delay1ms(10)//延时消抖

if(key2==0)

{

while(key2==0)//等待按键抬起

a=0second=0

}

}

display(second)

}

}

//中断子程序

void Timer0(void) interrupt 1

{

TH0=(65536-10000)/256

TL0=(65536-10000)%256

a++

if(a==100 ) second++

if(second==60) second=0

}

假设8个数码管公共端均接地,同时显示1-9

#include

#include

#define

uchar

unsigned

char

#define

uint

unsigned

int

uchar

code

dsy_code[]=

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff

}

void

delayms(uint

x)

{

uchar

t

while(x--)

for(t=120t>0t--)

}

void

main()

{

uchar

i=0

p0=0x00

while(1)

{

p0=~dsy_code[i]

i=(i+1)%10/*显示0-9*/

delayms(200)

}

}

下面程序从左到右显示

#include

#include

#define

uchar

unsigned

char

#define

uint

unsigned

int

uchar

code

dsy_code[]=

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

}

void

delayms(uint

x)

{

uchar

i

while(x--)

{

for(i=200i>0i--)

}

}

void

main()

{

uchar

i,k=0x80

while(1)

{

for(i=8i>0i--)

{

p2=0xff

k=_crol_(k,1)

p0=dsy_code[8-i]

p2=k

delayms(3)

}

}

}


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

原文地址: https://outofmemory.cn/yw/11066532.html

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

发表评论

登录后才能评论

评论列表(0条)

保存