按键控制的流水灯

合集下载

基于单片机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。

单片机控制技术项目训练教程任务三 键控流水灯控器制作-PPT课件

单片机控制技术项目训练教程任务三 键控流水灯控器制作-PPT课件

2
任务分析:
前面一个任务我们已经完成了LED流 水灯的制作,本任务与前一任务相比仅是 增加了按键的控制,即点按一次按键K后 立即执行“流水灯程序”。“点按按键一 次”通常的理解是先按下按键,然后又放 开,所以编程时,首先要判断按键是否真 正的按下,若按下,就等待按键释放。释 放后,这次按键的动作就完成了。
}
程序知识点:
(1)if语句的使用
if(表达式) {语句}
if(表达式) {语句1}
else {语句2}
if(表达式1) {语句1} else if(表达式2 ) {语句2}
...... else {语句n}
(2)带参数的延时程序使用
//无参数延时程序 void delay() {
unsigned int x; for(x=30000;x>0;x--); }
P1口赋值数据 计算表格
次序 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1值 1 0 0 0 1 1 1 1 1 0x1F 2 1 0 0 0 1 1 1 1 0x8F 3 1 1 0 0 0 1 1 1 0xC7 4 1 1 1 0 0 0 1 1 0xE3 5 1 1 1 1 0 0 0 1 0xF1 6 1 1 1 1 1 0 0 0 0xF8 7 0 1 1 1 1 1 0 0 0x7C 8 0 0 1 1 1 1 1 0 0x3E

