久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 單片機開發板做秒表程序求助 [打印本頁]

作者: lvbui    時間: 2020-1-14 08:46
標題: 單片機開發板做秒表程序求助
在網上找的51秒表程序,下載在普中科技的開發板上  按鍵沒反應 ,請大神幫忙解答一下 ,或者幫忙給寫個程序最好不過了,謝謝  51單片機 6位秒表計時 “分、秒、毫秒”精度越高越好或者“秒、毫秒”的也可以


  1. #include   

  2. #define uchar unsigned char  

  3. #define uint unsigned int  

  4. #define PIN0 P0  //數碼管段選端  

  5. #define PIN1 P1  //數碼管位選端  

  6. #define PIN3 P3  //十分位數碼管的段碼端  

  7. sbit start=P3^2;  //啟動/暫停按鈕  

  8. sbit reset=P3^3;  //復位按鈕  

  9. uint cnt=0;   //1s的次數的計數值  

  10. uint num=0;     //進入中斷次數的計數值(一次50ms)  

  11. uint num1=0;        //0.1s的次數的計數值  

  12. uchar code table[]={0x3f,0x06,0x5b,  

  13. 0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f};  

  14. //不帶小數點的共陰極數碼管段碼0-9  

  15. uchar code table1[]={0xbf,0x86,  

  16. 0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};  

  17. //帶小數點的共陰極數碼管段碼0-9  



  18. char code table2[]={0xc0,0xf9,0xa4,  

  19. 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  

  20. //不帶小數點的共陽極數碼管段碼0-9  

  21. void Display(uint w,uint a,uint b,uint c,uint d);  //聲明顯示函數  

  22. void InitTimer0();  //聲明定時器初始化函數  

  23. void Delayms(uint x);  //聲明延時函數  

  24. void main()  

  25. {  

  26. uint ms100=0;   //秒的十分位  

  27. uint s,s1,min,min1,minu=0;   

  28. //依次是秒的個位,秒的十位,分的個位,分的十位  

  29. InitTimer0();     //初始化定時器  

  30. while(1)            //進入死循環  

  31. {     

  32. if(start==0)   //檢測啟動/暫停鍵是否按下  

  33. Delayms(20); //延時消抖  

  34. {  

  35. if(start==0)  //消抖之后再次檢測  

  36. {  

  37. TR0=!TR0;       //定時器的控制位取反  

  38. while(!start);  //等待按鍵釋放  

  39. }  

  40. }  

  41. if(reset==0)  //檢測復位鍵是否按下  

  42. {  

  43. Delayms(20);    //延時消抖  

  44. if(reset==0)    //消抖之后再次檢測  

  45. {  

  46. num=0;        

  47. num1=0;     //進入中斷次數值清0  

  48. ms100=0;    //十分位的計數值清0  

  49. cnt=0;      //秒的計數值清0  

  50. minu=0;     //分的計數值清0  

  51. while(!reset);       //等待按鍵釋放  

  52. }  

  53. }  

  54. if(num1>=2)      //檢測是否達到0.1s,(兩個50ms)  

  55. {  

  56. num1=0;         //進入中斷次數值清零  

  57. ms100++;        //秒的十分位的計數值加1  

  58. if(ms100>=10)  //若秒的十分位計數值達到10  

  59. {  

  60. ms100=0;  //清零秒的十分位的計數值  

  61. num1=0;  //進入中斷次數值置0  

  62. }  

  63. }  

  64. if(num>=20)  //判斷計時時間是否達到1s(20個50ms)  

  65. {  

  66. num=0;     //進入中斷次數值置0  

  67. cnt++;       //秒的計數值加1  

  68. if(cnt>=60) //判斷是否達到60s  

  69. {  

  70. cnt=0;      //若達到60s,將秒的計數值置零  

  71. minu++;         //分的計數值加1  

  72. if(minu>=60)  //判斷是否達到60分鐘,一般秒表是用不到60分的,這是為了程序的嚴謹性  

  73. {  

  74. TR0=!TR0;           //達到60分鐘則關閉定時器并清零所有的計數值  

  75. num1=0;               

  76. num=0;  

  77. ms100=0;  

  78. cnt=0;        

  79. minu=0;  

  80. }  

  81. }  

  82. }     

  83. s=cnt%10;   //從秒的計數值里面分離秒的個位  

  84. s1=cnt/10;  //從秒的計數值里面分離秒的十位  

  85. min=minu%10;    //從分的計數值里面分離分的個位  

  86. min1=minu/10;   //從分的計數值里面分離分的十位  

  87. Display(ms100,s,s1,min,min1);  //顯示這5個數  

  88. }     

  89. }  

  90. void InitTimer0() //定時器初始化函數  

  91. {  

  92. TMOD=0x01; //選擇定時器0的工作方式1  

  93. TH0=(65536-45872)/256;  //裝初值(定時50ms),晶振11.0592MHz  

  94. TL0=(65536-45872)%256;  

  95. EA=1;       //打開總中斷  

  96. ET0=1;  //打開定時器中斷  

  97. TR0=0;  //先不要啟動定時器  

  98. }  

  99. void TIMER0()  interrupt 1  //定時器中斷服務函數  

  100. {  

  101. TH0=(65536-45872)/256;  //重裝初值  

  102. TL0=(65536-45872)%256;  

  103. num++;      //讓進入中斷次數值加1,用于判斷是否達到1s  

  104. num1++;     //讓進入中斷次數值加1,用于判斷是否達到0.1s  

  105. }  

  106. void Delayms(uint x)   //延時xms  

  107. {  

  108. uint i,j;  

  109. for(i=x;i>0;i--)  

  110. for(j=110;j>0;j--);  

  111. }  

  112. void Display(uint w,uint a,uint b,uint c,uint d) //定義顯示函數  

  113. {  

  114. PIN3=table2[w];     //秒的十分位的段選  

  115. Delayms(5);  

  116. PIN0=table[a]; //秒的個位的段選  

  117. PIN1=0x7f;       //秒的個位的位選  

  118. Delayms(5);           

  119. PIN0=table[b];  //秒的十位的段選  

  120. PIN1=0xbf;          //秒的十位的位選  

  121. Delayms(5);  

  122. PIN0=table1[c];  //分的個位的段選(帶小數點)  

  123. PIN1=0xdf;           //分的個位的位選  

  124. Delayms(5);  

  125. PIN0=table[d];      //分的十位的段選  

  126. PIN1=0xef;              //分的十位的位選  

  127. Delayms(5);      

  128. }  
復制代碼





作者: lvbui    時間: 2020-1-15 09:02
沒人嗎?





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产日韩欧美在线播放 | 成人h视频在线 | 亚洲综合在线网 | 精品国产91亚洲一区二区三区www | 亚洲狠狠爱 | 亚洲人成在线观看 | 欧美在线亚洲 | 国产日韩欧美精品一区二区 | 久久久久久久久久久成人 | 中文字幕高清视频 | 91精品国产乱码久久久久久 | 99国产精品一区二区三区 | 99re6在线| 久久在线免费 | 国产美女久久久 | 国产高潮好爽受不了了夜夜做 | 超碰在线国产 | 日本色综合 | 亚洲精品www| 午夜小电影 | 久久99精品久久久久久秒播九色 | 日韩欧美在线观看视频 | 91深夜福利视频 | 一级免费看 | 91大神xh98xh系列全部 | 羞羞色网站 | 天天搞天天操 | 东京av男人的天堂 | 欧美日韩一二三区 | 国产精品日日摸夜夜添夜夜av | 国产精品欧美一区喷水 | 伊人影院99| av男人的天堂av | 日韩中文字幕免费在线 | 精品国产免费人成在线观看 | 午夜精品久久久久久久久久久久久 | 国产小u女发育末成年 | 高清色| 国产999在线观看 | 秋霞影院一区二区 | 精品亚洲一区二区三区 |