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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

led闪烁小灯.docx

1、led闪烁小灯湖南人文科技学院课程设计报告课程名称:单片机原理及应用课程设计设计题目: 闪烁LED小灯的设计 系 别: 通信与控制工程系 专 业: 自动化专业 班 级: 06级自动化(二)班 学生姓名: 徐 欣 灯 学 号: 06421210 起止日期: 2009年6月8日 2009年6月19日指导教师: 伍铁斌 曹锋 教研室主任: 伍铁斌 指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年

2、 月 日 摘 要介绍一种LED小灯控制系统的设计方法,以AT-89C52单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。本系统具有体积小、硬件少、电路结构简单及容易操作等优点。能够通过按键控制8个led小灯轮流点亮、逐点点亮、间隔点亮、来回点亮、两边向中间同时点亮。广泛应用于城市景观、风景名胜、道路桥梁、建筑轮廓、娱乐场所、户外广告、室内装饰等美化、亮化工程。关键词: LED流水灯,AT89C52单片机,led流水灯,模块设计,流程图闪烁LED小灯的设计设计要求主要功能:本设计的闪烁小灯控制器,可使小灯轮流点亮,可使小灯轮流点亮、逐点点亮

3、、间隔点亮,通过按键来进行切换。扩展部分:来回点亮、一个点亮两次轮流点亮、两边的等同时向中间点亮也可用按键来切换。1方案论证与对比从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭

4、的时候应该延时一段时间,否则我们就看不到“流水”效果了。单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。下面以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。1.1方案一位控法这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。只要循环执行下面的程序就可以了,想要哪个灯亮就对对应的哪个输出口输出低电平。要实现按键切换流水花样

5、,则可以用调用一个中断程序处理。其置位程序如下: CLR P1.0 ;P1.0输出低电平,使LED1点亮ACALLDELAY ;调用延时子程序SETBP1.0 ;P1.0输出高电平,使LED1熄灭1.2方案二循环移位法在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果啦。由于8051系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,因此实际编程中我们应

6、把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。具体编程如下所示,程序结构确实简单了很多。 原理框图如图2所示。主程序 N Y N Y图 2 方案二系统方框图1.3方案三查表法 上面的两个程序都是比较简单的流水灯程序,“流水”花样只能实现单一的“从左到右”流方式。运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。我们首先把要显示流水花样的数据建在一个以TAB为标号的数据表中,然后通过查表指令“MOVCA,A+DPTR”把数

7、据取到累加器A中,然后再送到P1口进行显示。具体源程序如下,TAB标号处的数据表可以根据实现效果的要求任意修改。ORG 0000H ;伪指令,指定程序从0000H开始存放 LJMP MAIN ;跳转指令,程序跳转至MAIN处执行 ORG 0030H ;伪指令,指定程序从0030H开始存放MAIN: MOV SP, #60H ;给堆栈指针赋初值 MOV P1,#0FFH ;给P1口赋值 MOV DPTR,#TABLE;查表LIGHT: MOV R4,#42 ;设置循环次数LOOP: MOV A,#42 ;给A赋初值 SUBB A,R4 ;将A的值与R4的值相减,结果存在A中 MOVC A,A+D

8、PTR ;将A+DPTR的值所对应的TABLE中的值赋给A MOV P1,A ;将A的值赋给P1口 LCALL DEL1S ;调用1S延时子程序 DJNZ R4,LOOP ;判断R4是否为0,不为0跳转,为0顺序执行 LJMP LIGHT ;跳转指令,跳转至LIGHT处继续执行DEL1S: MOV R5, #2 ;1S延时子程序(11.0592MHz晶振,误差0微秒)DL1S0: MOV R6, #255DL1S1: MOV R7, #255 DJNZ R7, $ DJNZ R6, DL1S1 DJNZ R5, DL1S0 RETTABLE: ;定义表格数据DB 0FFH ;全灭DB 0FEH

9、 ,0FDH ,0FBH ,0F7H ,0EFH ,0DFH ,0BFH ,07FH ;依次逐个点亮 DB 0FEH ,0FCH ,0F8H ,0F0H ,0E0H ,0C0H ,080H ,000H ;依次逐个叠加DB 080H ,0C0H ,0E0H ,0F0H ,0F8H ,0FCH ,0FEH ,0FFH ;依次逐个递减DB 07FH , 0DFH , 0F7H , 0DFH , 0BFH , 0EFH , 0FBH , 0FEH ;间隔点亮DB 07EH ,0BDH ,0DBH ,0E7H ,0E7H ,0DBH ,0BDH ,07EH ;两边靠拢后分开DB 07EH ,03CH ,

