当前位置:文档之家› 单片机独立按键控制led左右移动

单片机独立按键控制led左右移动

单片机独立按键控制led左右移动
单片机独立按键控制led左右移动

#include

#include

#define uchar unsigned char

sbit k1=P0^0;

sbit k2=P0^1;

uchar KeyV;

uchar KeyScan(void);

void KeyPro(uchar); void delay(uchar);

void main()

{

uchar KeyS;

P2=0xfe;

KeyV=0x03;

while(1)

{

KeyS=KeyScan();

if(KeyS!=KeyV)

{

delay(10);

KeyS=KeyScan();

if(KeyS!=KeyV)

KeyV=KeyS;

KeyPro(KeyV);

}

}

}

void KeyPro(uchar Keyv) {

if(Keyv&0x01)

{ while(!k1);

delay(5);

while(!k1);

P2=_crol_(P2,1);}

if(Keyv&0x02)

{ while(!k2);

delay(5);

while(!k2);

P2=_cror_(P2,1);}

KeyV=0x03;

}

uchar KeyScan(void) {

uchar Keys;

if(k1==0)

Keys=0x01;

if(k2==0)

Keys=0x02;

return Keys;

}

void delay(uchar x) {

uchar y;

for(x;x>0;x--)

for(y=110;y>0;y--); }

独立按键控制LED灯

项目五独立按键控制LED灯 1.掌握独立按键消抖原理 2.掌握独立按键接口电路设计 1.设计独立按键控制LED的硬件电路 2.编写程序分别实现按下按键1和按键2,LED灯闪烁方式不同 3.下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试 键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。本项目要求两个按键分别实现LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。 本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈现不同的电平。独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者低电平,读者可以根据自己的需求自行设计。单片机应用中的独立按键多是机械弹性开关,在按键按下和弹开时,由于按键的机械特性,有抖动产生。消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms~10ms延时后,再次读取I/O端口电平,以确认按键是否按下或弹开。

1.独立按键与矩阵按键 键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。非编码键盘按连接方式可分为独立按键和矩阵按键。 独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单,适合所需按键较少的场合。矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。 图独立按键接口电路与矩阵按键接口电路上图四个按键(常开触点开关)S1,S2,S3,S4分别与单片机的四个I/O端口连接。当按键没有按下时,四个I/O端口的电压为高电平;当按键按下

用单片机控制的LED流水灯设计(电路、程序全部给出)

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATM EL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz 工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 图1 流水灯硬件原理图 从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要

基于单片机的声光控制灯

基于单片机的声光控制模拟路灯 (程序部分) 前言:单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。本次我们采用at89c51单片机设计一种基于单片机控制的声光控制模拟路灯。该灯有声控,光控,声光同时控制楼道灯三种模式,经过调查,现在绝大多数小区的楼道灯都是纯电路形式实现声光控制的,这较之智能控制缺乏功能多样性,稳定性,而未来肯定是智能化的天下,所以我们用单片机模拟这一个多功能灯的系统。 关键字:单片机,at89c51,智能社区,楼道灯 目录: 一、设计目的 (2) 二、总体设计 (2) 方案选择: (2) 三、硬件设计 (3) 原理说明: (3) 四、软件设计 (3) 主要程序清单: (3) 程序框图: (5) 五、实验结果 (6) 六、总结 (6)

通过此次设计,主要是为了巩固我们的单片机相关知识及对单片机的相关应用,培养电子系统设计与实践的能力,学会设计使用简易的声、光传感器,并能用这些传感器设计一个声光控制的路灯(楼道灯)。 完成功能: 1)、声控灯模式。当传感器接收到声音信号时,单片机控制灯亮,并在5秒后灯自动熄灭。 2)、光控等模式。当光电传感器接收到为暗光时,灯自动点亮,接收到为亮光时,等自动熄灭。 3)、楼道灯模式。声光控制结合,即模拟当天暗并且楼道里有人走过的时候灯自动点亮5秒后熄灭。 二、总体设计 此次设计的声光控制灯包括三个基本模块,即声音处理模块、光处理模块、单片机小系统。总体设计框图如下: 图1、总体设计框图 方案选择: 1)、单片机部分。由于此次设计对单片机的要求较低,所以我们选择最为常用的at89c51单片机作控制部分。 2)、声控部分 一:选择专用的声音传感器模块来完成,能得到正确的波形、电压、频率等参数,且设计电路简单省事,但成本较高。 二:用驻极体话筒通过相应的信号处理电路对声音信号进行处理,成本较低,但电路设计麻烦。 综上所述:我们选择方案二,因为此次设计对声音信号的波形等参数要求较小,只要单片机接收到并能判断为高电平即可。 3)、光控部分 一:用光敏二极管作光电元件,光敏二极管对光转换为相应的电流。 二:用光敏电阻作光电元件,光敏电阻对光转换为相应的电阻。 综上所述:我们选用光敏电阻作光控部分的核心元件,因为光敏二极管转换成的是电流,而我们需要判断的是电压信号,将电流转换为电压信号的电路较复杂。

