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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的車輪測速系統(tǒng)電路+程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:338344 發(fā)表于 2020-5-12 13:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

部分代碼如下:
  1. /******************************************************************************   
  2. * Function:      24c02驅(qū)動
  3. * Description:      256個尋址單元 00~ff 32頁每頁8b
  4. * Parameter:                                                        
  5. *   
  6. *                           
  7. * Return:                                                             *   
  8. ******************************************************************************/
  9. /***************************************************
  10.     記錄
  11. 5.5
  12. 1.二進制書寫格式010101010    前面加個0即可
  13. *******************************************************/
  14. #include<reg51.h>
  15. #include"intrins.h"
  16. typedef unsigned char uint8;
  17. typedef char int8;
  18. typedef unsigned int uint16;
  19. typedef unsigned char  uchar;
  20. sbit function=P3^5;             //按鍵信號輸入口
  21. sbit buzzer=P3^3;               //蜂鳴器信號口
  22. sbit dula=P2^6;                    //數(shù)碼管段選信號
  23. sbit wela=P2^7;                    //數(shù)碼管位選信號
  24. sbit  sda=P2^0 ;                //24c02數(shù)據(jù)信號
  25. sbit  scl=P2^1 ;                //24c02時鐘信號
  26. uint8 code table[]={            //數(shù)字代碼
  27. 0x3f,0x06,0x5b,0x4f,
  28. 0x66,0x6d,0x7d,0x07,
  29. 0x7f,0x6f,0x77,0x7c,
  30. 0x39,0x5e,0x79,0x71};
  31. float speed,mileage;                       //測得的速度 及 里程
  32. uint8  count;                               //定時器0 中斷計數(shù)
  33. uint8  frontcount;                           //外部中斷0  計數(shù)
  34. /*****************************************
  35. * Function:  微秒級延時函數(shù)
  36. ****************************************/
  37. void us_delay( uint16 count )   
  38. {   
  39.     while( --count )   
  40.     {   
  41.         _nop_();   
  42.     }   
  43. }  
  44. /**************************************
  45. * Function: 毫秒延時函數(shù)
  46. ***************************************/
  47. void ms_delay(uint8 t)
  48. {
  49.   uint8 x,y;
  50.   for(x=t;x>0;x--)
  51.    for(y=110;y>0;y--);
  52. }
  53. /**************************************
  54. * Function: 蜂鳴器函數(shù)
  55. ***************************************/
  56. void beep()
  57. {
  58.   buzzer=0;
  59.   ms_delay(100);
  60.   buzzer=1;
  61. }
  62. /******************************************************************************   
  63. * Function:     數(shù)碼管顯示函數(shù)
  64. * Description:  共三位數(shù)碼管,顯示速度及里程                                                                                                                           *   
  65. ******************************************************************************/
  66. void display(uint8 shu)
  67. {         
  68.         uint8 bai,shi,ge;   
  69.         bai=shu/100;
  70.         shi=shu%100/10;
  71.         ge=shu%10;
  72.         dula=1;
  73.         P0=table[bai];         //送段選數(shù)據(jù)
  74.         dula=0;
  75.         P0=0xff;
  76.         wela=1;
  77.         P0=0x7e;             //送位選數(shù)據(jù)
  78.         wela=0;
  79.         ms_delay(1);        
  80.         dula=1;
  81.         P0=table[shi];
  82.         dula=0;
  83.         P0=0xff;
  84.         wela=1;
  85.         P0=0x7d;
  86.         wela=0;
  87.         ms_delay(1);
  88.         dula=1;
  89.         P0=table[ge];
  90.         dula=0;
  91.         P0=0xff;
  92.         wela=1;
  93.         P0=0x7b;//原來是0xfb 第八位是高  現(xiàn)在要保證實驗班上片選信號始終為低
  94.         wela=0;
  95.         ms_delay(1);
  96. }
  97. /************************************
  98. * Function:  24c02初始化
  99. *************************************/
  100. void store_init()
  101. {
  102.       sda=1;
  103.       us_delay(2);
  104.       scl=1;
  105.       us_delay(2);

  106. }
  107. /************************************
  108. * Function:  啟動信號
  109. * Description: scl在高電平期間 sda地跳變
  110. *************************************/
  111. void store_start()
  112. {
  113.      sda=1;
  114.      us_delay(2);
  115.      scl=1;
  116.      us_delay(2);
  117.      sda=0;
  118.      us_delay(2);
  119. }
  120. /************************************
  121. * Function: 停止信號
  122. * Description: scl在高電平期間 sda高跳變
  123. *************************************/
  124. void store_stop()
  125. {
  126.      sda=0;
  127.      us_delay(2);
  128.      scl=1;
  129.      us_delay(2);
  130.      sda=1;
  131.      us_delay(2);
  132. }
  133. /************************************
  134. * Function: 應(yīng)答信號
  135. *************************************/
  136. void store_respons()
  137. {
  138.       uchar i;
  139.       scl=1;
  140.       us_delay(2);
  141.       while((sda==1)&&(i<250))
  142.        i++;
  143.       scl=0;
  144.       us_delay(2) ;
  145. }
  146. /************************************
  147. * Function: 寫一個字節(jié)
  148. *************************************/
  149. void  store_write_byte(uchar date)
  150. {
  151.      uchar i ;
  152.      for(i=0;i<8;i++)
  153.      {
  154.          scl=0;
  155.          us_delay(2);
  156.          sda=date&0x80;
  157.          us_delay(2);
  158.          scl=1;
  159.          us_delay(2);
  160.          date<<=1;
  161.      }               
  162.      scl=0;                         // 在scl=1 時間段 取sda的值
  163.      us_delay(2);
  164.      sda=1;         
  165.      us_delay(2);
  166. }
  167. /************************************
  168. * Function: 讀一個字節(jié)
  169. ************************************/
  170. uchar store_read_byte()
  171. {
  172.       uchar date ,i;
  173.       for(i=0;i<8;i++)
  174.       {
  175.         scl=1;
  176.         us_delay(2) ;
  177.         date=(date<<1)|sda;
  178.         scl=0;
  179.         us_delay(2) ;
  180.       }
  181.       return date ;      
  182. }
  183. /************************************
  184. * Function: 寫入指定位置  一個字節(jié)的數(shù)據(jù)
  185. *************************************/
  186. void store_write_add(uchar address,uchar date)
  187. {
  188.          store_start();
  189.          store_write_byte(0xa0);         //最后一位0代表 方向  寫     
  190.          store_respons();
  191.          store_write_byte(address);      //寫入的地址
  192.          store_respons();
  193.          store_write_byte(date);         //寫入的數(shù)據(jù)
  194.          store_respons();
  195.          store_stop();
  196. }
  197. /************************************
  198. * Function: 讀出指定位置     一個字節(jié)的數(shù)據(jù)
  199. *************************************/
  200. uchar store_read_add(uchar address)
  201. {
  202.          uchar date;
  203.          store_start();
  204.          store_write_byte(0xa0);            //最后一位0代表 方向  寫
  205.          store_respons();
  206.          store_write_byte(address);           //寫入的地址
  207.          store_respons();
  208.          store_start();
  209.          store_write_byte(0xa1);            //最后一位1代表 方向 讀
  210.          store_respons();
  211.          date=store_read_byte();           //讀 剛才寫入的地址內(nèi) 數(shù)據(jù)
  212.          store_stop();
  213.          return date;
  214. }
  215. /************************************
  216. * Function:    按鍵信號檢測程序
  217. * Description: 1、按一次跳轉(zhuǎn)到里程數(shù)    2、長按清除里程數(shù)
  218. *************************************/
  219. void keyscan()
  220. {
  221.    if(function==0)
  222.    {
  223.         ms_delay(10);
  224.         if(function==0)                  //短按檢測
  225.         {
  226.               while(!function);           
  227.               ms_delay(8);
  228.               beep();
  229.               mileage=store_read_add(0x00);
  230.               display(mileage);         //顯示里程
  231.               if(function==0)         //長按檢測
  232.               {
  233.                    ms_delay(50);
  234.                    if(function==0)
  235.                    {
  236.                        while(!function);           
  237.                        ms_delay(8);
  238.                        beep();
  239.                        store_write_add(0x00,0);       //清除 AT24c02上的數(shù)據(jù)
  240.                    }
  241.               }
  242.         }
  243.    }
  244. }
  245. /************************************
  246. * Function:    報警檢測程序
  247. * Description: 當(dāng)速度大于 120KM/h時  蜂鳴器響
  248. *************************************/
  249. void alarm()
  250. {
  251.     if(speed>120)
  252.     {
  253.        beep();
  254.     }
  255. }
  256. /************************************
  257. * Function:  初始化函數(shù)
  258. *************************************/
  259. void init()
  260. {   
  261.     wela=0;
  262.     dula=0;
  263.     TMOD=0x01;
  264.     TH0=(65536-50000)/256;             //    50ms計數(shù)一次
  265.     TL0=(65536-50000)%256;
  266.     EA=1;
  267.     ET0=1;
  268.     TR0=1;   
  269.      EX0=1;         //外部中斷0
  270.     IT0=1;         //開啟外部中斷
  271.     store_init();    //AT24c02初始化
  272. }
  273. void main()
  274. {
  275.      init();
  276.      while(1)
  277.      {
  278.         display(speed);
  279.         keyscan();
  280.         alarm();     
  281.      }
  282. }
  283. /************************************
  284. * Function:  外部中斷0  函數(shù)
  285. *************************************/
  286. void w0() interrupt 0
  287. {
  288.    frontcount++;
  289. }
  290. /************************************
  291. * Function:  定時器0 中斷函數(shù)
  292. *************************************/
  293. void time0() interrupt 1
  294. {
  295.     TH0=(65536-50000)/256;         
  296.     TL0=(65536-50000)%256;
  297.     count++;
  298.      if(count==20)         //1秒鐘采集一次
  299.         {  
  300.           count=0;
  301.             speed= frontcount*2*3.14*0.3*3.6;                //速度計算 KM/h
  302.             frontcount=0;
  303.             mileage=mileage+frontcount*2*3.14*0.3*0.001;     //里程數(shù) 累加
  304.             store_write_add(0x00,mileage);                  //里程數(shù) 寫入存儲器
  305.         }   
  306. }

