- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机的电热炉温度控制系统1
北京信息科技大学
自动化学院
基于单片机的电热炉温度控制系统
专 业: 自动化
班 级: 自控
学 号:
姓 名:
摘 要
在生活中,从小型的空调,冰箱,到大型的工厂设备,人们对温度的控制越来越频繁,也越来越精确。电热炉温度控制系统以C51单片机为基础,利用ADC0808对传感器进行采样,通过与设定值进行比较,对输出加以控制。从而使得系统能够稳定在设定的范围内。
1.1硬件系统框图
以下是硬件系统框图
1.2各部分硬件的设计
(1)采样电路设计
因为ADC0809无法在protues中仿真,所以我选用的器件是ADC0808,功能和ADC0809一样。但在管脚上有一点区别。out8为最低位out1为最高位。而ADC0809则不同。
在这里我用了一个OVEN器件,这个器件两端通电便会自动加热,在T输出端会输出温度相对应的电压,而且其对应的电压值就等于温度值。因为温度的变化范围是0到100,而ADC0808的基准电压是5V,所以我用了两个电阻进行分压。是采样信号在0—5V的范围内。ADDA ADDB ADDC三个端口接地,选通IN0口。
(2)按键输入
在这个实验中,我只用了一个按键,对设定温度进行设定,因为按键数目不多,所以系统直接采用非编码方式,直接连接单片机I/O口。
(3)显示部分
系统采用LED七段数码动态显示电路来显示温度值,显示范围在0-99之间,该电路由显示、片选、译码三部分组成。
显示部分:由两个两位的LED七段共阴数码管构成,P1口接两个数码管的abcdefg和dp端,P3.4,P3.5是设定值的位选,P3.6,P3.7是当前温度的位选。
(4)输出控制
控制部分采用了一个继电器,当P3.0口高电平时,继电器闭合,电热炉进行加热,当P3.0为低电平时,继电器断开,电热炉停止加热。
(5)系统硬件总设计图
1.3系统软件设计
1.3.1 系统程序总流程图
Y
No
1.3.2 AD转换程序设计
int AD() //AD转换
{
unsigned char Val_AD=0; //用于储存AD值
START=0;
_nop_();_nop_();_nop_();
START=1;
_nop_();_nop_();_nop_();
START=0; //给START一个脉冲,启动AD转换
while(EOC==0); //等待AD转换结束
OE=1; //准备读取AD数据
Val_AD=P0; //读取P0口的值,即为AD值
Val_AD=Val_AD*0.3906;
return (Val_AD);
}
(1) 进行A/D转换之前,要启动转换的方法:ABC=000选择第一通道。ST=0,ST=1,ST=0产生启动转换的正脉冲信号
(2) 进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入进行处理。
(3)Val_AD=Val_AD*0.3906,其中0.3906这个参数是5/256*20得到的。即把数字量重新转化成对应的温度值
1.3.3 显示程序
void Display(Val_AD,sheding) //显示
{
unsigned char gewei1;
unsigned char shiwei1;
unsigned char gewei2;
unsigned char shiwei2;
gewei1=sheding%10;
shiwei1=sheding/10;
gewei2=Val_AD%10;
shiwei2=Val_AD/10;
show2_shi=1;
show2_ge=1;
show1_shi=1;
show1_ge=0; //选通个位数码管
P1=tab[gewei1]; //显示个位
delay(1);
show2_shi=1;
show
文档评论(0)