久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
用51單片機做的溫度監測報警裝置,手動報警是需要按下SEND按鈕的,但是現在我想...
[打印本頁]
作者:
605740889
時間:
2021-5-14 14:38
標題:
用51單片機做的溫度監測報警裝置,手動報警是需要按下SEND按鈕的,但是現在我想...
代碼我放到下面,求大佬幫忙看看該怎么改!謝謝!紅色字體即為我加的定時器代碼
#include <reg52.h>
#include <intrins.h>
#include "common.h"
#include "lcd1602.h"
#include "DS18B20_One.h"
#include "uart.h"
#include "gsm.h"
#define uint unsigned int
#define uchar unsigned char //宏定義
const char * xdata phonenum= "17630966319"; //在此處更換號碼
sbit SET= P1^0;//設置按鍵引腳
sbit ADD= P1^1;//按鍵加引腳
sbit DEC= P1^2;//按鍵減引腳
sbit SEND= P1^3;//手動發送短信按鍵引腳
sbit BEEP=P2^3;//蜂鳴器引腳
sbit ADC0832_CS = P2^2;//ADC0832 CS引腳
sbit ADC0832_CLK = P2^0;//ADC0832 CLK引腳
sbit ADC0832_DIO = P2^1;//ADC0832 DO引腳
sbit LED_Y=P1^5;//溫度報警指示燈
sbit LED_R=P1^6;//溫度報警指示燈
uchar th=30;//溫度上限初始值
uchar setn = 0;//進入設置標志位,setn等于0時退出設置
bit shoudong = 0;//手動發送短信標志位,等于1時,進入手動發送短信模式
uchar xdata send_data[]="Temp:00C";//短信發送內容
<font color="#ff0000">uchar timer50msCount = 0; //定時器定義
void Timer0Init(void) //[email protected]
{
TMOD &= 0xF0; // 設置定時器模式,這里為T0
TMOD |= 0x01; // 設置定時器工作方式1,為16為定時器
TL0 = 0x00; // 設置定時器低位初值
TH0 = 0x4C; // 設置定時器高位初值
TF0 = 0; // 清楚TF0溢出標志位
TR0 = 1; // 啟動定時器0開始計時
}
void timer0Interrupt() interrupt 1
{
timer50msCount++;
// 每次中斷時,定時器初值為0,需重新設置定時器初值,保持50ms
// 時間不變
TL0 = 0x00;
TH0 = 0x4C;
}</font>
void keyscan()//按鍵掃描
{
if(SET == 0)//設置鍵按下
{
delay_ms(10);//延時消抖
if(SET == 0)//判斷是否按下
{
while(!SET);//等待松開
setn++;//設置標志位自加1
if(setn > 1)//總共設置,溫度上限
{
setn = 0;//退出設置模式
lcd_write_com(0x0c);//關閉光標
}
switch(setn)
{
case(1):lcd_write_com(0x80+14);lcd_write_com(0x0f);break;//在溫度上限值的位置光標閃爍
}
}
}
if(ADD == 0)//按鍵加按下
{
delay_ms(10);//延時消抖
if(ADD == 0)//按鍵加按下
{
while(!ADD);//等待松開
if(setn == 1)//設置標志位等于1時,為溫度上限設置
{
if(th < 99)//溫度上限值最大只能加到99
{
th++;//值加1
}
lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個位
}
}
switch(setn)
{
case(1):lcd_write_com(0x80+14);lcd_write_com(0x0f);break;//在溫度上限值的位置光標閃爍
}
}
if(DEC == 0)//按鍵減按下
{
delay_ms(10);//延時消抖
if(DEC == 0)//按鍵減按下
{
while(!DEC);//等待松開
if(setn == 1)//設置標志位等于1時,為溫度上限設置
{
if(th > 0)//溫度上限值最小只能減到0
{
th--;//值減1
}
lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個位
}
}
switch(setn)
{
case(1):lcd_write_com(0x80+14);lcd_write_com(0x0f);break;//在溫度上限值的位置光標閃爍
}
}
if(SEND == 0)//手動發送鍵按下
{
delay_ms(10);//延時消抖
if(SEND == 0)//手動發送鍵按下
{
while(!SEND);//等待松開
shoudong = 1;//手動發送位置1
lcd_write_str(0,0, " Send Sms... ");//顯示發送短信中
lcd_write_str(0,1, " Waiting... ");//第二行清屏
gsm_send_englishmsg(phonenum,send_data);//發送短信
delay_ms(2000);//延時2秒
delay_ms(2000);//延時2秒
delay_ms(2000);//延時2秒
lcd_write_str(0,0, " Send OK... ");//顯示發送成功
lcd_write_str(0,1, " ");
delay_ms(2000);//延時2秒
delay_ms(2000);//延時2秒
delay_ms(2000);//延時2秒
lcd_write_str(0,0, "NOW: C SET: C");//返回主頁面顯示
lcd_write_str(0,1, " IN OPERATION ");//第二行顯示內容隨意
lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個位
shoudong = 0;
}
}
}
void main()
{
uint count;
short temperature;//溫度
bit send_flag=0;
<font color="#ff0000"> EA = 1; // 開總中斷
ET0 = 1; // 開定時器 0 中斷
Timer0Init();</font>
lcd_init();//1602初始化
temperature = DS18B20_TF();//溫度DS18B20初始化
lcd_write_str(0,0," GSM init... ");//1602顯示GSM初始化中
uart_init(9600);//串口初始化,波特率9600
gsm_init();//gsm初始化
delay_ms(500);//延時
lcd_write_str(0,0, "NOW: C SET: C");//進入主頁面,第一行顯示的內容,溫度值和溫度上限值
lcd_write_str(0,1, " IN OPERATION ");//第二行顯示內容隨意
lcd_write_char(13,0,th/10+0x30);//顯示溫度上限值十位
lcd_write_char(14,0,th%10+0x30);//顯示溫度上限值個位
while(1)
{
keyscan();//按鍵掃描
if(count++ > 150 && setn == 0)//延時一段時間,并且設置位等于0時,進入以下函數
{
count = 0;//累加變量清零
if(shoudong == 0)
{
temperature = DS18B20_TF();//讀取溫度值
lcd_write_char(4,0,temperature/10+0x30);//溫度值十位顯示
lcd_write_char(5,0,temperature%10+0x30);//溫度值個位顯示
send_data[5]=temperature/10+'0';//短信內容值,溫度十位
send_data[6]=temperature%10+'0';//短信內容值,溫度個位
LED_R = 1;//LED滅
//if(temperature >= th)
// LED_Y = 0;//溫度超標,LED亮
//else
// LED_Y = 1;//LED滅
if(temperature >= th)
LED_R = 0;//溫度超標,LED亮
else
LED_R = 1;//LED滅
if(temperature >= th)//溫度超標,蜂鳴器報警,并且發送短信
{
BEEP = 0;
if(send_flag == 0)//為了避免報警時,短信頻繁發送,這里超標時只發一次短信
{
send_flag = 1;
gsm_send_englishmsg(phonenum,send_data);//發送短信
}
delay_ms(100);//延時
}
else
{
BEEP = 1;//關閉蜂鳴器
send_flag = 0;//短信發送標志位清零
}
}
}
delay_ms(1);
//定時發送程序
// 每5000ms允許if語句塊中的程序
<font color="#ff0000"> if (timer50msCount == 100)
{
SEND =0;
delay_ms(500);//延時0.5秒
SEND =1;
timer50msCount = 0;
}</font>
delay_ms(1);
}
}
復制代碼
作者:
605740889
時間:
2021-5-14 14:39
不好意思各位,代碼行里面字體不讓加紅
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
毛片资源
|
日韩和的一区二区
|
久色91
|
日韩精品一区在线观看
|
国产精品区二区三区日本
|
在线播放一区
|
久久精品在线视频
|
日本在线播放
|
一本久
|
av日韩在线播放
|
毛片网站大全
|
99视频网站
|
香蕉视频色版
|
亚洲国产欧美在线
|
91视频在线
|
国产成人综合网
|
亚洲综合激情网
|
欧美黄色精品
|
欧美日韩中文在线
|
亚洲天堂中文字幕
|
亚洲亚洲人成综合网络
|
亚洲激情偷拍
|
欧美性受xxxx黑人xyx性爽
|
欧美精品一区二
|
在线观看日韩av
|
国产精品久久久久久久久
|
国产天堂av
|
波多野结衣一区二区三区在线观看
|
97精品视频在线观看
|
国产一区二区不卡
|
成人在线免费视频观看
|
欧美视频久久
|
日韩三级视频
|
国产精品99久久久久久www
|
欧美日韩成人在线
|
欧美成人精品欧美一级私黄
|
欧美激情一区二区三区
|
亚洲成人免费
|
国产一区二区日韩
|
91视频播放
|
欧美a级成人淫片免费看
|