单片机原理课程设计报告模拟霓虹灯控制器设计文档格式.docx
- 文档编号:974691
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:13
- 大小:360.68KB
单片机原理课程设计报告模拟霓虹灯控制器设计文档格式.docx
《单片机原理课程设计报告模拟霓虹灯控制器设计文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理课程设计报告模拟霓虹灯控制器设计文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
学号04305074
指导老师
【摘要】文章介绍了利用美国ATMEL公司生产的单片微机AT89S52作为控制芯片,附加少许的外围电路,通过编程可以任意改变霓虹灯的变化花样和控制路数的霓虹灯控制器的设计方法。
【关键词】霓虹灯控制器AT89S5281C55
一、前言
随着城市建设和市场经济的飞速发展,城市的美化和日益激烈的广告竞争越来越得到社会的关注,作为城市装饰和广告宣传的霓虹灯的需求量也越来越大。
过去霓虹灯控制器多采用E2PROM和相应的逻辑电路来完成,现在也有采用一些专用霓虹灯控制芯片的控制器。
前者所需电路较多,制作不易改变,且所需控制的霓虹灯路数越多,扩展起来也比较繁杂;
而后者由于电路已作定,控制方式不能任意改变,功能较为单一。
然而市场迫切需要低成本高性能的霓虹灯控制器技术。
然而AT89S52单片机是可多次改写的可编程芯片,内部有8KFLASHRAM,含有4个8位双向或准双向的并行I/O接口P0~P3,性价比相当高,适合成为霓虹灯程序控制器的核心部件。
二、硬件原理分析(电路图(见附1))
本系统主要由主控制模块、I/O接口电路、霓虹灯驱动电路、40路的霓虹灯组成。
系统结构图如图1。
本系统采用AT89S52单片机作为核心控制器,外接81C55芯片扩展单片机I/O接口,通过对81C55的PA口作为发光管光柱的段码和单片机AT89S52的P1作为发光管光柱的位码,来控制发光管的亮灭,以及判断81C55的PC口的状态值,选择由那种方式来显示霓虹灯。
为了增加LED发光管亮度,40路的LED发光管外接非门740HC05A芯片作为驱动电路,来增加驱动电流。
该电路有40只LED和驱动电路组成,四十只LED的控制主要分为两部分,一部分是段控,另一部分就是位控,连接成五位共阳的位码和八位段码形式。
当三极管的基极为低电平时,三极管处于导通状态,LED的阳极处于高电平,如果LED阴处于低电平,则LED为亮状态。
在整个电路中,40只LED外接非门740HC05A芯片作为驱动电路,位的信号由89S52的P1口来控制,段控的驱动信号由81C55的PA口来提供,因此,只要控制单片机P1口输出电平和81C55PA口的输出电平,就能完成对40个LED发光管的亮灭控制。
2.2键盘处理
由图2.2可以看出,直接接81C55的PC口,因此此键盘为独立式键盘。
当有拨码合上是,通过上拉电阻,PC口相应的位为低电平,四个拨码组成不同的键值是从8155的PC口读入的,根据不同的键值,来执行不同的功能。
2.38155接口电路
图2.381C55接口电路
根据图所示,8155的复位端由单片机的来提供,而P1.7也由软件程序来控制。
通过主程序的初始化让8155的PA、PB工作于输出状态,让PC口工作于输入状态。
8155的八根地址线直接接在AT89S52的P0口,其CE片选信号由AT89S52的P2.7来控制,IO/M直接由P2.6来控制,8155的读写信号分别与单片机的读写信号相对应的接起来。
三、软件设计
由于考虑到要显示的状态比较多,每种状态都要有一定的寄存器,要是显示的状态越多,那寄存器也就需要越多,这样就造成寄存器比较浪费。
而且40只的LED位码和段码分别有单片机的P1口和8155的PA口控制,因此我开辟了两个缓冲区BUF4和BUF5用来存放P1口和PA口的值,而且读取PA口的值独立编写一个子程序,根据电路图,PA口的地址为7F01H,其程序,供每种状态调用。
BUF4和BUF5缓冲区里面的内容,根据相应状态在相应的中断子程序里定时修改缓冲区里的内容。
1主程序的设计
由于要完成对40个LED发光管的亮灭控制的状态比较多,又要使光带的显示随拨码状态的改变而改变,且每次拨码状态的改变,显示由每状态的初始状态开始,因此我开辟了两个缓冲区KEY和YKEY分别放置键盘现在时刻(新)键值与原来的(旧)键值。
当新键值不等与键值时,程序从新开始初始化缓冲区,直到新旧键值相等,然后再判断键值的大小,根据相应的值调用相应的状态子程序。
主程序的框图如图3.2所示。
2中断服务主程序设计
由于有12种不同的状态,且每种状态的LED的亮的时间又不一样,因此中断服务主程序主要是根据不同的键值转移到相应的中断服务子程序。
中断服务主程序的框图如图3.3所示
图3.1读取PA口程序框图
图3.2主程序的框图
图3.3中断服务主程序
3实现功能2:
当拨码的第一位合上时,使光带的第一只发光管500mS亮500mS暗。
根据功能2的要求,只要让PA口输出01H,让功能2的中断服务子程序每隔500ms让标志位FLASH0取反一下,根据FLASH0的值来执行P1.0置1或清零。
程序流程图如图3.4。
图3.4功能2程序框图
4实现功能4,当拨码的第一、第二位合上时,按适当速度使光带的第一、第二第三...第四十只发光管循环点亮,点亮第四十只后,再点亮第一只⋯,依次类推。
根据题意要求,要让40只的LED从左到右移动,这样的循环,只要让LED段码BUF5缓冲区和位码BUF4缓冲区分别置#01H,让BUF5缓冲区的值每隔100ms左一次,在左8次之后,位码左移一次,同时让段码和计数器从新赋值,同时让计数器缓冲区BUF2和BUF3记录光带是否已经点亮到第40只,这样就可以实现题目的要求。
其程序流程图如图3.5和图3.6所示。
5要实现当拨码的第三位合上时,按适当速度、递增循序点亮光带的第一、第二…第四十只发光管,点亮第四十只后,再按递减循序点亮第三十九、第三十八只⋯第一只发光管,依次类推。
要实现这样一个功能要分两部分分析:
第一到第四十只的依次递增点亮和第四十到第一只依次递减点亮。
前一部分的实现和功能4一样,不再分析。
后一部分的实现,只要设置一个计数缓冲区BUF6记录是否已经点亮到第40只,当BUF6缓冲区里值大于40时,程序转移到执行从右到左的程序。
程序显示流程图所示。
图3.7功能5中断
6实现功能12,当拨码的第一、二、四位合上时,高十位(即第三十一至第四十只)发光管点亮,并按适当速度轮流点亮第一至第三十只发光管,点亮第三十只发光管后,灭第三十一只发光管。
再开始灭带三十二只发光管的过程,即按同样速度轮流点亮第一至第三十一只发光管,点亮第三十一只发光管后,灭第三十二只发光管。
⋯直至所有发光管都被灭掉,再循环以上显示。
根据功能12的要求,要实现这样的功能就不能采用前面(前九种功能)的单一的缓冲区BUF5来控制段码。
所以我设置了五个缓冲区LED1、LED2、LED3、TWLED4、TWLED5分别来寄存PA口的值。
让位码(P1口的值)每隔2ms移位一次,其显示流程图如图3.8所示。
图3.8功能12显示流程图
由于位码(P1口的值)每隔2ms移位一次,所以段码(PA口的值)必须每隔10ms改变五个缓冲区的值。
为了让高十位一开始一直点亮,其缓冲区LED1、LED2、LED3的值都初始化为#00H,让TWLED4、TWLED5缓冲区的值分别初始为#0CH、#0FFH。
通过计数器BUF20判断灯是否亮到第31只,当灯亮到31时,让TWLED4第六位清零,即TWLED4值变为#08H。
依次类推,实现灭32到40灯。
其段码控制程序流程图如图3.9所示。
图3.9功能12位码控制程序流程图
四、软件调试
由于8155的复位时间要比89S52的部位时间稍长首先,在测试硬件的过程中出现了一点的麻烦,这里花了比较长的时间。
从总体的看,在这次整个编程过程中都比较顺,尤其是编1到9、11、12的功能的程序,基本上没发太多的时间就调试出来,在调试相应的子程序时,只要在调试窗口中调出相应的寄存器,通过设置断点,来观察寄存器的值是否是想要的结果。
但在编第十种功能时出现了麻烦,程序调试了一天都没有结果。
无奈之下我只好放弃原来编写的程序,从新再来,编写新程序,但这次经过稍微的调试很快第十种功能就完成了。
因此我认为,果断的放弃也是一种美。
五、学习体会
自从编写完1200多条语句的程序后,自己的编程水平有了很大的进步。
写程序的过程中遇到问题,然后自己看书自己解决问题,这样学习编程比课堂学习更有效。
我的编程的水平还很菜鸟,我会不断努力学习,提高自己的编程水平。
六、结束语
经过反复调试,该系统运行稳定,操作方便,达到了预期的设计效果。
这说明采用单片机控制的方法制作电子作品,不失为一种很好的选择,因为这种方法使系统设计更加灵活,各种功能可以通过程序设计实现。
而且用AT89S52单片机实现的霓虹灯控制电路结构简单、易推广、维护方便、时间参数能够在较大范围内修改,从各个方面体现出它具有较高的实用价值。
七、参考文献
[1]李广弟,朱月秀,王秀山.单片机基础.北京:
北京航空航天大学出版社
[2]何立民.MCS-51系列单片机应用系统配置与接口技术.北京:
北京航空航天大学出版社,1990
附录一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 课程设计 报告 模拟 霓虹灯 控制器 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)