基于单片机控制LED灯亮度调节 邓宇锋

基于单片机控制LED灯智能亮度调节 系部:机电工程系 学生姓名:邓宇锋 专业班级:电气 11C3 班 学号: 6 指导教师:茅阳 2014年3月10日

声明 本人所呈交的基于单片机控制LED灯亮度调节,是我在指导教师的指导和查阅相关著作下独立进行分析研究所取得的成果。除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 2014年3月10日

摘要 本文介绍LED灯智能亮度调节驱动电路设计,智能照明控制系统在确保灯具能够正常工作的条件下,给灯具输出一个最佳的照明功率,既可减少由于过压所造成的照明眩光,使灯光所发出的光线更加柔和,照明分布更加均匀,又可大幅度节省电能,智能照明控制系统节电率可达20%-40%。智能照明控制系统它可在照明及混合电路中使用,适应性强,能在各种恶劣的电网环境和复杂的负载情况下连续稳定地工作,同时还将有效地延长灯具寿命和减少维护成本。 【关键词】:智能控制;LED;智能光补

目录 引言 (1) 一、智能的概述 (2) (一)智能的定义 (2) (二)智能的分类 (2) 二、LED发光二极管的认识 (2) (一)LED的构造 (2) (二) LED的发光原理 (3) (三)LED的优势 (3) 三、LED亮度控制系统 (3) (一)脉冲宽度调制 (3) (二)调制LED的驱动电流 (3) (三)线性调光法 (3) 四、单片机及程序设计 (3) (一)概述 (4) (二)单片机STC89C51芯片简介 (4) (三)程序 (7) 此套控制分主程序与子程序,截取主程序代码在附件中。 (7) 五、控制系统电路设计 (7) (一)LED驱动电路 (7) (二)光电传感器的选择 (8) (三)电气原理图 (9) 六、实物调试 (9) 总结 (1) 参考文献 (2) 谢辞 (3) 附件 (4)

独立按键控制LED灯

项目五独立按键控制LED灯 1. 掌握独立按键消抖原理 2. 掌握独立按键接口电路设计 3. 掌握独立按键控制LED灯的程序编写 於Q项目任务 1. 设计独立按键控制LED的硬件电路 2. 编写程序分别实现按下按键1和按键2,LED灯闪烁方式不同 3. 下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试 键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。本项目要求两个按键分别实现LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。 卜项目分析 本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。 独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈 现不同的电平。独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者 低电平,读者可以根据自己的需求自行设计。单片机应用中的独立按键多是机械弹性开关,在按键按下和弹开时,由于按键的机械特性,有抖动产生。消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms?10ms延时后,再次读取I/O端口 电平,以确认按键是否按下或弹开。

1. 独立按键与矩阵按键 键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。非编码键盘按连接方式可分为独立按键和矩阵按键。 独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O 口利用率不高,但程序编制简单,适合所需按键较少的场合。矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O 口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。 图独立按键接口电路与矩阵按键接口电路 上图四个按键(常开触点开关)S1,S2, S3, S4分别与单片机的四个I/O 端口连接。当按键没有按下时,四个I/O端口的电压为高电平;当按键按下时,电

51单片机控制LED灯程序设计

51单片机:LED灯亮灯灭程序设计 1.功能说明:控制单片机P1端口输出,使P1.0位所接的LED点亮,其他7只灯熄灭。 程序: 01: MOV A , #11111110B ; 存入欲显示灯的位置数据 02: MOV P1,A ; 点亮第一只灯 03: JMP $ ; 保持当前的输出状态 04: END ; 程序结束 2.功能说明:单片机P1端口接8只LED,点亮第1、3、4、6、7、8只灯。 程序:

