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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1054|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)開發(fā)板做秒表程序求助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:519052 發(fā)表于 2020-1-14 08:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在網(wǎng)上找的51秒表程序,下載在普中科技的開發(fā)板上  按鍵沒反應(yīng) ,請(qǐng)大神幫忙解答一下 ,或者幫忙給寫個(gè)程序最好不過了,謝謝  51單片機(jī) 6位秒表計(jì)時(shí) “分、秒、毫秒”精度越高越好或者“秒、毫秒”的也可以


  1. #include   

  2. #define uchar unsigned char  

  3. #define uint unsigned int  

  4. #define PIN0 P0  //數(shù)碼管段選端  

  5. #define PIN1 P1  //數(shù)碼管位選端  

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

  7. sbit start=P3^2;  //啟動(dòng)/暫停按鈕  

  8. sbit reset=P3^3;  //復(fù)位按鈕  

  9. uint cnt=0;   //1s的次數(shù)的計(jì)數(shù)值  

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

  11. uint num1=0;        //0.1s的次數(shù)的計(jì)數(shù)值  

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

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

  14. //不帶小數(shù)點(diǎn)的共陰極數(shù)碼管段碼0-9  

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

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

  17. //帶小數(shù)點(diǎn)的共陰極數(shù)碼管段碼0-9  



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

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

  20. //不帶小數(shù)點(diǎn)的共陽極數(shù)碼管段碼0-9  

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

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

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

  24. void main()  

  25. {  

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

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

  28. //依次是秒的個(gè)位,秒的十位,分的個(gè)位,分的十位  

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

  30. while(1)            //進(jìn)入死循環(huán)  

  31. {     

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

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

  34. {  

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

  36. {  

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

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

  39. }  

  40. }  

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

  42. {  

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

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

  45. {  

  46. num=0;        

  47. num1=0;     //進(jìn)入中斷次數(shù)值清0  

  48. ms100=0;    //十分位的計(jì)數(shù)值清0  

  49. cnt=0;      //秒的計(jì)數(shù)值清0  

  50. minu=0;     //分的計(jì)數(shù)值清0  

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

  52. }  

  53. }  

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

  55. {  

  56. num1=0;         //進(jìn)入中斷次數(shù)值清零  

  57. ms100++;        //秒的十分位的計(jì)數(shù)值加1  

  58. if(ms100>=10)  //若秒的十分位計(jì)數(shù)值達(dá)到10  

  59. {  

  60. ms100=0;  //清零秒的十分位的計(jì)數(shù)值  

  61. num1=0;  //進(jìn)入中斷次數(shù)值置0  

  62. }  

  63. }  

  64. if(num>=20)  //判斷計(jì)時(shí)時(shí)間是否達(dá)到1s(20個(gè)50ms)  

  65. {  

  66. num=0;     //進(jìn)入中斷次數(shù)值置0  

  67. cnt++;       //秒的計(jì)數(shù)值加1  

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

  69. {  

  70. cnt=0;      //若達(dá)到60s,將秒的計(jì)數(shù)值置零  

  71. minu++;         //分的計(jì)數(shù)值加1  

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

  73. {  

  74. TR0=!TR0;           //達(dá)到60分鐘則關(guān)閉定時(shí)器并清零所有的計(jì)數(shù)值  

  75. num1=0;               

  76. num=0;  

  77. ms100=0;  

  78. cnt=0;        

  79. minu=0;  

  80. }  

  81. }  

  82. }     

  83. s=cnt%10;   //從秒的計(jì)數(shù)值里面分離秒的個(gè)位  

  84. s1=cnt/10;  //從秒的計(jì)數(shù)值里面分離秒的十位  

  85. min=minu%10;    //從分的計(jì)數(shù)值里面分離分的個(gè)位  

  86. min1=minu/10;   //從分的計(jì)數(shù)值里面分離分的十位  

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

  88. }     

  89. }  

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

  91. {  

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

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

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

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

  96. ET0=1;  //打開定時(shí)器中斷  

  97. TR0=0;  //先不要啟動(dòng)定時(shí)器  

  98. }  

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

  100. {  

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

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

  103. num++;      //讓進(jìn)入中斷次數(shù)值加1,用于判斷是否達(dá)到1s  

  104. num1++;     //讓進(jìn)入中斷次數(shù)值加1,用于判斷是否達(dá)到0.1s  

  105. }  

  106. void Delayms(uint x)   //延時(shí)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) //定義顯示函數(shù)  

  113. {  

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

  115. Delayms(5);  

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

  117. PIN1=0x7f;       //秒的個(gè)位的位選  

  118. Delayms(5);           

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

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

  121. Delayms(5);  

  122. PIN0=table1[c];  //分的個(gè)位的段選(帶小數(shù)點(diǎn))  

  123. PIN1=0xdf;           //分的個(gè)位的位選  

  124. Delayms(5);  

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

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

  127. Delayms(5);      

  128. }  
復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:519052 發(fā)表于 2020-1-15 09:02 | 只看該作者
沒人嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美伊人| 亚洲视频不卡 | 中文字幕一区二区三区日韩精品 | 成人综合视频在线 | www.中文字幕.com | 国产精品国产三级国产aⅴ无密码 | 国产成人一区二区三区 | 欧美精品一区二区免费视频 | 亚洲国产黄色av | 久草免费在线视频 | 日韩欧美国产一区二区 | 一级免费毛片 | 日韩国产欧美一区 | 成人毛片视频免费 | 一区二区三区四区免费在线观看 | 中文字幕第十页 | 亚洲精品视频在线看 | 久热精品视频 | 日韩在线视频免费观看 | 国产视频中文字幕在线观看 | 真人一级毛片 | 情侣黄网站免费看 | 精品久久久av | 国产aⅴ爽av久久久久久久 | 中文字幕国产视频 | 日本中文字幕在线视频 | 日本三级网址 | 国产成人精品久久二区二区91 | 久久久久国产 | 免费在线国产视频 | 欧美亚洲国产日韩 | 欧美精品久久 | 91精品国模一区二区三区 | 免费能直接在线观看黄的视频 | 精品二区视频 | 欧美精品一区二区三区四区五区 | 波多野结衣精品在线 | 久久亚洲精品视频 | 四虎影院新地址 | 日韩精品一区二区三区中文在线 | 91天堂网 |