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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4292|回復(fù): 0
收起左側(cè)

msp430超聲波測距源碼,12864液晶顯示

[復(fù)制鏈接]
ID:229281 發(fā)表于 2017-8-25 11:25 | 顯示全部樓層 |閱讀模式
源碼,12864顯示

單片機源程序如下:
  1. /************************************************************
  2. 程序功能:超聲波傳感器,學(xué)習(xí)定時/計數(shù)器的捕獲。注意距離S=340m/s(注意溫度等有關(guān))*t/2
  3. t是超聲波來回時間
  4. --------------------------------------------------------
  5. 作者:劉恒   長望電子設(shè)計競賽班
  6. -------------------------------------------------------------
  7. 測試說明:最好首先要關(guān)閉板子上的數(shù)碼管,影響液晶顯示亮度。HC-SR04傳感器接線:
  8. VCC接+5V,GND接公共地,Trig觸發(fā)接p1.1,Echo 回波響應(yīng)接P1.2
  9. ************************************************************/

  10. #include <msp430x14x.h>
  11. #include "12864.h"
  12. #include "delay.h"

  13. #define  RISE  1
  14. #define  FALL  0

  15. unsigned int TA_Overflow_Cnt; //TA溢出次數(shù)存放變量,可能距離遠(yuǎn)超過65535
  16. unsigned long int Period;   //脈寬存放結(jié)果變量,高電平時間
  17. unsigned long int S;       // 定義距離長度,單位厘米  
  18. unsigned int RiseCapVal;   //上升沿時刻捕獲值存放變量
  19. unsigned char Edge=0;//當(dāng)前觸發(fā)沿


  20. //初始化系統(tǒng)時鐘函數(shù)
  21. void init_clk()
  22. {
  23.     unsigned char i;
  24.     BCSCTL1&=~XT2OFF;   //打開XT振蕩器
  25.     BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M  
  26.     do
  27.     {
  28.       IFG1 &= ~OFIFG;//清除振蕩錯誤標(biāo)志
  29.       for(i = 0; i < 0xff; i++)  _NOP();//延時等待
  30.     }
  31.     while ((IFG1 & OFIFG) != 0);//如果標(biāo)志為1繼續(xù)循環(huán)等待晶振起振
  32.     IFG1&=~OFIFG;
  33. }
  34. //初始化定時器A函數(shù)
  35. void init_timerA()
  36. {
  37.   TACTL   |= TASSEL_2+MC_2+TAIE+TACLR+ ID_3;//SMCLK,8MHz,8分頻,連續(xù)計數(shù),中斷允許,計數(shù)器清零
  38.   TACCTL1 |= CAP+CM_2+CCIS_0+SCS+CCIE;//捕獲模式,上升沿捕獲,CCI1A輸入,同步捕獲,中斷允許
  39. }
  40. //初始化端口函數(shù)
  41. void init_IO()
  42. {
  43.   P1DIR |= BIT1;   //P1.1輸出,普通I/O
  44.   P1DIR &=~ BIT2;  //P1.2輸入
  45.   P1SEL |=  BIT2; //P1.2第二功能,捕獲輸入
  46.   
  47.   P1OUT &=~BIT1;  // 開始低電平,控制驅(qū)動波形發(fā)生
  48. }
  49. void main()
  50. {
  51.   WDTCTL = WDTPW + WDTHOLD;  // 關(guān)閉看門狗
  52.   init_IO();           //初始端口設(shè)置
  53.   init_timerA();
  54.   
  55.   P2DIR = 0xff;             //設(shè)置P2口方向為輸出,可作為驗證
  56.   Init_Lcd( );               // 初始化LCD12864
  57.   
  58. //TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE; //CM_1 上升沿捕獲,CCIS_0為CCIxA,輸入引腳有關(guān)
  59.                                        //SCS 異步捕獲,CCIE 捕獲中斷容許
  60.   _EINT();               //開全局中斷
  61.   
  62.   while(1)
  63.   {   
  64.     P1OUT |= BIT1;    // P1.1 高電平,超過10us
  65.     Delay_Nms(10);
  66.     P1OUT &=~BIT1;
  67.     Delay_Nms(80);

  68.     P2OUT = 0xff;       // 發(fā)光二極板指示距離是否過小
  69.    
  70.     //if(S<10)           //  設(shè)置距離,可以自己設(shè)置報警
  71.     // P2OUT = 0x00;     //   LED亮,提示報警
  72.    // Disp_4num(0x80 ,S);   //顯示距離
  73.    // Delay_Nms(1000);     //延遲時間,刷屏?xí)r長
  74.   }
  75. }


  76. //定時器A服務(wù)程序,Timer A CC1-2, TA 注意引腳
  77. #pragma vector=TIMERA1_VECTOR
  78. __interrupt void Timer_A(void)
  79. {

  80.   switch(TAIV)
  81.   {
  82.     case 2 :if(Edge==FALL)
  83.               {
  84.                  P2OUT = 0x00;
  85.                 //RiseCapVal = TACCR1;
  86.                 //TACCTL1 |= CAP+CM_2+CCIS_0+SCS+CCIE;//改為下降沿捕獲
  87.                 //TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//改為上升沿捕獲
  88.                 //Edge = RISE;//下降沿捕獲標(biāo)志
  89.               }
  90.             /* else
  91.               {
  92.                
  93.                 _DINT();
  94.             
  95.                 Period = TACCR1-RiseCapVal;  //這里要注意是否考慮溢出,跟測試距離有關(guān),希望大家拓展
  96.                 S=(Period*17)/100;   // 距離計算 s=340m/s*Period/2*10^(-6)*1000(mm)
  97.                 TACCR1 = 0;
  98.                 TACCTL1|= CAP+CM_1+CCIS_0+SCS+CCIE;//改為上升沿捕獲
  99.                 Edge = RISE;//上升沿捕獲標(biāo)志  
  100.                 _EINT();
  101.               }*/
  102.              break;
  103.     case 4 : break;
  104.     case 10: TA_Overflow_Cnt++;   //溢出標(biāo)志
  105.              break;
  106.   }   
  107. }
  108.                
  109. ……………………

  110. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
HC-SR04.zip (41.47 KB, 下載次數(shù): 160)


回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产午夜精品一区二区 | 久久99深爱久久99精品 | 欧美日韩精品一区二区三区四区 | 91成人免费 | 国产精品久久久久久久久久久久久 | 欧美一区二区三区在线观看 | 国产精品3区 | 成人av免费播放 | 精品国产18久久久久久二百 | 免费久久精品视频 | 国产成人在线视频 | 一区二区免费视频 | 操夜夜 | 99影视| 久久综合一区二区三区 | 风间由美一区二区三区在线观看 | 精品中文字幕一区二区 | 男女羞羞的网站 | 97久久精品午夜一区二区 | 国产成人99久久亚洲综合精品 | 亚洲日韩中文字幕一区 | 欧美大片一区 | 在线亚洲欧美 | 久久伊人精品 | 欧美日韩亚洲国产综合 | 7777在线视频免费播放 | 四虎影视在线 | 91在线免费视频 | 盗摄精品av一区二区三区 | 欧美成人精品一区二区三区 | 国产在线不卡视频 | 久久久免费 | 一本一道久久a久久精品蜜桃 | 亚洲成人午夜在线 | 久久99精品久久久久久琪琪 | 久久精品成人 | 在线精品一区二区三区 | 日本国产一区二区 | 久久草视频 | 一区二区三区视频在线观看 | 极品粉嫩国产48尤物在线播放 |