51單片機實現簡單的電子秒表顯示器
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (12.78 KB, 下載次數: 86)
下載附件
2017-12-1 03:33 上傳
0.png (15.84 KB, 下載次數: 87)
下載附件
2017-12-1 03:32 上傳
單片機源程序如下:
- #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, 下載次數: 33)
2017-11-30 18:36 上傳
點擊文件名下載附件
電子秒表顯示器 下載積分: 黑幣 -5
|