多按键花样流水灯设计
流水灯花样变换

【018】流水灯花样变换 [51]实验参考: 笨笨工作室-实验九、流水灯花样变换(中断)。
(查看)实验板: FB51A。
(查看)实验目的: 掌握在中断程序中处理多个按键动作的响应方法。
实验现象: 进入程序后,程序作双向流水灯;按下k1键,程序作左向流水灯; 按下k2按键程序作右向流水灯; 按下k3键两个亮点从两边向中间移动; 按下k 3键两个亮点从中间向两边移动。
在上个实验(016中断的应用中对断点的保护)中,只用了一个按键触发中断, 而本次实验中断程序要对多个按键动作进行响应,灯光变换的花样有4种,用4个按键k1,k2,k3,k4切换。
显示部分电路:键盘部分电路(图中K0对应程序中K1……K3对应K4):思路:主程序中执行左右流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。
把两次获得的按键状态比较,如果不同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。
如果是k1,就执行左跑马灯;如果是k2,就执行右跑马灯;如果是k3,就执行亮点向中间移动;如果是k4,就执行亮点向两边移动。
值得注意的是: 在中断服务程序中,应该尽量的使得任务简化,不要让中断服务程序作过多复杂的任务,而要尽量把这些复杂的任务放到主程序中间去完成。
本着这一原则, 可以采用置标志位的方法。
即在主程序中设定一个标志位,不断的对这个标志进行查询:如果是标志为状态1,就执行双向跑马灯;如果是状态2,就执行左向跑马灯;如果是状态3,就执行右向跑马灯,依次类推。
而在中断服务程序中,只需要进行如下工作:去抖动,键识别,改变标志位。
这里我们用寄存器r0的内容作为标志,当它里面的内容是0ffh时,执行左右跑马灯程序;为01h时,执行左跑马灯;02h时执行右跑马灯;03h时执行两个亮点向中间移动;04h时执行两个亮点象两边移动。
下面是主程序和中断程序的流程图程序如下:org 0000hljmp startorg 0003horg 0020hstart: mov r0, #0ffh ; 对r0赋值,r0为所设标志位setb ea ; 开中断setb ex0 ; 允许外部中断0申请中断setb it0 ; 外部中断0为跳变方式触发mov sp, #70h ; 设置中断loop0: cjne r0, #0ffh, loop1 ; r0不为ff, 转到loop1ajmp main_light ; 否则执行左右流水灯loop1: cjne r0, #01h, loop2 ; r0不为01, 转到loop2ajmp k1_light ; 否则执行左向流水灯loop2: cjne r0, #02h, loop3 ; r0不为02, 转到loop3ajmp K2_light ; 否则执行右向流水灯loop3: cjne r0, #03h, loop4 ; r0不为03, 转到loop4ajmp k3_light ; 否则执行双亮点向中间移动loop4: cjne r0, #04h, loop5 ; r0不为04, 转到loop5ajmp k4_light ; 否则执行双亮点向两边移动loop5: ajmp loop0 ; 返回重新查询;===========================中断服务程序===========================ext1: clr ea ; 关中断push accpush pswmov a, p1 ; 读入键值anl a, #0fh ; 屏蔽高四位mov 30h, a ; 键状态存入30hlcall del10msmov a, p1 ; 再次读入键值anl a, #0fhcjne a, 30h, pass ; 两次键值不同,是抖动,退出中断ajmp k1_check ; 如果相等,进行键识别; 键识别部分k1_check: cjne a, #0eh, k2_check ; 不是k1, 判断是不是k2mov r0, #01h ; 是k1, 置标志为01ajmp passk2_check: cjne a, #0dh, k3_check ; 不是k2, 判断是不是k3mov r0, #02h ; 是k2, 置标志为02ajmp passk3_check: cjne a, #0bh, k4_check ; 不是k3, 判断是不是k4mov r0, #03h ; 是k3, 置标志为03k4_check: cjne a, #07h, pass ; 不是k4, 退出中断mov r0, #04h ; 是k4, 置标志为04ajmp passpass: pop psw ; 现场恢复pop accsetb ea ; 开中断reti ; 中断返回;==================================================================== ==main_light: mov r7, #08h ; 左右流水灯程序mov r6, #06hmov a, #0fehl_loop: mov r1, a ; r1保存现在亮点位置,做样式变换时从该处开始mov p0, alcall del100msrl adjnz r7, l_loopmov a, #0bfhr_loop: mov r1, amov p0, alcall del100msrr adjnz r6, r_loopajmp loop0k1_light: mov r1, a ; 左向流水灯mov p0, alcall del100msrl amov r1, aajmp loop0k2_light: mov r1, a ; 右向流水灯mov p0, alcall del100msrr amov r1, aajmp loop0k3_light: mov p0, #07eh ; 双亮点向中间移lcall del100msmov p0, #0bdhlcall del100msmov p0, #0dbhlcall del100msmov p0, #0e7hlcall del100msajmp loop0k4_light: mov p0, #0e7h ; 双亮点向两边移lcall del100msmov p0, #0dbhlcall del100msmov p0, #0bdhlcall del100msmov p0, #07ehlcall del100msajmp loop0del10ms: ; 10ms延时子程序(12M) mov r5, #20temp1: mov r4, #248djnz r4, $djnz r5, temp1retdel100ms: mov r3, #0c3h ;100.036mstemp2: mov r2, #0ffh ;511usdjnz r2, $djnz r3, temp2retend用Proteus仿真通过,原理图如下:实验结果: 下载到板上测试, 结果与预计相符。
多按键花样流水灯课程设计