键控LED流水灯硬件模块接线图(YL-236单片机实训装置)
4
软件编程
主程序流程图:
参考程序:
{ u n sig n ed ch ar i; //定 义 无 符 号 字 符 型 变 量 i P1= 0xff; //开 机 时 8个 LED 全 灭 w h ile(1 )//主 程 序 循 环 { K = 1 ;//把 按 键 管 脚 拉 高 if(K = = 0 )//首 次 判 断 按 键 是 否 按 下 { d elay _m s(1 0 0 0 ); //调 用 带 参 数 的 延 时 子 函 数 消 除 按 键 抖 动 if(K = = 0 )//再 次 判 断 按 键 是 否 按 下 { w h ile(K = = 0 );//等 待 按 键 释 放 w h ile(1 )//流 水 灯 的 循 环 { fo r(i= 0 ;i< 8 ;i+ + )//循 环 8 次 { P 1 = D M [i]; //查 询 在 D M 数 组 中 取 出 对 应 值 d elay _m s(3 0 0 0 0 ); //调 用 带 参 数 的 延 时 子 函 数 } } } } }

键控双流水灯

键控双流水灯
利用单片机外部中断,完成左右移动的流水 彩灯设计,实现用按键对信号灯的控制。 【任务描述】
用单片机的P3.2、P3.3各接一只按键,按下 一个按键时,实现彩灯左移花样,按下另一个按 键时,实现彩灯右移花样。
一 . 电路原理图
二、中断的基本概念
1.中断 当中央处理器CPU正在处理某事件时,与
它并行工作的外围部件或者外部设备由于工作 的需要或者出现故障,请求CPU迅速去处理, CPU暂停当前工作,转去处理所发生的事件, 处理结束之后,再回到被打断的地方继续原来 的工作。这样的过程称为中P K2
;转移到K2,避开右移指令
K1:RR A K2:
;显示代码右移
LCALL DELAY
;调用延时子程
SJMP K0
;返回,继续下一拍
INT0:CLR FX RETI
INT1:SETB FX RETI
;外中断0服务程序,方向标志位清0 ;中断返回
;外中断1服务程序,方向标志位 置1 ;中断返回
序的开始处
三 . 实训内容与步骤
1.电平触发方式键控流水灯程序
(1)参考程序
FX BIT 00H
;位地址00H命名为FX
ORG 0000H
LJMP MAIN
;转移到主程序
ORG 0003H 口
;外中断0服务程序入
LJMP INT0 程序
;转移到外中断0服务
ORG 0013H 口
;外中断1服务程序入
SETB EX0 ;开外中断0
SETB EX1 SETB EA
样。
;开外中断1
;开总中断 ;*******
以下和程序(1)完全一
MOV A,#0FEH;显示代码初值送累加器A

任务三 键控流水灯控制器制作

任务三 键控流水灯控制器制作

任务分析:
前面一个任务我们已经完成了LED流 水灯的制作,本任务与前一任务相比仅是 增加了按键的控制,即点按一次按键K后 立即执行“流水灯程序”。“点按按键一 次”通常的理解是先按下按键,然后又放 开,所以编程时,首先要判断按键是否真 正的按下,若按下,就等待按键释放。释 放后,这次按键的动作就完成了。
P1.2
P1.1
P1.0
3
3
8
7
6
5
4
3
2
1
8
9
5
R
LED0
6
2
0
K
S S 2 1
5
R
LED1
6
3
0
5
R
LED2
6
4
05ຫໍສະໝຸດ RLED36
5
0
5
R
LED4
6
6
0
5
R
LED5
6
7
0
5
R
LED6
6
8
0
5
R
LED7
6
9
0
键控LED流水灯硬件模块接线图(YL-236单片机实训装置)
软件编程
1、主程序流程图 2、参考程序 3、程序知识点
程序知识点:
(1)if语句的使用 (2)带参数的延时函数使用 (3)“==”与“=”的区别 (4)数组查表法
(5)按键识别程序段
(1)if语句的使用
if(表达式) {语句}
if(表达式)
if(表达式1) {语句1} else if(表达式2) {语句2} ...... else {语句n}
{语句1}
else {语句2}

CC2530按键控制流水灯

CC2530按键控制流水灯
按键控 制流水灯实验
1、适用平台 佳杰科技 Q2530SB 硬件平台
2、实验设备
1.RF2530N 或者 RF2530仿真器 1块 1块 1条 1个
2
3、实验目的
让用户学会按键应用是这一常用的人机交互方式。本实验用 D1, D2, D3 灯及按键 S1 为 外设。采用 P10、P11、P14 口为输出口,驱动 D1/D2/D3,P01 口为输入口,接受按键信号 输入(高电平为按键信号) 。
#include <ioCC2530.h> #define uint unsi gned int #define ucha r unsigned cha r //定义控制灯的端口 #define RLED #define GLED #define YLED #define KEY1 //函数声明 voi d Delay(uint); voi d Ini tIO(void); voi d Ini tKey(void); ucha r KeyScan(void); // 延时函数声明 //初始化函数声明 // 初始化按键函数声明 // 按键扫描函数声明 3 P1_0 P1_1 P1_4 P0_1 //定义 LED1 为 P10 口控制 //定义 LED2 为 P11 口控制 // 定义 LED3 为 P14 口控制 // 定义按键为 P01 口控制
4、实验相关寄存器
相关寄存器:P1,P1DIR,P0SEL,P0INP, P0,P0DIR(前面以介绍过的这里不再重复介绍,寄存器 功能说明请参阅 CC2530Datasheet.pdf ) P0SEL(0XF3) P0INP( 0X8F) P0( 0X80) P0DIR(0XFD) P0 [7:0 ]功能设置寄存器,默认设置为普通 I/ O 口 P0[7: 0]作输入口时的电路模式寄存器 P0[7: 0]位寻址 I/ O 寄存器 P0 口输入输出设置寄存器,0:输入,1:输出

按键选择控制流水灯效果设计

按键选择控制流水灯效果设计

按键选择控制流水灯效果设计设有一单片机控制系统: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;}}}。

用按键控制流水灯的例子

