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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 763|回復: 0
打印 上一主題 下一主題
收起左側

有關單片機測5m速度,編程后我給他設定時間100ms但測量顯示結果是0.問題出在哪?

[復制鏈接]
跳轉到指定樓層
樓主
ID:849316 發表于 2022-3-17 20:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. /**************************************************************************************                                                  *
  2. *按下K1按鍵  開始計時
  3. *按下K2按鍵  計時結束計算速度                                                                                 
  4. ***************************************************************************************/
  5. #include "reg52.h"             //此文件中定義了單片機的一些特殊功能寄存器
  6. #include<intrins.h>             //左右移函數,頭文件
  7. #include<absacc.h>           //訪問絕對地址頭文件
  8. sbit k1=P1^0;     //按鍵1開始計時
  9. sbit k2=P1^1;     //按鍵2終止計時開始計算速度

  10. unsigned char ge=0,shi=0;        //定義數碼管顯示的個位和十位   
  11. unsigned int num=0,sec=0,m=0,v=0;//定義ms、s、時間總數和速度
  12. unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數碼管段控口
  13. /*******************************************************************************
  14. * 函 數 名         : delay
  15. * 函數功能           : 延時函數
  16. *******************************************************************************/
  17. void delay(unsigned int i)            
  18. {
  19.     while(i--);               // 去抖延時
  20. }
  21. void Delay10s()        
  22. {                           // 閃爍延時
  23. int i,j,z;
  24. for (i=1000;i>0;i--)
  25. for (j=1000;j>0;j--)
  26. for (z=10;z>0;z--);
  27. }
  28. /*******************************************************************************
  29. * 函 數 名         : Timer0Init
  30. * 函數功能           : 定時器0初始化
  31. * 輸    入         : 無
  32. * 輸    出         : 無
  33. *******************************************************************************/
  34. void Timer0Init(void)        //10微秒@12.000MHz
  35. {
  36.     TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
  37.     TL0 = (65536-10000)%256;        //設置定時初值
  38.     TH0 = (65536-10000)/256;        //設置定時初值
  39.     ET0=1;//打開定時器0中斷允許
  40.     EA=1;//打開總中斷
  41.     TR0=1;//打開定時器   
  42. }
  43. /*******************************************************************************
  44. * 函 數 名         : display
  45. * 函數功能           : 速度顯示函數
  46. *******************************************************************************/
  47. /******速度顯示函數******/
  48. void display()              //列車一般情況下列車的平均速度為300km/h約等于83m/s
  49. {
  50. ge=v%10;                  //求個位
  51. shi=v/10;                  //求十位
  52. P2=0xfe;                  //選擇數碼管1,輸入位選信號
  53. P0=table[ge];              //數碼管段選信號,顯示個位數值
  54. Delay10s();
  55. P2=0xfd;                  //選擇數碼管2,輸入位選信號
  56. P0=table[shi];              //數碼管段選信號,顯示十位數值
  57. Delay10s();
  58. }
  59. /*******************************************************************************
  60. * 函 數 名         : tt
  61. * 函數功能           : 速度顯示函數
  62. *******************************************************************************/
  63. /******時鐘顯示函數******/
  64. void tt()             // 定時開關函數        
  65.   {                           // 定時100ms
  66.    int a,b;
  67.    for (a=1000;a>0;a--)
  68.    for (b=100;b>0;b--)
  69.    k2=0;
  70.    }
  71. /*******************************************************************************
  72. * 函 數 名         : keypros1
  73. * 函數功能           : 按鍵處理函數,判斷按鍵是否按下并
  74. *******************************************************************************/
  75. void keypros()
  76.     {
  77.     if(k1==0)          //檢測按鍵K1是否按下
  78.     {   
  79.     delay(1000);   //消除抖動 一般大約1ms
  80.     if(k1==0)     //再次判斷按鍵是否按下
  81.     {
  82.     num++;
  83.     TL0 = (65536-1000)%256;        //設置定時初值
  84.     TH0 = (65536-1000)/256;        //設置定時初值
  85.     if(num==1000)                //時間到達1s
  86.     {
  87.     num=0;                        //重新從1ms開始計時
  88.     sec++;                        //累計1S
  89.     }
  90.     }   
  91.     while(!k1);     //檢測按鍵是否松開
  92.     }
  93.     }   
  94. /*******************************************************************************
  95. * 函 數 名       : main
  96. * 函數功能         : 主函數
  97. *******************************************************************************/
  98. void main()
  99. {   
  100.     Timer0Init();  //定時器0初始化
  101.     while(1)
  102.     {   
  103.     keypros();  //按鍵處理函數
  104.     tt();
  105.     if(k2==0)          //檢測按鍵K2是否按下
  106.     {   
  107.     delay(1000);   //消除抖動 一般大約1ms
  108.     if(k2==0)     //再次判斷按鍵是否按下
  109.     {
  110.     m=1000*sec+num;         //求時間單位為ms
  111.     v=5000/m;             //速度公式求列車速度單位為m/s
  112.     }
  113.     }   
  114.     display();            
  115.     }        
  116. }

  117. /*******************************************************************************
  118. * 函 數 名         : void Timer0() interrupt 1
  119. * 函數功能           : 定時器0中斷函數
  120. *******************************************************************************/
  121. void Timer0() interrupt 1
  122. {
  123.     TL0 = (65536-10000)%256;        //設置定時初值
  124.     TH0 = (65536-10000)/256;        //設置定時初值
  125.     keypros();
  126. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产小视频精品 | 综合久久av | 亚洲最大的黄色网址 | 国产精品欧美精品日韩精品 | 91在线中文字幕 | 蜜桃视频成人 | 久久久久国产 | 国产999精品久久久久久绿帽 | 欧美一级在线 | 91丨国产 | 雨宫琴音一区二区在线 | 成人福利在线 | 成人福利视频网站 | jvid精品资源在线观看 | 精品国产免费人成在线观看 | 国产欧美精品一区二区色综合朱莉 | 久久亚洲欧美日韩精品专区 | 久久黄色网 | 精品视频一区二区三区在线观看 | 欧美日韩国产精品 | 免费黄色的视频 | 蜜桃在线视频 | 日韩三级电影一区二区 | 黄色片网站国产 | 99久久久无码国产精品 | 久久久999精品 | 欧美成人综合 | 久久久免费电影 | 欧美国产中文 | 97国产在线观看 | 国产高清视频 | 午夜影晥| 全免费a级毛片免费看视频免 | 国产欧美在线视频 | 日本不卡一区二区三区在线观看 | 国产精品一区二区久久 | 久久草在线视频 | 国产成人精品网站 | 国产精品久久久亚洲 | 成人福利在线视频 | 国产精品久久久久久婷婷天堂 |