按键控制的流水灯

合集下载

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

基于单片机AT89C51控制的键控流水灯_课程设计报告
设计中,发光二极管是共阳极接法的,我们只需要将其初值不断的左移就会看到LED轮流的被点亮,也就实现了流水灯的功能。
图3-5流水灯模块图
3.3
图3-6 键控流水灯图
4
#include<reg51.h>
#define smg1 P0
#definelsd1P1
#define smg2P2
unsignedinti=1,u=7,j,n,c,k,h=7,s=1;
voidsjms3(void);
voidsjms4(void);
voidsjms5(void);
voidmsms1(void);
voidmsms2(void);
voidmsms3(void);
voidmsms4(void);
voidmsms5(void);
voidzd1(void);
voidzd2(void);
3.2.5
发光二极管就是LED,是一种由磷化镓等半导体材料制成的、能直接将电能转换成光能的发光显示器件。当其内部有一定电流通过时,就是发光。发光二极管具有功耗低、体积小、可靠性高、寿命长和相应快等优点。
流水灯模块采用16个LED发光二极管,通过代码的编写,实现五种流水移动,其中电阻的作用是保护二极管,向它提供较小的电流,防止二极管因为电流过大而烧毁。
1
单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在的单片机的控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。
2
2.1
随着经济的发展、科技的突飞猛进,芯片业得到了迅速的发展,是单片机技术在各种民用和工业控制等领域得到更广泛的应用。单片机凭借其低成本、高性能的不可代替优势已经成为了微电脑 控制的主力军。学习单片机的有效方法是将理论与实践并重,因此通过对单片机可控流水灯的设计和研究,鼓励学生在熟悉基本原理的前提下,与实际应用相联系,提出自己的方案,来完善设计,使得他们更好的掌握单片机的应用。

综合实验一——按键控制流水灯实验(查询方式)

综合实验一——按键控制流水灯实验(查询方式)

北京科技大学微型计算机原理实验报告学院:____自动化学院________________专业、年级:_自动化1101_ ______________ 姓名:__廖文骏_ ________________学号:_ 20111002124 ____________ 指导教师:___ _____王粉花____________2013年12 月综合实验一按键控制流水灯实验(查询方式)实验学时:2学时一、实验目的1.掌握ATmega16 I/O口操作相关寄存器2.掌握CodeVision AVR软件的使用3. 复习C语言,总结单片机C语言的特点二、实验内容1. 设计一个简单控制程序,功能是8个LED逐一循环发光0.5s,构成“流水灯”。

2. 用两个按键K1和K2控制流水灯(中断方式):(1)当按下K1时,流水灯从左向右流动;(2)当按下K2时,流水灯从右向左流动。

三、实验所用仪表及设备硬件:PC机一台、AVR_StudyV1.1实验板软件:CodeVision AVR集成开发软件、SLISP下载软件四、实验原理ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。

所有这些I/O口都是双(有的为3)功能复用的。

其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。

这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。

每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。

I/O口的工作方式和表现特征由这3个I/O口寄存器控制。

AVR通用I/O端口的引脚配置情况:I/O口引脚配置表表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。

开关键盘控制流水灯设计

开关键盘控制流水灯设计

开关/键盘控制流水灯设计摘要目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的流水灯,主要介绍了利用89C51制作一简易流水灯的软硬件设计过程,可实现花样流水灯的效果,重点给出了其软件编程的思想方法。

关键词:89C51单片机,霓虹灯,开关/按键目录1绪论 (1)2硬件设计 (1)2.1芯片介绍 (1)2.2电源 (2)2.3时钟 (2)2.4控制线:控制线共有4根 (2)2.5 I/O线 (3)2.6晶振电路 (3)2.7 LED灯电路 (6)3程序设计 (7)3.1 程序流程图 (7)3.2程序设计 (7)总结 (13)参考文献 (14)1绪论目前,国内外对于单片机流水灯的研究,大多是利用89c51单片机,软硬件相结合,构造成最简单的流水灯.城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。

利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。

本设计通过对器件选择和线路连接进行分析讨论,结合相应的软件设计,达到相应的设计要求. 2硬件设计2.1芯片介绍按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等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。

cc2530按键控制流水灯

cc2530按键控制流水灯

cc2530按键控制流水灯本次设计用LED1,LED2,LED3 灯及按键S1 为外设。

采用P10、P11、P14 口为输出口,驱动LED1/LED2/LED3,P01 口为输入口,接受按键信号输入(高电平为按键信号)。

1.高性能2.4G 射频模块Q2530RFQ2530RF是丘捷技基于TI公司第二代2.4GHz IEEE 802.15.4 /RF4CE/ZigBee的第二代片上系统解决方案CC2530 F256的全功能模块,集射频收发及MCU控制功能于一体。