多按键花样流水灯前言当单片微型计算机简称单片机(single-chip microcomputer),又称为单片机微型控制器(single-chip microcontroller),是由CPU、RAM、ROM、定时/计时器、I/O接口电路通过应刷电路板上的总线连成一体的完整计算机系统。
[1]从1971年出现单片机的雏形开始,短短四十多年的时间里,单片机便社会各领域中得到了广泛的应用在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式控制系统,成为日后此系统中的核心部分。
由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。
今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
本设计用AT89C51单片机自制了一款简易的花样流水灯,介绍了其硬件电路及软件编程方法,在实践中体验单片机的自动控制功能。
该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料。
本课题将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的花样流水灯设计。
目录前言第一章设计目的及要求................................................................................................................................ - 4 -1.1 设计目的........................................................................................................................................... - 4 -1.2 设计要求........................................................................................................................................... - 4 -1.2.1 课程设计要求............................................................................................................................ - 4 -1.2.2 课程设计目的:........................................................................................................................ - 4 - 第二章方案设计............................................................................................................................................ - 5 -2.1 设计任务分析................................................................................................................................... - 5 -2.2 方案比较........................................................................................................................................... - 5 -2.3 硬件系统的设计要求....................................................................................................................... - 6 -2.3.1 实验总原理图............................................................................................................................ - 6 -2.3.2 硬件系统概述............................................................................................................................ - 6 - 第三章主要元器件介绍................................................................................................................................ - 7 -3.1 AT89C51单片机介绍........................................................................................................................ - 7 -3.1.1 AT89C51芯片简介..................................................................................................................... - 7 -3.1.2 引脚说明.................................................................................................................................... - 7 -3.2 晶振电路........................................................................................................................................... - 9 -3.2 LED发光二极管 ............................................................................................................................. - 10 - 第四章硬件电路设计................................................................................................................................ - 10 -4.1 主控系统......................................................................................................................................... - 10 -4.2 晶振时钟电路设计......................................................................................................................... - 11 -4.3 复位电路设计................................................................................................................................. - 11 -4.4 输入控制模块及中断控制模块设计 ............................................................................................. - 12 -4.5 输出控制模块设计......................................................................................................................... - 13 - 第五章软件设计及主要子程序.................................................................................................................. - 15 -5.2 主程序流程图................................................................................................................................. - 16 -5.3 主程序............................................................................................................................................. - 16 -5.4 中断子程序..................................................................................................................................... - 19 -5.5 LIGHT1跑马灯子程序................................................................................................................... - 19 -5.6 LIGHT2流水灯子程序................................................................................................................... - 19 -5.7 LIGHT3戏水灯子程序................................................................................................................... - 19 -5.8 延时子程序..................................................................................................................................... - 20 - 第六章系统仿真与调试.............................................................................................................................. - 21 -6.1 Keil编译.......................................................................................................................................... - 21 -6.2 Protues仿真平台简介..................................................................................................................... - 21 -6.3 跑马灯仿真演示............................................................................................................................. - 21 -6.4 流水灯仿真演示............................................................................................................................. - 23 -6.5 戏水灯仿真演示............................................................................................................................. - 24 -6.6 顺序循环执行三种花样灯............................................................................................................. - 25 - 第七章PCB板生成 ..................................................................................................................................... - 26 -7.1 PCB生成 ......................................................................................................................................... - 26 - 第八章课程设计总结.................................................................................................................................. - 27 -摘要:自计算机问世以来,单片机技术在社会各领域中得到了广泛的应用。
多按键花样流水灯设计实习报告

中国电子科技大学实习总结报告实习类型生产实习实习单位电子科学学院实习基地实习起止时间 201X年7月X日至202X年6月X日指导教师所在院(系)电子科学学院班级电信X班学生姓名学号202X年 6月 20日多按键花样流水灯设计一、设计目的与要求通过学习51单片机开发软件及其实验箱掌握51单片机与外部扩展芯片连接方式和外部芯片的初始化编程方法。
进一步学习掌握8031内部计数器的使用和编程方法。
进一步掌握中断处理程序的编程方法。
利用74LS273扩展8031的I/O口通过编程实现流水灯实验。
1、设计目的(1)掌握51系列单片机的基本硬件结构及工作原理;(2)掌握51系列单片机的汇编语言及基本程序设计方法;(3)学习并掌握使用51系列单片机开发控制系统的基本步骤及方法。
2、设计要求(1)选择一个I/O口控制八只流水灯。
(2)设置四个按键K1—K4,按下K1跑马灯,K2流水灯,K3鸳鸯戏水,K4则循环三种控制方式。
(3)跑马灯:共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后关闭。
(4)流水灯:共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后下一个LED点亮,当所有LED灯全部点亮后,延时100ms,然后全灭;然后继续上次操作。
(5)鸳鸯溪水灯:共8个LED,第一次1、3、5、7号灯点亮,延时100ms,关闭,延时100ms,2、4、6、8号灯点亮,延时100ms,关闭,延时100ms。
然后继续上次操作。
二、单片机开发板原理整个系统工作由软件程序控制运行,根据需要,可以上电后系统经过初始化,进入用户设定模式状态。
基于AT89C52单片机的彩灯控制方案,实现对LED彩灯的控制。
本方案以AT89C52单片机作为主控核心,与驱动等模块组成核心主控制模块。
在主控模块上设有晶振电路和8个LED显示二极管,根据需要编写若干种亮灯模式,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号。
多花样流水灯

4 一个流水灯闪烁2次后,从左往右移
5 左右各亮一个灯 往中间移 前一个灭
6 第几个灯闪烁几次 往右移:如 第一个闪1次,第二个闪2次……第八个闪8次
7 全部led灯闪烁一次后亮两个流水灯从左往右
8 左右各亮一个灯往中间移前一个不灭 全亮后 从中间往两边灭
9 一个流水灯从左往右移 一直亮,全亮后 一边往另一边灭,直到灭,接着重复
多花பைடு நூலகம்流水灯
只用一个数码管显示0-9 初始值为0
用两个按钮一个加 一个减 最多加到9 最底减到0
数码管显示
0:一个流水灯从左往右跑 前一个灭
1 一个流水灯从右往左跑 前一个灭
2 流水灯从左往右跳着亮 第一次7,5,3,1 第二次8,6,4,2,第三次重复第一次
3 两个流水灯来回跑 先从左往右 再从右往左
按键控制多种花样霓虹灯设计

应用工程学院单片机应用技术实训报告专业:应用电子学号:1504150137姓名:许林日期:2016/12/24项目一按键控制多种花样霓虹灯设计一、任务目的1.理解实验板独立按键部分的电路原理。
2.掌握循环类、位操作类指令的应用。
3.熟练掌握51单片机集成开发软件的使用。
4.巩固C语言知识并灵活运用到单片机编程。
二、任务要求使用按键控制多种花样霓虹灯设计,电路板上有8个自上而下排列整齐的发光二极管,需要根据一个(或者三个)按键的输入来实现以下3种显示状态的切换:a.全部闪烁b.至上而下流水灯循环c.第8、6、4、2、1、3、5、7个发光二极管循环三、硬件电路设计四、软件设计#include<regx51.h>unsigned int n;void delayms(n){unsigned char i,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);}void main(){unsigned char key,a,m;unsigned char codeled[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff, 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xbf,0xef,0xfb,0xfe,0x7f,0xdf,0xf7,0xfd};P0=0xff;while(1){key=0;while(key==0){key=P3;key=~key;}while(key==0);switch(key){case 0x04:a=0;break;case 0x08:a=1;break;case 0x10:a=2;break;default:break;}do{for(m=0;m<8;m++){P0=led[a*8+m];delayms(10);P0=0xff;}key=P3;key=~key;}while(key==0);}}编程思想:用16进制数对对单片机编程,从而实现对彩灯控制。
单片机课程设计多功能花样流水灯设计