10、018H ,000H ,000H ,018H ,03CH ,07EH ;两边叠加后递减DB 000H ;全亮 END ;程序结束指令原理框图如图3所示:图 3 方案三系统方框图1.4 方案对比与选择以上方案中,位控法思维简单明了但程序过长,不适合编写。循环移位法简短,且实现以上功能方便。查表法可随心所欲实现流水灯的花样变化,但要实现按键也是一种麻烦事。显然用第二种循环移位法最合适。2 延时子程序的计算延时子程序的延时计算问题对于程序Delay: mov r5,#2Dz1: mov r7,#250Dz2: mov r6,#250 djnz r6,$ djnz r7,Dz2 djnz r5,Dz1

11、 ret查指令表可知 MOV,DJNZ 指令均需用两个机器周期,而一个机器周期时间长度为1211.0592MHz,所以该段程序执行时间为:(1+2502)250+25022+22+21211.059200272.9mS2.1原理图的设计根据设计要求其原理图如图4所示:图 4 放大电路原路图上电后系统经过初始化,查询是否有功能切换键按下:有,则进入用户设定模式状态;无,则继续进行原来的运行状态。在用户设定模式状态下,用户可以根据个人爱好及不同场合的需要来指定调用哪些模式,如果用户想进入下一种状态模式,只需按一下功能切换键即可跳入下一种状态模式,程序会跳到下一种亮灯模式;在默认工作状态下,LED小

12、灯控制器按照程序设定好的若干亮灯花样模式程序Model_i一直运行下去,如果想进入用户设定模式程序Model_i+1状态,只需按下功能切换键即可。2.2 分频控制电路设计单片机。电路如图7示:序号花型(一)花型(二)花型(三)花型(四)10111111100010001100010000001100021011111100110011110011000011110031101111101110111111011100111111041110111111111111111111111111111151111011111101110011101111110011161111101111001100

13、0011001111000011711111101100010000001000110000001811111110000000000000000000000000图 7 CD4051分频控制电路花型(一):前一个移存器的s1为0,s0为1。前4个节拍右移置入1,后4个节拍右移置入0。另一个移存器的s1为0,s0为1,前4个节拍右移置入1,后4个节拍右移置入0。花型(二):前一个移存器的s1为0,s0为1。前4个节拍右移置入1,后4个节拍右移置入0。后一个移存器的s1为1,s0为0,前4个节拍左移置入1,后4个节拍左移置入0。花型(三):前一个移存器的s1为1,s0为0,前4个节拍左移置入1,

14、后4个节拍左移置入0。后一个移存器的s1为0,s0为1,前4个节拍右移置入1,后4个节拍右移置入0。花型(四):前一个移存器的s1为1,s0为0,前4个节拍左移置入1,后4个节拍左移置入0。后一个移存器的s1为1,s0为0,前4个节拍左移置入1,后4个节拍左移置入0。3 系统软件工作流程图3.1 多周期同步测量原理及误差分析。原理如图8所示。图 8多周期测频原理被测信号。 3.2 运行和调试当上述程序之一编写好以后,我们需要使用编译软件对其编译,得到单片机所能识别的二进制代码,然后再用编程器将二进制代码烧写到AT89C52单片机中,最后连接好电路通电,我们就看到LED1LED8的“流水”效果了

15、。本文所给程序实现的功能比较简单,旨在抛砖引玉,用户可以自己在此基础上扩展更复杂的流水灯控制,比如键盘控制流水花样等等。本次设计测频采用。图 9 测频原理被测信号。程序流程图如图10所示:主程序 N Y N Y图 10 软件系统流程图4详细仪器清单表格 2 仪器清单序号类型数量1PCB板1块21000UF 电容2个322UF 电容1个430PF 电容4个5发光二极管10个6三位数码管2个7三极管90158个8带锁开关1个9三孔接线座2个10轻触开关19个11USB 接口1个12IN40014个13蜂鸣器1个1478051个15DC 座1个16680电阻8个171K 电阻17个181K 排阻1个