外围原件包含一颗32MHz晶振和一颗32.768KHz晶振及其他一些阻容器件。

射频部分采用巴伦匹配和外置高增益SMA天线,接收灵敏度高,发送距离远,空旷环境最大传输距离可达400米。

模块引出CC2530所有IO口,便于功能评估与二次开发。

2.多功能开发板Q2530EB多功能扩展板Q2530EB 可支持多种射频主控模块(例如Q2530RF等),配置有串口液晶显示接口,USB供电接口,DC 5V电源接口,电池接口,RS232接口,DEBUG接口,五向按键及指示灯,红外遥控信号接收/发射等模块。

所有的外设均通过SPI总线/UART /DEBUG等接口与射频模块Q2530RF 相连,并完全受Q2530RF 控制和访问。

多功能仿真扩展板Q2530EB 采用三种电源供电方式:DC 5V供电、USB接口供电、电池供电,可在插座P5设置跳线选择,PIN1-PIN2 为电池供电,PIN2-PIN3 为外接直流电源或者USB接口供电。

电源开关为P4。

Q2530EB 板卡背面的电池盒可放置3节5号干电池,输出电压3.4~4.5V,板载电源电路将其调整到+3.3V 稳定的直流电压输出供后级使用。

当电池电压低于3.4V 时,应更换电池以保持模块正常工作。

Q2530EB 带有1个DC 5V的电源适配器接口P2和一个USB接口P1,输入电压经过稳压器降压为+3.3V输出供后极使用。

四个按键控制的四个流水灯的速度

四个按键控制的四个流水灯的速度

四个按键控制的四个流水灯的速度#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include //包括一个52 标准内核的头文件sbit K1= P3;sb it K2= P3 ;sbit K3= P3;sb it K4= P3;bit ldelay=0; //长定时溢出标记,预置是0uchar speed=90; //设置一个变量保存默认的跑马灯的移动速度char code dx516[3] _at_ 0x003b;//这是为了仿真设置的//4 个按键4 级变速的跑马灯试验void main(void)// 主程序{uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入P1 的值uchar ledi; //用来指示显示顺序RCAP2H =0x10; //赋T2 的预置值0x1000,溢出30 次就是1 秒钟RCAP2L =0x00;TR2=1; //启动定时器ET2=1; //打开定时器2 中断EA=1; //打开总中断while(1) //主程序循环{if(ldelay) //发现有时间溢出标记,进入处理{ldelay=0; //清除标记P1=ledp[ledi];//读出一个值送到P1 口ledi++;//指向下一个if(ledi==4){ledi=0;//到了最后一个灯就换到第一个444444-}}if(!K1)speed=20; //检查到按键,设置对应的跑马速度if(!K2)speed=10;if(!K3)speed=5;if(!K4)speed=2;}}//定时器2 中断timer2() interrupt 5{static uchar t;TF2=0;t++;if((t==speed)||(t>90)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速度为1 秒{t=0;ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理}}tips:感谢大家的阅读,本文由我司收集整编。

键盘可控流水灯资料

键盘可控流水灯资料

;************************************************** ; 平凡单片机工作室;作者:周坚;功能描述:;P3.2:开始,按此键则灯开始流动(由上而下);P3.3:停止,按此键则停止流动,所有灯为暗;P3.4:上,按此键则灯由上向下流动;P3.5:下,按此键则灯由下向上流动;本例可用TOP51-2005/TOPA V-2008单片机开发平台验证;**************************************************UpDown EQU 00H ;上下行标志StartEnd EQU 01H ;起动及停止标志LAMPCODE EQU 21H ;存放流动的数据代码ORG 0000HAJMP MAINORG 30HMAIN:MOV SP,#5FHMOV P1,#0FFHCLR UpDown ;启动时处于向上的状态CLR StartEnd ;启动时处于停止状态MOV LAMPCODE,#0FEH ;单灯流动的代码LOOP:ACALL KEY ;调用键盘程序JNB F0,LNEXT ;如果无键按下,则继续ACALL KEYPROC ;否则调用键盘处理程序LNEXT:ACALL LAMP ;调用灯显示程序AJMP LOOP ;反复循环,主程序到此结束;---------------------------------------DELAY:MOV R7,#10D1: MOV R6,#100DJNZ R6,$DJNZ R7,D1RET;---------延时程序,键盘处理中调用KEYPROC:MOV A,B ;从B寄存器中获取键值JB ACC.2,KeyStart ;分析键的代码,某位被按下,则该位为1 JB ACC.3,KeyOverJB ACC.4,KeyUpJB ACC.5,KeyDownAJMP KEY_RETKeyStart:SETB StartEnd ;第一个键按下后的处理AJMP KEY_RETKeyOver:CLR StartEnd ;第二个键按下后的处理AJMP KEY_RETKeyUp:SETB UpDown ;第三个键按下后的处理AJMP KEY_RETKeyDown:CLR UpDown ;第四个键按下后的处理KEY_RET:RETKEY:CLR F0 ;清F0,表示无键按下。

