LED流水灯设计-单片机控制

时间:2024.5.15

《微机应用系统设计与综合实验(实践)》

课程设计实验报告

实验课题 LED霓虹灯设计

姓名

学号

班级 指导老师

目 录

第一章 设计概述…………………………………………………………………3

1.1 设计任务………………………………………………………………………3

1.2 设备器材………………………………………………………………………3 1

第二章 硬件设计方案……………………………………………………………3

2.1 设计思想………………………………………………………………………3

2.2 硬件选择………………………………………………………………4

2.3 AT89C52单片机介绍…………………………………………………………4

2.4 硬件逻辑图……………………………………………………………7

2.5 设计连线………………………………………………………………………8

2.6 仿真电路图……………………………………………………………………8

第三章 软件设计方案……………………………………………………………8

3.1 软件设计思想…………………………………………………………………8

3.2 程序流程图……………………………………………………………………9

第四章 调试及运行结果…………………………………………………………10

第五章 设计心得与体会…………………………………………………………10 参考资料………………………………………………………………………11

源程序清单…………………………………………………………………………11

第一章 设计概述

1.1 设计任务

设计内容:利用汇编语言(或C语言),实现8个单色LED灯的左、右循环显示,并实现循环的速度可调。

选用芯片: 8255 等

注:由于实验室的没有提供8255芯片,所以改用单片机完成此实验,并且添加了调节灯明暗的功能,以实现明暗可调。

2

1.2 设备器材

在本设计中,所用到的设备器材如下所示: (1)计算机一台; (2)唐都仪器实验箱一台; (3) AT89C52单片机一片; (4)导线若干。

第二章 硬件设计方案

2.1 设计思路

本课题需要用按钮开关实现流水灯的左右循环显示、调速、控制亮度的功能。可以选用五个开关来实现这些操作。单片机正在软件运行下通过不断扫描开关状态,来将相关操作对应量送入单片机的输入端口,然后判断属于哪一类操作。五个开关分别为K1,K2,K3,K4,K5,分别控制流水灯的调向、加速、减速、变亮、变暗。

在设计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态改变信号。不能同时有两个端口同为高电平。

在设计中我主要负责了用云脉冲宽度调制(PWM)波控制LED灯的亮度环节,开始对PWM并不是很了解,通过请教同学和查阅相关资料,渐渐明白了其中的原理。在主程序运行时通过中断方式调整其输出电压的占空比,从而改变灯泡的亮度。原理是这样的,主程序的始终频率和中断的始终频率并不相同,大约是中断的一千倍,LED灯在移动时如果响应了中断,则在执行中断程序时,LED灯近似看做没有移动,此时在中断程序中设计一个初值和一个上限,当计数到初值时置灯泡灭掉,在计数到上限之前小灯泡都是熄灭的,到达上限后回0,并置灯泡为亮,继续计数,在到设定的初值时置小灯泡为灭掉。这样在主程序的一个周期内,中断程序将小灯泡置明置暗了近一千次,通过改变设定的初值可以改变小灯泡的亮度。

2.2 硬件选择

3

本实验选用AT89C52单片机、五个按键开关和8个发光二极管。其中AT89C52为控制核心,当5个开关的状态改变时,单片机检测到开关信号后就通过软件输出控制发光二极管。

2.3 AT89C52单片机介绍

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线。

AT89C52的内部结构图如下:

LED流水灯设计单片机控制

4

引脚图如下:

引脚功能说明:

P0 口:P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。 访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口,P1 的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),

参见表1。

Flash 编程和程序校验期间,P1 接收低8 位地址。

表.P1.0和P1.1的第二功能

LED流水灯设计单片机控制

LED流水灯设计单片机控制

5

P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。

Flash 编程或校验时,P2亦接收高位地址和一些控制信号。

P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 。

P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。

对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如

LED流水灯设计单片机控制

6

有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。

PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。

Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。

XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

XTAL2:振荡器反相放大器的输出端。

2.4硬件连接框图

单片机从开关上提取不同输入信号,进行相应的软件操作,反映输出在发光二极管上。

2.5设计连线

本实验的连线为:开关使用唐都试验箱上的5个开关,分别接到单片机的P2.0—P2.4口,然后发光二极管分别接到单片机的P1.0—P1.7口。

LED流水灯设计单片机控制

7

2.6实验仿真电路图

第三章软件设计方案

3.1 软件设计思想

一个完整的系统仅有硬件是不够的,还要有软件的配合。软件和硬件对一个系统来说都是不可或缺的。本实验采用C语言编程,在具体设计中,通过GetKey()函数来不停的扫描开关的状态,通过KeyProcess()来确定输入的信号,即按键的位置,从而执行不同的子程序内容,实现LED灯的控制。

