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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LU90614紅外體溫傳感器單片機驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
12C5A60S2 驅動紅外體溫傳感器LU90614
并在LCD1602屏幕上顯示 當沒有手靠近時
屏幕顯示OL
制作出來的實物圖如下:


單片機源程序如下:
  1. ////以下是頭文件
  2. #include "STC12C5A60S2.H"        //這里使用的是STC12C5A60S2單片機
  3. #include "string.h"
  4. #include "Delay.h"
  5. #include "LCD1602.h"

  6. //接線 LCD的接線
  7. // 普中A2 完全兼容  
  8. //sbit LCD_RW=P2^5;
  9. //sbit LCD_EN=P2^7;
  10. //#define LCD_DataPort P0


  11. //LU90614溫度傳感器接線
  12. //    普中A2
  13. //VCC  +5V
  14. //GND   GND
  15. //R    P3.0
  16. //T    P3.1



  17. /*************************************************************/
  18. //以下是宏定義
  19. #define u32 unsigned long int //無符號長整型
  20. #define u16 unsigned int   //無符號整型
  21. #define u8 unsigned char   //無符號短整型
  22. #define bool bit   //布爾變量

  23. #define USART_REC_LEN                          200          //定義最大接收字節數 200



  24. /*************************************************************/
  25. //以下是變量聲明

  26. u8 UartData;//單字節串口數據

  27. u8 KeyNum;//存儲矩陣鍵盤按鍵返回值


  28. u16 WENDU_H;
  29. u16 WENDU_L;

  30. bit flag=0;

  31. u16 USART_STA=0;
  32. u16 USART_RX_STA=0;       //接收狀態標記          
  33. u16 USART_RX_LEN=0;
  34. u8 USART_RX_BUF[USART_REC_LEN];     //接收緩沖,最大USART_REC_LEN個字節.

  35. ///******************************************************************/
  36. ////函數聲明區
  37. void UartInit(void);
  38. void delayms(int d);
  39. void delay_us(int d);
  40. void SendASC(u8 d);//發送字符
  41. void SendString(u8 *str);//發送字符串
  42. ///******************************************************************/
  43. ////主函數main
  44. void main(void)
  45. {       
  46.         UartInit();                //串口初始化
  47.         LCD_Init();       
  48.                 //發送體溫模式指令 0XFA 0XC5 0XBF
  49.         SendASC(0XFA);
  50.         SendASC(0XC5);
  51.         SendASC(0XBF);
  52.         delayms(50);
  53.        
  54.         while(1)
  55.         {                               
  56.                 if(USART_RX_STA&0X8000)//接收到一次數據
  57.                 {
  58.                         WENDU_H=USART_RX_BUF[2];               
  59.                         WENDU_L=USART_RX_BUF[3]/10;
  60.                         WENDU_H=WENDU_H&0X00FF;
  61.                        

  62.                                 LCD_ShowString(1,1,"Temp:");
  63.                             if(WENDU_H>200)
  64.                                         LCD_ShowString(1,7,"OL   ");
  65.                                 else if(WENDU_H>100&&WENDU_H<200)
  66.                                 {
  67.                                         LCD_ShowNum(1,6,WENDU_H,3);//顯示溫度整數位
  68.                                         LCD_ShowChar(1,9,'.');
  69.                                         LCD_ShowNum(1,10,WENDU_L,2);//顯示溫度小數位
  70.                                 }
  71.                                 else
  72.                                 {
  73.                                         LCD_ShowChar(1,6,' ');
  74.                                         LCD_ShowNum(1,7,WENDU_H,2);//顯示溫度整數位       
  75.                                         LCD_ShowChar(1,9,'.');
  76.                                         LCD_ShowNum(1,10,WENDU_L,2);//顯示溫度小數位
  77.                                 }
  78.                                        
  79.                                                
  80.                            delayms(100);
  81.                                
  82.                                 USART_RX_STA=0;//啟動下次接收       
  83.                        
  84.                 }
  85.                 delayms(200);
  86.                 //發送測溫指令 0XFA 0XCA 0XC4
  87.                 SendASC(0XFA);
  88.                 SendASC(0XCA);
  89.                 SendASC(0XC4);
  90.                
  91.                
  92.         }
  93. }




  94. //串口初始化,晶振11.0592,波特率9600
  95. void UartInit(void)                //9600bps@11.0592MHz
  96. {
  97.         PCON &= 0x7F;                //波特率不倍速
  98.         SCON = 0x50;                //8位數據,可變波特率
  99.         AUXR |= 0x04;                //獨立波特率發生器時鐘為Fosc,即1T
  100.         BRT = 0xDC;                //設定獨立波特率發生器重裝值(9600)    //        BRT = 0xFD;        (115200)
  101.         AUXR |= 0x01;                //串口1選擇獨立波特率發生器為波特率發生器
  102.         AUXR |= 0x10;                //啟動獨立波特率發生器
  103.         EA = 1;//開總中斷
  104.         ES = 1;//開串口中斷
  105. }


  106. void SendASC(u8 d)
  107. {
  108.        
  109.         SBUF=d;
  110.         while(!TI);

  111.         TI=0;
  112. }



  113. void SendString(u8 *str)       
  114. {
  115.         while(*str)
  116.         {
  117.                 SendASC(*str) ;
  118.                 str++;
  119.         }
  120. }



  121. //串口中斷處理函數
  122. void uart_Interrupt() interrupt 4
  123. {
  124.         if(RI)
  125.         {
  126.        
  127.                 UartData = SBUF;
  128.                 if((USART_RX_STA&0x8000)==0)//接收未完成
  129.                         {
  130.                                 if(UartData==0XFE)//接收到命令頭
  131.                                 {
  132.                                         USART_STA=1;
  133.                                         USART_RX_LEN=0;
  134.                                 }
  135.                         }
  136.                         if(USART_STA)
  137.                         {
  138.                                 USART_RX_BUF[USART_RX_LEN]=UartData;
  139.                                 USART_RX_LEN++;
  140.                                 if(USART_RX_LEN>8)//接收8位數據接收完畢
  141.                                 {
  142.                                         USART_STA=0;
  143.                                         USART_RX_STA|=0x8000;//接收已完成
  144.                                 }
  145.                         }
  146.                        
  147.                                 RI = 0;
  148.         }
  149. }
