单片机课程设计报告.docx

上传人:b****2 文档编号:2130555 上传时间:2022-10-27 格式:DOCX 页数:27 大小:370.45KB
下载 相关 举报
单片机课程设计报告.docx_第1页
第1页 / 共27页
单片机课程设计报告.docx_第2页
第2页 / 共27页
单片机课程设计报告.docx_第3页
第3页 / 共27页
单片机课程设计报告.docx_第4页
第4页 / 共27页
单片机课程设计报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告.docx

《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告.docx

单片机课程设计报告

单片机原理及应用课程设计

 

学院:

信息电子学院

班级:

08电子信息工程

学号:

E08610308

姓名:

陈建能

指导老师:

陈科\包晓敏

日期:

2010\01\14

 

任务书

设计题目

远程温度采集系统

设计任务及步骤

使用proteus作为开发工具,完成双机通讯的温度采集功能:

一、使用LM20温度传感器、AD1674模数转换器、AT89C51单片机、4位拨码开关组成温度采集模块(从机),拨码开关用于设定模块的地址(00-15),从机在采集完温度信号(间隔5S)后通过串口发送到主机;

二、使用AT89C51单片机、4位拨码开关、LED显示组成温度接收模块(主机),4位拨码开关用于设定通讯波特率(1200,2400,4800,9600)当主机波特率改变后,从机波特率也自动改变,上电运行显示波特率信息(停3S),之后显示接收地址与温度信息,当接收时间间隔超过6S未收到数据,系统报警;

三、单片机一次只能发送一个字节的信息,使用多字节数据组成一帧数据,自定义一套通信协议来完成一、二的功能;

扩展要求:

将双机通信改成多机通讯(一个接收器,多个发送器)

论文

要求

①画出整个系统的电路原理图;

②叙述各功能模块的工作原理;

③编写各模块程序;

④论文中应附上程序流程图;

⑤书写论文时注意结构合理,层次分明,在分析时注意语言的流畅。

工作

计划

1布置任务,查找资料

2电路和程序设计

③设计程序调试结果验收

④论文答辩

指导

教师

包晓敏、陈科2010年12月20日

 

目录

1、课程设计目的………………………………………………………………4

2、课程设计工具及题目………………………………………………………4

2.1、课程设计工具…………………………………………………...……4

2.2、课程设计题目……………………………………………...…………4

3、课程设计内容、步骤及电路原理图………………………………………4

3.1、课程设计内容………………………………………………………..4

3.2、课程设计步骤………………………………………………………..4

3.3、整个系统的电路原理图……………………………………………..5

4、课程设计各模块工作原理…………………………………………………5

4.1、温度采集模块.………………………………………………………...5

4.1.1、LM20经AD1674转换为12位数据给从机……………….6

4.1.2、从机接收主机发送的波特率并且设置自己的波特率……....8

4.1.3、拨码开关实现地址的变换…………………………………....8

4.1.4、定时器实现5秒间隔…………………………………………8

4.1.5、发送温度和地址,及其通信协议……………………………9

4.2、温度接收模块……………………………………………………….10

4.2.1、波特率设定及发送…………………………………………...11

4.2.2、波特率显示并且延时3s……………………………………...11

4.2.3、温度、地址的接收和判断……………………………………11

4.2.4、数码管显示…….……………………………………………...12

4.2.5、系统报警………………………………………………………12

5、课程设计成果………………………………………………………………13

5.1、显示波特率…………………………………………………………..13

5.2、显示温度与地址……………………………………………………..14

5.3、改变温度地址后重新显示…………………………………………..14

5.4、报警…………………………………………………………………..14

6、课程设计心得……………………………………………………………....15

7、参考文献…………………………………………………………………....16

8、附录:

源程序代码及注释…………………………………………………17

8.1、从机源代码…………………………………………………………..17

8.2、主机源代码…………………………………………………………..20

 

课程设计目的:

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

目前,一个学习与应用单片机的高潮在全社会大规模地兴起。

学习单片机的最有效方法就是理论与实践并重。

系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力。

培养一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案;

课程设计工具及题目:

1、课程设计工具:

PC机、KeiluVision4、Protues7.64

2、课程设计题目:

远程温度采集系统

课程设计内容及步骤

使用proteus作为开发工具,完成双机通讯的温度采集功能:

1、使用LM20温度传感器、AD1674模数转换器、AT89C51单片机、4位拨码开关组成温度采集模块(从机),拨码开关用于设定模块的地址(00-15),从机在采集完温度信号(间隔5S)后通过串口发送到主机;

2、使用AT89C51单片机、4位拨码开关、LED显示组成温度接收模块(主机),4位拨码开关用于设定通讯波特率(1200,2400,4800,9600)当主机波特率改变后,从机波特率也自动改变,上电运行显示波特率信息(停3S),之后显示接收地址与温度信息,当接收时间间隔超过6S未收到数据,系统报警;

3、单片机一次只能发送一个字节的信息,使用多字节数据组成一帧数据,自定义一套通信协议来完成一、二的功能;

