|
程序和仿真
0.png (16.45 KB, 下載次數: 69)
下載附件
2015-12-24 22:22 上傳
- /********************************************************************************
- *程序名: 數碼管99秒秒表 *
- *編寫人: 馬飛龍 *
- *編寫時間: 2015.1.24 *
- *硬件支持: stc89c52 11.0592MHz *
- *接口說明: P0口接數碼管段選,P2.0個位 P2.1十位 *
- *修改日志: *
- * NO.1-2015.1.28 *
- 1)修改通電后不操作就開始計時的錯誤; *
- 2)給數碼管顯示加消影; *
- ********************************************************************************/
- #include <reg52.h>
- #define uchar unsigned char //宏定義 用uchar代替 unsigned char
- #define uint unsigned int
- /*引腳定義*/
- sbit START=P1^2; //開始、停止鍵 低電平有效
- sbit RST=P1^3; //復位鍵
- /*定義全局變量*/
- uint time; //時間變量
- /*數碼管字模,對應 0-9*/
- uchar code table[]={ // code 放在ROM
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f};
- /*延時函數*/
- void Delay(uint ms) //毫秒級延時函數
- {
- uint i, j;
- for(i =ms; i>0; i--)
- for(j =110; j>0; j--);
- }
- /*中斷*/
- void time0() interrupt 1
- {
- uchar tt;
- TH0 = 0x4c; //晶振11.0592Mhz
- TL0 = 0x00; //若用12Mhz晶振 則改為 TH0=0x3c;TL0=0xb0;
- tt++;
- if(tt == 20)
- {
- time++;
- if(time==99) //到99后在從00開始
- time = 0;
- tt = 0;
- }
- }
- /*顯示函數*/
- void Display(uchar sum)
- {
- uchar shi, ge;
- P0 = 0x00; //消影
- P2 = 0x00;
- shi = table[sum/10];
- P0 = shi;
- P2 = 0xfd;
- Delay(5);
- P0 = 0x00; //消影
- P2 = 0x00;
- ge = table[sum%10];
- P0 = ge;
- P2 = 0xfe;
- Delay(5);
- }
- /*按鍵掃描*/
- void keyscan()
- {
- if(START==0) //開始、停止
- {
- Delay(10); //消抖
- if(START==0)
- {
- TR0 =!TR0;
- while(!START) Display(time);
- }
- }
- if(RST==0) //復位
- {
- Delay(10); //消抖
- if(RST==0)
- {
- time=0;
- TR0=0;
- while(!RST)Display(time);
- }
- }
- }
- //主函數
- void main()
- {
- EA = 1; //中斷開關
- ET0 = 1;
- TMOD = 0x01;
- TH0 = 0x4c; //晶振11.0592Mhz
- TL0 = 0x00; //若用12Mhz晶振 則改為 TH0=0x3c;Tl0=0xb0;
- TR0 = 0;
- while(1)
- {
- keyscan();
- Display(time);
- }
- }
復制代碼
|
-
-
任務一丨秒表.rar
2015-9-8 17:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
65.24 KB, 下載次數: 75, 下載積分: 黑幣 -5
數碼管 單片機 秒表
評分
-
查看全部評分
|