闪烁LED小灯的设计_第1页
闪烁LED小灯的设计_第2页
闪烁LED小灯的设计_第3页
闪烁LED小灯的设计_第4页
闪烁LED小灯的设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机开发与设计工程师考试文档学校: 湖南人文科技学院 设计题目: 闪烁LED小灯 学生姓名: 刘 杰 起止日期: 2010年6月17日 2010年6月27日 摘要当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。以单片机为基础的LED流水灯广泛应用于城市景观、风景名胜、道路桥梁、建筑轮廓、娱乐场所、户外广告、室内装饰等美化、亮化工程。本设计以STC89C52单片机作为主控核心,与按键、排阻

2、、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。本系统具有体积小、硬件少、电路结构简单及容易操作等优点。能够通过按键控制8个LED小灯轮流点亮、逐点点亮、间隔点亮。关键词:单片机;LED流水灯;芯片STC89C52;芯片8255目 录设计要求11、方案论证与对比11.1方案一11.2方案二21.3方案对比与选择22、各模块电路的设计22.1复位电路设计22.2晶振电路设计32.3键盘扫描电路设计32.4 STC89C52芯片介绍42.5 8255芯片介绍42.6 闪烁LED小灯原理图53、系统设计的流程图64、系统软件初始化设计64.1 8255芯片初始化64.2定时器

3、T0的初始化74.3中断程序的初始化75、系统功能测试与调试86、详细仪器清单8参考文献9附录:10附录1:键盘扫描函数程序10附录2:闪烁LED小灯总程序12闪烁LED小灯的设计设计要求功能:本设计的闪烁小灯控制器,可使小灯轮流点亮、逐点点亮、间隔点亮。通过按键来进行切换。主要额外器件:无1、方案论证与对比1.1方案一所设计的流水灯的方案是利用STC89C52单片机的P1口、PC口等的功能来完成的功能来完成信号的输入和转换,是最终的显示结果通过发光LED显示出来,另外加了三个开关来控制输出LED变换的类型。图1 方案一方框图硬件方面利用STC89C52的P1口直接驱动发光二极管,用PC口作为

4、开关控制。流水灯的变换通过软件编写延时以及变换不同的类型,用20ms作为开关转换过渡。采用的主、子程序方式,循环结构,另外加了开关扫描程序。1.2方案二利用STC89C52单片机的P1口、PC口等的功能来完成的功能来完成信号的输入和转换,通过发光二极管显示出来,另外加了三个开关来控制输出的转换。图2 方案二方框图利用STC89C52的P1口直接驱动发光二极管,用PC口作为开关控制。流水灯的转换通过软件编写和使用定时器变换不同的类型,添加了开关扫描程序用20ms作为开关转换过渡。采用的主、子程序方式循环结构。1.3方案对比与选择两种方案实施都比较简单,而且都容易操作。通过两种方案可以看出,方案二

5、比方案一多了一个定时器,利用中断来实现该功能更加精准,效果也会更加明显。因此,选择方案二相对更加合理。2、各模块电路的设计2.1复位电路设计RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR上的DISRT0位可以使此功能无效。DISRT0默认状态下,复位高电平有效。复位电路图如图所示:图3 复位电路图2.2晶振电路设计本系统采用的是12MHZ的晶振XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。晶振电路图如图所示:图4 晶振电路图2.3键盘扫描电路设计

6、在单片机系统中键盘中按钮数量较多时,为了减少I/O口的占用,常常将按钮排列成矩阵形式。而在本设计中为了通过键盘来转换LED灯的点亮模式,按下键盘分别实现LED灯的轮流点亮、逐个点亮、间隔点亮。判断键盘中有无键盘按下的方法:先将PA0拉高,然后扫描PC各行的电平状态,若哪一行出现高电平,即可知道该行的按键被按下。从而很容易地实现了LED灯的点亮模式转换。图5 键盘电路图2.4 STC89C52芯片介绍STC89C52是低功耗、高性能的CMOS8位微控制器。8字节的flash,256字节的RAM,32位的I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器。全双工串行口,片内晶振及时钟

7、电路,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,内容被保存,振荡器被冻结。图6 STC89C52芯片图2.5 8255芯片介绍8255芯片是一种典型的课编程通用并行接口芯片,用来扩展单片机的端口,它具有3个8位的并行口,有三位工作方式,可作为单片与各种外部设备连接的接口电路。CS:片选信号线,当该引脚为低电平时,8255被选中,允许8255与CPU通讯。RESET:复位输入线,当该引脚为高电平时,内部寄存器被清除,所有I/O口均被置成输入方式。A0、A1:地址输入线。当A0A1=00时,PA口被选中;当A0A1=01

8、时,PB口被选中;当A0A1=10时,PC口被选中;当A0A1=11时,控制寄存器被选中。图7 8255芯片图2.6 闪烁LED小灯原理图图8 闪烁LED小灯的原理图3、系统设计的流程图图9 系统流程图4、系统软件初始化设计4.1 8255芯片初始化随着大规模集成电路的发展,接口电路也被集成在单一的芯片上,许多芯片可以通过编程方法设定工作方式,这种接口芯片被称为可编程I/O接口芯片,8255芯片是最常用的一种。使用8255芯片前,必须对其各个端口地址进行设置,不然无法进行与CPU进行通信。由于本设计中需要通过8255的PA、PB、PC口分别来控制数码管的位选信号、段选信号、键盘的输入,同时还需