扩展要求:

将双机通信改成多机通讯(一个接收器,多个发送器)

 

各功能模块的工作原理:

1、温度采集模块

使用LM20温度传感器、AD1674模数转换器、AT89C51单片机、4位拨码开关组成温度采集模块(从机),拨码开关用于设定模块的地址(00-15),从机在采集完温度信号(间隔5S)后通过串口发送到主机;

(1)LM20经AD1674转换为12位数据给从机

LM20温度传感器经过电压跟随器后输入到AD1674的10VIN口,AD1674组成双峰。

STS、CS、A0、CE、RC分别接到从机的P0-P4口实现AD1674的控制作用。

一开始CE=1,CS=0,RC=0,A0=0启动12位温度转换,然后等待数据采集结束while(STS==1);接着CE=1,CS=0,RC=1,12/8=1,A0=0允许高八位数据并行输出,最后CE=1,CS=0,RC=1,12/8=0,A0=1允许低四位数据并行输出。

读出的12位数据存放在变量temp中。

经过AD1674转换后输出的结果精确到(10.0/4095.0)。

若LM20温度转换为电压值是1.13598v时,经过AD1674转换后输出的12位数为1.13598*4095/10=465转换为2进制为000111010001。

12位数据经过公式转换T=(1.8525-temp*10/4095.0)*10000/11.79.然后把低位小数位给temp1,temp就为整数部分,接着就是等待发送给主机。

/*读取AD1674转换结果*/

uintAD1674_Read(void)

{

uinttemp;

uchartemp1,temp2;

CS=1;

CE=0;//初始化,关闭数据采集

CS=0;

A0=0;

RC=0;

CE=1;//CE=1,CS1=0,RC=0,A0=0启动12位温度转换

_nop_();

while(STS==1);//等待数据采集结束

CE=0;//芯片使能关闭

RC=1;

A0=0;

CE=1;//CE=1,CS1=0,RC=1,12/8=1,A0=0允许高八位数据并行输出

_nop_();

temp1=P0;//读取转换结果的高八位

CE=0;//芯片使能关闭

RC=1;

A0=1;

CE=1;//CE=1,CS1=0,RC=1,12/8=0,A0=1允许低四位数据并行输出

_nop_();

temp2=P0;//读取转换结果的低四位

temp=(temp1<<8)|temp2;//高位和低位合成实际温度,temp2为P0口的高四位

return(temp>>4);//返回转换结果,右移四位是因为temp2为P0口的高四位

}

(2)从机接收主机发送的波特率并且设置自己的波特率

主机发送波特率给从机,从机查询法判断是否接收到主机发送的波特率,如果接收到主机发送的波特率则改变自己的波特率,跳出循环来实现发送温度地址的发送,否则一直循环判断是否接收到主机发送的波特率。

/*查询法接收波特率*/

while

(1)

{

if(RI==1)

{

temp=SBUF;

set_bote(temp);//设置波特率

break;

}

}

(3)拨码开关实现地址的变换

拨码开关接从机的P1口,然后改变拨码开关的值,P1口的数据变换,等待传送给主机。

(4)定时器实现5秒间隔

定时器0工作方式1,初值装(65536-50000)实现50ms的定时,num为定时次数,当num=100时,定时为5s的间隔。

(5)发送温度和地址,及其通信协议

由于温度经过转换后发送给主机要保留一位小数的话大于255(即8位),还有温度有正负要判断,所以要发送多次数据给主机,主机经过判断才能确认从机发送的温度是整数部分、小数部分还是地址。

通信协议如下:

因为采集到的温度有正负,所以定义j表示温度的正负,j=0表示正,j=1表示负。

j=0;//温度正负标志位

temp=AD1674_Read();//读取转换后的12位温度值

temp=(int)((1.8528-temp*addo)*10000/11.79);//实现实际温度的转换其中add=10.0/4095

if(temp<0){temp=-temp;j=0x20;}//温度若为负,则标志位00100000

temp2=temp%10;//温度小数位存放在temp2中

temp=temp/10;

小数部分

temp2=temp2+132;//温度小数位+132用于接收时的判断

温度正负标志和地址

temp=P1;

temp=temp&0x0f;//地址为P1口的低4位

temp1=temp1<<4;

temp1=temp1|0xc0;//地址高位置1即11000000用于接收判断

temp=temp|temp1;

temp=temp|j;//正负标志位存于temp中

因为温度值是0-130之间的由于精度在1.41所以是0-132之间。

所以温度值是小于132的。

小数部分是0-9,所以小数部分+133即133-142之间的。

而地址低4位0-15,高位直接置为1100,即大于192。

所以主机只要判断在0-132之间就为温度的整数部分,133-142之间的就为温度的小数部分。

剩下的就是地址、温度正负标志位的组合了。

 

2、温度接收模块

使用AT89C51单片机、4位拨码开关、LED显示组成温度接收模块(主机),4位拨码开关用于设定通讯波特率(1200,240

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1