51单片机实现简单的电子秒表显示器
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #define LED P2
- char led_mod[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; //显示字模
- sbit Ws = P3^0; //十位码管位选
- sbit Wg = P3^1; //个位码管位选
- bit Y = 0; //长定时溢出标记
- unsigned char t = 0; //定时溢出次数
- unsigned char count; //60秒计数
- void Timeshow(void); //数码管显示函数声明
- void delay(unsigned char time); //延时函数声明
- void main()
- {
- TMOD = 0x01; //T0定时器方式1
- TH0 = 0x3c; //装初值,定时50ms
- TL0 = 0xb0;
- ET0 = 1; //开定时器0中断
- EA = 1; //开总中断
- TR0 = 1; //启动定时器
- while(1)
- {
- if(Y)
- {
- Y = 0; //清溢出标志位
- count++;
- if(count>=60)
- count = 0; //计数至60时重新从0计起
- }
- Timeshow();
- }
- }
- void Timeshow(void)
- {
- unsigned char shi, ge;
- // unsigned char j;
- shi = count/10; //计数十位
- ge = count%10; //计数个位
- Ws = 0;
- Wg = 1; //个位数码管使能
- LED = ~led_mod[ge];
-
- delay(10);
- // j = 10; //扫描间隔时间设定
- // while(j--);
- LED = 0xff; //数码管清零,消影作用
- delay(10);
- Ws = 1; //十位数码管使能
- Wg = 0;
- LED = ~led_mod[shi];
- delay(10);
- // j = 10; //扫描间隔时间设定
- // while(j--);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
电子秒表显示器.zip
(60.28 KB, 下载次数: 32)
|