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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用51單片機(jī)做的溫度監(jiān)測報(bào)警裝置,手動報(bào)警是需要按下SEND按鈕的,但是現(xiàn)在我想...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:707778 發(fā)表于 2021-5-14 14:38 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
代碼我放到下面,求大佬幫忙看看該怎么改!謝謝!紅色字體即為我加的定時(shí)器代碼
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "common.h"
  4. #include "lcd1602.h"
  5. #include "DS18B20_One.h"
  6. #include "uart.h"
  7. #include "gsm.h"
  8. #define uint unsigned int
  9. #define uchar unsigned char   //宏定義

  10. const char * xdata  phonenum= "17630966319";  //在此處更換號碼

  11. sbit SET= P1^0;//設(shè)置按鍵引腳
  12. sbit ADD= P1^1;//按鍵加引腳
  13. sbit DEC= P1^2;//按鍵減引腳
  14. sbit SEND= P1^3;//手動發(fā)送短信按鍵引腳

  15. sbit BEEP=P2^3;//蜂鳴器引腳

  16. sbit ADC0832_CS = P2^2;//ADC0832 CS引腳
  17. sbit ADC0832_CLK = P2^0;//ADC0832 CLK引腳
  18. sbit ADC0832_DIO = P2^1;//ADC0832 DO引腳

  19. sbit LED_Y=P1^5;//溫度報(bào)警指示燈
  20. sbit LED_R=P1^6;//溫度報(bào)警指示燈

  21. uchar th=30;//溫度上限初始值
  22. uchar setn = 0;//進(jìn)入設(shè)置標(biāo)志位,setn等于0時(shí)退出設(shè)置

  23. bit shoudong = 0;//手動發(fā)送短信標(biāo)志位,等于1時(shí),進(jìn)入手動發(fā)送短信模式

  24. uchar xdata send_data[]="Temp:00C";//短信發(fā)送內(nèi)容

  25. <font color="#ff0000">uchar timer50msCount = 0; //定時(shí)器定義

  26. void Timer0Init(void) //[email protected]
  27. {
  28.     TMOD &= 0xF0; // 設(shè)置定時(shí)器模式,這里為T0
  29.     TMOD |= 0x01; // 設(shè)置定時(shí)器工作方式1,為16為定時(shí)器
  30.     TL0 = 0x00;   // 設(shè)置定時(shí)器低位初值
  31.     TH0 = 0x4C;   // 設(shè)置定時(shí)器高位初值
  32.     TF0 = 0;      // 清楚TF0溢出標(biāo)志位
  33.     TR0 = 1;      // 啟動定時(shí)器0開始計(jì)時(shí)
  34. }
  35. void timer0Interrupt() interrupt 1
  36. {
  37.     timer50msCount++;
  38.     // 每次中斷時(shí),定時(shí)器初值為0,需重新設(shè)置定時(shí)器初值,保持50ms
  39.     // 時(shí)間不變
  40.     TL0 = 0x00;
  41.     TH0 = 0x4C;
  42. }</font>

  43. void keyscan()//按鍵掃描
  44. {
  45.           if(SET == 0)//設(shè)置鍵按下
  46.                 {
  47.                                 delay_ms(10);//延時(shí)消抖
  48.                           if(SET == 0)//判斷是否按下
  49.                                 {
  50.                                                 while(!SET);//等待松開
  51.                                           setn++;//設(shè)置標(biāo)志位自加1
  52.                                           if(setn > 1)//總共設(shè)置,溫度上限
  53.                                                 {
  54.                                                                 setn = 0;//退出設(shè)置模式
  55.                                                           lcd_write_com(0x0c);//關(guān)閉光標(biāo)
  56.                                                 }
  57.                                                 switch(setn)
  58.                                                 {
  59.                                                                 case(1):lcd_write_com(0x80+14);lcd_write_com(0x0f);break;//在溫度上限值的位置光標(biāo)閃爍
  60.                                                 }
  61.                                 }
  62.                 }
  63.                 if(ADD == 0)//按鍵加按下
  64.                 {
  65.                                 delay_ms(10);//延時(shí)消抖
  66.                           if(ADD == 0)//按鍵加按下
  67.                                 {
  68.                                                 while(!ADD);//等待松開

  69.                                                 if(setn == 1)//設(shè)置標(biāo)志位等于1時(shí),為溫度上限設(shè)置
  70.                                                 {
  71.                                                                 if(th < 99)//溫度上限值最大只能加到99
  72.                                                                 {
  73.                                                                         th++;//值加1
  74.                                                                 }
  75.                                                                 lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
  76.                                                                 lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個(gè)位
  77.                                                 }
  78.                                        
  79.                                                 }
  80.                                                 switch(setn)
  81.                                                 {
  82.                                                                 case(1):lcd_write_com(0x80+14);lcd_write_com(0x0f);break;//在溫度上限值的位置光標(biāo)閃爍
  83.                                                 }
  84.                                 }
  85.                                 
  86.                 if(DEC == 0)//按鍵減按下
  87.                 {
  88.                                 delay_ms(10);//延時(shí)消抖
  89.                           if(DEC == 0)//按鍵減按下
  90.                                 {
  91.                                                 while(!DEC);//等待松開
  92.                                 
  93.                                                                 if(setn == 1)//設(shè)置標(biāo)志位等于1時(shí),為溫度上限設(shè)置
  94.                                                                 {
  95.                                                                                 if(th > 0)//溫度上限值最小只能減到0
  96.                                                                                 {
  97.                                                                                         th--;//值減1
  98.                                                                                 }
  99.                                                                                 lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
  100.                                                                                 lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個(gè)位
  101.                                                                 }
  102.                                                         
  103.                                                 }
  104.                                 switch(setn)
  105.                                                 {
  106.                                                                 case(1):lcd_write_com(0x80+14);lcd_write_com(0x0f);break;//在溫度上限值的位置光標(biāo)閃爍
  107.                                                 }
  108.                 }
  109.                 if(SEND == 0)//手動發(fā)送鍵按下
  110.                 {
  111.                                 delay_ms(10);//延時(shí)消抖
  112.                           if(SEND == 0)//手動發(fā)送鍵按下
  113.                                 {
  114.                                                 while(!SEND);//等待松開
  115.                                     shoudong = 1;//手動發(fā)送位置1
  116.                                           lcd_write_str(0,0, "   Send Sms...  ");//顯示發(fā)送短信中
  117.                                                 lcd_write_str(0,1, "   Waiting...   ");//第二行清屏
  118.                                                 gsm_send_englishmsg(phonenum,send_data);//發(fā)送短信
  119.                                           delay_ms(2000);//延時(shí)2秒
  120.                                           delay_ms(2000);//延時(shí)2秒
  121.                                           delay_ms(2000);//延時(shí)2秒
  122.                                           lcd_write_str(0,0, "   Send OK...   ");//顯示發(fā)送成功
  123.                                                 lcd_write_str(0,1, "                ");
  124.                                           delay_ms(2000);//延時(shí)2秒
  125.                                           delay_ms(2000);//延時(shí)2秒
  126.                                           delay_ms(2000);//延時(shí)2秒
  127.                                           lcd_write_str(0,0, "NOW:  C  SET:  C");//返回主頁面顯示
  128.             lcd_write_str(0,1, "  IN OPERATION  ");//第二行顯示內(nèi)容隨意
  129.                                           lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
  130.                                                 lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個(gè)位
  131.                                           shoudong = 0;
  132.                                 }
  133.                 }        
  134. }


  135. void main()
  136. {
  137.           uint count;
  138.           short temperature;//溫度  
  139.           bit send_flag=0;
  140.         
  141. <font color="#ff0000">                EA = 1;         // 開總中斷
  142.     ET0 = 1;        // 開定時(shí)器 0 中斷
  143.     Timer0Init();</font>
  144.         
  145.           lcd_init();//1602初始化
  146.           temperature = DS18B20_TF();//溫度DS18B20初始化
  147.           lcd_write_str(0,0,"   GSM init...  ");//1602顯示GSM初始化中
  148.           uart_init(9600);//串口初始化,波特率9600
  149.           gsm_init();//gsm初始化
  150.           delay_ms(500);//延時(shí)
  151.           lcd_write_str(0,0, "NOW:  C  SET:  C");//進(jìn)入主頁面,第一行顯示的內(nèi)容,溫度值和溫度上限值
  152.           lcd_write_str(0,1, "  IN OPERATION  ");//第二行顯示內(nèi)容隨意
  153.           lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
  154.                 lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個(gè)位
  155.                 while(1)
  156.                 {
  157.                           keyscan();//按鍵掃描
  158.                           if(count++ > 150 && setn == 0)//延時(shí)一段時(shí)間,并且設(shè)置位等于0時(shí),進(jìn)入以下函數(shù)
  159.                                 {
  160.                                           count = 0;//累加變量清零
  161.                                           if(shoudong == 0)
  162.                                                 {
  163.                                                 
  164.                                                                 temperature = DS18B20_TF();//讀取溫度值
  165.                                                                 lcd_write_char(4,0,temperature/10+0x30);//溫度值十位顯示
  166.                                                                 lcd_write_char(5,0,temperature%10+0x30);//溫度值個(gè)位顯示
  167.                                                         
  168.                                                           send_data[5]=temperature/10+'0';//短信內(nèi)容值,溫度十位
  169.                                                           send_data[6]=temperature%10+'0';//短信內(nèi)容值,溫度個(gè)位
  170.                                                         
  171.                                                         
  172.                                                                         LED_R = 1;//LED滅
  173.                                                                 //if(temperature >= th)
  174.                                                                 //        LED_Y = 0;//溫度超標(biāo),LED亮
  175.                                                                 //else
  176.                                                                 //        LED_Y = 1;//LED滅
  177.                                                                 if(temperature >= th)
  178.                                                                         LED_R = 0;//溫度超標(biāo),LED亮
  179.                                                                 else
  180.                                                                         LED_R = 1;//LED滅
  181.                                                         
  182.                                                                 if(temperature >= th)//溫度超標(biāo),蜂鳴器報(bào)警,并且發(fā)送短信
  183.                                                                 {
  184.                                                                                 BEEP = 0;
  185.                                                                                 if(send_flag == 0)//為了避免報(bào)警時(shí),短信頻繁發(fā)送,這里超標(biāo)時(shí)只發(fā)一次短信
  186.                                                                                 {
  187.                                                                                         send_flag = 1;
  188.                                                                                         gsm_send_englishmsg(phonenum,send_data);//發(fā)送短信
  189.                                                                                 }
  190.                                                                                 delay_ms(100);//延時(shí)
  191.                                                                                 
  192.                                                                 }
  193.                                                                 else
  194.                                                                 {
  195.                                                                                 BEEP = 1;//關(guān)閉蜂鳴器
  196.                                                                                 send_flag = 0;//短信發(fā)送標(biāo)志位清零
  197.                                                                 }
  198.                                                 }
  199.                         }
  200.                                 delay_ms(1);
  201.                         //定時(shí)發(fā)送程序
  202.                   // 每5000ms允許if語句塊中的程序

  203. <font color="#ff0000">                                if (timer50msCount == 100)
  204.         {
  205.             SEND        =0;
  206.                                           delay_ms(500);//延時(shí)0.5秒        
  207.                                           SEND        =1;
  208.                                           timer50msCount = 0;
  209.         }</font>
  210.                                 delay_ms(1);
  211.                 }
  212. }
