- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机温度控制课程设计
课程设计报告
温度控制系统
班级:
学号:
姓名:
电路总体原理网络图
温度测量及显示、控制系统控制的总体结构如图所示。系统主要包括现场温度采集、温度显示、温度上下限设定键盘、温度控制系统和系统核心AT89C52单片机。低温时可控制加热设备,高温时控制风扇。
温度采集电路以数字量形式将现场温度传至单片机。单片机结合现场温度与用户设定的目标温度,进行判断是否超越极限以此控制蜂鸣器自动报警。 总流程图
主程序:
void main()
{
uchar i;
uchar temp;
float backbit;
uchar counter;
counter=5;
sp=1;
for(i=0;i4;i++)
dispbuf[i] = 0;
while(1)
{
//温度测量频率没有必要太高,太高反而影响数码显示
//所以用计数器加以控制
if(counter-- == 0)
{
readtemp();
counter = 2;
}
// readtemp();//读18B20
backbit = temper[0];//换成浮点数
backbit = backbit * 6.25;//乘以0.0625*100
temp = backbit; //取低2位整数部分
dispbuf[3] = temp%10 ;
temp = temp/10;
dispbuf[2] = temp%10 ;
temp = temper[1]; //取整数部分
dispbuf[1] = temp%10;
temp = temp/10;
dispbuf[0]= temp%10;
saomiao();
}
}
延时设计
本系统选用的AT89S52单片机的工作频率为12MHZ。可以知道具体每条指令的周期数,这样就可以通过指令的执行条数来确定时间。具体的延时程序:
void delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
本系统不仅对主函数进行了延时,还对DS18B20的操作进行了延时,以便我们能更容易看清楚所测温度的变化。对DS18B20的延时程序如下:
void delay1(uint z)
{
while(z--);
}
复位设计
本系统主要采用的是手动进行复位,在上电后使RST持续一段时间的高电平。就能使系统复位。其程序如下:
void reset(void)
{
uchar x=0;
DQ = 1;
delay1(8); //稍做延时
DQ = 0;
delay1(80); //精确延时 大于 480us
DQ = 1; //拉高总线
delay(14);
x=DQ;
delay1(20);
}
显示设计
本设计主要是采用了四位一体LED数码管,都对起进行了上拉,以增加数码管的亮度。其程序:
void saomiao()
{
P0=table[dispbuf[0]];//十位
P1=0xfe;
delay(2);
P1=0xff;
P0=table1[dispbuf[1]];//个位
P1=0xfd;
delay(2);
P1=0xff;
P0=table[dispbuf[2]];//十分位
P1=0xfb;
delay(2);
P1=0xff;
P0=table[dispbuf[3]];//百分位
P1=0xf7;
delay(2);
P1=0xff;
温度控制系统
温度控制系统
Y
Y
N
N
“嘀嘀”报警,继电器工作
是否达到报警温度
“嘀嘀”报警,继电器工作
正常指示灯亮
单片机读取温度
显示温度
开始
DS18B20温度转换
设定温度上下限,单片机发出温度转换命令
是否超出上下限
温度值处理
DS18B20
温度检测模块
键盘
AT89C51 单片机
数码管
继电器
继电器
加热设备
风扇
文档评论(0)