這是我上個月做的秒表課題
用了一天的時間
附件里面包含了秒表的單片機源代碼
和proteus仿真工程文件
請大家多多采納多多指教
本人還有其他代碼,但是也不算太多
可以加qq1515422315獲取
或者聯系我發表
單片機源程序如下:
- /************************************************************************************** /**************************************************************************************
- *功能:秒表(99倒計時) *
- *說明:數碼管顯示99秒的倒計時
- *硬件連接:在J4處插上跳線帽 第一位數碼管 位引腳-->P2.0 *
- * 第二位數碼管 位引腳-->P2.1 *
- * 第三位數碼管 位引腳-->P2.2 *
- * 第四位數碼管 位引腳-->P2.3 *
- * 所有的數碼管 段引腳-->P0
- *作者:研發中心 *
- *公司:科睿電子產品有限公司 *
- *電話:0530-2897239 15192459227 *
- *地址:菏澤市開發區廣州路與淮河路交叉口科睿電子產品有限公司 *
- ***************************************************************************************/
- #include <reg52.h>
- typedef unsigned int uint;
- typedef unsigned char uchar;
- uint count,count_ms=100;
- // 0 1 2 3 4 5 6 7 8 9 10
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
- sbit P2_0 = P2^0;
- sbit P2_1 = P2^1;
- sbit P2_2 = P2^2;
- sbit P2_3 = P2^3;
- /*
- * 延時函數 毫秒級
- */
- void delay(uint z)
- {
- uint x,y;
- for(x=z;z>0;z--)
- for(y=110;y>0;y--)
- ;
- }
- /********************************************************************
- * 名稱 : Timer1Init()
- * 功能 : 定時器1初始化
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Timer1Init(void) //10毫秒@11.0592MHz
- {
- // AUXR &= 0xBF; //定時器時鐘12T模式
- TMOD &= 0x0F; //設置定時器模式
- TL1 = 0x00; //設置定時初值
- TH1 = 0xDC; //設置定時初值
- TF1 = 0; //清除TF1標志
- TR1 = 1; //定時器1開始計時
- ET1 = 1; //enable timer1 interrupt
- EA = 1; //open global interrupt switch
- }
- /********************************************************************
- * 名稱 : display()
- * 功能 : 數碼管顯示函數
- * 輸入 : Dis_data1,Dis_data2,Dis_data3,Dis_data4
- * 輸出 : 無
- ***********************************************************************/
- void display(uint Dis_data1,uint Dis_data2,uint Dis_data3,uint Dis_data4)
- {
- P0=table[Dis_data1];
- P2_0 = 0;
- delay(2);
- P2_0 = 1;
- P0=table[Dis_data2];
- P2_1 = 0;
- delay(2);
- P2_1 = 1;
- P0=table[Dis_data3];
- P2_2 = 0;
- delay(2);
- P2_2 = 1;
- P0=table[Dis_data4];
- P2_3 = 0;
- delay(2);
- P2_3 = 1;
-
- }
- /********************************************************************
- * 名稱 : main()
- * 功能 : 主函數
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void main()
- {
- Timer1Init();
- count=100;
- count_ms=1000;
- while(1)
- {
- display(10,count%100/10,count%10,10);
-
- }
- }
- /********************************************************************
- * 名稱 : void tm1_isr() interrupt 3 using 1
- * 功能 : 定時器1中斷服務函數
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void tm1_isr() interrupt 3 using 1
- {
- TL1 = 0x00; //設置定時初值
- TH1 = 0xDC; //設置定時初值
- if (count_ms-- == 0) //1ms * 1000 -> 1s
- {
- count_ms=1000;
- if(count==0)
- {
- count=100;
- }
- count --; //reset counter
- }
- }
復制代碼
所有資料51hei提供下載:
11.秒表(99倒計時).zip
(21.25 KB, 下載次數: 24)
2018-10-11 08:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|