ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:322.33KB ,
资源ID:2996832      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2996832.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计报告1.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计报告1.docx

1、单片机课程设计报告1单片机原理及应用课程设计学院: 班级: 学号: 姓名: 指导老师: 日期: 单片机应用技术课程设计任务书设计题目远程温度采集系统设计任务及步骤使用proteus作为开发工具,完成双机通讯的温度采集功能:一、 使用LM20温度传感器、AD1674模数转换器、AT89C51单片机、4位拨码开关组成温度采集模块(从机),拨码开关用于设定模块的地址(00-15),从机在采集完温度信号后通过串口发送到主机;二、 使用AT89C51单片机、4位拨码开关、LED显示组成温度接收模块(主机),4位拨码开关用于设定通讯波特率(1200,2400,4800,9600)当主机波特率改变后,从机波

2、特率也自动改变,上电运行显示波特率信息(停3S),之后显示接收地址与温度信息;论文要求 画出整个系统的电路原理图; 叙述各功能模块的工作原理; 编写各模块程序; 论文中应附上程序流程图; 书写论文时注意结构合理,层次分明,在分析时注意语言的流畅。工作计划1 布置任务,查找资料 2 电路和程序设计 设计程序调试结果验收 论文答辩指导教师签 名 年 月 日系 意 见系主任签名: 年 月 日课程设计内容及步骤使用proteus作为开发工具,完成双机通讯的温度采集功能:1、 使用LM20温度传感器、AD1674模数转换器、AT89C51单片机、4位拨码开关组成温度采集模块(从机),拨码开关用于设定模块

3、的地址(00-15),从机在采集完温度信号(间隔5S)后通过串口发送到主机;2、 使用AT89C51单片机、4位拨码开关、LED显示组成温度接收模块(主机),4位拨码开关用于设定通讯波特率(1200,2400,4800,9600)当主机波特率改变后,从机波特率也自动改变,上电运行显示波特率信息(停3S),之后显示接收地址与温度信息。3、 扩展要求: 将其设计成:当定时器达到一定时间时,从机没有收到来自主机的信号,则从机“发光报警”。当遇到故障时,也会发光报警,即将从机上的RXD或TXD接按键开关,接地或是接电源作为模拟信号。收到主机的信号后,又能恢复正常。整个系统的电路原理图:各功能模块的工作

4、原理: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,1

5、2/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转换结果*

6、/uint AD1674_Read(void) uint temp; CS = 1; CE = 0; /初始化,关闭数据采集 CS = 0; A0 = 1; RC = 0; CE = 1; /CE=1,CS1=0,RC=0,A0=0启动8位温度转换 _nop_(); while(STS=1);/等待数据采集结束 CE = 0; /芯片使能关闭 RC = 1; A0 = 0; CE = 1; /CE=1,CS1=0,RC=1,12/8=1,A0=0允许高八位数据并行输出 _nop_(); temp = P1;/读取转换结果的低八位 return (temp);/返回转换结果(2)从机接收主机发送

7、的波特率并且设置自己的波特率 主机发送波特率给从机,从机查询法判断是否接收到主机发送的波特率,如果接收到主机发送的波特率则改变自己的波特率,跳出循环来实现发送温度地址的发送,否则一直循环判断是否接收到主机发送的波特率。/设置波特率void set() uint temp=P0; temp=temp4; temp = temp&0x0f; if(temp=1) TMOD=0x21;/定时器为方式2,TMOD高四位控制 T1 TL1=0xF4;/时间常数初值 TH1=0xF4;/时间常数初值,波特率为1.2k PCON=0x00; /正常方式,SMOD=0,波特率为f/64 else if(tem

8、p=2) TMOD=0x21;/定时器为方式2 TL1=0xFA; TH1=0xFA;/波特率为2.4K PCON=0x00; else if(temp=4) TMOD=0x21;/定时器为方式2 TL1=0xFD; TH1=0xFD;/波特率为4.8K PCON=0x00; else if(temp=8) TMOD=0x21;/定时器为方式2 TL1=0xFD; TH1=0xFD;/波特率为9.6K PCON=0x80; /SMOD=1,波特率加倍 (3)拨码开关实现地址的变换 拨码开关接从机的P1口,然后改变拨码开关的值,P1口的数据变换,等待传送给主机。(4)定时器实现5秒间隔 定时器0

