单片机课程设计报告
用单片机设计节日彩灯控制器
一、设计任务与要求
本实验中采用汇编语言和89C51单片机实现几日彩灯控制器,在Keil uVision软件环境中编辑和调试节日彩灯程序,并在Proteus软件环境下仿真节日彩灯的硬件电路。
可编程节日彩灯系统采用8个LED灯来模拟彩灯的显示,设计要求8个LED灯能以多种不同的方式变换的亮灭,以达到节日彩灯的效果。
本实验中彩灯具体的变换方式采用以下四种方式:
方式一:启动彩灯运行,按下与89C51单片机P1.2相连接的按钮,则彩灯按照由上而下的顺序依次点亮。
方式二:停止彩灯运行,按下与89C51单片机P1.3相连接的按钮,则彩灯全部熄灭。
方式三:向下依次点亮彩灯,按下与89C51单片机P1.4相连接的按钮,则彩灯按照由上向下的顺序依次点亮。
方式四:向上依次点亮彩灯,按下与89C51单片机P1.5相连接的按钮,则彩灯按照由下向上的顺序依次点亮。
二、设计方案
以80C51单片机为控制核心,采用模块化的设计方案,运用LED彩灯、按键等组成电路,实现彩灯在开启时满足不一样的闪亮方法。
按键可以在彩灯使用的时候选择不同的亮法,使彩灯流动的方向改变,键一可以使彩灯由上而下开始流动,键二可以使彩灯停止,三号键可以使彩灯由上而下流动,四键则可以使彩灯由下而上流动。
通过按键能方便使用者选择节日彩灯的开启、流动方向和停止。
系统框图如下:
三、单片机设计节日彩灯控制器的硬件电路设计
单片机设计过程中用到的管脚说明:
1、VCC(40):供电电压。
2、GND(20):接地。
3、P1端口(P1.0-P1.7):P1口是一个内部提供上拉电阻的8位双向I/O口,
P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
4、P2端口(P2.0-P2.7):P2口为一个内部上拉电阻的8位双向I/O口,P2口
缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”
时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
5、P3端口(P3.0-P3.7):P3口管脚是一个带有内部上拉电阻的8位的双向I/O
端口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。
P3口也可作为AT89C51的一些特殊功能口,其中P3.3可作为外部中断1输入。
6、XTAL1(19):反向振荡放大器的输入及内部时钟工作电路的输入。
7、XTAL2(18):来自反向振荡器的输出。
8、EA(31):外部程序存储器访问允许控制端。
打开PROTEUS的ISIS编辑环境,从PROTEUS中选取该电路所需要的元器件,放置元器件、放置电源和地、连线得到下图所示的电路原理图,再点菜单栏工具下拉的电气规则检查,当规则检查出现:“NETLIST GENERATED OK NO ERC ERRORD FOUND”,表示通过检查。
电路设计完成。
PROTEUS硬件电路原理图
四、单片机设计节日彩灯控制器的软件设计
单片机设计节日彩灯控制器的软件设计流程图如下:
在Keil uVision软件环境下编写单片机设计节日彩灯控制器的软件,最终编写成功的程序如下所示:
ORG 0000H ;程序入口地址
LJMP MAIN ;跳转到主程序
ORG 0013H ;中断入口地址
LJMP INT1X ;跳转到中断程序
ORG 0100H ;主程序入口地址
MAIN:SETB IT1 ;设置外部中断1为跳沿触发方式
SETB EX1 ;允许外部中断1
SETB EA ;开启中断总开关
CLR F0 ;清标志位F0
MOV A,#0FFH ;为A赋初值
S0:MOV P2,A ;设置P2为0FFH
JB F0,S1 ;若F0为1则跳转S1
RR A ;右移A值
SJMP S2 ;跳转S2
S1:RL A ;左移A值;
S2:LCALL DELA ;调用延时
SJMP S0
INT1X:JNB P1.2,LOOP1 ;P1.2端口为0则跳转LOOP1
JNB P1.3,LOOP2
JNB P1.4,LOOP1
JNB P1.5,LOOP3
LOOP1:MOV A,#0FEH ;对A进行赋值
SETB F0 ;对标志位置1
AJMP INT ; 跳转至INT
LOOP2:MOV A,#0FFH
AJMP INT
LOOP3:MOV A,#7FH
CLR F0
AJMP INT
INT:RETI ;中断返回
DELA:MOV R1,#100 ;延时子程序
MOV R3,#50
DELA1:MOV R2,#10
DELA2: NOP
DJNZ R2,DELA2
DJNZ R1,DELA1
DJNZ R3,DELA1
RET ;子程序返回
END ;结束
五、在PROTEUS中的硬件电路中进行仿真
把程序装入单片机后,通过按不同的按键实现彩灯运行的不同方式,检验实验结果是否与要求相符合。
若与要求不符,则检验电路和程序是否正确,直至实验结果与要求相符合。
六、实验程序与实验电路的总体叙述
硬件电路中LED灯是共阳极的,在程序运行时,按下与P1.2相连的按键,程序进入中断,并检测到P1.2为低电平0,此时进入LOOP1,对A赋值FEH和置标志位F0为1,然后返回S0,对P2端口赋值(赋值为FEH,转换为二进制数为11111110),及此时在电路上为P2.7为低电平0,只有最上面的LED灯亮,程序跳至S1,左移A值,及A变为11111101,调用延时子程序,然后返回S0,此时重复以上过程,使得第二个LED灯亮,依次执行则LED等依次点亮,直到改变按下的按键。
七、单片机课程设计的体悟
本设计本身比较简单,整个课程设计的过程中每一步都是自己亲自做的,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。
以往没有注意到
的问题,都在这一次的课程设计中得以体现,这培养了我的细心,耐心和专心。
经过几天的努力,终于完成了本学期的单片机课程设计,过程虽是辛苦的,但从中我们却学到了很多东西。
首先巩固了课上学习的理论知识,对于计算机汇编语言的系统化整体化有了更深的认识。
在编写程序的过程中遇到了很多困难经过我反复修改不断修正最终才能得以执行。
再次是经过搜集资料基本了解了proteus软件是使用。
整个设计过程最大的收获就是意识到理论知识扎实的重要性,实践是建立在理论之上的。