LED流水灯设计单片机控制

8

3.2程序流程图

第四章 调试及运行结果

LED流水灯设计单片机控制

9

通过设计和编写程序代码,讲程序通过Keil软件编译后生成的hex文件写进AT89C52中,便可操作。为当拨动相应的开关时,看LED灯的变化。

调试过程中问题很多,主要原因是对单片机结构的不熟悉,其次就是程序中的一些问题。但通过努力,都被一一解决。实际接线前我们先用protues仿真了一下实验结果,确认无误后接线,这样提高了调试的时间。

第五章 心得体会

经过四次的上机课程设计,在我和**同学的共同努力下,顺利的完成了任务,并在其中体现了自己的独创部分。同时我感觉自己学到了很多。首先是要把理论和实际相结合起来,从理论中得出结论,然后再实践,从而提高自己的实际动手能力和独立思考问题的能力。在设计的过程中遇到了很多的问题,也发现了自己的不足之处。首先是之前对单片机并不十分了解,通过借阅书籍,找同学咨询慢慢的开始对其有了初步的认识。其次是一些相关软件的用法,这个通过自己慢慢的摸索也逐渐熟悉了起来。特别是protues的使用,它给了我们很大的帮助,帮助我们解决了很多调试过程中的问题。在者是对PWM波的使用,这个问题很是伤到筋,因为之前对其并不了解,从熟悉到使用我们查阅了很多资料,请教了同学,最后终于掌握了。同时也是设计更完善。

此课程设计让我加深理解了所学的理论知识,并进一步建立了计算机应用系统的整体概念,初步掌握了单片机软、硬件开发方法,为以后进行实际的单片机软、硬件应用开发奠定了良好的基础。这对下学期单片机的学习会有很大的帮助,也使我对单片机产生了兴趣。

这次课程设计的顺利完成,离不开学长,同学和知道老师的帮助,特别是PWM波的运用,也是学长给我们提出的建议。在此感谢老师和学长的无私帮助。

附录一 参考文献

10

[1]《单片机原理及其接口技术》 胡汉才 编著 北京:清华大学出版社

[2]《MCS-51单片机原理及应用》张毅刚 编著 哈尔滨:哈尔滨工业大学出版社

[3]《51单片机C语言应用程序设计 实例精讲》(第二版) 戴佳 刘博文 编著 电子工业出版社

附录一 C语言程序清单

/************************************************************/

/* 程序名:可控流水灯 */

/* 功能:实现流水灯的方向、速度、亮度控制 */

/* 硬件:P2接开关,P1接LED */

/************************************************************/

#include<reg52.h>

#include <intrins.h>

sbit K1=P2^0; //方向

sbit K2=P2^1; //加速

sbit K3=P2^2; //减速

sbit K4=P2^3; //加亮

sbit K5=P2^4; //变暗

unsigned char Speed,LED;

unsigned int tCount=0;

unsigned char Idx; //速度取值索引

bit Dirtect=1; //滚动方向

char duty=10; //占空比

unsigned int code sTable[]={0,1,3,7,9,15,30,50,100,200,230,280,300,350}; //调速表

void InitTimer0_Timer1(void);

void delay(unsigned int x)

{

unsigned char i;

while(x--) for(i=0;i<20;i++);

}

unsigned char GetKey(void)

{

unsigned char K;

if(P2==0xFF) return 0;

delay(10);

11

switch(P2)

{

case 0xFE:K=1;break;

case 0xFD:K=2;break;

case 0xFB:K=3;break;

case 0xF7:K=4;break;

case 0xEF:K=5;break;

default: K=0;break;

}

while(P2!=0xFF); //等待释放按键

return K;

}

void KeyProcess(unsigned char Key)

{

switch(Key)

{

case 1:Dirtect=~Dirtect;break; //方向

case 2:if(Idx>1) Speed=sTable[--Idx];break;//加速

case 3:if(Idx<15) Speed=sTable[++Idx];break;//减速

case 4:duty++;if(duty>=20) duty=20;break; //加亮

case 5:duty--;if(duty<=0) duty=1; break; //变暗

}

}

void main(void)

{

unsigned char Key;

P1=P2=0xFF;

Idx=4;

Speed=sTable[Idx];

IP=0x02; //中断优先级

InitTimer0_Timer1();

LED = 0xfe;

P1 = LED;

while(1)

{

Key=GetKey();

if(Key!=0) KeyProcess(Key);

}

}