9、工作方式1,初值装(65536-50000)实现50ms的定时,num为定时次数,当num=100时,定时为5s的间隔。2、 温度接收模块使用AT89C51单片机、4位拨码开关、LED显示组成温度接收模块(主机),4位拨码开关用于设定通讯波特率(1200,2400,4800,9600)当主机波特率改变后,从机波特率也自动改变,上电运行显示波特率信息(停3S),之后显示接收地址与温度信息。(1)波特率设定及发送拨码开关接主机的P1口,用于设定主机的波特率。P1口的数据分别为1、2、4、8时的波特率为1200、2400、4800、9600。然后发送给从机波特率,接着自己的波特率也随之改变。(2)波

10、特率显示并且延时3s由P1口可以得到不同的值,从而用软件设定波特率(即设定定时器1的初值),不同的值存放在bote数组中用以数码管的显示。定时器T0实现定时功能,初值装(65536-50000)实现50ms的定时,num为定时次数,当num为60的时候定时到了3s,以后就不用显示波特率了,所以用m变量为1表示波特率显示结束,不再显示波特率。(3)温度、地址的接收和判断温度地址接收是用串口中断实现的。RI为1的时候表示一帧数据已经接收完了,所以就开始判断是温度的整数部分、小数部分、还是地址和正负标志位组成的数据。通信协议如上:if(temp 16) disnum4 = temp / 10;/求十

11、位 disnum5 = temp % 10;/求个位 else temp1 = (uint)(1.8528-temp*10.0/255)*(10000/11.79); HEXTOBCD(temp1); (4)数码管显示模块 数据存于disnum数组中,用8位数码管来显示温度、地址以及波特率。段选接主机的P0口,片选接主机的P2口。一开始显示波特率,就选中最后4位。然后就是要显示温度和地址的信息了。温度为-55130所以前面4位显示温度后2位显示地址即:XX.XXX。由于数码管是动态扫描的,所以要一定速度才可以实现视觉残留。看上去好像是一直点亮一样的。void display_led() uch

12、ar i; for(i = 0; i 8; i+) P2 = disbiti; /使用查表法进行位选 if(i != 2) P0 = tabledisnumi; else P0 = table1disnumi; delay(150); /扫描间隔时间 太长会数码管会有闪烁感 (5)系统报警定时器0实现定时功能,num1为报警的时间的计算,定时器是实现50ms的,所以要120才能实现6s。num1 = 120,那么判断一下flag(是否接收到传送过来的数据)如果flag = 0;说明没有接收到采集的数据,接着就报警,还要把num1和flag重新清0,实现下次的报警功能。 else m = 0;

13、if(num1 = 120) if(flag = 0) uchar t =8; while(t-) BEEP(); LED(); else flag = 0; num1 = 0; if(txd=0) flag=1; BEEP(); LED(); display_led(); 课程设计成果1、显示波特率 2、显示温度与地址 3、报警程序流程图:课程设计心得: 通过本次课程设计我学到了很多在课本上、课堂上难以学到的东西。这也验证了实践是检验真理的唯一标准。虽然大二的时候已经学过了C语言,但这与实际的单片机还是有点区别的。本次实验中,我没有用汇编编写程序,而是采用了C语言。 刚拿到实验内容的时候,我

14、的头脑一片空白,可以说对于这次的课程设计相当没有底。就比如AD1674,之前从未接触过,更别说将其连到电路中了,还有很多问题如何在程序中实现等问题。 于是,我只得先去查资料。首先是LM20,查看它的功能和作用。知道了他的转换公式。接着要用单片机采集的话,必须经过模数转换才可以实现,于是便开始AD1674芯片的学习了。这个芯片的理解还是比较麻烦的,花了将近1天时间才总算弄明白一点。之后,我又通过看书学习了串口怎么发送,怎么接收,怎么初始化,怎么设定波特率。问题很多,但是在同学们的帮助下,终于完成了从机发送采集到的数据给主机。接着便是改变地址,改变波特率,报警等等功能,这些功能的话,其实前面的弄懂后,这些都是比较容易实现的。好不容易将程序写好、弄懂后,迎来了老师的答辩时间。老师要求我们增加发光报警功能。刚拿到的时候,感觉挺简单的,但是要改,却又不知改哪里。最终在即将到时间的时候,我灵光一闪,成功实现了老师要求的内容。当时真的好开心,因为这是我凭自己的能力做出来的。在这次课程设计中

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

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