收藏 分销(赏)

温度测量显示电路-穆昊.doc

上传人:w****g 文档编号:2139861 上传时间:2024-05-19 格式:DOC 页数:11 大小:151.54KB 下载积分:8 金币
下载 相关 举报
温度测量显示电路-穆昊.doc_第1页
第1页 / 共11页
温度测量显示电路-穆昊.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
个人收集整理 勿做商业用途 生产实习报告 题目:温度采集显示电路 班级:电气082 姓名:穆昊 学号:0810430214 成绩:__________ 目录 摘要: 2 一、实习目的 3 二、实习要求 3 三、实习内容 3 (一)硬件结构 3 1、最小系统原理图 3 2、温度采集原理图 4 3、数码管显示原理图 4 4、按键原理图 4 5、RS—232串口通信原理图 5 (二)软件结构 5 1、延时程序设计 5 2、传感器数据读取程序 6 3、串口通信程序设计 7 4、按键程序设计 7 5、主程序设计 8 四、调试 10 五、结论 10 参考文献 11 摘要: 本作品采用STC89C52单片机作为核心控制器,配合外部硬件—-DS18B20、数码管、按键、MAX232电平转换完成了温度的实时显示功能,按键控制单片机向上位机发送温度的功能。本作品具有硬件电路简单,温度采集精度较高、范围广,使用方便等特点. 一、实习目的 实习是大学学习很重要的环节,因为大学的学习中本来就缺少实践机会,而这次实习给我们提供了一个很难得的动手的机会,通过这次实习不仅可以使我们增强动手能力,而且可以让我们对专业相关知识有更深入的了解。在本次实习中,我了解了电子产品的基本设计生产流程,学习了基本的电子工艺,掌握了电子元件的基本知识、焊接工艺、常用仪表的使用等,同时在实习过程中也提高了分析问题和解决问题的能力。 二、实习要求 1.了解单片机的设计、生产、开发流程,基本掌握单片机的开发。本次实习实验板上设计安装了4个八段数码管,8个发光二极管,八个按键,RS232串行接口,MAX485,等,采用USB供电,所有资源均可用跳线选择。使用这块实验板可以进行流水灯,数码管显示,中断,温度采集等试验。 2。测试程序可以帮助检测焊接是否正确,有效找到问题,充分利用资源. 三、 实习内容 (一)硬件结构 1、最小系统原理图 最小系统包括晶振电路、复位电路、I/0口上拉电阻、STC89C52几部分。 2、温度采集原理图 我们温度采集模块采用了DS18B20芯片,该芯片采集精度高,使用方便,采集范围较广,具有较强的实用性. 3、数码管显示原理图 数码管显示部分采用74HC573锁存器控制数码管的段选,74HC138控制数码管的位选. 4、按键原理图 我们用来控制发送数据的按键选择了开发板上的独立按键,独立按键与单片机的外部中断0端口相连。当按键按下时,触发单片机的外部中断,控制单片机向上位机发送数据. 5、RS—232串口通信原理图 我们实现的单片机与计算机之间的通信用到了串口通信,而此开发板的串口通信是利用了RS—232串行通信,此串行通信要符合RS—232通信协议。 RS-232C标准对电气特性、逻辑电平和各种信号线功能都做了规定.对于数据,逻辑“0”的电平高于-3V,逻辑“1”的电平低于+3V;对于控制信号,接通状态即信号有效地电平高于+3V,断开状态即信号无效的电平低于-3V。也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3V~+3V之间的电压无意义,低于—15V或高于+15V的电压也认为无意义,因此,实际工作时应保证电平在±(3~15)V之间.ELA-RS-232C与TTL以高低电平表示逻辑状态的规定不同,因此,为了能够同计算机接口,必须在ELA—RS—232C与TTL电路之间进行电平和逻辑关机的变换。为了是吸纳这种变换,这块开发板使用的是MAX232芯片,电路图如下所示. (二)软件结构 1、延时程序设计 由于DS18B20控制要求比较高的时序,而单片机又没有太多的任务可做,因此我们直接使用延时程序实现了时序的要求。 程序大致如下: /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay_1ms(uint i) { uchar x,j; for(j=0;j〈i;j++) for(x=0;x<=148;x++); } 2、传感器数据读取程序 我们使用的温度传感器为DS18B20,由于这款芯片为单总线设计,读取数据需要按照严格的时序,我们使用了精准的延时程序实现了这款芯片的控制。其程序大致如下: /******************************************************************** * 名称 : Reset() * 功能 : 复位DS18B20 * 输入 : 无 * 输出 : 无 ***********************************************************************/ uchar Reset(void) { uchar deceive_ready; DQ = 0; delay(29); DQ = 1; delay(3); deceive_ready = DQ; delay(25); return(deceive_ready); } /******************************************************************** * 名称 : read_bit() * 功能 : 从DS18B20读一个位值 * 输入 : 无 * 输出 : 从DS18B20读出的一个位值 ***********************************************************************/ uchar read_bit(void) { uchar i; DQ = 0; DQ = 1; for(i=0; i<3; i++); return(DQ); } /******************************************************************** * 名称 : write_bit() * 功能 : 向DS18B20写一位 * 输入 : bitval(要对DS18B20写入的位值) * 输出 : 无 ***********************************************************************/ void write_bit(uchar bitval) { DQ=0;if(bitval==1) DQ=1; delay(5); DQ=1; } /******************************************************************** * 名称 : read_byte() * 功能 : 从DS18B20读一个字节 * 输入 : 无 * 输出 : 从DS18B20读到的值 ***********************************************************************/ uchar read_byte(void) { uchar i,m,receive_data; m = 1; receive_data = 0; for(i=0; i〈8; i++) { if(read_bit()) { receive_data = receive_data + (m << i); } delay(6); } return(receive_data); } /******************************************************************** * 名称 : write_byte() * 功能 : 向DS18B20写一个字节 * 输入 : val(要对DS18B20写入的命令值) * 输出 : 无 ***********************************************************************/ void write_byte(uchar val) { uchar i,temp; for(i=0; i〈8; i++) { temp = val >〉 i; temp = temp & 0x01; write_bit(temp); delay(5); } } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main() { float tt; uint temp; P2 = 0x00; while(1) { Reset(); write_byte(jump_ROM); write_byte(start); Reset(); write_byte(jump_ROM); write_byte(read_EEROM); TMPL = read_byte(); TMPH = read_byte(); temp = TMPH; temp <〈= 8; temp = temp | TMPL; tt = TMPL * 0.0625; temp = TMPL / 16 + TMPH * 16; P0 = table[temp/ 10]; //显示高位键值 P2 = 0x00; Delay_1ms(5); P0 = table[temp % 10]; //显示低位键值 P2 = 0x01; Delay_1ms(5); } } 3、串口通信程序设计 串口通信部分我们是利用AT89C52单片机本身提供的串口通信功能完成的,其向上位机发送数据是在中断程序中完成的。当进入中断时,首先进行按键的滤波,然后将采集到的数据发送到上位机。 4、按键程序设计 我们设计的按键是采用是与单片机外部中断端口相连的独立按键。当有按键按下时,即触发了外部中断,实现了按键的采集。按键产生的操作既可以在外部中断程序中完成. 5、主程序设计 主程序流程图大致如下: 四、调试 调试过程我遇到了以下几个问题: 1、无法控制停止单片机向上位机发送数据; 解决方法:添加了外部中断之后,而主程序中向上位机发送数据的程序未删除。 2、向上位机发送的是16进制的数值,读取不是很方便; 解决方法:将需要发送的数据转化为ASCII码中对应的数字,然后用字符格式显示。 3、向上位机发送的两个数据之间没有间隔,而至于视觉效果不是很好; 解决方法:在发送了所需要的数据之后,然后在发送一个空格. 4、几个数码管之间的亮度不一样; 解决方法:由于除了了显示程序之外,其他程序也占用单片机执行的时间,所以最后一位数码管持续的时间比较长,我们让几位数码管点亮持续时间不同,然后我们看到的亮度就是一样的了。 五、结论 通过了这两周的生产实习,我们学到了一个产品成型所要经过的必要的步骤,对我们以后的学习工作有很大的益处。感谢老师能给我们这次学习的机会。让我们有了实践和动手能力,为以后的工作奠定了坚实的基础! 参考文献 [1] 51单片机C语言编程 郭天祥2009.9
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服