按键控制流水灯系统

按键控制流水灯系统

按键控制流水灯系统设计摘要本设计旨在于通过所学知识,设计一个简单的按键控制流水灯系统,满足一些基本控制功能。

本设计选用80C51芯片作为核心硬件,组合74LS138译码芯片,4×4键盘,74LS273锁存芯片以及其他必要元器件实现对8个发光二极管和2个数码管显示屏的功能控制。

控制过程中用到了51单片机的定时/计数器和中断技术。

本次设计旨在于在理论学习单片机的基础上,通过实际系统的搭建,提高对所学知识的实际应用能力。

设计中,我们主要做了方案设计,电路搭建,程序编写,控制仿真,报告撰写等一系列工作。

方案设计说明设计要求:(1)利用按键控制流水灯的显示。

(2)利用3×3或者4×4键盘,控制数码管的显示。

(3)利用到定时/计数器。

(4)利用到中断技术。

设计功能:(1)按键0—7键为普通亮灭控制键,对应8个发光二极管,每个按键按一下,对应的灯亮,再按一次,对应的灯熄灭。

(2)按键8,12,13,14号键为功能控制键。

1)8键:按一下,8个灯逐个点亮,熄灭,循环左移三次。

2)12键:按一下,灯全部点亮,闪烁20次,返回原来状态。

3)13键:按一下,从左至右,每次点亮一个灯并保持,至灯全部点亮,再逐个熄灭。

4)14键:左右两侧灯逐对向中间点亮,熄灭,当灯对相遇后,向相反方向进行,循环两次返回。

(3)数码管显示为两位,一号为按键显示(显示被按下的键号),二号为功能号显示(显示执行的功能,从0—4分别对应1—7号键,8号键,12号键,13号键,14号键的功能)功能实现方案:51单片机的P0口(P0.0—P0.7)为低位地址总线,兼做数据总线,连接74LS273锁存器,输出的数据通过其锁存。

单片机P1口(P1.0—P1.7)用作通用I/O口,与键盘连接,其中,高四位(P1.4—P1.7)接为列控制线,低四位(P1.0—P1.3)接行控制线。

单片机P2口(P2.0—P2.5)为高位地址线,接外部74LS138译码芯片。

流水灯的按键方向控制

流水灯的按键方向控制