此次单片机课程设计我学到了许多,第一次学会了软硬结合做一个项目出来,自我感觉非常自豪,但是由于自我能力的不足,我更加体会到理论知识与动手能力相结合的重要性,而且设计过程中使我懂得在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源?懂得设计的关键是要有一个清晰的思路和一个完整的软件流程图。在设计程序时,不能妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。比如在设计显示程序时,一开始数码管的显示不全,然后就不断地调试延时程序,结果数字缺定在0不动,经过反复的调试终于将程序调试成功。而且要学会拓展自己思路,一开始只做了一个速度显示,后来感觉挺好玩的,就做了花样显示。同时要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你思路,这样也为资料的保存和交流提供了方便。整个设计的过程中(还是碰到了一些问题。比如对于键盘的延时防抖问题不能较好的解决,对于编程的顺序及各模块程序调用掌握得还不够好,对于一些相关的应用软件没能熟练掌握。通过这几天的反复思考,以及参考网上的程序最终还是完成了设计。设计中我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,在动手的过程中,不仅能增强实践能力而且在理论上可以有更深的认识。
长 江 学 院
花样流水灯设计报告
课题:多功能花样流水灯
院系:机械与电子工程系
专业:自动化
班级:
学号:
姓名:
指导老师:
2016年12月20日
1、设计思路………………………………………………………………………3
2、流程图……………………………………………………………………………………..4
四、硬件设计思路和电路图7
关键词:STC89C52RCLED灯单片机花样流水灯
任务3-2 按键控制多种花样霓虹灯设计

//再次检测到K3按下,第三种模式,高四位亮 //第一次检测到K4按下
{ delay(TIME);
//延时去抖动
if(K4==0) P1=0xf0; //再次检测到K4按下,第四种模式,低四位亮
}
举一反三2
采用8个发光二极管模拟霓虹灯的显示,通过1个按键控制霓虹 灯在四种显示模式之间切换,由P0口的P0.0引脚控制按键K。
//LED全灭
while(1)
{
if(K==0)
//第一次检测到按键K按下
{
delay(1200); //延时10ms左右去抖动
if(K==0)
//再次检测到按键K按下
{ w=0x01;
//流水灯显示字初值为0x01
for(i=0;i<8;i++)
{
P1=~w;
//显示字取反后,送P1口
delay(10000);
{
if(K==0)
//第一次检测到按键K按下
{
delay(1200); //延时10ms左右去抖动
if(K==0)
//再次检测到按键K按下
{ w=0x01;
//流水灯显示字初值为0x01
for(i=0;i<8;i++)
{
P1=~w;
//显示字取反后,送P1口
delay(10000);
//延时,一个灯显示时间
//根据i的值显示不同模式
//i=1显示第1种模式 //i=2显示第2种模式 //i=3显示第3种模式 //i=4显示第4种模式
while(!K); delay(1200);
判断按键是否弹起
//等待K键释放,!为逻辑非操作 //延时消除抖动
基于C51单片机4按键4种花样流水灯设计

}
if(k4==0){
delay(10);
if(k4==0){
flag1=0;
flag2=0;
flag3=0;
flag4=1;
}
}
}
/**************主程序************************/
void main() {
while(1)
{keyscan();
if(flag1==1){
void delay(uint x)
{
uint i;
while(x--)
for(i=50;i>0;i--);
}
/******************判断按键***********************/
void keyscan()
{ if(k1==0)
{delay(10);
if(k1==0)
{
flag2=0;
基于c51单片机4按键4种花样流水灯设计单片机流水灯电路图单片机流水灯程序单片机流水灯按键控制流水灯单片机按键消抖程序单片机按键程序单片机按键控制led单片机按键电路单片机独立按键程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/************************流水灯花样设计********************/
uchar table1[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfc,0xff};/***从右到左逐一点亮反向灭之**/
多功能流水灯设计实验报告

多功能流水灯的设计一.设计要求:1.设计一8盏彩灯控制电路,使彩灯可以向左,向右流动、全亮、全灭四种功能。
功能变换可以手控也可以自控。
2.自动功能变换时间10秒。
二.总体方案构思:用Verilog语言来为单片机编程,通过编程来控制单片机各引脚在不同时间输出的不同的电平,进而控制个发光二级管的亮灭,以及控制流水灯的流速和流动方向。
1.使用按钮(auto)来控制手动或自动。
2.因为需要向左,向右,全亮,全灭四种功能,所以需要两个开关(btn1和btn2),分别用开和关两种状态表示,即(00,01,10,11)。
3.使用clk时钟来记时和触发事件。
三.实验器材:电脑和LED设备四.程序如下:module LED(clk,auto,btn1,btn2,led);input clk;input auto;input btn1;input btn2;output reg [7:0] led;reg [29:0] count;//1ns的计数器reg [3:0] count_10;//10秒的计数器reg [1:0] status;//记录当前LED灯流动的情况:"00左到右,01右到左,10全亮,11全灭"reg [1:0] type;reg second_1;//1秒的标志reg second_10;//10秒的标志initialbeginstatus<=2'b00;type<=2'b00;count<=30'b0;count_10<=4'b0;second_1<=1'b0;second_10<=1'b0;endalways@(posedge clk)//给出1s的标志和10s的标志beginif(count<25000000)//等待1s的到来begincount<=count+1;second_1<=0;second_10<=0;endelsebegincount<=0;second_1<=1;count_10<=count_10+1;if(count_10>=4'd10)beginsecond_10<=1;endendendalways@(posedge clk)//当自动的情况时,每10s变化一次流动状态beginif(auto==1 && second_1==1)beginif(second_10==1)beginif(status==2'b11)beginstatus<=2'b00;endelsebeginstatus<=status+1;endendendendalways@(posedge clk)//设置总变化状态等于手动或自动的状态beginif(second_1==1)beginif(auto==1)//自动begintype<=status;endelse//手动begintype<={btn1,btn2};endendendalways@(posedge clk)//根据type设置LED灯情况beginif(second_1==1)beginif(type==00)//左到右beginif(led==8'b00000000 || led==8'b11111111)beginled<=8'b10000000;endelsebeginled<=led>>1;endendelse if(type==01)//右到左beginif(led==8'b00000000 || led==8'b11111111)beginled<=8'b00000001;endelsebeginled<=led<<1;endendelse if(type==10)//全亮beginled<=8'b11111111;endelse//全灭beginled<=8'b00000000;endendendendmodule五.测试图如下:六.个人体会:在这次实验中收货颇丰,我学会了使用简单的Verilog语言,更加深入的学习了数字逻辑,还有更多的,我学会和同学们合作,讨论,去解决问题。
花样流水灯的设计

电子技术课程设计题目花样流水灯的设计院(系)名称信息工程学院专业班级10 专升本一班学号100310026学生姓名江涛指导教师2011年6月16日课程设计任务书2010—2011学年第二学期专业:电子信息工程学号:100310026 姓名:江涛课程设计名称:单片机原理及应用课程设计设计题目:花样流水灯设计完成期限:自2011 年 5 月30 日至2011 年 6 月10 日共 2 周一、设计依据城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。
利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。
本设计通过对器件选择和线路连接进行分析讨论,结合相应的软件设计,达到相应的设计要求。
通过本设计,要求对多种流水灯的连线和程序控制方式进行讨论,并对软件设计能提出相应建设性意见,同时写出合格的课程设计论文。
二、要求及主要内容1.硬件电路设计89C51应用系统设计(晶振电路, 上电复位电路)P1口接八个彩灯P3.0---P3.7接8个开关提供8种控制方式,共实现20种不同的亮灯方式。
2.程序设计:先画流程图再根据流程图写程序(1)主程序设计:查询程序八个分支:停止,1灯流水,2灯流水,1灯间隔,2灯间隔,快速/慢速,循环,正流水/倒流水,每个子程序执行完后返回主程序。
(2)子程序设计:停止;1灯流水子程序设计;2灯流水子程序设计;1灯间隔子程序设计;2灯间隔子程序设计;0.5秒延时子程序;2秒延时子程序;正流水/倒流水子程序设计,循环子程序设计。
3.选芯片, 元件按设计连线4.完成子程序调试(1)实验板与PC机联机。
(2)输入子程序单步执行。
如果流水灯显示错误, 检查接口是否有误, 若无误再检查控制代码,直至符合要求(3)在延时后设断点, 每执行1次流水灯移动1次。
(4)连续执行完成1种流水灯的调试。
(5)改变控制代码逐个完成所有子程序。
5.完成总调试(1)输入主程序及子程序。
(2)按子程序调试执行, 先执行1灯流水, 成功后复位。
花样流水灯设计

单片机课程设计课程单片机课程设计题目花样流水灯院系电气工程及其自动化系专业班级1112 班学生姓名温亿锋学生学号20147年6月15 日指导教师张瑛一丶任务设计一款以 AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。
二丶设计要求通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。
三丶设计方案本方案主要是通过对基于单片机的多控制、多闪烁方式的 LED 流水灯循环系统的设计,来达到本设计的要求。
其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、 LED 发光二极管和 5V 直流电源组成。
单片机流水灯循环控制系统硬件框图此设计方案中单片机的 P1 口接 5路按键控制电路,实现流水灯花型的切换功能;单片机的 P3.7 引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的 P2口接八路 LED 发光二极管组成流水灯电路,显示流水灯循环情况。
四丶系统硬件设计4.1 直流稳压电源电路花样流水灯1对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模 块,电源电路的稳定可靠是系统平稳运行的前提和基础。
电子设备除用电池供电 外,还采用市电(交流电网)供电。
通过变压、整流、滤波和稳压后,得到稳定 的直流电。
直流稳压电源是电子设备的重要组成部分。
本项目直流稳压电源为 +5V 。
直流稳压电源的制作一般有 3 种制作形式,分别是分立元件构成的稳压电 源、线性集成稳压电源和开关稳压电源。
下图为稳压电源采用的是三端集成稳压 器 7805 构成的正 5V 直流电源。
三端固定式集成稳压电源电路图AT89C51 单片机的工作电压范围: 4.0V---5.5V ,所以通常给单片机外接 5V 直流电源。
此处用 3 节 1.5V 的干电池供电。
按键选择控制流水灯效果设计

按键选择控制流水灯效果设计设有一单片机控制系统:P2口上接有8只发光二极管。
二极管的阴极分别接P2口各I/O位,阳极分别连一500Ω的电阻接+5V的高电平电源。
通过按键选择8只发光二极管闪烁效果。
电路如下图所示。
流水灯仿真电路图流水灯系统结构框图主控模块流程图:0位闪烁 show()流程图:单只低位向高位移动show1()流程图: 单只高位向低位移动show2()流程图:单只来回移动show3()流程图:程序清单:#include<reg51.h>#define uchar unsigned char#define uint unsigned int//*************************//***** 延时Xms子函数*****void delay (uint x){uint i,j;for(i=x;i>0;i--)for(j=121;j>0; j--);}//**********show0()单只闪烁************void show0(){P2=0xfe; //送一个亮的控制信号字 delay(100); //延时P2=0xff; //送一个灭的控制信号字 delay(100); //延时}//********show1(); //单只左移*****************void show0(){uchar i , y ; //定义变量 i、 y 的类型,也就是能表达的最大数y=0x01 ; //设初始信号控制字for(i=0;i<8;i++) //重复执行8遍{}中的语句{P2=~y; //送一个控制信号字delay(100); //延时y=y<<1; //计算下一个控制信号字}}//**********show2()单只右移***************void show1(){uchar i , y ; //定义变量 i、 y 的类型,也就是能表达的最大数y=0x80 ; //设初始信号控制字for(i=0;i<8;i++) //重复执行8遍{}中的语句{P2=~y; //送一个控制信号字delay(100); //延时y=y>>1; //计算下一个控制信号字}}//**********show3()单只来回跑***************void show3(){uchar i , y ; //定义变量 i、 y 的类型,也就是能表达的最大数 y=0x01 ; //设左移初始信号控制字for(i=0;i<8;i++) //重复执行8遍{}中的语句{P2=~y; //送一个控制信号字delay(100); //延时y=y<<1; //计算下一个控制信号字} //左移完y=0x40 ; //设右移初始信号控制字for(i=0;i<6;i++) //重复执行8遍{}中的语句 {P2=~y; //送一个控制信号字delay(100); //延时y=y>>1; //计算下一个控制信号字} //右移完}//***** 主函数 main *****void main( ){uchar y; //说明y可以最大表示11111111B(255) while(1){y=P0;switch (y){case 0xfe:show0(); //单只闪烁break;case 0xfd:show1(); //单只左移 break;case 0xfb:show2(); //单只右移 break;case 0xf7:show3(); //单只来回跑break;default:break;}}}。
花样流水灯设计

花样流水灯设计单片机课程设计课程题目院系电气工程及其自动化系专业班级学生姓名学生学号2022年6月15日指导教师一丶任务设计一款以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。
二丶设计要求通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。
三丶设计方案本方案主要是通过对基于单片机的多控制、多闪烁方式的LED流水灯循环系统的设计,来达到本设计的要求。
其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源组成。
单片机流水灯循环控制系统硬件框图此设计方案中单片机的P1口接5路按键控制电路,实现流水灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成流水灯电路,显示流水灯循环情况。
四丶系统硬件设计4.1直流稳压电源电路对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。
电子设备除用电池供电外,还采用市电(交流电网)供电。
通过变压、整流、滤波和稳压后,得到稳定的直流电。
直流稳压电源是电子设备的重要组成部分。
本项目直流稳压电源为+5V。
直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。
下图为稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。
三端固定式集成稳压电源电路图AT89C51单片机的工作电压范围:4.0V---5.5V,所以通常给单片机外接5V直流电源。
此处用3节1.5V的干电池供电。
4.2单片机最小系统要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成,单片机最小系统如图所示。
多功能流水灯设计毕业设计

多功能流水灯设计毕业设计毕业设计:多功能流水灯设计一、引言多功能流水灯是一种常见的电子灯具,其特点是能够根据预定的规律产生流动的灯光效果。
在本毕业设计中,我们将设计一款具有多种功能的流水灯,包括不同的灯光模式切换、亮度调节等功能。
本设计将以STM32微控制器作为核心控制器,并通过外部电路和软件编程实现多种流水灯效果。
二、设计方案1.硬件设计本设计中,我们将使用STM32微控制器作为核心控制器,具有丰富的GPIO引脚和定时器功能。
通过连续改变GPIO引脚的电平状态,我们可以实现流水灯的亮灭效果。
同时,我们还将使用一些外部元件,如电阻、电容和三极管等,来实现灯光的亮度调节和控制。
2.软件设计本设计将使用Keil C编译环境进行软件开发。
首先,我们需要编写相关的GPIO和定时器驱动程序,实现对流水灯的控制。
其次,我们还需要编写额外的模式切换和亮度调节功能的程序,通过按键或旋钮等输入方式来改变流水灯的工作模式和亮度。
三、具体实现1.灯光模式切换功能我们将设计一个菜单界面,通过按键输入来切换不同的流水灯工作模式。
在菜单界面中,用户可以选择要显示的流水灯模式,如单色流水灯、多色流水灯等。
通过编写相应的程序代码,我们可以通过按键触发事件来实现模式的切换。
2.亮度调节功能我们将使用旋钮或调光器等输入方式来实现对流水灯亮度的调节功能。
通过读取旋钮当前的位置或调节器的电阻值,我们可以确定亮度的大小。
然后,我们将通过改变PWM信号的占空比来实现对流水灯亮度的控制。
3.故障检测和保护功能为了保证流水灯在长时间使用过程中的稳定性和安全性,我们还将设计故障检测和保护功能。
例如,我们可以通过检测电流和电压等参数来判断灯管是否损坏,并及时发出警报提醒用户更换。
同时,我们还可以设置过压、过流和过载保护功能,以防止灯具因异常情况而损坏。
四、测试与验证在完成硬件和软件设计后,我们将进行测试和验证。
首先,我们将验证流水灯的各项功能是否正常工作,包括模式切换、亮度调节等。
花样流水灯设计

一、原理图设计的目的:利用AT89C51,通过控制按键来实现六种流水灯花样的转换,实现花样流水灯的设计,同时通过外部中断0,来控制流水灯的速度.二、各器件的功能作用:1、AT89C51AT89C51有40个引脚,每个引脚都有其功能。
本次设计中,利用P0口当输出口,输出低电平来驱动发光二极管点亮。
利用P1.0~P1.5六个引脚,通过按键接地,然后采用扫描的方式,判断哪个引脚所接按键按下,从而来控制六种流水灯的花样。
利用P3.2引脚外接按键接地,通过控制按键来减慢流水灯的速度,利用P3。
3引脚外接按键接地,通过控制按键来提高流水灯的速度。
利用P3.7输出低电平,导通三极管Q1,从而给八个发光二极管的阳极加高电平,一旦P0口输出低电平就可以驱动发光二极管。
2、八个发光二极管:通过八个发光二极管来实现流水灯的变化,用低电平驱动发光二级管亮,同时,用高电平使其熄灭。
3、按键通过P1.0-P1.5外接的按键来实现流水灯各种花样的变化,当按键按下时,驱动一种流水灯花样的闪烁。
同时,利用按键来提供外部中断,当按下按键时,产生一个外部中断,向CPU申请中断,CPU响应其中断,因此可以用按键来实现提高流水灯闪烁的速度。
通过在RST口处加上一个按钮手动复位电路,利用复位按钮可以使运行中的流水灯复位到初始的状态.4、排阻因为P0口作为输出口时需要外接上拉电阻三、设计原理图:四、程序如下:#include<reg51.h> //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint);//声明延时函数void main(void){uint i;uchar temp;TCON=0x05;IE=0x85;PX1=1;PX0=0;while(1){temp=0x01;for(i=0;i〈8;i++)//8个流水灯逐个闪动{P0=temp;delay(100);//调用延时函数temp〈〈=1;}temp=0x80;for(i=0;i<8;i++) //8个流水灯反向逐个闪动{P0=temp;delay(150);//调用延时函数temp>>=1;}temp=0xFE;for(i=0;i<8;i++)//8个流水灯依次全部点亮{P0=temp;delay(150); //调用延时函数temp<〈=1;}temp=0x7F;for(i=0;i<8;i++)//8个流水灯依次反向全部点亮{P0=temp;delay(150); //调用延时函数temp>>=1;}temp=0x03;for(i=0;i〈4;i++) //两个流水灯顺序点亮P0=temp;delay(150);temp<<=2;}temp=0x30;for(i=0;i<3;i++) //两个流水灯反向点亮{P0=temp;delay(150);temp〉>=2;}temp=0x07;for(i=0;i〈3;i++) //3个{P0=temp;delay(150);temp〈<=3;}temp=0xe0;for(i=0;i〈3;i++)//3流水灯反向点亮{P0=temp;delay(150);temp〉〉=3;}temp=0x0f;for(i=0;i〈3;i++) //4ge{P0=temp;delay(150);temp〈<=4;}temp=0xf0;for(i=0;i〈3;i++)//4流水灯反向点亮{P0=temp;delay(150);temp>〉=4;}}void int0()interrupt 0{uint i;uchar temp;while(1){temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动{P0=temp;delay(800);//调用延时函数temp<<=1;}temp=0x80;for(i=0;i<8;i++)//8个流水灯反向逐个闪动{P0=temp;delay(800);//调用延时函数temp〉〉=1;}temp=0xFE;for(i=0;i<8;i++)//8个流水灯依次全部点亮{P0=temp;delay(800); //调用延时函数temp<<=1;}temp=0x7F;for(i=0;i〈8;i++)//8个流水灯依次反向全部点亮{P0=temp;delay(800); //调用延时函数temp>〉=1;}temp=0x03;for(i=0;i<4;i++)//两个流水灯顺序点亮{P0=temp;delay(800);temp〈〈=2;}temp=0x30;for(i=0;i<3;i++) //两个流水灯反向点亮{P0=temp;delay(800);temp>〉=2;}temp=0x07;for(i=0;i〈3;i++)//3个流水灯顺序点亮{P0=temp;delay(800);temp<〈=3;}temp=0xe0;for(i=0;i<3;i++) //3个流水灯反向点亮{P0=temp;delay(800);temp〉〉=3;}}temp=0x0f;for(i=0;i〈3;i++)//4个流水灯顺序点亮{P0=temp;delay(800);temp<<=4;}temp=0xf0;for(i=0;i〈3;i++)//4流水灯反向点亮{P0=temp;delay(800);temp〉〉=4;}}void delay(uint t)//定义延时函数{register uint bt;for(;t;t-—)for(bt=0;bt<255;bt++); }。
单片机课程设计—8个按键控制8个LED自动设定控制流水灯

-1-江苏安全技术学院实习总结报告实习单位江苏安全技术职业学院实习起止时间 2019 年 11 月 17 日至 2019 年 12 月 11 日指导教师所在院(系) 电气工程系班 级 电梯技术 2 班学生姓名 艾孜提艾力·阿迪力·玉苏甫江学号20183102932019 年 12 月 16 日江苏安全技术职业学院-1-目录第 1 章 按键控制流水灯设计.................................................................................... 1 1.1 实习目的 ................................................................... 错误!未定义书签。
1.2 实习要求 ................................................................... 错误!未定义书签。
第 2 章 电路工作原理................................................................................................ 2 2.1 STC89C52 单片机工作原理 ....................................................................... 2 2.2 LED 工作原理.............................................................................................. 3 2.3 按键工作原理 .............................................................................................. 3 2.4 整体电路图 .................................................................................................. 5 2.5 本章小结 ..................................................................................................... 6第 3 章 C 程序设计.................................................................................................... 7 3.1 程序设计流程图 ......................................................................................... 7 3.2 实验结果 ...................................................................................................... 8 3.3 本章小结 ..................................................................................................... 9总结及体会................................................................................................................ 10 参考文献.................................................................................................................... 11 附录............................................................................................................................ 12-1--2-第1章 按键控制流水灯设计1.1 实习目的本次实习以 STC89C52 单片机为控制核心。
多按键花样流水灯设计

指导教师:许景辉多按键花样流水灯的设计摘要:自人类发明计算机以来,单片机技术在社会各领域中得到了广泛的应用。
在流水灯控制系统中,单片机的作用更是发挥的淋漓尽致,成为此系统中的核心部分。
利用单片机的可编程功能,软硬件结合,来控制LED的灯的开通关断,通过丰富多彩的花样变化,给人以不同的视觉效果,更是成为现代商业社会不可缺少吸引消费者的普遍手段。
本文结合单片机的突出特点,着重介绍通过单片机来实现多按键花样流水灯的变化,主要包括其软件程序的编写、硬件电路的搭接、器件的选择,以及通过PROTEUS的仿真和PCB板的制作等。
关键词:单片机、可编程控制器、多按键花样流水灯、准确。
目录前言 (4)第一章设计目的和要求 (5)1.1 设计目的 (5)1.2 设计基本要求 (5)第二章方案设计 (6)2.1 方案设计任务分析 (6)2.2硬件系统的设计要求 (6)2.2.1 主控系统 (7)2.2.2花样灯输入及中断控制模块 (7)2.2.3 花样灯输出控制部分 (8)2.2.4 时钟及复位部分电路 (9)2.3 软件总体设计 (13)2.3.1 程序设计流程图 (13)2.3.2 主程序 (13)第三章硬件设计 (17)3.1 80c51单片机 (17)3.2PCB板的生成 (18)第四章软件设计 (20)4.1 中断子程序 (20)4.2 跑马灯子程序 (20)4.3 流水灯子程序 (20)4.4戏水灯子程序 (21)4.5 延时子程序 (21)第五章操作说明 (22)5.1 跑马灯操作说明 (22)5.2 流水等操作说明 (22)5.3 戏水灯操作说明 (23)5.4 顺寻循环执行三种花样灯操作说明 (23)结束语 (24)参考文献 (25)前言单片微型计算机简称单片机(single-chip microcomputer),又称为单片机微型控制器(single-chip microcontroller),是由CPU、RAM、ROM、定时/计时器、I/O 接口电路通过应刷电路板上的总线连成一体的完整计算机系统。
花样流水灯的设计

花样流水灯的设计摘要城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。
利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心即使单片机。
单片机的最明显的优势,就是想入到各种仪器,设备中。
本课程是利用AT80C51单片机的自动控制功能,并结合其它电子元器件以及软件实现的流水灯,实现不同种类的流水现象。
关键字:AT80C51单片机,LED,花样流水灯目录1绪论 (1)2 相关元件及电路设计 (1)2.1 AT89C51芯片功能特性及应用 (1)2.2 MCS-51单片机 (2)2.2.1 内部结构 (2)2.2.2 引脚定义 (2)2.2.3 外部总线构成 (5)2.3单片机时钟电路及时钟时序单位 (6)2.4单片机的复位 (8)2.4.1 复位状态 (8)2.4.2 复位电路 (8)3电路及程序设计 (10)3.1电路原理图设计 (10)3.2电路程序设计 (11)总结 (18)致谢 (19)参考文献 (20)1绪论当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
本设计用AT89C51单片机自制了一款简易的花样流水灯,介绍了其硬件电路及软件编程方法,在实践中体验单片机的自动控制功能。
该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料。
本课题将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的花样流水灯设计。
2 相关元件及电路设计2.1 AT89C51芯片功能特性及应用单片机在我们的日常生活和工作中无处不在、无处不有:家用电器中的电子表、洗衣机、电饭褒、豆浆机、电子秤;住宅小区的监控系统、电梯智能化控制系统;汽车电子设备中的ABS、GPS、ESP、TPMS;医用设备中的呼吸机,各种分析仪,监护仪,病床呼叫系统;公交汽车、地铁站的IC卡读卡机、滚动显示车次和时间的LED点阵显示屏;电脑的外设,如键盘、鼠标、光驱、打印机、复印件、传真机、调制解调器;计算机网络的通讯设备;智能化仪表中的万用表,示波器,逻辑分析仪;工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;导弹的导航装置,飞机上的各种仪表等等。
节日炫彩流水灯

节日炫彩流水灯一、设计目标16个发光二极管LED0~LED15经限流电阻分别接至P1口和P2口,阳极共同接高电平。
编程实现制作节日炫彩流水灯,控制其流水或闪烁花样和速度,实现至少4种彩灯灯光效果(不含全部点亮,全部熄灭),用按键1在几种灯光效果间切换,用按键2加速,用按键3减速,用按键4暂停彩灯效果,再按一下恢复运行。
二、设计方案1、利用P1、P2口接出16个发光二极管,P3.0、P3.1、P3.2、P3.3接四个按钮,分别控制程序的减速、加速、变换闪烁方式、暂停和恢复。
2、定义了一个delay 函数用于延时。
3、进入主程序先让16个LED 灯全亮,通过按键P3.2控制六种闪烁方式,定义一个变量key ,每按下P3.2进一次中断key 加1,主函数里通过 switch(key) 切换闪烁方式。
4、定义了一个变量flag 控制程序的暂停与恢复。
每按下P3.3进入中断flag 取反一次,在闪烁程序中通过判断flag 控制暂停还是恢复。
5、定义了一个变量speed 来控制闪烁的快慢。
每按下P3.0一次speed 加50000,使闪烁变慢,每按下一次P3.1,speed 减50000,使闪烁加快。
6、变换函数:Change1:p1、p2连接的灯分别单灯循环下移。
Change2:p1、p2连接的灯先全灭后不断闪烁。
Change3:p1、p2连接的灯分别单灯循环上移。
Change4:p1、p2连接的灯分别奇偶交替闪烁。
Change5:p1、p2连接的灯分别双灯循环下移。
Change6:p1、p2连接的灯上三个下五个交替闪烁。
三、程序流程否是开始 P1、P2全部点亮,外部中断初始化 判断flag 的值是否为1=1 =2 =3 =4 =5 =6否是否是Switch 判断key 的值Change1 执行第一种闪烁方式 Change2 执行第二种闪烁方式 Change3 执行第三种闪烁方式 Change4 执行第四种闪烁方式Change5 执行第五种闪烁方式 Change6 执行第六种闪烁方式 判断是否加速或减速 改变delay 函数改变闪烁速度 判断是否要暂停进入暂停状态四、源程序#include<reg51.h>#define uchar unsigned charunsigned char key=0;int flag=1,speed,d;sbit S1=P3^0;sbit S2=P3^1;void init(); //中断初始化函数声明void change1(); //闪烁方式变化函数声明void change2();void change3();void change4();void change5();void change6();void delay() //延时函数{int i,j;speed=10000;if (d==1)speed=speed+50000;if (d==2)speed=speed-50000;d=0;for(j=0;j<10000;j++);for(i=0;i<speed;i++);} //主函数void main(){P1=0; //让P1口连接的LED灯全亮P2=0; //让P2口连接的LED灯全亮init(); //调用中断初始化函数while(1){if(flag==1) //判断是否暂停{switch(key){case 1:change1();break;case 2:change2();break;case 3:change3();break;case 4:change4();break;case 5:change5();break;case 6:change6();break;}}}}void init() //中断初始化函数{EA=1; //开总中断EX0=1; // 外部中断0允许EX1=1; //外部中断1允许IT1=1; //外部中断1下降沿触发IT0=1; //外部中断0下降沿触发PX1=1; //外部中断1高优先级}void service1() interrupt 0 using 1 //外部中断0中断服务子程序{IE0=0;key++; //每进一次中断key加1 if (key==7){key=1;}}void service2() interrupt 2 using 2 //外部中断1中断服务子程序{IE1=0;flag=~flag; //每进一次中断flag取反一次}void change1() //第一种闪烁变换方式函数{unsigned char i,a=1,b=0x80;delay();for(i=0;i<8;i++){ if(S1==0) //判断是否要加速或减速{d=1;}if(S2==0){ d=2;}if (key!=1) //判断是否要变换闪烁方式break;P1=~a;P2=~b;delay();delay();b<<=1; //P2口连接的灯从P2.7到P2.0循环左移a<<=1; //P1口连接的灯从P1.0到P1.7循环左移delay();delay();if(a==0)a=1;if(b==0)b=1;while (flag!=1); //判断是否要暂停}}void change2() //第二种闪烁变换方式函数{ P1=0X00;P2=0X00;while (1){if(S1==0) //判断是否要加速或减速d=1;if(S2==0)d=2;if (key!=2) //判断是否要变换闪烁方式break;P1=~P1; //P1口取反闪烁delay();P2=~P2;delay();while (flag!=1); //判断是否要暂停}}void change3() //第三种闪烁变换方式函数{unsigned char i,a=0x80;delay();while(1){ for(i=0;i<8;i++){ if(S1==0)d=1; //判断是否要加速或减速if(S2==0)d=2;if (key!=3) //判断是否要变换闪烁方式break;P2=~a; //P2口单灯循环右移delay();a>>=1;delay();if(a==0)a=0x80;}for(i=0;i<8;i++) //P1口单灯循环右移{P1=~a;delay();a>>=1;delay();if(a==0)a=0x80;while (flag!=1);} }}void change4() //第四种闪烁变换方式函数{ P1=0x55;P2=0x55;while (1){ if(S1==0) //判断是否要加速或减速d=1;if(S2==0)d=2;if (key!=4) //判断是否要变换闪烁方式break;P1=~P1; //P1、P2口奇偶交替闪烁P2=~P2;delay();while (flag!=1); //判断是否要暂停}}void change5() //第四种闪烁变换方式函数{unsigned char i;while (1){if (key!=5) //判断是否要变换闪烁方式break;for (i=0;i<8;i++){if(S1==0)d=1; //判断是否要加速或减速if(S2==0)d=2;if(i<7){P1=~(3<<i); //P1口双灯循环左移P2=~(3<<i); //P2口双灯循环左移delay();delay();}else{P1=~(0x81);P2=~(0x81);delay();delay();}while (flag!=1); //判断是否要暂停}}}void change6(){P1=0xf8;P2=0xf8;while (1){ if(S1==0)d=1;if(S2==0)d=2;if (key!=6)break;P1=~P1;P2=~P2;delay();delay();while (flag!=1); }}五、硬件原理图1、电路总图2、闪烁模块3、按键模块4、单片机主体5、复位模块6、时钟电路六、仿真结果1、全亮2、循环下移3、奇偶交替闪烁4、循环上移5、奇偶交替闪烁6、双灯循环下移7、上三个下五个交替闪烁8、暂停七、设计总结1、关于硬件仿真本次我设计的单片机题目为“节日炫彩流水灯”,在protuse仿真里主要用到了80c51单片机、16个四种颜色的LED灯、电阻若干、电容若干、电源若干、四个按键。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指导教师:许景辉多按键花样流水灯的设计摘要:自人类发明计算机以来,单片机技术在社会各领域中得到了广泛的应用。
在流水灯控制系统中,单片机的作用更是发挥的淋漓尽致,成为此系统中的核心部分。
利用单片机的可编程功能,软硬件结合,来控制LED的灯的开通关断,通过丰富多彩的花样变化,给人以不同的视觉效果,更是成为现代商业社会不可缺少吸引消费者的普遍手段。
本文结合单片机的突出特点,着重介绍通过单片机来实现多按键花样流水灯的变化,主要包括其软件程序的编写、硬件电路的搭接、器件的选择,以及通过PROTEUS的仿真和PCB板的制作等。
关键词:单片机、可编程控制器、多按键花样流水灯、准确。
目录前言 (4)第一章设计目的和要求 (5)1.1 设计目的 (5)1.2 设计基本要求 (5)第二章方案设计 (6)2.1 方案设计任务分析 (6)2.2硬件系统的设计要求 (6)2.2.1 主控系统 (7)2.2.2花样灯输入及中断控制模块 (7)2.2.3 花样灯输出控制部分 (8)2.2.4 时钟及复位部分电路 (9)2.3 软件总体设计 (13)2.3.1 程序设计流程图 (13)2.3.2 主程序 (13)第三章硬件设计 (17)3.1 80c51单片机 (17)3.2PCB板的生成 (18)第四章软件设计 (20)4.1 中断子程序 (20)4.2 跑马灯子程序 (20)4.3 流水灯子程序 (20)4.4戏水灯子程序 (21)4.5 延时子程序 (21)第五章操作说明 (22)5.1 跑马灯操作说明 (22)5.2 流水等操作说明 (22)5.3 戏水灯操作说明 (23)5.4 顺寻循环执行三种花样灯操作说明 (23)结束语 (24)参考文献 (25)前言单片微型计算机简称单片机(single-chip microcomputer),又称为单片机微型控制器(single-chip microcontroller),是由CPU、RAM、ROM、定时/计时器、I/O 接口电路通过应刷电路板上的总线连成一体的完整计算机系统。
[1]从1971年出现单片机的雏形开始,短短四十多年的时间里,单片机便社会各领域中得到了广泛的应用在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式控制系统,成为日后此系统中的核心部分。
由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。
[2]本文主要讲的是单片机,课题名称为多按键花样流水灯,它使我们学会了如何使用单片机控制我们日常生活中的多设备设施的应用。
通过本课题的设计以后,使我了解到了单片机的许多方面的应用。
第一章设计目的和要求1.1 设计目的1)掌握51系列单片机的基本硬件结构及工作原理;2)掌握51系列单片机的汇编语言及基本程序设计方法;3)学习并掌握使用51系列单片机开发控制系统的基本步骤及方法1.2 设计基本要求多按键花样流水灯采用80c51单片机为控制器件,用于日常商业店铺和商场的装饰,此花样流水灯共有四个按键,分别对应控制着四种花样灯光效果。
当开关K1按下时,执行跑马灯程序,共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后关闭。
当K1断开时所有的LED应该都熄灭;当开关k2按下时,执行流水灯程序,共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms 后下一个LED点亮,当所有LED灯全部点亮后,延时100ms,然后全灭;然后继续上次操作。
当开关k2断开时所有LED灯都应熄灭;当开关K3按下时,执行戏水灯程序共8个LED,第一次1、3、5、7号灯点亮,延时100ms,关闭,延时100ms,2、4、6、8号灯点亮,延时100ms,关闭,延时100ms。
然后继续上次操作。
当开关k3断开时所有的LED应该熄灭;当k4按下时,则循环执行上述程序,一直到K4断开,所有的LED熄灭。
第二章方案设计2.1 方案设计任务分析采用标准80c51单片机作为控制器;采用P2口作为输出口控制八个LED的亮灭;P1口为输出口,P1.0,P1.1,P1.2,P1.3分别与四个开关K1,K2,K3,K4相连作为2.2多按键花样流水灯总的电路原理图如图2-2所示整套电路系统由控制系统模块、花样灯输出控制显示模块组成。
如图2-3,花样灯输入控制模块由四个开关,电源,上拉电阻及四个二极管组成。
各开关风别和相应的P1口相连于此同时通过二极管与P3.2(INTO )口相连。
当开关处于断开状态时,各开关所对应P1.N(N 为0到3)口处于高电位状态,当开关闭合时,所对应得P1.N(N 为0到3)口直接与地相连,便处于低电位状态,于此同时二级管也导通,使P3.2(INTO )也经过二极管也直接与地相连,因此P3.2(INTO )的电位便被拉升到低电位,引起外部中断。
此处电路二极管的设置十分必要和关键,利用二极管的单向导电性使得任意开关按下时,不至使得P1.0-P1.3口发生短路,全部被拉到低电位,若无二极管按下任意开关时,四个开关的右端将同时处于低电位,这就使得程序不能准确判断到底是哪个开关闭合,从而就不能顺利执行相应的花样灯程序。
图2-3 花样灯输入控制系统部分电路2.2.3 花样灯输出控制部分如图2-4,为花样灯输出控制部分电路图。
图中共有八个发光二极管,其采用共阳极结构。
输出信号从80c51单片机的P2口输出,每个P2.N(N从1-7)通过总线与其相对应一个发光二极管相连,发光二管与限流电阻相连,设置限流电阻的目的是限制流过发光二极管的电流大小,不至于使其因为热效应损坏。
当P2.N(N从1-7)处于低电平的时候,与其相连的二极管便被点亮,通过对P2口的高低电平的控制便控制了发光二极管的点亮与熄灭。
从而实现花样灯的变化。
图2-4 花样灯输出部分电路2.2.4 时钟及复位部分电路时钟电路单片机本身如同一个复杂的同步时序电路,为了保证同步工作,电路应在唯一的时钟信号控制下,严格地按规定时序工作。
而时钟电路就用于产生单片机工作所需要的时钟信号。
80c51单片机时钟电路示意图如图2-5所示[3]二分频机的运行速度也就快。
[4]也可以由外部时钟电路向片内输入脉冲信号作为单片机的振荡脉冲。
这时外部脉冲信号是经XTAL1引脚引入的,而XTAL2引脚悬空或接地。
对外部信号的占空比没有要求,但高低电平持续的时间不应小于20ns。
这种方式常用于多块芯片同时工作,便于同步。
[5]其外部脉冲接入方式如图2-6所示。
本课设由于只采用了一片单片机,所以采用单片机的内部时钟电路,其晶振频率为12MHZ,其电路图如图2-7所示。
[6]图2-7 时钟部分电路示意图2.3 软件总体设计2.3.1 程序设计流程图ORG 05b0hAJMP MAINORG 003H ;外部中断0入口地址AJMP LOOPMAIN:SETB P3.2 ;外部中断置1SET BEX0 ;允许外部中断0CLR IT0 ;设置电平触发方式SETB EA ;总中断允许SJMP $ ;等待中断LOOP: ;判0转移到相应亮灯方式JNB P1.0,LIGHT1JNB P1.1,LIGHT2JNB P1.2,LIGHT3JNB P1.3,LIGHT4CLR EA ;中断总禁止CLR EX0 ;禁止外部中断0MOV P2,#0FFH ;P2口至高电位,关闭所有LED QUIT: RETI ;中断返回LIGHT1: ;跑马灯程序(100ms)MOV P2,#0FFHMOV A,#0FEHLO1: MOV P2,ALCALL DELAYRL AJNB P1.0,LO1 ;开关闭合继续循环执行SJMP LOOP ;返回到LOOP继续判断LIGHT2: ;流水灯程序CLR P2.0 ;点亮P2.0口LCALL DELAYCLR P2.1LCALL DELAYCLR P2.2LCALL DELAYCLR P2.3LCALL DELAYCLR P2.4LCALL DELAYCLR P2.5LCALL DELAYCLR P2.6LCALL DELAYCLR P2.7LCALL DELAYMOV P2,#0FFH ;P2口全部熄灭LCALL DELAYJNB P1.1,LIGHT2 ;若开关闭合则循环执行SJMP LOOPLIGHT3: ;戏水灯程序MOV P2,#55H ;点亮1,3,5,7号灯LCALL DELAYLCALL DELAYMOV P2,#0AAH ;点亮2,4,6,8号灯LCALL DELAYLCALL DELAYJNB P1.2,LIGHT3SJMP LOOPLIGHT4: ;顺序循环执行三种花样灯MOV P2,#0FFHMOV A,#0FEHLO: MOV P2,ALCALL DELAYRL AJB P2.7,LOLCALL DELAYCLR P2.0LCALL DELAYCLR P2.1LCALL DELAYCLR P2.2LCALL DELAYCLR P2.3LCALL DELAYCLR P2.4LCALL DELAYCLR P2.5LCALL DELAYCLR P2.6LCALL DELAYCLR P2.7LCALL DELAYMOV P2,#0FFHMOV P2,#55HLCALL DELAY ;为观察到明显效果延时200ms LCALL DELAYMOV P2,#0AAHLCALL DELAYLCALL DELAYJNB P1.3,LIGHT4LCALL LOOPDELAY: MOV R6,#200 ;延时100ms程序LOL1: MOV R7,#250LOL2: DJNZ R7,LOL2DJNZ R6,LOL1RET END第三章硬件设计3.1 80c51单片机80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(图3-1 80c51结构图引脚是单片机和外界进行通信的通道连接点,用户只能通过引脚组建控制系统。
从应用的角度来看,引脚的应用是单片机应用的一个重要基础。
因此熟悉引脚是学习应用单片机的基础。
MCS-51系列单片机的引脚封装主要有: PDIP40、PLCC44和PQFP/TQFP44。
不同封装的芯片其引脚的排列位置有所不同,但他们的功能和特性都相同。
方形封装(PLCC44和POFP/TQFP44)有44引脚,其中4个NC为空引脚。
采用40引脚PDIP封装的80C51单片机的引脚排列及逻辑符号如图3-2所示。