测温并串口通信送电脑显示.docx
《测温并串口通信送电脑显示.docx》由会员分享,可在线阅读,更多相关《测温并串口通信送电脑显示.docx(12页珍藏版)》请在冰豆网上搜索。
测温并串口通信送电脑显示
河南大学物理与电子学院
开放实验室单片机设计报告
测温并串口通信送电脑显示
设计人:
开放实验室入室人员
目录
0前言1
1系统组成与功能1
1.1系统组成1
1.1.1AT89C51单片机1
1.1.2温度传感器18b201
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.1AT89C51单片机
AT89S51具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)
图1-1AT89C51引脚图
电路,片内时钟振荡器。
此外,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发送一个字节数据
***************************************************/
voidSend(unsignedchardat)
{
ACC=dat;
TB8=p;
SBUF=dat;
while(TI==0)
;
TI=0;
}
/***********主函数************/
main()
{
TMOD=0x20;//TMOD=00100000B,定时器T1工作于方式2
SCON=0xc0;//SCON=11000000B,串口工作方式3,
//SM2置0,不使用多机通信,TB8置0
PCON=0x00;//PCON=00000000B,波特率9600
TH1=0xfd;//根据规定给定时器T1赋初值
TL1=0xfd;//根据规定给定时器T1赋初值
TR1=1;//启动定时器T1
Disdata=0xFF;//初始化端口
discan=0xff;
for(h=0;h<4;h++){display[h]=8;}//开始显示"8888"
ow_reset();//开机先转换一次
write_byte(0xCC);//SkipROM
write_byte(0x44);//发转换命令
for(h=0;h<500;h++){scan();}
while
(1)
{
read_temp();//读出DS18B20温度数据
work_temp();//处理温度数据
for(i=0;i<=3;i++)//模拟检测数据
{
Send(display[3-i]);//发送数据i
}
for(h=0;h<500;h++){scan();}//显示温度2s
//程序太长不宜写在报告中,完整程序请
}//联系QQ154401855(或154401856)下载
}
//*************单片机程序结束****************//
Vb程序:
/*****************************************************
PrivateSubMSComm1_OnComm()
Dimabuffer()AsByte
Dims,bAsString
MSComm1.InputMode=comInputModeBinary
IfMSComm1.InBufferCount>0Then
abuffer=MSComm1.Input
Text1=Text1&bytearraytohexstring(abuffer)
s=Text1.Text
Label3.Caption=Right(s,1)
Label4.Caption=Left(Right(s,2),1)
Label5.Caption=Left(Right(s,3),1)
b=Left(Right(s,4),1)
Ifb="B"Then
Label6.Caption="-"
Else
Label6.Caption=""
EndIf
EndIf
EndSub
//*************VB程序结束****************//
5结论
通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。
这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。
软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。
由于本人水平有限,扩展部分做的不是太好,希望以后能够改进。
参考文献
[1]何立民.单片机应用技术选编[M],北京:
北京航空大学出版社,1998;
[2]何立民.单片机中级教程[M],北京:
北京航空大学出版社,1998;
[3]郭天祥.51单片机C语言教程[M],北京:
机械工业出版社,2008;
[4]阎石主.数字电子技术基础[M],北京:
高等教育出版社,1998。