/******************************************************************/ /* 定时器0和定时器1初始化 */ 12

/******************************************************************/ void InitTimer0_Timer1(void)

{

TMOD = 0x20;

TH1 = 0x06;

TL1 = 0x06;

EA = 1;

ET0 = 1;

TR0 = 1;

ET1 = 1;

TR1 = 1;

}

/******************************************************************/ /* 定时器中断函数 */ /******************************************************************/ void timer0(void) interrupt 1

{

if(++tCount<Speed) return;

tCount=0;

if(Dirtect==1) LED = _cror_(LED,1); //循环右移1位,点亮下一个LED else LED=_crol_(LED,1);

P1=LED;

}

void Timer1(void) interrupt 3 //调节占空比

{

static char t=0;

t++;

if(t==20)

{

t=0;

P1=(0x00|LED);

}

if(duty==t) P1=0xFF;

}

13

14

更多相关推荐:
流水灯单片机课程设计报告

井冈山大学机电工程学院单片机课程设计报告课程名称单片机设计题目流水灯姓名覃家应陈东阳专业生物医学工程班级10级医工本一班学号100615062指导教师王佑湖20xx年11月10日目录1引言211设计任务212设...

单片机实验报告——流水灯

电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验2流水灯实验时间:20xx-10-21班级:电信092姓名:蔡**学号:*********一、实验目的:进一步熟悉keil仿真软件、prote…

单片机课程设计led流水灯设计报告

目录一前言111课题简介112设计目的1二总体设计221设计思路222原件清单2三硬件设计331AT89C51332系统框图533程序框图5四软件设计541硬件设计642单片机时钟电643复位电路644控制电路...

51单片机流水灯实验报告

51单片机流水灯试验一实验目的1了解51单片机的引脚结构2根据所学汇编语言编写代码实现LED灯的流水功能3利用开发板下载hex文件后验证功能二实验器材个人电脑80c51单片机开发板三实验原理单片机流水的实质是单...

单片机流水灯设计报告

第一部分实训准备1摘要近年来随着电子技术和微型计算机的发展单片机的档次不断提高起应用领域也在不断的扩大已在工业控制尖端科学智能仪器仪表日用家电汽车电子系统办公自动化设备个人信息终端及通信产品中得到广泛的应用成为...

单片机流水灯设计报告

1摘要近年来随着电子技术和微型计算机的发展单片机的档次不断提高起应用领域也在不断的扩大已在工业控制尖端科学智能仪器仪表日用家电汽车电子系统办公自动化设备个人信息终端及通信产品中得到广泛的应用成为现代电子系统中最...

单片机流水灯实验报告

单片机流水灯实验报告一实验目的1熟练掌握AT89S52型开发板的使用方法和注意事项2了解简单单片机应用系统的设计方法3掌握应用KEIL软件编辑编译源汇编程序的操作方法4掌握应用USBISP烧录软件的操作方法5帮...

基于单片机的流水灯设计

专业综合设计基于单片机的流水灯的设计与制作专业综合设计任务书一设计题目基于单片机的炫彩流水灯的设计与制作二设计目的1掌握单片机的的基本原理及利用IO口输入输出功能2掌握LCD动态扫描显示驱动电路设计的方法3掌握...

单片机控制的花样流水灯设计毕业论文

毕业设计题目单片机控制的花样流水灯设计专业学号学生姓名指导教师20xx年12月24日摘要城市夜景中变幻多姿的霓虹灯历来是一道亮丽的风景利用单片机的自动控制功能设计出相应不同的电路可以实现彩灯不同模式的流水效果单...

单片机控制的花样流水灯设计毕业论文

摘要自计算机问世以来单片机技术在社会各领域中得到了广泛的应用在流水灯控制系统中单片机更是取代了由齿轮调节延迟时间的旧式市发展速度成为日后此系统中的核心部分由于单片机具有一些突出的优点体积小重量轻电源单一功耗低功...

基于单片机AT89C51控制的键控流水灯课程设计报告

宁波技师学院课程设计报告论文题目键控流水灯专业班级学生姓名指导教师宁波技师学院电气技术系二零一三9年21月摘要单片机是一种集成电路芯片采用超大规模技术把具有数据处理能力的微处理器随机存取数据存储器只读程序存储器...

可控流水灯单片机课程设计报告

课程设计报告课程名称1目录1引言12课题综述121课题的来源122课题的意义123预期的目标124面对的问题125课题的技术23系统分析231涉及的基础知识23280C51单片机引脚图及引脚功能介绍233解决问...

单片机流水灯设计报告(43篇)