- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告03 - 实验报告 - 书业网
实验报告03 - 实验报告 - 书业网
篇一:实验报告03
嵌入式系统课程设计
成员信息
实验目的
1、设计硬件电路,提高硬件设计能力。
2、分析电路,编写控制和通信软件代码。
3、提高动手能力和协作能力。
实验内容
1、设计硬件电路,进行焊接和电路的连接,并进行验证。
2、编写温度控制的代码,进行加载,在LCD上进行显示。
3、编写串口通信的窗口软件,进行通信。
4、数据采集和验证,进行总结。
实验原理和方案
1. 硬件
1) 总体结构
单片机通过P3.7数据端口读取DS18B20采集的温度值后,需要通过RS-232串口与PC机进行通信,在这里要注意,单片机AT89S52的数据端口采用TTL/CMOS逻辑电平,而PC机的串口则采用RS-232电平,因此需要外接逻辑转换器。
总体结构图
单片机通过数据引脚P3.0(RXD)和P3.1(TXD)完成串口的数据通信,为了保证通信的正确和可靠,单片机程序中需要正确的设置工作方式和通信参数,通信参数主要包括波特率,校验位,数据位和停止位等,通信参数必须要与PC机的串口通信设置相一致。
2) 单片机系统
温度监控系统由受控对象(DS18B20数字温度传感器),下位机(51单片机)和上位机(PC机)组成。单片机通过P3.7接口读取温度传感器采集到的温度值,通过P3.6连接喇叭报警,通过串口将温度值传送至上位机,上位机通过应用软件将传来的温度值显示出来。
3) 温度传感器DS18B20
实验中温度传感器采用DS18B20数字温度计,与单片机构成温度控制系统,无需外接ADC,DS18B20具有独特的单总线接口,只需一位I/O即可进行通信,不许外接电源。
2. 软件
温度监控系统的软件主要包括两个部分:
1) 下位机程序:AT89S52上接受温度传感器和发送温度值程序;
单片机读取DS18B20实时温度
unsigned int Read_Temperature(void)
{
unsigned int temp_lsb,temp_msb;
int k;
ow_reset();
write_byte(0xCC);
write_byte(0x44);
delay(5);
ow_reset();
write_byte(0xCC);
write_byte(0xBE);
for(k=0;klt;9;k++)
{
get[k]=read_byte();
}
temp_msb=get[1];
temp_lsb=get[0];
temp_msb = temp_msblt;lt;8;
temp_msb = temp_msb|0x00FF;
temp_lsb = temp_lsb|0xFF00;
temp_lsb = temp_lsbamp;temp_msb;
return(temp_lsb);
}
通过LED显示温度值:
void intTL0() interrupt (来自:WWw.Zaidian.Com 在点网)1 //TL0 定时中断处理函数
{
TL0 = -3686%256; //定时器中断时间间隔
TH0 = -3686/256;
leddisp(); //每次定时中断显示更新一次
}
void leddisp(void)
{
if(lednum == 6) //更新需要现实的数码位
{
lednum = 0;
}
else
{
lednum++;
}
P2 = ~Led_en(lednum);
P1 = segtab[led[lednum]];
}
uchar Led_en(char lednum){
uchar led_en = 0;
switch (lednum){
case 0: led_en = 1;
break;
case 1: led_en = 2;
break;
case 2: led_en = 4;
break;
case 3: led_en = 8;
break;
case 4: led_en = 16;
break;
case 5: led_en = 32;
break;
}
return(led_en);
}
2) 上位机程序:PC上接受温度值并处理温度值的程序。
PC接受温度值并显示
通过运用VC++6.0中ActiveX串口通讯控件处理串口通信,串口参数设置为波特率9600,无校验,8个数据位,1个停止位。
通过ActiveX穿孔通信控件实现,程序为事件驱动方式,处理数据源代码如下:
void CSCommTestDlg::OnComm()
{
VAR
文档评论(0)