復(fù)制代碼

文檔51hei下載地址:
汽車車速檢測系統(tǒng)設(shè)計.doc (518.17 KB, 下載次數(shù): 14)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天躁天天操 | 亚洲精品久久久久中文字幕二区 | 久热免费在线 | 日韩a | 亚洲欧美一区二区三区视频 | 日韩国产精品一区二区三区 | 欧美视频免费在线 | www.99精品 | www.三级 | 欧美不卡网站 | 色.com| 日韩高清一区二区 | 又黄又色 | 成人午夜精品 | 围产精品久久久久久久 | 99reav| 日韩欧美一级精品久久 | 人干人人 | 人人射人人插 | 一区在线播放 | 激情影院久久 | 国产精品美女久久久久久免费 | 色吊丝2288sds中文字幕 | 欧美一级在线 | 欧美一区二区三区精品 | 夜夜操av| 精品少妇一区二区三区日产乱码 | 精品福利一区 | 国产一级片一区二区三区 | 欧美视频在线看 | 欧美成人在线免费 | 天天曰夜夜操 | 精品国产91乱码一区二区三区 | 久久精品亚洲精品国产欧美 | 成人免费观看男女羞羞视频 | 人人澡人人射 | 精品国产乱码久久久久久牛牛 | 国产伦精品一区二区三区高清 | 国产精品一区在线 | 亚洲成人av一区二区 | 性高湖久久久久久久久 |