復(fù)制代碼



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

使用道具 舉報(bào)

沙發(fā)
ID:707778 發(fā)表于 2021-5-14 14:39 | 只看該作者
不好意思各位,代碼行里面字體不讓加紅
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产免费高清 | 二区三区视频 | 中文字幕在线国产 | 日韩免费看视频 | 亚洲国产欧美国产综合一区 | 国产精品美女久久久久久免费 | 久久久久久一区 | 亚洲日韩中文字幕一区 | 国外成人在线视频网站 | 国产自产21区 | 日韩欧美国产综合 | 久久久免费观看视频 | 亚洲国产18| 精品一区二区三区四区 | 精品国产乱码一区二区三区 | 欧美v日韩v | 日本涩涩网| 日韩高清一区 | 国产欧美精品一区 | 久久国产欧美日韩精品 | 亚洲一区二区黄 | 国产真实精品久久二三区 | a级在线免费 | 精品国产欧美日韩不卡在线观看 | 久久不卡 | a在线视频观看 | 91精品国产91久久久久久三级 | 欧美成人精品一区二区男人看 | 国产精品污www一区二区三区 | 亚洲精品欧美一区二区三区 | 国产精品久久久久国产a级 欧美日韩国产免费 | 在线播放亚洲 | 日本精品视频在线观看 | 久久久久久亚洲 | 久久伊人青青草 | 中文成人在线 | 国产jizz女人多喷水99 | 亚洲第一天堂无码专区 | 99热热精品| 久久国产视频一区 | 粉嫩国产精品一区二区在线观看 |