01:START: MOV A , #00010010B ; 存入欲显示灯的位置数据 02:MOV P1,A ; 点亮灯 03:JMP START ; 重新设定显示值 04:END ; 程序结束 3.功能说明:单片机P1端口接8只LED,每次点亮一只,向左移动点亮,重复循环。 程序: 01:START: MOV R0, #8 ;设左移8次 02:MOV A, #11111110B ;存入开始点亮灯位置

03:LOOP: MOV P1, A ;传送到P1并输出 04:RL A ;左移一位 05:DJNZ R0, LOOP ;判断移动次数 06:JMP START ;重新设定显示值 07:END ;程序结束 4.功能说明:单片机P1端口接8只LED,每次点亮一只,向右移动点亮,重复循环。 程序: 01:START: MOV R0, #8 ;设右移8次

02:MOV A, #01111111B ;存入开始点亮灯位置03: LOOP: MOV P1, A ;传送到P1并输出 04: ACALL DELAY ;调延时子程序05: RR A ;右移一位 06: DJNZ R0, LOOP ;判断移动次数07: JMP START ;重新设定显示值08: DELAY: MOV R5,#50 ; 09:DLY1: MOV R6,#100 ; 10: DLY2: MOV R7,#100 ;

第05课,标记的用法,用一个按键控制1个LED灯的亮灭

第5课,标记的用法,用一个按键控制1个LED灯的亮灭,按键去抖 这一课,我们学习怎么用一个按键K1控制1个LED灯的亮和灭两种状态。按一次K1灯亮,再按一次K1灯灭。再按一次又亮,再按一次又灭。 我们学习一下用一个bit变量来做一个标记,然后在按键的控制下,这个标记会变化,再根据这个标记的值,LED也输出不同的状态。 因为按键按下时可能会有抖动的情况,每次按下时,可能会发生了人难以觉察到的多次抖动,相当于一下子按下了很多次。这会导致程序无法识别出您真正的按键意图。 但是抖动一般都是发生在刚按下键和松开键的时候,所以,我们只要避开这一段时间,等键稳定按下或者松开时,再去读它的值,一般就可以正确读取了。 所以,当读到第一次按键的值时,要延时等待一会,再处理。在松开后,也延时一会,免得检测到松开的抖动以为又有按键。(注,更复杂的应用,需要在按下延时之后重新验证按键,为了简化和方便理解,这个例程里没有这样做。) 另外,因为程序是循环运行的,当一次按键处理后,又会再循环回来继续检测,如果您的按键这时还没有松开,又会被读到一次新的按键,并做处理。所以我们还要做一个特殊的处理,识别到一个按键并处理完成之后,还要等待这个按键松开后,再继续循环运行。 看程序:

请根据例程里的注释理解程序。 请编译,进入仿真,全速运行,看结果。 全速后,由于light变量初始化时默认为0,所以灯是亮的。按下K1,松开后,灯灭了;再按一次K1,松开后,灯灭了。 这个例子里,我们只用一个按键就控制了灯的亮灭,这种方法可以节省了硬件资源,也就是节省了硬件成本。在实际项目设计中,有成本优势,产品就更具竞争力。所以我们应该多学习类似的可以节省资源的方法。 作业: 改为4个按键,分别控制4个LED的亮和灭。相当应用到多个房间的单键开关灯共用一个cpu处理。

单片机C语言LED灯点亮程序完全版

单片机C语言L E D灯点亮 程序完全版 Prepared on 24 November 2020

1例子1第二个灯亮 #include<> voidmain() { P1=0xfd; } #include<> SbitD1=P1^0; Voidmain() { D1=0 } 注意:稍微改程序时需重新hex化 例子2第一个灯亮 #include<>include<>//52单片机头文件 sbitled1=P1^0;//单片机管脚位声明 voidmain() //主函数 { unsignedinti;//定义一个int型变量 while(1) { i=50000;//变量赋初值为50000 led1=0; //点亮灯 while(i--);//延时 i=50000; led1=1;//熄灭灯 while(i--); } } 3例子1357灯同时亮

