广告灯单片机课程设计报告书Word下载.docx
《广告灯单片机课程设计报告书Word下载.docx》由会员分享,可在线阅读,更多相关《广告灯单片机课程设计报告书Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
图1.1系统框图
本次课程设计是用流水灯的变化来表示不同的效果。
主体选用AT89S51单片机使用多个发光二极管,通过编程来实现“流水灯”的花样变化。
2具体设计
2.1系统电路图
图2.1总电路图
2.2设计采用元件
在这次课程设计中要用到的元器件有
AT89S51模块一块
5v电源一个
黄色LED16个
300电阻8个
开关一个
2.3主要元器件介绍
AT89S51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
其芯片引脚图如下:
图2.2AT89S51引脚图
单片机管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S51的一些特殊功能口,如下表一所示:
P3口引脚
第二功能
P3.0
RXD(串行口输入)
P3.1
TXD(串行口输出)
P3.2
INT0(外部中断0输入)
P3.3
INT1(外部中断1输入)
P3.4
T0(定时器0外部脉冲输入)
P3.5
T1(定时器1外部脉冲输入)
P3.6
WR(外部数据存储器写脉冲输出)
P3.7
RD(外部数据存储器读脉冲输出)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3流程图与程序
图3.1总流程图
ORG00H
LjmpSTART1
Org0bh
LjmpTIME0;
跳至TIME0中断
START1:
MOVSP,#70H
MOVP3,#01010101B
MOVTMOD,#00000001B
MOVTH0,#HIGH(65536-10000)
MOVTL0,#LOW(65536-10000)
SETBTR0
MOVIE,#10000010
MOVR7,#100;
设中断100次即1秒
START:
MOVA,#0FEH
MOVR2,#07H
LOOP:
RLA;
亮灯左移
MOVP1,A
LCALLDELAY
DJNZR2,LOOP
LOOP1:
RRA;
亮灯右移
MOVP1,A
DJNZR2,LOOP1
MOVA,#01H
MOVR0,#07H
LOOP2:
不亮灯左移
MOVP1,A
DJNZR0,LOOP2
LOOP3:
RRA;
不亮灯右移
DJNZR0,LOOP3
LOOP4:
MOVDPTR;
#TABLE
LOOP5:
CLRA
MOVCA,@A+DPTR;
查表
CJNEA,#01H,LOOP6
LJMPSTART
LOOP6:
INCDPTR
JMPLOOP5
DELAY:
MOVR3,#20
D1:
MOVR4,#20
D2:
MOVR5,#248
DJNZR5,$
DJNZR4,D2
DJNZR3,D1
Ret
TIME0:
PUSHACC
PUSHPSW
MOVTL0,#LOW(65536-10000)
DJNZR7,LOOP7;
中断100次?
足则到LOOP7
MOVR7,#100;
CPLP3.0
CPLP3.1
CPLP3.2
CPLP3.3
CPLP3.4
CPLP3.5
CPLP3.6
CPLP3.7
LOOP7:
POPACC
POPPSW
RETI
TABLE:
DB01111110B,10111101B,11011011B,11100111B
DB11011011B,10111101B,01111110B,10101010B
DB01010101B,
DB01H
END
以上程序实现亮灯左右移,不亮灯左右移,从两边到中间、从中间到两边亮,从单位灯到双位灯、从双位到单位亮;
在进行这些花样同时伴随中断控制的8个灯从单位灯到双位灯、从双位到单位亮。
这个电路图中都为低电位亮,高电位灭即‘0’亮‘1’灭,就这样通过查表控制‘0’与‘1’的变化来控制发光二极管的亮灭。
中断中也是如此,通过取反的手段来控制灯的亮灭。
4仿真
图4.1效果一
实现一个灯的左右移同时通过中断控制下面8个发光二极管的单双亮灭
图4.2效果二
实现一个不亮的灯左右移同时通过中断控制下面8个发光二极管的单双亮灭
图4.3效果三
实现灯从两边到中间,从中间到两边的点亮同时通过中断控制下面8个发光二极管的单双亮灭
图4.4效果四
实现单位到双位,从双位到单位的点亮同时通过中断控制下面8个发光二极管的单双亮灭
5课程设计的总结与体会
在这次单片机课程设计过程中,我用了两周时间去学习软件和电路设计,进一步巩固了以前所学,培养了自己独立设计电子电路的能力,更加懂得了只有实践才能进一步提高能力,当然在这过程中遇到了很多困难,但通过自己不断的查找资料,和同学讨论,逐渐的形成了自己的思路,通过本次实习,收获了很多。
通过本次课程设计进一步掌握和理解以前所学的基础课程和基本原理。
本次课程设计提高了我分析问题解决问题和独立进行思考设计的能力。
熟悉了单片机AT89S51模块的功能。
在老师与同学们的帮助下这次课程设计让我受益匪浅,也拉近了同学与老师之间的距离。
参考文献
[1]徐煜明,韩雁.单片机原理及接口技术[M].北京:
电子工业出版社,2005.1
[2]万光毅,严义,邢春香.单片机实验与实践教程[M].北京:
北京航空航天大学出版社,2006.4
[1]李朝青.单片机原理及接口技术(简明修订版).杭州:
北京航空航天大学出版社,1998
[2]李广弟.单片机基础[M].北京:
北京航空航天大学出版社,1994
致谢
在这次课程设计过程中,我要特别感谢许建明老师给我指导。
在设计过程中各种困难在所难免。
在老师
的精心指导下开阔我们的思路,引导我少走弯路排除思维障碍,详细讲解各个电路存在的疑点,各个功能模块电路的工作原理。
使我对单片机有了更深刻的理解为以后的设计过程铺平了道路。
老师牺牲了自己的休息时间给我指导的讲解,这种牺牲精神让我很感动。
其次我要感谢我室友,是他们在我沮丧的时候给我安慰,帮我检查错误,查找资料。
在这里我要对许建明老师和我的室友表示忠心的感谢!