用按键控制流水灯的例子
main()
{while(1){P0=0xff;
while(!key1)aa();
while(!key2)bb();
while(!key3)cc();
while(!key4)dd();
}} �
int c[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; //逐盏点亮,逐盏灭掉数组
//************************************************************************************************************
{ int i=0,j=0,k=0,h=0;
loop:P0=0xff;
if(key4==0) //第一次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
while(1){P0=a[j];delay();j++;if(j==8)j=0; //左流水灯
这是我刚写的一个用按键控制流水灯的例子,很适合初学者的
/*硬件电路连接:流水灯接在P0口, 阳极接高电平,
阴极接P0口,4个按键分别接P3.4,P3.5, P3.6,P3.7 ,按下时是低电平 */
#include <regx51.h>
sbit key1=P3^4;
sbit key2=P3^5;
void bb() // 实现要求(2)的子程序(key2按下时实现计数功能,弹开时停止计数;)

按键控制流水灯实训报告

按键控制流水灯实训报告

一、实训目的1. 熟悉51单片机的I/O口编程,掌握按键输入和LED输出控制的基本方法。

2. 学习单片机程序设计的基本思路,提高编程能力。

3. 培养动手实践能力,提高电路焊接和调试水平。

二、实训原理1. 单片机I/O口编程:51单片机的I/O口可以编程设置为输入或输出模式。

在本实训中,我们将I/O口配置为输出模式,用于控制LED灯的亮灭;同时,将I/O口配置为输入模式,用于检测按键状态。

2. 按键输入:当按键未被按下时,单片机通过检测I/O口输入电平,判断按键是否处于高电平状态;当按键被按下时,单片机检测到低电平状态。

3. LED输出:单片机通过编程控制I/O口输出电平,从而控制LED灯的亮灭。

在本实训中,我们通过依次点亮LED灯来实现流水灯效果。

4. 流水灯控制逻辑:根据按键状态,单片机在无限循环中不断检测按键状态,并改变流水灯的方向。

三、实训步骤1. 准备工作:准备51单片机开发板、按键、LED灯、电阻等元器件,以及相关编程软件。

2. 电路连接:按照电路图连接好51单片机、按键、LED灯和电阻等元器件。

3. 编程:使用Keil C51集成开发环境编写程序,实现按键控制流水灯功能。

4. 调试:将编写好的程序烧录到单片机中,进行电路调试。

5. 测试:验证按键控制流水灯功能是否正常。

四、程序设计1. 初始化I/O口:将P1口配置为输出模式,用于控制LED灯;将P3口配置为输入模式,用于检测按键状态。

2. 按键检测:在主循环中,不断检测P3口状态,判断按键是否被按下。

3. 流水灯控制:根据按键状态,控制LED灯依次点亮,实现流水灯效果。

4. 延时函数:为了使流水灯效果更加明显,使用延时函数控制LED灯点亮时间。

5. 按键状态处理:当检测到按键被按下时,改变流水灯方向。

五、实训结果与分析1. 实训结果:通过编程和调试,成功实现了按键控制流水灯功能。

2. 分析:(1)I/O口编程:通过编程将51单片机的I/O口配置为输入或输出模式,是实现流水灯功能的基础。

c51_1按键控制三种流水灯效果

c51_1按键控制三种流水灯效果

c51_1按键控制三种流水灯效果#includesbit KEY=P2^0;//延迟程序void delay(unsigned int i){unsigned int j;while(i--)for(j=600;j>0;j--);}//主程序void main(void){while(1){unsigned int countX,countY,i,j,a,b,x;KEY=1;//初始化为高电平delay(10);countX=0;//定义计数器1、判断长按短按countY=1000;//定义计数器2、判断是否双击if(KEY==0)//判断是否按下按键{delay(10);if(KEY==0)//确认是否按键{while(KEY==0)//当按键松开时退出循环{countX++;delay(1);}}//按键松开时,计数器2开始计数while(KEY&&countY){countY--;delay(1);}delay(10);if(countY==0)//如果是因为计数器2时间到跳出循环,说明在一定时间内按键没有第二次触发{delay(10);if(countX<200)//短按效果(按键时间小于0.2秒){//第一种流水灯效果while(1){KEY=1;a=0x80;for(i=0;i<8;i++)//流水灯循环右移{P0=~a;a>>=1;delay(200);if(KEY==0){return;}}if(KEY==0){return;}b=0x01;for(i=8;i>0;i--)//循环八次{b|=0x01;a=0x80;for(j=0;j{a|=b;P0=~a;a>>=1;if(KEY==0){return;}delay(200);}b<<=1;if(KEY==0){return;}}for(i=5;i>0;i--)//闪烁{P0=0xff; delay(200);P0=0x00; delay(200);if(KEY==0) {return;}}if(KEY==0) {return;}a=0x80;for(i=0;i<8;i++) {P0=a;a>>=1;delay(200);if(KEY==0) {return;}}b=0x01;for(i=8;i>0;i--) {b|=0x01;a=0x80;for(j=0;j<i;j++) {a|=b;P0=a;a>>=1;if(KEY==0) {return;}delay(200);}b<<=1;if(KEY==0) {return;}}for(i=5;i>0;i--) {if(KEY==0) {return;}P0=0x00; delay(200);P0=0xff; delay(200);}}}else //长按效果{//第二种流水灯效果x=100;while(1){KEY=1;a=0x80;for(i=0;i<8;i++) {P0=~a;a>>=1;delay(x);if(KEY==0){return ;}}a=0x01;if(KEY==0){return;}for(i=0;i<8;i++) {P0=~a;a<<=1;</i;j++)if(KEY==0){return;}delay(x);}x+=150; //控制流水灯循环速度if(x>500){x=100;}}}}if(countY!=0)//双击{delay(1000);while(1){delay(10);a=0xff;//a=0x80;一个灯亮P0=~a;if(KEY==0){return;}delay(300); if(KEY==0) { return;}delay(300); a=0x00;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0xaa;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300);a=0x55;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0xf0;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0x0f;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0x3c;P0=~a;if(KEY==0) { return;}delay(300); if(KEY==0) { return;}delay(300); a=0xc3;P0=~a; delay(300); if(KEY==0) { return;}delay(300); if(KEY==0) { return;}}}//while(KEY==0); delay(10);KEY=1;}}}。

单片机课程设计—8个按键控制8个LED自动设定控制流水灯

单片机课程设计—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 单片机为控制核心。

键控流水灯设计

键控流水灯设计

单片机课程设计题目基于单片机的流水灯设计姓名:李坤呈班级:11110201学号:33摘要:单片机是一种集成电路芯片,采用超大规模技术,把具有数据处理能力的微处理器、随机存取数据存储器、只读程序存储器、输入输出电路、可能还包括定时计数器、串口通信口、显示驱动电路,脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一块芯片上,构成一个最小而完善的计算机系统。

这些电路在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。

键控流水灯设计通过编写代码实现8个LED灯3种流水灯显示方式。

在设计中主要采用AT89C51这款芯片作为控制主体,用按钮来切换流水灯的发光方式来显示流水灯的发光模式。

系统通过P0口外接8个发光二极管,P3口接2个按键,一个按键实现一种发光模式,并且两个按键有优先级。

设计中辅以简单的设备和必要的电路,设计了一款流水灯,最终达到预期的目的。

关键词单片机AT89C51 LED 键控流水灯1引言单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。

现在的单片机的控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。

2中断系统概述1.中断概念:中断是指计算机在执行某一程序的过程中, 由于计算机系统内、外的某种原因, 而必须中止原来程序的执行, 转去执行相应的处理程序, 待处理结束之后, 再回来继续执行被中止的原程序的过程。

2.中断作用:采用了中断技术后的计算机, 可以解决CPU与外设之间速度匹配的问题, 使计算机可以及时处理系统中许多随机的参数和信息, 同时, 它也提高了计算机处理故障与应变的能力。

3.中断的处理过程:分为四步,第一是中断请求,第二是中断响应,第三是中断服务,第四是中断返回。

3总体设计实现这个课题我使用AT89C51作为控制主体,使用八个共阳极发光二极管作为LED显示流水灯,外接两个按钮,一个按键显示一种花样。

  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.程序设计 按键控制流水灯的程序框图
相关文档
最新文档