#include<>//52单片机头文件 sbitled1=P1^0;//单片机管脚位声明 sbitled3=P1^2;//单片机管脚位声明 sbitled5=P1^4;//单片机管脚位声明 sbitled7=P1^6;//单片机管脚位声明 voidmain() //主函数 { led1=0; //将单片机口清零 led3=0; //将单片机口清零 led5=0; //将单片机口清零 led7=0; //将单片机口清零 while(1);//程序停止在这里,在后面会讲到为什么这样写。} 例子21357同时亮 #include<>//52单片机头文件 voidmain() //主函数 { P1=0xaa; while(1);//程序停止在这里,在后面会讲到为什么这样写。} 例子3流水灯一个一个接着亮不循环 #include<>//52单片机头文件 voidmain() //主函数 { unsignedinti;//定义一个int型变量

用单片机控制LED亮灭

用单片机控制LED亮灭 1.实验任务如图所示,监视开关K1(接在P3.0端口上),用发光二极管 L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打 开,L1熄灭。2.电路原理图3.系统板上硬件连线(1).把“单片机系统”区 域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;(2).把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中 的K1端口上;4.程序设计内容(1).开关状态的检测过程单片机对开关状态 的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只 有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断 开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用 JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。(2).输出控制如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发 光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电 平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 ?5.程序框图 ? ? ?6.汇编源程序ORG 00HSTART: JB P3.0,LIG CLR P1.0 SJMP STARTLIG: SETB P1.0 SJMP START END7.C语言源程序#includesbit K1=P3;sbit L1=P1;void main(void){ while(1) { if(K1==0) { L1=0; //灯 亮} else { L1=1; //灯灭} }}

单片机中断控制LED灯(精)

/* TCNT0定时中断,TCNT1定时输出,LED灯闪烁并逐渐变亮 */ #include #include int main(void { DDRD |= 0xff;//LED灯端口,按位或运算 TCNT0 = 55;//计数器0初值 TIMSK |= (1< 使能 T/C0 溢出中断 sei(;//开全局中断 TCCR0 |= 0B00000010; //64分频 TCCR1A |= 0B10100000;/*OC1A、OC1B端口设为输出,比较匹配时清零,TOP时置位,OC1A__PD5,OC1B__PD4*/ TCCR1A |= 0B00000000;//相位与频率修正PWM模式 TCCR1B |= 0B00010000; TCCR1B |= 0B00000010;//8分频 ICR1H = 0XFF;//TOP值 ICR1L = 0XFF; OCR1AH = 0X00;//输出比较寄存器A OCR1AL = 0X7f; OCR1BH = 0X00;//输出比较寄存器B OCR1BL = 0X7f; TCNT1H = 0X00;//计数器1初值

