《2022年单片机恒温控制系统设计【很完整】.docx》由会员分享,可在线阅读,更多相关《2022年单片机恒温控制系统设计【很完整】.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 1. 功能要求用户设定温度值后,显示设定温度和当前温度依据当前温度和设定温度之间的差值,掌握加温或停止加温,最终达到恒温;2.方案论证按要求,系统采纳 1 片 51 单片机、 1 片 A/D 转换器 ADC0809、键盘和 4 个共阴极 7 段 LED 显示器件;系统框图如图 1 所示;键盘MCS-51 单片机 设定温度显示设定温度和当前温度加温 测温元件热掌握电路 敏电阻A/D 图 1 . 恒温掌握系统原理图3.硬件电路设计本设计中, 8255A 和 A/D 转换器都作为单片机的扩展外设;4.硬件电路的功能(分模块介绍)1 温度采集与掌握单元
2、电路 : 温度采集电路是用热敏电阻和一个分压电阻形成电压采样点,电压经换算可得到当前温度;用一个大功率电阻形成温度掌握电路,掌握点接地,大功率电阻上有电流流过就名师归纳总结 发热,掌握点接+12V ,大功率电阻上无电流流过就停止发热;电路图如下图2 所示;第 1 页,共 7 页- - - - - - -精选学习资料 - - - - - - - - - +5V +12V 热敏电阻 Rt 采样点 V 510大功率电阻100分压电阻掌握点 A 图 2.温度采集与掌握单元电路(2)动态显示电路:假设温度在100 一下,因此可以挑选4 个共阴极的七段LED,前两个显示设定温度,后两个显示当前温度;单片机
3、与8255A 相连,用 8255A 的 A 口连接段码, B口连接位码实现动态显示; 详细电路如图 3 所示;单片机与 8255A 的连接电路略, 假设 8255A 的地址为 FFF0H -FFF3H;PA6 PA0 ag ag ag ag 8255A PB0 X1 X2 X3 X4 PB3 图 3.动态显示电路(3)A/D 转换与温度掌握电路:数据采集选用 A/D 转换器 0809,程序中循环采集 A/D 转换值,采集完成由单片机接收采集的数据,经运算分析,确定是否加温,加温有 8255A 的 PC0掌握;详细电路如图 4 所示;2 名师归纳总结 - - - - - - -第 2 页,共 7
4、 页精选学习资料 - - - - - - - - - A/D P0 ALE 0809+5V 大 功 率 电 阻+12WR 热 敏 电 阻V P2.7 采样点 V SC RD OE 分压电阻510掌握点 A C MCS-51 B 图 2.温度采集与掌握单元电路A PC7 8255 PC0 UNL280AA 图 4.数据采集与温度掌握电路单片机接收到A/D 转换值 X后, 将其转换为测试点的电压V,在运算出电阻Rt 的值;Rt 运算过程为:V=5X/256 i=V/510 Rt=5-V/i=510*5-V/V 固有: Rt=510*256-X/X 热敏电阻的阻值与温度之间有对应关系;有的热敏电阻的
5、阻值与温度之间是线性关系,有的是非线性; 对线性关系,可用公式将 Rt 换算成温度, 对于非线性关系,可用查表程序;从连接电路中可知,0809 芯片的地址是 7FFFH,0809 的掌握端 CBA与地相连,因此只可采集 IN0 的信号;采样终止信号 EOC与 8255 的 PC7相连,可通过查询测试 A/D 转换状态; UNL2803 是反向驱动电路,A 端为 0 时, A为 12V,停止加温; A 端为 1 时, A为 0V,开头加温;(4)键盘电路:键盘是用来设置恒温时的温度值,依据要求, 可设置两个按键开关,K1 用于增加设定值,K2 用于减小设定值,两个开复安分别接在两个外部中断恳求端
6、INT0 和 INT1 上,每按一次开关, 温度值变化一次,开关电路如图5 所示;由于外部中断是低电平或低脉冲动身,故连接时将 K端与中断恳求端相连;3 名师归纳总结 - - - - - - -第 3 页,共 7 页精选学习资料 - - - - - - - - - K+KK +5V 图 5.按键电路5. 程序设计系统程序分为主程序、数据转换与掌握子程序和中断服务程序;(1)主程序:完成系统的 8255 初始化、启动 A/D 转换并采集数据、循环显示设定温度和采集温度;程序流程假如 6 所示;开头启动 A/D 转换N 转换终止Y 接受采样值调用转换掌握子程序储存转换值显示设定温度显示当前温度图
7、6.主程序流程图(2)数据转换与掌握子程序:热敏电阻采纳 mfd103,电阻与温度之间为非线性关系,因此,从 A/D 转换器接收的数据经运算得到 Rt,经查表形成温度值,存入相应单元,并比较设定值与实际温度,掌握加热电路;子程序流程图如下所示;4 名师归纳总结 - - - - - - -第 4 页,共 7 页精选学习资料 - - - - - - - - - 开头采样值转换为 Rt 查表得到温度储存温度当前温度 设定温度Y 停止加热N Y 当前温度 设定温度N 加热返回图 7.数据转换与掌握子程序流程图(3)中断服务程序中断服务程序由两个外部中断服务程序组成,其中一个完成设定温度加 1,另一个完
8、成设定温度减 1;6. 程序清单 #include #include #include #define uchar unsigned char #define uint unsigned int / 定义 09 的共阴极显示代码 Code unchar Table10= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; / 定义热敏电阻值与温度关系表(表为2039电阻值,温度间隔为1)code unit wd20= 0x30CC,0x2EA6,0x2C9C,0x2AAB,0x2802,0x2710,0x2564, 0x23CC,0x2248,
9、0x20D6,0x1F76,0x1E26,0x1CE7,0x1BB6, 0x1A93,0x197D,0x1874,0x1778,0x1687,0x15A0; 5 名师归纳总结 - - - - - - -第 5 页,共 7 页精选学习资料 - - - - - - - - - uint wd_s,wd_c / unit x; /分别存放设定温度和当前温度 定义变量存放采样值/ 数据转换与掌握子程序 void change unit rt,I; rt=510*256-x/x; / 运算 Rt fori=1;i=wdi break; /0 wd_c=20+i; / if wd_cwd_s / 当前温度
10、大于设定温度时,停止加热 XBYTE0XFFF2=0; 号中断服务程序 void int0_funvoid interrupt 0 wd_s+; /1 号中断服务程序 void int0_funvoid interrupt 1 wd_s-; / 主程序 main unchar m4; / 存放温度各位数 unchar com=0xfe; / 显示位码 unchar i; / 定义循环变量 IE=0x85; / 中断初始化 IT0=1; IT1=1; XBYTE0x7FFF3=00X88; /8255A 初始化 while1 XBYTE0x7FFF=0; / 启动转换 if XBYTE0x7FFF2&0x80=0; x=XBYTE0x7FFF; change m0=wd_s/10; /形成设定温度的十位和个位名师归纳总结 - - - - - - -第 6 页,共 7 页精选学习资料 - - - - - - - - - m1=wd_s%10; m2=wd_c/10; / m3=wd_c%10; / 显示温度 for i=0;i4;i+ 形成当前温度的十位和个位XBYTE0xFFF1=0xff; XBYTE0xFFF0=tablemi; XBYTE0xFFF1=com; com=_crol_com,1; 7 名师归纳总结 - - - - - - -第 7 页,共 7 页