大2单片机课程设计.doc_第1页
大2单片机课程设计.doc_第2页
大2单片机课程设计.doc_第3页
大2单片机课程设计.doc_第4页
大2单片机课程设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用课程设计报告书 学院:电子与控制工程学院班级:06级电气工程及其自动化2班 姓名:王露 学号:2804060231指导老师:段晨东 摘要 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中万年历和温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 主要功能:单片机控制的万年历及温度计,可以设置上下年月日的初值,当温度不在设置范围内时,可以报警。输出年、月、日、温度用动态显示LED数码,单片机使用AT89C51, 测温传感器使用DS18B20,实现实时温度显示功能(每秒刷新一次),温度测量范围4060。这一课程设计,主要考察单片机理论知识与实际应用的结合,要求我们既要有扎实的理论设计基础,还要有较强的变成及调试程序的能力和极大的耐心完成了这一课程设计,我们对于“从实践中得真知”有了真切的理解,而且加强了对单片机知识的应用,以及编制程序和调试程序的能力,熟悉了PROTEUS的应用,增强了查找分析解决软硬件问题的能力。尽管出现了许多问题,但从中获得的不仅仅是单片机万年历,更重要的是懂得了学以致用的意义。 目录1)摘要12)说明书2(1) 任务书 2(2) 方案分析2(3) 硬件分析 3(4) 软件分析8(5) 调试部分13(6) 结论14 3)附录15 (1)硬件原理图15 (2)程序清单17 (3)元器件表29 (4)参考文献29 任务书题目: 电子日历和温度表的设计设计要求(不能采用专用芯片):(1)时间显示:年、(4位)月、日(各2位)(2)日历参数的手动设置(3)选择传感器,并设计相应的信号处理电路。(4)实现实时温度显示功能(每秒刷新一次),温度测量范围4060(5)可采用电池组供电和交流电源供电 扩充功能:(1)防止极性接反,电压不足时,报警提示。(2)显示星期的功能。方案分析根据课程设计的题目要求,我们要实现的是一个具有显示年月日和温度的单片机万年历。因此,首先要对这个问题的大概实现方法要有所了解,软件硬件都要考虑,而非仅仅先是考虑硬件电路或者软件设计。应该要从面向目的的角度来设计软硬件方案。具体从以下几-个方面进行分析1.题目要求要有年、月、日(各两位)以及温度的显示功能,对此我们进行了扩展,显示的信息除了年月日温度,能够区分闰年和非闰年,以及大小月。因此,硬件上,显示的LED位数要求具有10位,年占用4位,月日占用4位,温度占用2位;软件上,我们的软件必须具有区分闰年和非闰年,大小月的功能,显示功能占用的单片机端口和采用的芯片(AT89C51)也由此决定。显示电路采用动态扫描电路,通过对从p2口输出的位选信号进行转换,从而实现对8位共阴极LED。由于四线十六线译码器的驱动能力有限,因此必须加驱动,这里采用了74LS245。段码从p0口进行输出。P0.0P0.7分别对应的段选信号是a,b,c,d,e,f,g,dp.。温度显示电路由2位共阳极LED,温度段选码由P3口输出2.要求能够对日历参数进行手动设置,硬件上需要有键盘来输入数据,我们选择的是静态键盘。从P1.0(日) 和P1.1(月)、P1.2(年)拉出3个开关接地。软件上可以对这些口的状态进行采样,然后查找是哪一个口被按下,在进行相应的处理程序。这样就实现了此项功能。3.要求实现实时温度显示功能,硬件上选用美国dalas公司久负盛名的DS1820温度传感器,该传感器具有硬件链接方便,软件实现容易的优点,而且性能稳定,测量温度范围相对较宽。温度的段选码数据由P3口输出。相应的软件,在各个单片机教科书上大多有所介绍,学习和编制较为容易。温度超出60度的时候报警器报警(对P3口输出的数据进行采集,得到60度时候的各位的高低电平,P3.0 P3.2 P3.3 P3.4,P3.5,P3.6均为高电平时,报警器工作.)4电池组供电,可采用四节干电池串联进行供电。 总框图如下: 主控器件AT89C518位LED显示器键盘部分温度检测DS18202位LED显示器输出段选码,位选码图1=-=- 硬件分析 单片机功能 单片机采用了AT89C51,他啊是一种带4K字节的闪烁可编程可擦除只读存储器(FPEROM)的低电压,高性能CMOS8位微处理器,俗称单片机。 主要特性: *与MCS51兼容 *4K字节可编程闪烁处理器 *寿命: 1000写/擦循环 *数据保留时间:10年 *全静态工作:0HZ-24HZ *三级程序存储器锁定 *128*8位内部RAM *32可编程I/O线 *两个16位定时器/计数器 *5个中断源 *可编程串行通道 *低功耗的闲置和掉电模式 *片内振荡器和时钟电路管教图如下:用到的管教的作用 : VCC:供电电压 GND: 接地 RST: 复位输入 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2:来自反响振荡器的输出 PO口:8位漏极开路双向I/O口,当第一次写一时,被定义为高祖输入。在此的功能为输出时间数据的段选码输出端。 P1口:内部提供上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。在此用作了时间的调整(P1.0 P1.1 P1.2三个开关)P1.7为温度的I/O口(输出DS18B20的数字信号)PI.5 P1.6为温度数码显示管的位选端。 P2口:内部提供上拉电阻的8位双向I/O口。P2口缓冲器可接收,输出4个TTL门电流。在此作为时间数据的位选码输出端。 P3口:内部提供上拉电阻的8位双向I/O口P2口缓冲器可接收,输出4个TTL门电流。当P3口写入1后,他们内部上拉为高电平,并用做输入。 在此用作温度数据段选码的输出端。 功能: 1)它将定时数据输出到LED,实现时间的显示;2)根据键盘输入调用相应键处理子程序,实现时间的调整;3)接收温度传感器输入的温度数据,进行一定的转换,然后输出到2位的LED显示器显示出来。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石英震荡和陶瓷振荡都可采用,如采用外部时钟驱动器件,XTAL2应不接。由于输入至内部时钟信号要通过一个2分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证吗重的高低电平要求的宽度。 时钟电路和复位电路: 时钟电路采用了石英晶体的振荡电路,电容位2个22PF,石英晶体为6MHZ 复位电路为保持RST管脚2个机器周期的高电平时间。 显示电路原理 显示部分是整个单片机万年历最为重要的部分,它分为时间的显示和温度的显示两部分,共需要10位LED显示器。采用动态显示方式,所谓动态显示方式是时间(或温度)数字在LED上一个一个逐个显示,它是通过位选端控制在哪个LED上显示数字,由于这些LED数字显示之间的时间非常的短,使的人眼看来它们是一起显示时间数字的,并且动态显示方式所用的接口少,节省了CPU的管脚。由于端口的问题以及动态显示方式的优越性,在此设计的连接方式上采用共阴级接法(时间),共阴极(温度显示)接法。显示器LED有段选和位选两个端口,首先说段选端,它由LED八个端口构成,通过对这八个端口输入的不同的二进制数据使得它的时间(或温度)显示也不同,这里我采用PI口作为时间段选码,P2口作为时间位选码,P3口作为温度段选码,P1.5 P1.6作为温度的位选码,从而可以得到我们所要的时间显示和温度。所用显示器管教图如下: 温度控制部分原理 此部分选用DS18B20传感器,来获取温度的数据。DS18B20传感器主要由四部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。有三个管脚:DQ为数字信号输入/输出端,需要一个5K左右的上拉电阻,这里选用4.7K的电阻;GND为电源地;VDD为外接供电电源输入端。 电源有两种接法:1)远端因入;2)寄生电源方式。它是支持“一线总线”接口的温度传感器,测量温度范围为-55C+125C,在-10+85C范围内,可编程为9位12位A/D转换精度,工作电压在3V5V之间。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。它的核心技术是数字信号的直接输出,其分辨率在9,10,11,12位时分别为0.5,0.25,0.125,0.0625,其中传感器默认为12位,第12位S为正负符号位,如果温度为正数S=0,反之温度为负数S=1.在11为有效是,数据的第0位未定义。在10为有效是数据的第一位,第0位未定义。在第九位有效时数据的第二位第一位第零位未定义,再次选词默认为12位。一线总线的命令时序VDDDQ DS18B20GND第一步:初始化第二步:ROM操作命令(跟随需要交换的数据)第三步:功能命令(跟随需要交换的数据)每次访问单总线器件,都要严格遵守这个命令序列。 DS18B20管教图如右图: 其中DQ为为数字信号输入/输出端,接P1.7;GND为电源地,接地;VDD为外接供电电源输入端,通过4K7的电阻接5V电源。电路图如下: 驱动电路 此部分采用了74LS245作为驱动,74LS245是一种3态输出的8总线收发驱动器,无锁存功能。在此为各段选码位选码输出的驱动。 74LS245功能表: G DIR 操作 L L A B L H B A H X AB隔离,高阻 在此采用了A到B的操作。 管脚图如下: 软件分析1)程序框图 2)产生年月日的中断处理程序:-3)查询置数按键(调节年月日初始值的)程序:-采样,显示调用温度显示子程序调用时间显示子程序置数端有无按下未到该月最大天数,天加一,年加一未到12月,月加一是年位是月位是天位调用该年的月份子程序返回判断是否闰年 4)DS18B20温度计主程序流程图 - 5) 读出温度子程序流程图YESNONOYES结束读取操作,CRC校验移入温度暂存器9字节完?CRC校验正确? 发DS18B20复位命令位命令发跳过ROM命令发读取温度命令YESYESNONO初始化调用显示子程序读出温度值温度计算处理显示数据刷新发温度转换开始命令1秒到?初次上电? (5).调试部分首先编写时间部分的程序,编译后,在PROTEUS里面仿真。其次是温度部分的程序,由于不太理解,所以引用的老师给的程序。存在的问题:温度显示部分要求温度显示每秒刷新一次,但是加上时钟电路后, 所有显示都不停地跳动,所以不知道是否达到要求.其次是时间的显示部分,由于日历的走动所需时间太长,所以只能仿真出来置数部分的显示,而时间从秒加到时所需时间太长,不能确定是否程序正确。调试好的程序原图如下:(6)结论:通过做这个课程设计,我学到了很多。从刚开始的一头雾水到最好的豁然开朗,不仅是一个挑战自我战胜自我的过程,更重要的是把所学的知识运用到了实践当中,看着仿真成功的电路图,相信每一个和我一样努力过的同学都会有一种满足感。首先在方案的选择上就化了很大的心思,在老师的指导下才渐渐有了眉目,而且在实施之前一定要对硬件的理论可行性有足够的把握,而不是一味主观臆断。其实最艰难的部分就是编程了。虽然我按照老师说的不能一口吃个大胖子,一部分一部分的慢慢实现,但是在时间可调部分还是一直没有找到头绪,虽然借鉴了许多数字时钟电路的置数方法,但是在调用程序的时候还是不管用,最好在同学的帮助下才算弄明白了,之一部分主要考查的是设计思路清晰与否,我今后一定在职方面多下功夫。DS18B20温度传感器其部分也是一个巨大的难题,对这一部分可以说是一无所知,完全摸不到头脑,最好还是在老师的帮助下完成了这一部分的程序设计。由此也暴露出在自己在接触新知识时不能很好的理解和学习,没有较好的自学能力,以后要加强。在程序仿真的时候,遇到的硬故障很容易查到,可以迅速的改正,但是软故障就很难发现了。在调用时间显示子程序的时候,我就遇到了本次课程设计最大的困难了。在WAVE中仿真以后,调用到PROTEUS里就出现问题了,每个月的天数显示不正确,但是在检查程序后仍然发现不了问题,这样课程设计的进度就停顿了,在此期间许多同学陆陆续续的调试好了程序,仿真成功,这对我造成了小小的紧迫感和压力,但也是一种动力。当我检查程序到快要放弃的时候,决定要换一种思路,我发现每个月的日期显示虽然没有按照正确的天数显示,但是都是30和31天,这说明是在调用显示子程序的时候,初始为的选择有问题,但是又不知道怎么修改程序。所以在记录了每个月的现实天数后,发现原来每个月现实的天数都退后了一个月。这样我决定修改天数TAB里面的日期,只要每个月的天数都换成提前一个月的天数就可以实现正确的显示了。虽然这个办法不是正确的办法,我的程序还是有问题,但是仿真后天数的显示正确了,达到了设计的要求,让我倍受鼓舞。最后就是课程设计说明书的编制了,在此期间又遇到了问题。不知道怎么回事,我已经快些好的说明书不能正常的显示了,在询问同学后才知道原来是调用的图片有问题,图片里隐藏了链接,所以最后为了保险起见没有用到各硬件的管脚图,这是一个缺陷。最后,完成本次电子日历和温度表的课程设计,还应要感谢老师的悉心教导和同学的热心帮助。 附录硬件原理图如下:程序清单如下:元器件表:元件名称元件数量元件型号元件功用电阻8220上拉电阻电阻14.7k上拉电阻电阻14.7k组成复位电路开关3置数键盘开关开关1复位开关Atl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论