16、192K 电阻5个2010 欧电阻1个21ADC0809 芯片1片223V 电池座1个23IC 插座20 脚1个24IC 插座16 脚1个252 脚排针15个263 脚单排1个27跳帽8个283V 电池1个29电源适配器1个30串口线1根319 针串口座1个329 针串口盖1个5 总结与思考及致谢为期两周的单片机课程设计已经接近尾声了。记得刚拿到设计课题时,觉得这个题目太简单了,不就是一个花样流水灯吗!非常熟悉的东西啊。可是当真正投入设计时,很多问题出来了。在这次设计中遇到的问题及解决方法:(1)在实现流水灯的功能时,时钟是不能停止的,否则显示的时间就会不正确。因此我们使时钟的中断优先级高于秒

17、表的优先级,在执行跑表程序时,会被时钟中断程序中断,但这会使跑表的时间产生误差,这是不可避免的,因为单片机每次只能执行一个任务,所以我们只能尽量减少误差。解决的方法:使时钟的中断周期大于跑表的中断周期(时钟每中断一次为125ms,跑表每中断一次为100ms),这样误差会相对减少些。(2)单片机口线不够(在该次设计为简单起见中没有扩展I/O口),造成口线不够的原因是,译码显示电路设计不合理。起初我采用的译码显示块是不带锁存功能的,所以要接锁存芯片,从而造成了口线的浪费。后来我采用了CD4511,它是集锁存、译码、驱动功能于一体的。这样就节省了很多I/O口。(3)程序调试时也出现了许许多多的问题,

18、虽然程序本身的问题不大,但由于粗心录入程序时,将程序敲错,比如将0(零)和字母O 混淆,还有中文标点符号和英文标点符号混淆等。这样的错误很难发现,以至于花费了很多时间。通过本次课程设计,不仅使我将课本上学到的理论知识的到了实践,从而巩固了知识。还使我了解了一个完整的系统是怎样开发的。也了解到单片机的强大功能,同时也知道在开发系统时基础知识的重要性。同时也感谢老师给我们这样好的机会来学习单片机。参考文献1 朱定华,戴汝平.单片微机原理与应用.(M) 北京:清华大学出版社,20032 张鑫,单片微机原理与应用。北京,电子工业出版社,2005.83徐煜明,韩雁.单片机原理及接口技术M.北京:电子工业

19、出版社,2005.14万光毅,严义,邢春香.单片机实验与实践教程M.北京:北京航空航天大学出版社,2006.45蔡明文,冯先成,.单片机课程设计.武汉:华中科技大学出版社,2007.3附录一:89c52芯片附录二:89c52的PCB板图附录三:程序 org 0000hstart: mov r2,#0 mov r4,#0feh mov r3,#0feh mov r1,#0 mov p1,#0FFhstart1: ljmp j28 jb p3.3,j20 acall relayj20: jnb p3.3,jjj cjne r2,#1,j21j21: jc j1 cjne r2,#2,j22j22:

20、 jc j2 cjne r2,#3,j23j23: jc j3 cjne r2,#4,j24j24: jc j4 cjne r2,#5,j25j25: jc j5 cjne r2,#6,j27j27: jc j28jjj: inc r2 cjne r2,#6,$+3 jc j10 mov r2,#0j10: jnb p3.3,$ jmp start1j1: mov p1,r3 acall relay mov a,r3 rr a mov r3,a jmp start1j2: mov p1,r3 acall relay jnb p1.0,j9 mov a,r3 rr a mov r3,a jmp

21、start1j9: mov p1,r3 acall relay jnb p1.7,j2 mov a,r3 rl a mov r3,a jmp j9j3: mov p1,r3 acall relay jnb p1.0,j8 jnb p1.1,j7 mov a,r3 rr a rr a mov r3,a jmp start1j8: mov a,r3 rr a mov r3,a jmp start1j7: mov a,r3 rr a rr a rr a mov r3,a jmp start1j4: mov p1,0ffh acall relay mov p1,r3 acall relay mov p

22、1,0ffh acall relay mov p1,r3 acall relay jnb p0.0,j6 mov a,r3 rr a mov r3,aj6: jmp start1j5: mov a,r1 mov dptr,#tab movc a,a+dptr mov p1,a acall relay acall relay inc r1 cjne r1,#8,j26j26: jc j11 mov r1,#0 jmp start1j28: mov a,r4 mov p1,a acall relay mov a,r4 jnz j29 mov r4,0feh ljmp j11j29: rl a anl a,r4 mov r4,aj11: jmp start1tab: db 7eh,0bdh,0dbh,0e7h,0e7h,0dbh,0bdh,7ehrelay: mov r5,#2j217: mov r7,#250j: mov r6,#250 djnz r6,$ djnz r7,j djnz r5,j217 ret end

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

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