while(1; } /*中断服务程序,LED灯逐渐变亮*/ volatile unsigned int cnt = 0; SIGNAL(SIG_OVERFLOW0 { TCNT0 = 55; cnt ++; if(cnt == 10000//延时约1秒=1/(16000000/8*200*10000 { OCR1AH = 0X00;//输出比较寄存器A OCR1AL = 0XFF; OCR1BH = 0X00;//输出比较寄存器B OCR1BL = 0XFF; } if(cnt == 20000//延时约1秒 { OCR1AH = 0X08; OCR1AL = 0XFF; OCR1BH = 0X08; OCR1BL = 0XFF; } if(cnt == 30000//延时约1秒 {

用单片机控制的LED流水灯

用单片机控制的LED流水灯 设计报告 专业:电子信息工程(自动化方向) 班级:09级 姓名:

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文用A T89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。A T89C51单片机是美国A TMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz 工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。 其具体硬件组成如图1所示。 图1 流水灯硬件原理图

从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED 灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 3.软件编程 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。 3.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 ;调用延时子程序

msp430按键控制LED最基本程序

按键篇 经过一短时间的学习,下面,亲自动手编写一下程序吧。 程序的目的是:按下按键,控制LED的亮和灭。短按键,则小灯亮1秒,然后灭; 长按键,小灯常亮。 首先,完成键盘的扫描程序。 第一点:如果是扫描,就要用到定时器。我想设计定时器每隔IOms扫描一次按键。 定时器,我选用定时器A。它的定时中断函数如下: 函数名称:TimerA_ISR 功能:定时器A 的中断服务函数 参数:无 返回值:无********************************************/ #pragma vector = TIMERAO_VECTOR __interrupt void TimerA_ISR(void) { GetKey() ; } 上面这个定时中断函数的意思就是:每当定时时间到了以后,就调用GetKey() 函数一次。GetKey() 函数就是扫描键盘按键的函数了。在GetKey() 函数中,会根据按键类型(长按/ 短按)返回不同的数值。根据返回的数值,做小灯亮法的操作。那么,返回的这个值,我们需要保存在一个变量中,在这里定义一个变量ucharFlagLcd ; 来保存返回值。这个变量在全局变量中定义,以保证它的作用域。那么定时函数就变为 #pragma vector = TIMERAO_VECTOR __interrupt void TimerA_ISR(void) { FlagLcd =GetKey() ; } 定时器中断的时间间隔,我在主函数中定义。 这样写: CCTLO = CCIE; // 使能CCR冲断 CCRO = 4O; // 设定周期O.O1S TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK增计数模式这样,定时器这块就算完工了。那么,下面进行按键扫描程序。

单片机控制LED灯闪烁原理

一、电路图 二、原理 对于较长时间的定时,应采用复合定时的方法。这里使T/C0工作在定时器方式1,定时100ms,定时时间到后P1.0反相,即P1.0端输出周期200ms的方波脉冲。另设T/C1共作的计数器方式2,对T1输出的脉冲计数,当计数满5次时,定时1时间到,将P1.7端反相,改变灯的状态! 三、源程序 #include /*头文件的定义*/ sbit P1_0=P1^0; /* 定义p1.0端口*/ sbit P1_7=P1^7; timer0() interrupt 1 using 1 { /* 定时器0的中断服务程序*/ P1_0=!P1_0; /* P1.0取反*/ TH0=(65536-50000)/256; /* 赋高八位初值*/ TL0=(65536-50000)%256; /* 赋低八位初值*/ } timer1() interrupt 3 using 2 { /*定时器1中断服务程序*/ P1_7=!P1_7; /*p1.7取反*/ } main() { /*主函数*/ P1_7=0; /* 置灯初始灭*/ P1_0=1; /* 保证第一次反相便开始计数*/ TMOD=0x61; /* 定时器定时和计数*/ TH0=(65536-50000)/256; /* 赋初值*/ TL0=(65536-50000)%256; /* */ TH1=256-5; TL1=256-5; IP=0x08; /* 设置寄存器优先级*/ EA=1; /* CPU开中断*/ ET0=1; /* 开T/C0中断*/ ET1=1; /* 开T/C1中断*/ TR0=1; /* 启动T/C0 */ TR1=1; /* 启动T/C1 */ for(;;)/* */ { } } 四、Keil调试程序过程与结果: 1.新建一个项目

单片机实现发光二极管的循环点亮控制讲解

桂林电子科技大学单片机最小应用系统 设 计 报 告 指导老师:吴兆华

学生:钟静茹 学号:09210202 机电工程学院 2010年6月 单片机最小应用系统设计报告 目录 一、设计题目 (3) 二、设计内容与要求 (3) 三、设计目的意义 (3) 四、系统硬件电路图 (4) 五、程序流程图与源程序 (6) 5.1流程图 (6) 5.2源程序 (7) 5.2.1程序设计思想 (7) 5.2.2源程序清单 (7) 六、系统功能分析与说明 (9) 6.1系统主要组成部分 (9) 6.2指示灯显示部分 (10) 6.3 电路板的制作 (10) 6.3.1 PCB图的制作 (11) 6.3.2 电路板的腐蚀、钻孔和元器件的焊接 (13)

七、设计体会 (11) 八、参考文献 (12) 一、设计题目 用8031单片机实现发光二极管的循环点亮控制。采用3个按键分别控制发光二极管的启动、停止及每个灯点亮的时间的更换,定时时间有软件控制。 二、设计内容与要求 用8031单片机控制8个发光二极管循环点亮。要求用按键控制点亮时间(如每个灯点亮0.5秒或者1秒等,各灯点亮时间相同)。按启动键开始循环点亮;按停止键后停止。 三、设计目的意义 1、掌握单片机系统中扩展简单I/O接口的方法。 2、掌握单片机的硬件接口电路、8031单片机的内部结构及其编程方法。 3、掌握单片机的最小系统的设计。 4、掌握电路板的设计与制作。。 5、了解程序编写与调试的方法和技巧。 6、综合掌握所学的单片机指令系统和硬件接口电路知识,进行简单的最小系统开

发。 四、系统硬件电路图 系统硬件图(图1)包括单片机最小系统(复位电路、晶振电路和相关的控制信号)、外电路接通显示部分、及电源显示部分。 设计硬件电路图时,其基本思想:先通过万能板搭建试验平台,将编好的程序下载到51中,等可以达到预期要求后,最后在PROTEL中设计原理图与PCB,做出电路板。

利用单片机PWM控制LED

/*******************************************************************/ // PWM 控制LED 灯渐亮渐灭程序 // 晶振为11.0592M // 利用定时器控制产生占空比可变的PWM 波 // 按K1,PWM值增加,则占空比减小,LED 灯渐暗。 // 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。 /*********************************************************/ #include < reg51.h > //#include < intrins.h > #define uchar unsigned char uchar PWM sbit K1 =P1^0 ; sbit BEEP =P1^5 ; void Beep(); void delayms(uchar ms); void delay(uchar t); /*********************************************************/ void main() { P1=0xff; TMOD=0x21 ; TH0=0xfc ; //1ms延时常数 TL0=0x66 ; //频率调节 EA=1; ET0=1; ET1=1; TR0=1 ; while(1) { do{ if(PWM!=255) { PWM++ ;delayms(10); } else Beep() ; } while(K1==0); }

/*********************************************************/ // 定时器0中断服务程序. /*********************************************************/ void timer0() interrupt 1 { TR1=0 ; TH0=0xfc ; TL0=0x66 ; TH1=PWM ; TR1=1 ; P3=0x00 ; //启动输出 } /*********************************************************/ // 定时器1中断服务程序 /*********************************************************/ void timer1() interrupt 3 { TR1=0 ; P3=0xff ; //结束输出 } /*********************************************************/ //蜂鸣器子程序 /*********************************************************/ void Beep() { uchar i ; for (i=0 ;i<100 ;i++) { delay(100) ; BEEP=!BEEP ; //Beep取反 } BEEP=1 ; //关闭蜂鸣器 delayms(100); } /*********************************************************/ // 延时子程序 /*********************************************************/ void delay(uchar t)

89C51单片机练习示例:LED灯点亮与熄灭操作

89C51单片机练习示例:LED灯点亮与熄灭操作 基本要求: 1、八个LED灯循环点亮,间隔1秒,最后全亮; 2、八个LED灯依次熄灭,间隔1秒,最后全灭; 3、八个LED灯同时点亮,保持1秒; 4、八个LED灯同时熄灭,保持0.5秒; 再将第三、四步重复4遍,最后整个程序重复N遍。 ORG 0000H MAIN:MOV R5,#03H; ACALL PRO1;依次点亮,最后全亮 ACALL PRO2;先灯亮,依次灭灯,后全灭 ACALL PRO3;八个灯同时亮,保持1秒;八个灯同时灭,保持1秒 ACALL PRO4;重复第三步操作,使灯点亮、熄灭4次 LJMP MAIN; PRO1: MOV A,#01H;从0号灯开始点亮 MOV R4,#08;亮灯个数记录 DIANLIANG:MOV R0,A; MOV P0,A;点灯子程序 RL A; ORL A,R0; ACALL DELAY;调用0.26s的延时子程序 ACALL DELAY;调用0.26s的延时子程序 DJNZ R4,DIANLIANG;全亮 ACALL DELAY;调用0.26s的延时子程序 ACALL DELAY;调用0.26s的延时子程序 ACALL DELAY;调用0.26s的延时子程序 ACALL DELAY;调用0.26s的延时子程序 RET PRO2: MOV A,#0FFH;先亮灯 CLR CY;清零CY值 MOV R4,#09H;灭灯个数记录 XIMIE:MOV R0,A; MOV P0,A;

RLC A; ANL A,R0; ACALL DELAY;调用0.26s的延时子程序ACALL DELAY;调用0.26s的延时子程序DJNZ R4,XIMIE;全灭 ACALL DELAY;调用0.26s的延时子程序ACALL DELAY;调用0.26s的延时子程序ACALL DELAY;调用0.26s的延时子程序ACALL DELAY;调用0.26s的延时子程序RET PRO3:MOV A,#0FFH; 先点亮,后熄灭MOV P0,A; ACALL DELAY;调用0.26s的延时子程序ACALL DELAY;调用0.26s的延时子程序ACALL DELAY;调用0.26s的延时子程序ACALL DELAY; 调用0.26s的延时子程序ANL A,#00H; MOV P0,A; ACALL DELAY;调用0.26s的延时子程序ACALL DELAY; 调用0.26s的延时子程序ACALL DELAY; 调用0.26s的延时子程序ACALL DELAY; 调用0.26s的延时子程序RET PRO4:ACALL PRO3;重复点亮,熄灭四次DJNZ R5,PRO4; RET DELAY:MOV R2,#0FFH;延时子程序 DEL1:MOV R3,#0FFH; DEL2: NOP; NOP; DJNZ R3,DEL2; DJNZ R2,DEL1; RET END

独立按键控制LED灯

【下载本文档,可以自由复制内容或自由编辑修改内容,更多精彩文章,期待你的好评和关注,我将一如既往为您服务】 项目五独立按键控制LED灯 1.掌握独立按键消抖原理 2.掌握独立按键接口电路设计 1.设计独立按键控制LED的硬件电路 2.编写程序分别实现按下按键1和按键2,LED灯闪烁方式不同 3.下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试 键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。本项目要求两个按键分别实现LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。 本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈现不同的电平。独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者低电平,读者可以根据自己的需求自行设计。单片机应用中的独立按键多是机械弹性开关,

在按键按下和弹开时,由于按键的机械特性,有抖动产生。消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms~10ms延时后,再次读取I/O端口电平,以确认按键是否按下或弹开。 1.独立按键与矩阵按键 键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。非编码键盘按连接方式可分为独立按键和矩阵按键。 独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单,适合所需按键较少的场合。矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。

51单片机按键控制花样灯

51单片机按键控制花样灯 时间:2012-09-10 13:50:11 来源:51hei 作者: /**************************************************** * 本程序实现用按键控制花样灯。 * * 当K1按下时,灯从0xfe向左跑一遍; * * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;* * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。* * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。* * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。* ******************************************************/ ************************************************* 连接方法:P0接独立按键JP5;P2接LED灯接口JP1 * ***********************************************************/ #include //头文件,函数声明 #include //定义按键所在位 sbit K1=P0^0; sbit K2=P0^1; sbit K3=P0^2; 页脚内容1

sbit K4=P0^3; sbit K5=P0^4; unsigned char led; unsigned char j; void delayms(unsigned char ms) // 1ms标准延时 { while(ms--) { for(j=0;j<110;j++); //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确} } void main() { //P2=led; unsigned int i; while(1) { /********************************************* 页脚内容2

按键控制1位LED数码管显示0-9

单片机课程设计 姓名:陈素云 班级:09电力方向2班学号:200920305340

设计题目: 按键控制1位LED数码管显示0-9 设计要求: 通过单片的I/O口与LED数码管所构成的单片机系统的软件编程,使学生掌握简单的单片机系统的设计,同时初步学全用汇编语言和C语言两种方式编程的基本方法。学生必须采用单片机AT89C51为LED显示屏的控制为核心,分别置“1”或“0”,让某些段的LED 发光,其它的熄灭,然后达到显示不同的字符和图符号的目的. 学生根据前期设计的步骤按照设计报告内容的具体要求,选择前期设计的一个典型题目,写出详尽的课程设计报告,重点内容包括方案论证、完整的电路图、软件系统流程图及开发程序、组装调试内容和总结等。

目录 第1节引言 (3) 1.1 LED数码显示器概述 (3) 1.2 设计任务 (5) 1.3设计目的 (6) 第2节AT89C51单片机简介 (6) 2.1 AT89C51单片机 (6) 2.2 单片机管脚图 (7) 2.3管脚说明 (7) 2.4振荡器特性 (9) 第3节设计主程序与硬件电路设计 (9) 3.1设计的主程序 (10) 3.2系统程序所需硬件 (10) 3.2.1所需的硬件 (10) 3.2.2所需硬件的结构图 (11) 3.3 硬件电路总连接图 (12) 第4节程序运行过程 (12) 4.1分析步骤 (12) 4.2 程序执行过程 (13) 第5节程序运行结果 (13) 总结 参考文献

第1节引言 还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。LED 数码显示器是单片机嵌入式系统中经常使用的显示器件。一个“8”字型的显示模块用“a、b、c、d、e、f、g、h” 8 个发光二极管组合而成。每个发光二极管称为一字段。LED 数码显示器有共阳极和共阴极两种结构形式。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 1.1 LED数码显示器概述 八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED 数码管显示器。如下图所示。` 共阴和共阳结构的LED数码管显示器各笔划段名和安排位置是相同的。

相关主题
文本预览
相关文档 最新文档