復制代碼


81ec6f14251523816b1193b3cb785c4.jpg (138.16 KB, 下載次數: 101)

81ec6f14251523816b1193b3cb785c4.jpg

1.jpg (243.71 KB, 下載次數: 103)

1.jpg

2.jpg (4.6 MB, 下載次數: 108)

2.jpg

3.jpg (4.42 MB, 下載次數: 99)

3.jpg

程序.7z

37.7 KB, 下載次數: 31, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1072312 發表于 2023-4-18 19:19 | 只看該作者
程序移到89c52的板子上需要改什么?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久伊人精品 | 日韩av在线不卡 | 中文字幕一区二区三区日韩精品 | 毛片在线看片 | 中文字幕乱码一区二区三区 | 国产视频在线一区二区 | 国产在线一区二区三区 | 老司机久久| 999国产视频 | 国产在线中文字幕 | 久久精品久久久久久 | 狠狠干网站 | 欧美一区二区在线播放 | 一区二区三区中文字幕 | 久久一区精品 | 国产一区欧美 | 国内精品免费久久久久软件老师 | 亚洲精品久久久一区二区三区 | 成人二区三区 | 色婷婷综合久久久中字幕精品久久 | 99久久免费精品国产男女高不卡 | 在线播放国产一区二区三区 | 天天久久 | 国产精品高清在线 | 精品一区二区三区在线观看国产 | 亚洲一区二区三区免费视频 | 中文字幕第一页在线 | 中文字幕不卡在线观看 | 国产一级特黄视频 | 亚洲欧洲精品一区 | 国产小视频在线 | 麻豆91av | 亚洲福利一区二区 | 97视频精品 | 最近日韩中文字幕 | 国产欧美一区二区三区国产幕精品 | 毛片网站免费观看 | 免费在线国产视频 | 欧美高清视频一区 | 高清国产一区二区 | 国产精品一区二区久久 |