9、要对其方式控制字进行设置。具体如下:#define a8255_PA XBYTE0xD1FF /*PA口地址*/#define a8255_PB XBYTE0xD2FF /*PB口地址*/#define a8255_PC XBYTE0xD5FF /*PC口地址*/#define a8255_CON XBYTE0xD7FF /*控制字地址*/4.2定时器T0的初始化源于该设计的时间显示要非常精确,可以使系统的时序是用定时单位来描述的,在此选用定时器0,而单片机内部的时钟频率为12MHZ,那么它的一个时钟周期为1/12us,而一个机器周期是一个时钟周期的12倍,即一个机器周期的时间为1us.根据设

10、计要求,我们选用定时器T0,对其的初始化过程如下: 选择工作方式1:16位定时器/计数器方式,最多可以计到2的16次方,即65536. 工作方式寄存器TMOD的设置:TMOD=0X01. 50ms的精确定时:TH0=(65536-50000)/256,TL0=(65536-50000)%256.定时器0初始化子函数程序如下:void init() TMOD=0X01;CON=0x89;TR0=1;ET0=1;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;4.3中断程序的初始化根据设计的要求,要求实现LED小灯点亮模式的转换,为此我们将按键是否

11、有效地判断放在外部中断0内,当外部中断0响应时,扫描按键,通过按键去改变点亮模式,中断返回后,按照设定的点亮模式进行点亮。定时器0的中断服务程序如下:void ISR_timer() interrupt 1 TH0=(65535-50000)/256;TL0=(65535-50000)%256;n+;if(n=20) n=0;flag=1;5、系统功能测试与调试整体调试的程序见附录2,下载后系统按初始化的程序在执行,一旦有中断响应,通过扫描键盘上按键的按下来调整LED小灯点亮模式,使得LED小灯按预设的三种点亮模式进行转换。当按下键1时,程序执行功能程序0即轮流点亮模式,LED小灯会轮流被点亮

12、。当按下键2时,程序执行功能程序1即逐个点亮模式,LED小灯会逐个被点亮。当按下键3时,程序执行功能程序2即间隔点亮模式,LED小灯会间隔被点亮。若复位键按下,则系统按初始化的程序运行。6、详细仪器清单表1 仪器清单名称数量STC89C52芯片18255芯片1名称数量12MHz晶振1电容0.47uf1电容30pf2开关2矩形按键41K电阻8发光二级管8参考文献1 朱定华,戴汝平.单片微机原理与应用.(M) 北京:清华大学出版社,20032 楼然苗,李光飞编著. 单片机课程设计指导. 北京航空航天大学出版社,20072 张鑫主编. 单片机原理及应用 . 电子工业出版社,20053 蔡明文,冯先成

13、 单片机课程设计 华中科技大学出版社,20074 于凤鸣主编.单片机原理及接口技术.北京:中国轻工业出版社.19985 何立民编著.单片机应用技术选编.北京:北京航空航天大学出版社.1998附录:附录1:键盘扫描函数程序void scan_keyboard() uchar kdata;PA=0x01;kdata=PC;if(kdata=0x01)delay(5);kdata=PC;if(kdata=0x01)while(PC);temp=0xfe;flag2=0;flag3=0;flag1=1;if(kdata=0x02)delay(5);kdata=PC;if(kdata=0x02)whil

14、e(PC);temp=0xfe;flag1=0;flag3=0;flag2=1;if(kdata=0x04)delay(5);kdata=PC;if(kdata=0x04)while(PC);temp=0xfe;flag1=0;flag2=0;flag3=1;附录2:闪烁LED小灯总程序#include<reg52.h>#include<intrins.h>#include<ABSACC.H>#define uint unsigned int#define uchar unsigned char#define PA XBYTE0xD1FF /*PA口地址*/

15、#define PB XBYTE0xD3FF /*PB口地址*/#define PC XBYTE0xD5FF /*PC口地址*/#define CON XBYTE0xD7FF /*控制字地址*/ void delay(uchar z);void scan_keyboard();void init();void FUN0();void FUN1();void FUN2();uchar n,i,temp,flag,flag1,flag2,flag3;void main()init(); /初始化temp=0xfe;while(1)PB=0xFF;if(flag1=1&&flag=1

16、)flag=0;FUN0();if(flag2=1&&flag=1)flag=0;FUN1();if(flag3=1&&flag=1)flag=0;FUN2();scan_keyboard();void FUN0() /轮流点亮子函数P1=temp;temp=temp<<1;i+;if(i=8)i=0;temp=0xfe;void FUN1() /逐个点亮子函数 P1=temp;temp=_crol_(temp,1);void FUN2() /间隔点亮子函数 P1=temp;temp=_crol_(temp,2);void init() /定时器0初

17、始化子函数TMOD=0X01;CON=0x89;TR0=1;ET0=1;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;void delay(uchar z) /延时子函数uchar x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void ISR_timer() interrupt 1 /定时器0的中断服务程序TH0=(65535-50000)/256;TL0=(65535-50000)%256;n+;if(n=20) n=0;flag=1;void scan_keyboard() /键盘子函数uchar kdata;PA=0x01;kdata=PC;

温馨提示

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

评论

0/150

提交评论