求一段用51单片机来实现60个led灯循环点亮的程序,没过一秒点亮一盏(就是模拟时钟的秒针)

2024-11-22 09:08:24
推荐回答(5个)
回答1:

51单片机来实现60个led灯循环点亮的程序://************************************汇编程序:
#include
#define uchar unsigned char
#define uint unsigned int
uchar data count=0;
bit flag=0;
//*********主函数*****************
void main(void)
{
uchar i=0,k=0xfe;
TMOD=0x01;
TH0=0x4c;TL0=0x00;//定时50ms
EA=1;ET0=1;TR0=1;
while(1)
{
if(flag==1){k=k<<1|0x01;flag=0;i++;}
if(i==8){i=0;k=0xfe;}
P1=k;
}
}
//*********中断函数*****************//0111 1111
void dy1s(void) interrupt 1 using 1
{
TH0=0x4c;TL0=0x00;//定时50ms
count++;
if(count==20){flag=1;count=0;} //1s到了
}。C语言程序编写。
void main() { P1=0XFF; /*定义初始状态为全灭*/while(1) { delay(2000); P1=0X7e; delay(2000); P1=0Xbd; delay(2000);P1=0Xdb;delay(2000); P1=0Xe7; delay(2000); P1=0Xdb;delay(2000); P1=0Xbd;delay(2000); P1=0X7e; delay(2000); P1=0XFF; /********此循环使得发光二极管按照07,16,25,34,43,52,61,70的顺序循环交替两两点亮*******/} /*end while*/}/*end main*/

回答2:

说一下思路 你自己编

定义一个数data 范围 00-59 到60就送0

程序中使用查表

data=0 输出 00,00,00,00,00,00,00,01
data=1 输出 00,00,00,00,00,00,00,02
data=2 输出 00,00,00,00,00,00,00,04
data=3 输出 00,00,00,00,00,00,00,08
......
data=59 输出 08,00,00,00,00,00,00,00

回答3:

多用几个模拟开关CD4051,或者是138译码器就行啦~!

回答4:

要用到I/O口扩展的

回答5:

课程设计??把题目写出来