没有合适的资源?快使用搜索试试~ 我知道了~
基于51单片机的24路温度巡检仪设计
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 27 浏览量
2023-01-18
17:51:55
上传
评论
收藏 20KB DOCX 举报
温馨提示
试读
11页
基于51单片机的24路温度巡检仪设计
资源推荐
资源详情
资源评论
/*
24 路温度巡检仪:(测温范围-50~+80°C)
功能概述:
依次循环检测并显示 24 路温度,查看各路温度,设置报警温度
操作规则:
开机自动从 1-24 路循环检测温度。按按键 3,进入手动查看功能。每按一次按键 1 立
即增加显示下一路温度
按按键 2,立即减少显示上一路温度,若停止按键,将一直显示当前路号的温度,再按
按键 3,再次进入自动循环显示
设置报警温度:按按键 4,进入报警温度设置。进入温度设置后,首先按按键 1,
设置报警温度的正负,再按按键 4 确定温度正负,并进入报警温度数值设置,按按键 1
增加数值,按按键 2 减少数值,确定数值后,按按键 4 确定报警温度设置并退出设定。
*/
#include"reg52.h"
#include"lcd.h"
#include<intrins.h>
#define u16 unsigned int
#define u8 unsigned char
#define AD_Data P1;
//u8 code wei[]={}
sbit Button1=P3^5;//按键端口定义
sbit Button2=P3^6;
sbit Button3=P3^7;
sbit Button4=P2^3;
sbit Co_A=P0^1;//8 选 1 选择器编码输出端口定义
sbit Co_B=P0^2;
sbit Co_C=P0^3;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;//AD0809 转换结束口
sbit CLK=P3^3;//AD0809 时钟输入口
sbit E1=P0^4;//AD0809 8 路选择编码输入端口和各 8 路选择器 74151 使能位
sbit E2=P0^5;
sbit E3=P0^6;
sbit ALE=P3^4;
sbit SPK=P2^7;
//sbit AD_Data = P1;
u8 code wei[] = {0x60,0x50,0x30};
uchar code_table2[]={0x00,0x07,0x05,0x07,0x00,0x00,0x00,0x00};
// 函数声明
void Send_Byte(u8 byte);
void Delay_ms(u16 z);
void delay();
void Led_Display(u8 Wei, u8 number, u8 point);
void Display_Temp(float number);
void Display_Road(u8 number);
void ADC_Init(void);
float ADC_Read(u8 road);
void Timer_Init();
void Set_Road();
int Set_Temp();
int Key_Get();
void Init();
void Alarm(float t);
void Delay10ms(void);
int count,sflag,ssflag,Road, counter,i,j,k,key,rflag;
float Temp_Set,Temp_Get;
// 主函数
void main()
{
Init();
Timer_Init();
j=0;
k=0;
while(1){
if(sflag==1){//显示当前温度的正负
LcdWriteCom(0xc3);
LcdWriteData('-');
}
else{
LcdWriteCom(0xc3);
LcdWriteData('+');
}
key=Key_Get();
if(key==3){
//key=0;
j=1;
rflag=1;
Set_Road();
}
if(key==4){
Temp_Set=0;
Set_Temp();
}
//Set_Road();//设置路数
Display_Road(Road);//显示路数
Temp_Get=ADC_Read(Road);
Display_Temp(Temp_Get);//显示温度
Alarm(Temp_Get);
}
}
void Alarm(float t)
{
if(((int)t>=Temp_Set)&&(ssflag==sflag)){
SPK=~SPK;
Delay_ms(50);
SPK=~SPK;
}
}
void Timer_Init()
{
TMOD=0x11; //定时器 1,0 模式设置
TH0=(65536-24)/256;
TL0=(65536-24)%256;
TH1 = (65536 - 50000)/256;//定时 50ms
TL1 = (65536 - 50000)%256;
EA=1; //全局中断允许位
ET0=1; //打开 T0 中断
ET1=1;//打开 T1 中断
TR0=1; //定时器 0 运行控制位,置 1 启动定时器 0
TR1=1;//定时器 1 运行控制位,置 1 启动定时器 1
}
//T0 定时器中断给 ADC0809 提供时钟信号
void timer0() interrupt 1 //中断服务程序
{
TH0=(65536-24)/256;
TL0=(65536-24)%256;
CLK=~CLK;
}
//T1 定时器中断,提供定时
剩余10页未读,继续阅读
资源评论
白茶丫
- 粉丝: 4w+
- 资源: 1836
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功