- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
测温并串口通信电脑显示
河南大学物理与电子学院
开放实验室单片机设计报告
测温并串口通信送电脑显示
设计人:开放实验室入室人员
目 录
0 前言 1
1 系统组成与功能 1
1.1 系统组成 1
1.1.1 AT89C51单片机 1
1.1.2 温度传感器18b20 1
1.1.3四位一体七段数码管 2
1.2 系统功能 3
2 系统原理 3
2.1系统仿真图 4
2.2 实物照片 4
3 程序流程图 5
4 具体程序代码 6
5 结论 8
参考文献 8
基于单片机测温送电脑显示
0 前言
随着社会的发展,单片机得到了广泛的应用。人们越来越重视单片机的应用。而温度适合每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控。本设计是基于单片机和温度传感器的一个小的电脑和单片机的单向通信。
1系统组成与功能
1.1 系统组成
本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。
1.1.1 AT89C51单片机
AT89S51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)
电路,片内时钟振荡器。
此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位[2]。
引脚图如图1-1所示。
1.1.2 温度传感器18b20
DS18B20的主要特征: 全数字温度转换及输出。 先进的单总线数据通信。 最高12位分辨率,精度可达土0.5摄氏度。 12位分辨率时的最大工作周期为750毫秒。 可选择寄生工作方式。 检测温度范围为–55°C ~+125°C (–67°F ~+257°F) 内置EEPROM,限温报警功能。 64位光刻ROM,内置产品序列号,方便多机挂接。 多样封装形式,适应不同硬件系统。18b20引脚如图所示
DS18B20引脚功能:·GND 电压地 ·DQ 单数据总线 ·VDD电源电压
1.1.3 四位一体七段数码管
本设计用到四位一体的七段数码管1个,其原理与单个的数码管显示原理
是一样的。四位一体的数码管共12个引脚。A-dp八个引脚对应八根数据线,控
图1—4 数码管内部结构及引脚图
制显示的字形。DIG1-DIG2四个引脚为公共端,控制当前显示字形的位别,为扫描法显示提供了方便,有效减少了数码管占用的单片机引脚数。下面便是一个共阴的四位数码管的内部结构图。引脚排列依然是从左下角的第一只管脚开始,以逆时针方向依次为1-12脚,数码管内部结构及引脚参见图1-4 [4]。
1.2 系统功能
这个设计是基于单片机的一个小的设计。其能够实现时时对环境的测温并且通过有线的连接与电脑通信。单片机通过18b20采集温度然后存入实现定义的数组中,之后通过数码管显示出所的温度,同时单片机通过txd和rxd与电脑通信,实现电脑显示
2 系统原理
2.1 系统仿真图
图2—1 系统仿真图
2.2实物照片
具体的实物照片如下图:
上图说明测温正常,左边的LCD1602液晶没有使用,白线是到PC的串口线。
上图显示测温值为12.1℃,白线是到51的串口线,即连到电脑的串口上了。
在电脑屏幕上显示温度值为12.1℃,这是VB程序显示效果,说明正确传到电脑上了,VB程序做的水泡背景只想为好看些,如果你认为不好,你实验室可以去掉,或换成你的照片。
3 程序流程图
4 部分程序源代码
单片机程序:
/*****************************************************
函数功能:向PC发送一个字节数据
***************************************************/
void Send(unsigned char dat)
{
ACC=dat;
TB8=p;
SBUF=dat;
while(TI==0)
;
TI=0;
}
/***********主函数************/
main()
{
TMOD=0x20; //TMOD=0010 0000B,定时
文档评论(0)