单。片。机。
课。程。设。计。
任。务。
书。题目:简易led灯闪烁的设计。
系别。2024年6月18日。
单片机原理及应用课程设计任务书。
目录。一、功能要求。
二、方案论证。
三、系统硬件电路设计。
四、系统程序的设计。
1、位控制法。
2、循环移位法。
3、查表法。
4、c语言程序。
五、总结。一、 功能要求。
led产品带给我们如此色彩丰富的世界, 同时给予我们靓丽明媚而且难忘的时刻。在led快速发展的时候, 也是我们发展led产品适用化和广泛化的厂商。运用所学的知单片机知识识设计方案,使得在电路中的led灯进行每间隔200ms轮流点亮。
二、 方案论证。
三、 系统硬件电路设计。
单片机应用系统可分为最小系统、最小功耗系统及典型系统等。at89c51单片机是美国atmel公司生产的低电压、高性能cmos 8位单片机,具有丰富的内部资源:4kb闪存、128bram、32根i/o口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.
25~5.50v的电压工作范围和0~24mhz工作频率,使用at89c51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
其具体硬件电路图如下:
图1 流水灯硬件原理图。
从原理图中可以看出,如果要让接在p1.0口的led1亮起来,那么只要把p1.0口的电平变为低电平就可以了;相反,如果要接在p1.
0口的led1熄灭,就要把p1.0口的电平变为高电平;同理,接在p1.1~p1.
7口的其它7个led的点亮和熄灭的方法同led1。因此,要实现流水灯功能,我们只要将发光二极管led1~led8依次点亮、熄灭,8只led灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应,以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候还应该延时一段时间,否则我们就看不到“流水”效果了。
四、 系统程序的设计。
单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。下面我们以最简单的流水灯控制功能即实现8个led灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。
1. 位控制法。
这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制p1口的每一个位输出高低电平,从而来控制相应led灯的亮灭。程序如下:
org 0000h ;单片机上电后从0000h地址执行。
ajmp start ;跳转到主程序存放地址处。
org 0030h ;设置主程序开始地址。
start:mov sp,#60h ;设置堆栈起始地址为60h
clr p1.0 ;p1.0输出低电平,使led1点亮。
acall delay ;调用延时子程序。
setb p1.0 ;p1.0输出高电平,使led1熄灭。
clr p1.1 ;p1.1输出低电平,使led2点亮。
acall delay ;调用延时子程序。
setb p1.1 ;p1.1输出高电平,使led2熄灭。
clr p1.2 ;p1.2输出低电平,使led3点亮。
acall delay ;调用延时子程序。
setb p1.2 ;p1.2输出高电平,使led3熄灭。
clr p1.3 ;p1.3输出低电平,使led4点亮。
acall delay ;调用延时子程序。
setb p1.3 ;p1.3输出高电平,使led4熄灭。
clr p1.4 ;p1.4输出低电平,使led5点亮。
acall delay ;调用延时子程序。
setb p1.4 ;p1.4输出高电平,使led5熄灭。
clr p1.5 ;p1.5输出低电平,使led6点亮。
acall delay ;调用延时子程序。
setb p1.5 ;p1.5输出高电平,使led6熄灭。
clr p1.6 ;p1.6输出低电平,使led7点亮。
acall delay ;调用延时子程序。
setb p1.6 ;p1.6输出高电平,使led7熄灭。
clr p1.7 ;p1.7输出低电平,使led8点亮。
acall delay ;调用延时子程序。
setb p1.7 ;p1.7输出高电平,使led8熄灭。
acall delay ;调用延时子程序。
ajmp start ;8个led流了一遍后返回到标号start处再循环。
delay: ;延时子程序。
mov r0,#200;延时一段时间。
d1: mov r1,#
nopnop
djnz r1,$
djnz r0,d1
ret ;子程序返回。
end ;程序结束。
2.循环移位法。
在上个程序中我们是逐个控制p1端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。我们在程序一开始就给p1口送一个数,这个数本身就让p1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至p1口,这样就实现“流水”效果啦。
由于8051系列单片机的指令中只有对累加器acc中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到acc中,让其移动,然后将acc移动后的数据再转送到p1口,这样同样可以实现“流水”效果。具体编程如下所示,程序结构确实简单了很多。
org 0000h ;单片机上电后从0000h地址执行。
ajmp start ;跳转到主程序存放地址处。
org 0030h ;设置主程序开始地址。
start:mov sp,#60h ;设置堆栈起始地址为60h
mov a,#0feh ;acc中先装入led1亮的数据(二进制的11111110)
mov p1,a ;将acc的数据送p1口。
mov r0,#7 ;将数据再移动7次就完成一个8位流水过程。
loop: rl a ;将acc中的数据左移一位。
mov p1,a ;把acc移动过的数据送p1口显示。
acall delay ;调用延时子程序。
djnz r0,loop ;没有移动够7次继续移动
ajmp start ;移动完7次后跳到开始重来,以达到循环流动效果。
delay: ;延时子程序。
mov r0,#200;延时一段时间。
d1: mov r1,#
nopnop
djnz r1,$
djnz r0,d1
ret ;子程序返回。
end ;程序结束。
3. 查表法。
上面的两个程序都是比较简单的流水灯程序,“流水”花样只能实现单一的“从左到右”流方式。运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。我们首先把要显示流水花样的数据建在一个以tab为标号的数据表中,然后通过查表指令“movc a,@a+dptr”把数据取到累加器a中,然后再送到p1口进行显示。
具体源程序如下,tab标号处的数据表可以根据实现效果的要求任意修改。
单片机课程设计
可变程序控制器是集微机技术 自动化技术 通讯技术于一体的通用工业控制装置。它可靠性强 性能 比高 使用方便,已在工业控制的各个领域里得到了极为广泛的应用,成为实现工业自动化的一种强有力的工具 1 plc的定义有许多种。国际电工委员会 iec 对plc的定义是 可编程控制器是一种数字运算操作的电子系统...
单片机课程设计
目录。内容提要2 关键词2引言3 一 硬件电路设计3 一 电路板原理3 二 电路元器件3 二 软件设计3 一 秒钟设计方案3 二 时钟设计方案4 结语7单片机时钟设计。内容摘要 一 在实验板上用动态扫描显示00 59秒钟,具体要求如下 一 6m晶振 二 l9 l10显示00 59十进制数并循环,间隔...
单片机课程设计
1 选题背景。1.1 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...