信息工程专业毕业论文--基于单片机的空调温度控制系统设计内容摘要:

的高电平期间保持稳定的低电平。 图 数据传送时序 软件程序设计 模块流程图 主程序模块流程图(图 ) DS18B20 通讯模块流程图(图 ) 键扫描模块流程图(图 ) 图 主程序流程图 图 DS18B20 通讯模块流程图 图 键扫描模块流程图 6 仿真 及实验结果 程序调试过程中遇到的问题及解决办法 ,由于 DS18B20 与微处理器采用串行数据传送,因此,在对 DS18B20 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。 DS18B20 测温程序设计中,向 DS18B20 发出温度转换命令后,程序总要等待 DS18B20 的返回信号,一旦某个 DS18B20 接触不好或断线,当程序读该DS18B20 时,将没有返回信号,程序进入死循环。 这一点在进行 DS1820 硬件连接和软件设计时也要给予一定的重视。 ,在程序开始时,要写入各定时器中断的入口地址。 ,否则,在程序过长时容易变得很乱,不便于查找或更改。 ,避免上下乱调用的现象,这样会使程序更加清晰化。 ,这样会使思路清晰。 调试结果 图 开发板上的显示结果 图 仿真电路及结果 图 开发板上的实验结果 总结 近三个月的毕业设计即将结束,这意味着我们的大学生活也要结束了,但我的学习没有结束,在本次设计中,我所学过的理论知识接受了实践的 检验,增强了我的综合运用所学知识的能力及动手能力,为以后的学习工作打下了良好的基础。 本设计使用 AT80C52 作为主控芯片进行控制,单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。 其中的温度控制系统采用DS18B20 “一线总线”数字化温度传感器,支持“一线总线”接口,大大提高了系统的抗干扰性测量温度范围为 55℃到 +125℃,在 10 到 +85℃范围内 ,精度为177。 ℃。 而且体积小价格实惠,温度设定采用按键设定, 风速控制则由步进电机的转速控制得以实现,软件算法采用设定值和测量值相比较的算法。 在单片机应用的基础上,实现了一种用带有 EEPROM 的 AT89C52 单片机控制传感器的自动化温度监控系统。 最后敬请各位专家、老师和同学对论文和今后的研究工作提出宝贵的指导意见和建议。 致 谢 感谢。 参考文献 姜志海 ,黄玉清 ,刘连鑫 . 单片机原理及应用(第 2 版) [M]. 电子工业出版社 , 2020. 魏泽鼎 . 单片机应用技术与实例 [M]. 电子工业出版社 , 2020. 宋亚伟 . 基于 DS18B29 的温度控制采集系统 [J]. 机电工程技术 , 2020, 37 09 : 8991. 齐建家 ,胡天明 . 基于 DS18B20 的数字温度设计及其应用 [J]. 黑龙江工程学院学报 ,2020, 22 2 : 5962. 张洪润 ,张亚凡 . 单片机原理及应用 [M]. 清华大学出版社, 2020. 李玉峰 . MCS51 系列单片机原理与接口技术 [M]. 人民邮电出版社 , 2020. 马忠梅 . 单片机的 C 语言应用程序设计 [M]. 北京航空航天大学出版社 , 2020. 附件 1 系统硬件电路图 附件 2 系统软件程序 /*********************************************** *文件名 :温度采集 *描述 :实现用温度传感器 DS18B20 对温度的采集 并用 1602 液晶显示 *创建人 :杨耀武 *老师 :黄 宇 ***********************************************/ include include define uchar unsigned char define uint unsigned int define jump_ROM 0xcc define start 0x44 define read_EEROM 0xbe sbit scl P3^5。 //24c02 SCL sbit sda P3^6。 //24c02 SDA sbit DQ P2^3。 //DS18B20 数据口 sbit E P2^7。 //1602 使能引脚 sbit RW P2^6。 //1602 读写引脚 sbit RS P2^5。 //1602 数据 /命令 sbit beep P3^7。 //蜂鸣器报警 sbit s1 P3^2。 //功能选择按 键 sbit s2 P3^3。 //温度加 sbit s3 P3^4。 //温度减 sbit warm P3^0。 //升温继电器 sbit cool P3^1。 //降温继电器 uchar TMPH,TMPL,Count1,Count2,T,xie,s1num,s2num,s3num,BusyC。 uint temp,speed。 uchar code table1[] SETTING T:2239。 C。 uchar code table2[] SP:L T:39。 C。 uchar code distab[] 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09。 uchar data display[] 0x00,0x00,0x00,0x00,0x00。 uchar code F_Rotation[] 0x20,0x60,0x40,0xc0,0x80,0x90,0x10,0x30。 //正转表格 uchar x24c02_read uchar address。 void x24c02_write uchar address,uchar info。 void keyscan void。 //软件延时 /*********************************************** * 名称 : flash * 功能 : 延时大概为 2US * 输入 : 无 * 输出 : 无 ***********************************************/ void flash void _nop_。 _nop_。 /*********************************************** *名称: delay_16us( uint A)单位 us *功能:当使用 晶振时候调用大概要耗时 24 us,每次计数耗时约为 16us *输入:要延时的时间( A x 16) *输出:无 ***********************************************/ void delay_16us uint N int i。 for i 0。 i N。 i++。 /*********************************************** *名称: delay_1ms( uint A)单位 us *功能:当使用 晶振时候每次计数延时约 1ms *输入:要延时的时间 a ms *输出:无 ***********************************************/ void delay_1ms uint a int i,j。 for i a。 i 0。 i for j 110。 j 0。 j。 //定时器延时 /*********************************************** * 名称 : Time1_Init * 功能 : 定时器的初始化, 晶振, 10ms * 输入 : 无 * 输出 : 无 ***********************************************/ void Time1_Init TMOD 0x10。 IE 0x88。 TH0 0xb8。 TL0 0x00。 /*********************************************** * 名称 : Time1_Int * 功能 : 定时器中断,中断中实现 Count 加一 * 输入 : 无 * 输出 : 无 ***********************************************/ void Time1_Int interrupt 3 TH0 0xb8。 TL0 0x00。 Count2++。 if Count2 50 Count2 0。 xie 1。 //20ms 写一次 //DS18B20 测温显示 /*********************************************** *名称: Reset *功能:复位 DS18B20 *输入:无 *输出:无 ***********************************************/ uchar Reset void uchar receive_data。 DQ 0。 //把 DQ 拉低 delay_16us 29。 //持续 480us DQ 1。 //使 DQ 回高 delay_16us 3。 //等存在脉冲 receive_data DQ。 //得存在脉冲 delay_16us 25。 return receive_data。 //返回时隙信号 /*********************************************** *名称: read_bit 读一位 *功能:从 DS18B20 读一个位值 *输入:无 *输出:一位的位值 ***********************************************/ uchar read_bit void uchar i。 DQ 0。 //读开始 DQ 1。 for i 0。 i 3。 i++。 //延时约 15us return DQ。 /*********************************************** *名称: write_bit 写一位 *功能:向 DS18B20 写一个位值 *输入: bitval 要对 DS18B20 写入的位值 *输出:无 ***********************************************/ void write_bit uchar bitval DQ 0。 //拉低 DQ 开始写时隙 if bitval 1 //若写 1 就拉高 DQ,否则反之 DQ 1。 delay_16us 5。 //延时采样 DQ 1。 /*********************************************** *名称: read_byte 读一字节 *功能:从 DS18B20 读一个字节的值。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。