流⽔灯的按键⽅向控制module liushuideng(clk,rst_n,led_0,sw1_n,sw2_n,sw3_n);input clk; //时钟信号,50MHZinput rst_n; //复位信号,低电平有效input sw1_n,sw2_n,sw3_n; //三个独⽴按键,低表⽰按下output[3:0] led_0; //流⽔灯,0--灭,1--不灭//--------------------------------------------------------reg led_dir; //0--right,1--leftreg led_on; //0--off,1--onreg[23:0] cnt;always @(posedge clk or negedge rst_n) //计数if(!rst_n)cnt <=24'd0;elsecnt <= cnt+1'b1;reg[3:0] led_move;always @(posedge clk or negedge rst_n) //流⽔灯if(!rst_n)led_move <= 4'b1;else if(cnt == 24'hffffff && led_on)beginif(led_dir)led_move <= {led_move[2:0],led_move[3]}; //leftelseled_move <= {led_move[0],led_move[3:1]}; //rightend//---------------------------------------------------------reg [2:0] key_rst;always @(posedge clk or negedge rst_n)if (!rst_n)key_rst <= 3'b111;elsekey_rst <= {sw3_n,sw2_n,sw1_n}; //每个时钟周期都会把按键值赋给key_rstreg[2:0] key_rst_r; //每个时钟周期的上升沿将low_sw信号锁存到low_sw_ralways @ (posedge clk or negedge rst_n)if(!rst_n)key_rst_r <= 3'b111;elsekey_rst_r <= key_rst; //第⼆级寄存器,将之前锁存的按键值给key_rst_rwire[2:0] key_an = key_rst_r & ( ~key_rst );//当寄存器key_rst由1变为0时,led_an的值变为⾼,维持⼀个时钟周期//------------------------------------------------------reg[23:0] cnt_cn;//计数寄存器always @ (posedge clk or negedge rst_n)if (!rst_n)cnt_cn <= 24'd0; //异步复位else if(key_an)cnt_cn <=24'd0;elsecnt_cn <= cnt_cn + 1'b1;reg[2:0] low_sw;always @ (posedge clk or negedge rst_n)if (!rst_n)low_sw <= 3'b111;else if(cnt_cn == 24'hffffff) //满20ms,将按键值锁存到寄存器low_sw中low_sw <= {sw3_n,sw2_n,sw1_n}; //每个20ms执⾏⼀次//------------------------------------------------------reg[2:0] low_sw_r;always @ ( posedge clk or negedge rst_n )if (!rst_n)low_sw_r <= 3'b111;elselow_sw_r <= low_sw; //每个时钟周期采⼀次/*low_sw 111 111 111 110 110 110~low_sw 000 000 000 001 001 001low_sw_r 111 111 111 110 110 110led_ctr1 000 000 000 001 000 000*///当寄存器low_sw由1变为0时,led_ctrl的值变为⾼,维持⼀个时钟周期wire[2:0] led_ctrl = low_sw_r[2:0] & ( ~low_sw[2:0]);always @ (posedge clk or negedge rst_n)if(!rst_n)beginled_on <= 1'b0;led_dir <= 1'b0;endelsebegin //某个按键值变化时,LED将做亮灭、左移或右移操作if ( led_ctrl[0] ) led_on <= ~led_on;if ( led_ctrl[1] ) led_dir <= 1'b1;if ( led_ctrl[2] ) led_dir <= 1'b0;endassign led_0 = led_dir; //LEDendmodule。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断响应时间是指 从中断请求标志位置 位到CPU开始执行中断 服务程序的第一条 指令所持续的时间。
二、中断方式实现流水灯
1.硬件电路 中 断 方 式 实 现 流 水 灯 的 电 路 图
2.程序设计
具体程序如下:
具体程序如下:
具体程序方式实现流水灯
一、单片机的中断系统
1.MCS-51系列单片机的中断系统
1)中断的概念
中断是通过硬件来改变CPU的运行方向。计算机在执 行程序的过程中,当出现CPU以外的某种情况,由服务对象 向CPU发出中断请求信号,要求CPU暂时中断当前程序的执 行而转去执行相应的处理程序,待处理程序执行完毕后,再 继续执行原来被中断的程序。这种程序在执行过程中由 于外界的原因而被打断的情况称为“中断”。
3.中断处理
1)中断系统的功能
(2)
(1) • 实现优先级排队
(3)
• 实现中断响回应和中断返
• 实现中断嵌套
2)中断处理过程
中断处理流程图
3)中断请求的撤除
(1)定时器中断请求的撤除。 (2)串行口中Ey断e-C请at求ch的ing撤V除isu。al (3)外部中断请求的撤除。
4)中断响应时间
按键实物图
按键内部结构图
按键去抖动的硬件电路
二、按键设计
对于按键的使用一般有 两种方式,即独立式和矩阵 式(也称为行列式)。
独立式: 按键设
计简单,但 占用单片 机的硬件 资源较多。
矩阵式: 按键设
计复杂,但 却能从很 大程度上 节省单片 机的硬件 资源。
独立式按键结构电路图
任务实施
一 实现按键控制小灯 二 实现多路按键状态指示 三 实现按键控制流水灯
2)中断的特点
(1) 分时操作
(2) 实时处

(3) 故障处

3)MCS-51系列单片机中断系统 的结构
MCS-51 系列单片机中断系统的结构框图
2.中断源和中断标志
1)中断源
(2) 实时时钟及外界
计数信号
(1)一般的 输入/输出设

(3) 故障源
(4) 为调试程序而设
置的中断源
2)中断标志
任务导入
大多数的单片机系统中都含有按键,就像PC用键盘作为输入设备一 样,按键可以理解为单片机系统的输入设备。那么按键的具体结构是怎么 样的?怎样在具体的单片机系统中使用它?怎样使之与单片机中断系统 建立起联系?本任务将把这些疑问逐一解开。
知识学习
一 什么是按键 二 按键设计
一、什么是按键
作为一种数据输入设备, 按键在单片机的应用系统中 使用比较广泛。按键有很多 种外形,同时也有很多种内 部结构。
一、实现按键控制小灯
1.硬件电路
一个 LED 控制电路
2.程序设计 按键控制小灯的程序框图
具体程序如下:
二、实现多路按键状态指示
1.硬件电路
4个LED控制电路
2.程序设计 多路按键状态显示的程序框图
具体程序如下:
三、实现按键控制流水灯
1.硬件电路
4个LED控制电路
2.程序设计 按键控制流水灯的程序框图
相关文档
最新文档