51单片机按键控制花样灯
- 格式:doc
- 大小:31.00 KB
- 文档页数:14
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 ;11: DJNZ R7,$ ;12: DJNZ R6,DLY2 ;13: DJNZ R5,DLY1 ;14: RET ;子程序返回15: END ;程序结束5.功能说明:单片机P1端口接8只LED,每次点亮一只,先把右边的第一只点亮,0.5秒后点亮右数的第二只灯,第一只熄灭,再过0.5秒点亮右数的第三只灯,第二只熄灭,…亮灯按此顺序由右向左移动。
单⽚机课程设计花样流⽔灯2前⾔随着⼈们⽣活环境的不断改善和美化,在许多场合可以看到彩⾊霓虹灯不断变化闪烁。
LED灯由于其丰富的灯光⾊彩,低廉的造价以及控制简单等特点⽽得到了⼴泛的应⽤,⽤彩灯来装饰街道和城市建筑物已经成为⼀种时尚。
但⽬前市场上各式样的LED灯控制器⼤多数⽤全硬件电路实现,电路结构复杂、功能单⼀,这样⼀旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯⽚过多、电路复杂、功率损耗⼤等缺点。
此外从功能效果上看,亮灯模式少⽽且样式单调,缺乏⽤户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进⾏改进。
流⽔灯是⼀串按⼀定的规律像流⽔⼀样连续闪亮。
流⽔灯控制是可编程控制器的⼀个应⽤,其控制思想在⼯业控制技术领域也同样适⽤。
流⽔灯控制可⽤多种⽅法实现,但对现代可编程控制器⽽⾔,利⽤移位寄存器实现最为便利。
通常⽤左移寄存器实现灯的单⽅向移动;⽤双向移位寄存器实现灯的双向移动。
本案例利⽤价格低廉的AT89C51系列单⽚机控制基⾊LED灯泡从⽽实现丰富的变化。
1、课程设计的⽬的和要求1.1 设计⽬的近年来随着科技的发展,单⽚机的应⽤正在不断⾛向深⼊,同时带动传统控制检测⽇新⽉异更新,在实时检测和⾃动控制的单⽚机应⽤系统中,单⽚机往往是作为⼀个核⼼部件来使⽤,单⽚机⽅⾯知识是不够的,还应根据具体硬件结构,以及针对具体应⽤对象点的软件结合,加以完善。
流⽔灯,可以更简单、⽅便的使⽤。
通过本课程设计使学⽣进⼀步巩固单⽚机原理及应⽤的基本概念、基本理论,分析问题的基本⽅法,增强系统地运⽤已学的理论知识解决实际问题的能⼒和查阅资料的能⼒。
培养⼀定的⾃学能⼒和独⽴分析问题、解决问题的能⼒,能通过独⽴思考、查阅⼯具书、参考⽂献,寻找解决⽅案。
1.2 设计要求设计流⽔灯的基本要求:设计⼀个流⽔灯,应⽤AT89C51试验系统,电路开启后红、绿两种颜⾊的灯在时钟信号作⽤下按⼀定规律转换状态。
电子工艺学考试作品报告作品名称:花样流水灯姓名:专业班级:电信1105学号:中南大学物理与电子学院目录第一章系统整体概述…………………………………………………………第二章硬件设计………………………………………………………………第三章软件设计………………………………………………………………第四章调试与分析……………………………………………………………第五章制作感受………………………………………………………………【摘要】当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。
制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。
本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于单片机AT89C52和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C52为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。
本设计用AT89C52单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。
该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
关键字:AT89C52 单片机流水灯数码管AT89C52单片机概述AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程。
HEFEI UNIVERSITYFPGA综述报告系别电子信息与电气工程系任课教师汪济洲班级姓名成绩日期数字音乐盒设计摘要:本设计是一个基于STC89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计4种。
播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
关键字:音乐盒 STC89C51单片机 KEIL PROTEUS 音调目录1概述 (3)1.1设计方案 (3)1.2研究内容 (3)1.3音乐盒的功能结构图 (3)2硬件设计 (4)2.1总体设计框图 (4)2.2各部分硬件设计及其原理 (4)2.2.1 STC89C51简介 (4)2.2.2 LED显示电路设计与原理 (5)2.2.3 时钟振荡电路 (5)2.3硬件电路图及功能 (6)3软件设计 (7)3.1音调、节拍以及编码的确定方法 (7)4.1.1 音调的确定 (7)4.1.2 节拍的确定 (8)4.1.3 编码 (9)4.2软件程序设计 (10)4.2.1 程序流程图及相应代码块 (10)4.2.2 程序源代码(见附录A) (14)5调试 (14)5.1检查硬件连接 (14)5.2检查软件系统 (14)5.3测试结果 (14)5.3.1.总体运行图 (14)5.3.2.花样灯4种花样图 (15)参考文献 (16)附录A 程序源代码及注释 (16)1概述本设计是以STC89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。
51单片机是一种常用的微控制器,它在嵌入式系统中具有广泛的应用。
而ws2812b是一种RGB LED灯珠,能够通过单一的数据线进行控制。
本文将介绍如何使用51单片机对ws2812b进行编程控制的实例,帮助读者了解如何利用51单片机实现颜色灯光的控制。
一、硬件准备在进行ws2812b编程之前,首先需要准备相应的硬件设备。
主要包括51单片机、ws2812b LED灯珠以及一些基本的电子元件。
在连接电路时,需要注意信号线的连接以及电源的合理设计,确保ws2812b能够正常工作。
二、代码编写在进行51单片机ws2812b编程之前,需要编写相应的代码来实现颜色灯光的控制。
需要定义ws2812b LED灯珠的控制方式,包括颜色值的设置、亮度调节以及灯光显示的效果等。
需要将51单片机的GPIO口与ws2812b LED灯珠进行连接,并编写相应的控制程序,以实现对LED灯光的控制。
三、代码调试编写完51单片机ws2812b编程代码后,需要进行相应的调试工作。
首先需要确认51单片机与ws2812b LED灯珠的连接是否正确,以及代码中是否存在逻辑错误。
需要通过单步调试和逐行调试的方式,逐步检查代码的执行情况,确保程序能够正确地控制ws2812b LED灯珠。
四、实际应用经过调试后,可以将编写好的51单片机ws2812b编程代码应用到实际项目中。
通过51单片机的控制,可以实现对ws2812b LED灯光的各种效果,包括颜色的渐变、闪烁、呼吸灯效果等。
还可以根据实际需求,将ws2812b LED灯光的控制功能应用到各种不同的场景中,满足用户的个性化需求。
五、总结通过本文的介绍,相信读者对51单片机ws2812b编程实例有了一定的了解。
通过合理的硬件连接和代码编写,结合调试工作,可以实现对ws2812b LED灯光的灵活控制。
希望本文能够帮助读者更好地掌握51单片机ws2812b编程的技术要点,为实际应用奠定基础。
在实际应用中,ws2812b LED灯珠可以被广泛用于各种场景,比如家庭装饰、智能灯光系统、舞台灯光效果等。
桂林电子科技大学微机单片机接口设计报告指导老师:吴兆华学生:冯贤明学号: 092011133桂林电子科技大学机电工程学院一设计题目 (1)二设计目的要求和意义 (1)2.1设计目的要求 (1)2.2 系统设计意义 (1)三系统硬件电路图设计 (2)3.1 系统结构框图 (2)3.2 系统硬件电路图 (2)3.3 电路设计PCB图 (3)四程序流程图与源代码 (4)4.1 程序流程图 (4)4.2 程序源代码 (4)五系统功能分析与说明 (5)5.1 微处理器 (5)5.2 复位电路的设计 (9)5.3 二极管输出电路 (9)5.4 晶振电路 (10)5.5 制作PCB图 (10)六设计体会 (12)七参考文献 (13)一设计题目按桂林市微笑堂十字街的交通规则用AT89S51单片机控制红、绿、黄交通灯亮及闪烁时间与顺序。
二设计目的要求和意义2.1设计目的要求1通过单片机最小系统的设计,了解常用单片机应用系统开发手段和过程,进一步熟悉和掌握单片机的结构和工作原理,并能初步掌握一般单片机控制系统的编程和应用,从而进一步加深对单片机理论知识的理解。
2 掌握单片机内部功能模块。
如定时器/计数器、中断系统、存储器、I/O口等;3 掌握单片机的接口及相关外围芯片的特性、使用与控制方法;4 掌握单片机的编程方法,调试方法;5 掌握单片机应用系统的构建和使用,为以后设计和实现单片机应用系统打下良好的基础。
6.学会使用并熟练掌握电路绘制软件Protel99SE(或DXP);7.掌握电路图绘制及PCB图布线技巧。
2.2 系统设计意义1、在系统掌握单片机相应基础知识的前提下,熟悉单片机最小应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机最小应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
**大学物理学院单片机花样流水灯设计实验课题: 花样流水灯设计班级: 物理 ***姓名: ***学号: ……………【摘要】当今时代的智能控制电子技术,给人们的生活带来了方便与舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。
制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统与单片机智能控制系统等。
本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51与发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备与必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。
本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。
该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
关键字:AT89C51 单片机流水灯数码管【概述】1、单片机及其发展概况单片机又称为单片微计算机,其特点就是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。
单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。
2、 Protues仿真软件简介Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。
利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。
【实验设计目标】设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED 灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。
51单片机按键消抖程序原理一、引言按键消抖是嵌入式系统编程中常见的问题之一,尤其是在使用51单片机时。
51单片机是一款常用的微控制器,广泛应用于各种嵌入式系统中。
按键作为常见的输入设备,在51单片机应用中经常被使用。
由于按键的机械特性,当按键按下或释放时,会产生机械抖动,给系统带来误操作。
因此,了解并编写按键消抖程序对于保证系统的正常运行至关重要。
二、消抖原理按键消抖,简单来说,就是通过一定的算法,消除按键产生的机械抖动,从而准确识别按键的状态。
其原理主要基于以下两点:1.机械抖动的特点:按键的机械抖动主要表现为按键触点之间的快速开关,产生一系列微小的电信号。
这些信号通常包含真实的按键输入信号和噪声信号。
2.消抖算法:通过分析这些信号,识别出真实的按键输入信号,并忽略噪声信号,从而达到消除机械抖动的目的。
常用的消抖算法有阈值比较法、防抖延时法、防抖滤波法等。
三、消抖程序实现下面以51单片机为例,介绍一种简单的阈值比较法消抖程序实现:```cvoidkey_debounce(intkey_pin){//定义按键引脚intdebounce_time=50;//消抖时间,单位毫秒intthreshold=5;//阈值,可以根据实际情况调整intkey_state=0;//按键状态,初始化为0(未按下)intlast_key_state=0;//上一次的按键状态while(1){//读取按键状态key_state=digitalRead(key_pin);last_key_state=key_state;//判断按键是否按下if(key_state==LOW){//按键按下,开始消抖if(millis()-last_key_state>=debounce_time){//经过一定时间,确定按键状态if(key_state==digitalRead(key_pin)){//检测到真实的按键输入信号//这里可以进行相应的操作,例如点亮LED灯等}else{//检测到噪声信号或其他干扰,忽略}}else{//消抖时间不足,忽略当前状态}}else{//按键释放,忽略当前状态}}}```上述程序中,通过设置一个阈值和消抖时间,来判断按键状态是否发生变化。
基于51单片机的智能台灯的设计与实现一、本文概述随着科技的不断发展,智能家居逐渐成为人们生活中不可或缺的一部分。
智能台灯作为智能家居的一个重要组成部分,其功能多样性和使用便捷性受到了广大用户的青睐。
本文旨在探讨基于51单片机的智能台灯的设计与实现。
我们将从需求分析、硬件设计、软件编程和系统测试等方面,全面介绍如何利用51单片机构建一个功能完善的智能台灯。
本文将首先分析智能台灯的市场需求和技术要求,确定台灯应具备的基本功能和性能指标。
在此基础上,我们将设计并搭建智能台灯的硬件平台,包括光源选择、驱动电路、传感器模块和51单片机等关键部件的选型和连接。
随后,我们将通过软件编程实现台灯的智能化控制,包括定时开关、光线自动调节、手势识别等功能。
我们将对系统进行测试和优化,确保台灯的稳定性和可靠性。
通过本文的介绍,读者可以了解到基于51单片机的智能台灯的设计与实现过程,掌握相关的硬件和软件技术,为开发类似智能家居产品提供参考和借鉴。
二、系统总体设计本设计的目标是基于51单片机开发一款智能台灯,实现自动亮度调节、定时开关、手势识别控制等基本功能,并通过用户界面提供友好的交互体验。
智能台灯还应具备节能环保、操作简便、稳定可靠等特点。
系统总体架构包括硬件设计和软件设计两部分。
硬件设计主要涵盖单片机选型、传感器选择、电源电路、LED驱动电路、人机交互界面等。
软件设计则包括系统初始化、传感器数据采集与处理、LED亮度控制算法、定时任务管理、手势识别算法等。
自动亮度调节模块:利用光敏传感器检测环境光线强度,通过算法计算得出LED灯应调节到的亮度值,实现自动亮度调节功能。
定时开关模块:用户可设定台灯的开启和关闭时间,系统根据设定时间自动控制台灯的开关状态。
手势识别控制模块:通过集成在手台灯上的手势识别传感器,识别用户的手势动作,实现开关灯、调节亮度等控制功能。
人机交互界面:设计简洁明了的用户界面,展示当前台灯状态、环境光线强度等信息,并提供用户设置接口。
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;
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)
{
/*********************************************
* 当K1按下时,灯从0xfe向左跑一遍; *
*********************************************/
if(K1==0)
delayms(10); //消除键盘抖动
if(K1==0)
{
led=0xfe;
for(i=0;i<7;i++) //i可以去8的倍数,表示本电路执行多少次
{
//led=0x7f; // P端口的初定义要在循环外面,不然会使效果错乱
P2=led; //由于这里已经初设一个灯,所以for里面要加上这一个
delayms(100); //起初这里设置500MS,使按键每按一下灯彩走一个,不能达到
要求。
led=_crol_(led,1);
P2=led;
delayms(100);
}
while(!K1); //这里强调松开就没再次执行程序
P2=led; //说明执行完上面的程序的最后状态
} //P2=led; // 如果把本行放在这里,虽然在开头中没有说明程序烧写
好之后就先显示一个灯,但由于本行在if外面,所有最后还是会显示
/***********************************************************
*当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置 *
***********************************************************/
if(K2==0)
delayms(10);
if(K2==0)
{
led=0x7f;
for(i=0;i<7;i++)
{
P2=led;
delayms(100);
led=_cror_(led,1);
P2=led;
delayms(100);
}
while(!K1);
P2=led;
delayms(100);
for(i=0;i<7;i++)
{
led=_crol_(led,1);
P2=led;
delayms(100); //跑回去怎么就那么快呀?
} //此时led=0x7f
}
/*****************************************************
*当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 *
*************************************************/
if(K3==0)
delayms(10); //消除抖动
if(K3==0)
{
led=0xfe;
delayms(200);
for(i=0;i<7;i++)
{
P2=led;
delayms(200);
led=led<<1; // 备注led=_crol_(led,1)等于led<<1||led>>7;
P2=led;
delayms(200);
if(led==0x00)
break; //这里一定要有个break,跳出循环,然后别忘了此时的状态是00,而
不是7f
}
while(!K1);
led=0x7f;
P2=led;
delayms(200 );
for(i=0;i<7;i++)
{
led=led>>1;
P2=led;
delayms(200);
}
}
/****************************************************
*当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。*
****************************************************/
if(K4==0)
delayms(10); //消除抖动
if(K4==0)
{
for(i=0;i<4;i++) //执行四次
{ led=0xf0;
P2=led;
delayms(500);
led=0x0f;
P2=led;
delayms(500);
}
}
/********************************************************
*当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。*
********************************************************/
if(K5==0)
delayms(10);
if(K5==0)
P2=0xff;
}
}
/**** */
时钟+秒表+流水灯的单片机汇编程序
时间:2012-09-10 13:49:42 来源: 作者:
//HJSMSY-V1.0单片机开发板测试程序
//---------------------------------------------
// <<电脑钟>>
//---------------------------------------------
//=======主函数==================================
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T00
// ORG 001BH
// LJMP T11
ORG 0030H
//=======程序初始化=============================
MAIN:
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0F0H
MOV TL1,#0B0H
SETB EA
SETB ET0
// SETB ET1
SETB TR0
// SETB TR1
CLR P3.4
MOV R7,#00H ;秒值
MOV 30H,#00H ;秒个位值
MOV 31H,#00H ;秒十位值
MOV 32H,#00H ;分个位
MOV 33H,#00H ;分十位
MOV 34H,#00H ;时个位
MOV 35H,#00H ;时十位
MOV 44H,#00H ;秒表毫秒十位
MOV 45H,#00H ;秒表秒毫秒百位
MOV 46H,#00H ;秒表秒个位
MOV 47H,#00H ;秒表秒十位
MOV 48H,#00H ;秒表分个位
MOV 49H,#00H ;秒表分十位
MOV P2,#0F0H ;P2口按键初始化