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灯应调节到的亮度值,实现自动亮度调节功能。
定时开关模块:用户可设定台灯的开启和关闭时间,系统根据设定时间自动控制台灯的开关状态。
手势识别控制模块:通过集成在手台灯上的手势识别传感器,识别用户的手势动作,实现开关灯、调节亮度等控制功能。
人机交互界面:设计简洁明了的用户界面,展示当前台灯状态、环境光线强度等信息,并提供用户设置接口。
摘要目前市场上的LED台灯,作为LED的绿色护眼光源产品而进行开发和研究,还是作为我国的照明推广家用型产品。
随着时代的变迁,社会的发展,节能和环保这一主题已经是当今社会必要发展的目标了、健康与人们的日常生活变得密不可分,科技的进步,也使家电更加智能化和人性化。
台灯作为家电中基础的,也是必不可少的,所以,提出PWM调光灯设计。
本设计主要是将STC89C51RC单片机作为控制核心,这是将多种功能集于一体的智能LED台灯。
该台灯具有手动、自动两种调节亮度的方式;主要的产品功能有呼吸模式、红外遥控操作等等。
硬件的设计部分为单片机控制模块、按键控制模块、照明显示模块、光敏感应模块、LED灯指示报警模块、远程遥控模块等组成。
单片机主要控制芯片型号选用STC89C51RC,LED指示报警模块选择三种颜色不同的LED指示灯来显示三种不同的工作模式,通过按键控制模块进行调整和控制工作模式和LED亮度程度,照明模块选用草帽型12白光LED,光敏感应模块采用可以对光敏信号的采集芯片ADC0832,并利用PWM调光技术对LED进行光度的自动调节。
可以通过红外遥控远距离无线遥控,通过单片机C语言编程进行软件设计,将所需的设计要求全部可以进行功能的控制。
关键词LED台灯光度PWM调光自动调节AbstractLED lamp as LED green lighting products, as the country to promote the use of green lighting products. With the development of the times,energy saving and environmental protection, health and the peopledaily life are inseparable, the progress of science and technology,also makes home appliances more intelligent and humanized. The lamp as home appliances based, so is also essential,, put forward PWM dimming the lights design.The design is based on STC89C51RC SCM as control core and multi functions in one of the intelligent LED lamp. The table lamp realizes the brightness with manual, automatic two types of regulation;respiratory mode function, but also has the function of infrared remote control. The design of the hardware part consists of MCU controlmodule, keyboard module, lighting module, photosensitive module,LED module, remote control module instruction. The MCU main control chip STC89C51RC, LED indicating module with three kinds ofdifferent colors of small LED to indicate different working modes,brightness through the key module to adjust the working mode and the LED lighting module, using 12 straw hat type white LED,photosensitive module uses ADC0832 chip implementation of a signal acquisition, automatic regulation and luminosity of LED using PWM dimming technology. Through the infrared remote control, wireless remote control, software design of the MCU C language programming,integrated control functions are realized by.Key wordLED lamp dimming automatically adjust luminosity of PWM目录第1章绪论 (5)1.1 课题研究背景 (5)1.2 系统方案的提出 (5)1.2.1 LED优势 (5)1.2.2 方案简述 (6)第2章系统方案的选择 (7)2.1 控制芯片的选择方案 (7)2.1.1 STC89C51RC (7)2.1.2 A VR单片机 (7)2.1.3 FPGA (8)2.1.4 主控制芯片的确定 (8)2.2 照明模块的选择 (8)2.2.1 三极管驱动 (8)2.2.2 PWM芯片控制 (9)2.2.3 照明方案的确定 (10)第3章硬件设计 (10)3.1 单片机STC89C51芯片简介 (10)3.2 LED驱动电路 (14)3.3 按键控制电路 (17)3.4 LED指示电路 (18)3.5自动控制电路 (18)3.5.1 光敏电路 (18)3.5.2 ADC0832模数转换 (19)第4章软件设计 (20)4.1 Keil C51 (20)4.2 Protel99SE (21)4.3 程序流程图 (22)第5章调试 (24)5.1 硬件调试 (24)5.2 软件调试 (24)第6章总结 (25)参考文献 (26)附录一:protel99se 原理图 (27)附录二:源程序 (28)前言LED照明又称固态照明,作为继白炽灯、荧光灯后的第三代照明技术,具有节能、环保、安全可靠的特点,固态显示光源是照明领域里面比较看好的发展产业,在未来十年中将传统的照明工具替换,是代表照明技术的未来。
51单片机汇编语言点亮led灯在51单片机汇编语言中,点亮LED灯通常需要进行以下几个步骤:1. 配置相应的引脚为输出模式,将LED灯接在该引脚上。
2. 设置引脚的电平为高电平,以点亮LED灯。
下面是一个简单的51单片机汇编语言程序示例,用于点亮P1口的LED灯:```ORG 0x0000 ; 程序起始地址MOV P1, #0xFF ; 将P1口的引脚设置为输出模式LOOP:SETB P1.0 ; 将P1.0引脚设置为高电平,点亮LED灯SJMP LOOP ; 循环执行END ; 程序结束```在上面的示例中,首先使用`MOV`指令将P1口的引脚设置为0xFF,即将P1所有IO口设置为输出模式。
然后使用`SETB`指令将P1.0引脚设置为高电平,以点亮LED灯。
最后通过一个无限循环`SJMP`,使程序一直执行这个过程,保持LED灯一直点亮。
请注意,上述示例只是个简单的示例,实际操作中可能需要根据具体的硬件连接和芯片型号进行相应的修改。
51单片机汇编语言点亮led灯要在51单片机上使用汇编语言点亮LED灯,你需要了解硬件的连接方式以及相应的控制寄存器。
以下是一个简单的示例来点亮一个LED灯:首先,假设你将LED连接到单片机的P1.0引脚。
然后,你可以使用汇编语言编写如下的代码:ORG 0 ; 程序起始地址MOV P1, #0 ; 将P1口的初始值设为0LOOP: ; 循环开始SETB P1.0 ; 设置P1.0引脚为高电平,点亮LEDACALL DELAY ; 调用延时程序CLR P1.0 ; 清除P1.0引脚,将LED熄灭ACALL DELAY ; 调用延时程序SJMP LOOP ; 无条件跳转到LOOP标签,进行循环DELAY: ; 延时程序MOV R2, #10 ; 设置延时计数器AGAIN:MOV R1, #250 ; 设置内部循环计数器AGAIN1:DJNZ R1, AGAIN1 ; 内部循环计数器递减直到为0DJNZ R2, AGAIN ; 延时计数器递减直到为0RET ; 返回END ; 程序结束标志这个程序通过不断循环,在P1.0引脚设置高电平和低电平之间的切换来点亮和熄灭LED。
基于51单片机的C语言程序设计实训100例第 01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){{P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsignedchar#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。
一、设计目的根据单片机系统开发与应用课程所学的概念、理论和方法,按照一般的单片机系统的开发过程,以Proteus7.5sp3为平台,Keil C51 V9.00 uVision4为软件开发工具,设计出一个适当难度的单片机系统;进一步掌握51单片机体系结构和单片机系统。
使学生能理论联系实际,加深和巩固所学的理论知识,提高学生的实践能力和单片机系统的综合运用能力。
二、设计内容1、以Proteus7.5sp3为平台,设计出硬件系统;2、以Keil C51 V9.00 uVision4为软件开发工具,编制程序实现如下功能:实现单片机控制P1口的8个LED灯花样走马灯,要求连续实现以下四种效果:(1)单灯左移;(2)单灯右移;(3)单灯逐个点亮接着逐个熄灭(4)两边向中间逐个点亮接着中间向两边逐个熄灭。
(灯亮和灯灭的时间均为1S。
指示灯亮和灭的时间可以通过按键设定,使用两个按键,其中一个按键每按一下,灯亮和灯灭的时、间增加1S,另一个按键每按一下,灯亮和灯灭的时间减少一秒。
);3、所有的源代码均在加上详细的注释;4、画出程序流程图;5、要有软硬件联调的操作及截图。
三、操作步骤1、绘制电路原理图(1)点击“开始”-〉“程序”按钮,运行ISIS 7 Professional,进入Proteus ISIS集成环境,Proteus ISIS 7的界面如图1所示。
图1 Proteus ISIS 7的编辑界面(2)将所需元器件加入到对象选择器窗口单击对象选择器按钮P,在弹出的“Pick Devices”页面中,使用搜索引擎在”Keywords”栏中分别输入”AT89C51“、”LED-BIBY“,在搜索结果”Results”栏中找到该对象,并将其添加至对象选择器窗口。
(3)放置元器件至原理图编辑窗口将“AT89C51”、“LED-BIBY”放置到原理图编辑窗口,如图2所示。
图2 放置元器件至图形编辑窗口(4)添加电源单击绘图工具栏中的Inter-sheet Terminal按钮,在对象选择器窗口选中对象“POWER”将其放置到原理图编辑窗口。
河南理工学院课程设计说明书题目:把戏流水灯设计姓名:院〔系〕:专业班级:学号:指导教师:成绩:时间:2021 年 4 月23 日至2021 年5月29日河南理工学院课程设计任务书题目: 把戏流水灯设计专业、班级学号主要内容、根本要求、主要参考资料等:主要内容:利用单片机控制16个发光二极管模拟的彩灯按照一定的规律点亮、熄灭、闪烁。
根本要求:1.实现发光二极管的多样化显示;2.利用proteus软件完成设计电路和仿真;3.掌握相关芯片和电子元件的使用方法;4.通过此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实践能力和理论联系实际的能力。
主要参考资料:[1]李全利,单片机原理及接口技术[M],高等教育出版社[2]王文杰,单片机应用技术[M],冶金工业出版社[3]朱清慧,PROTEUS教程—电子线路设计、制版与仿真[M],清华大学出版社[4]单片机实验指导书,天煌教仪[5]彭伟,单片机C语言程序设计实训100例[M],电子工业出版社完成期限:2021.4.23-2021.5.29指导教师签名:课程负责人签名:年月日目录绪论 01 课程设计的目的和要求 (1)1.1 设计目的 (1)1.2 设计要求 (1)2 总体设计 (1)2.1 硬件总体设计 (1)2.1.1 设计思想 (1)2.1.2 原件清单 (1)2.1.3 模块分析 (1)2.2软件总体设计.................................................................................................... 错误!未定义书签。
3 硬件设计 (2)3.1 AT89C51单片机的硬件结构 (2)3.1.1主要特性 (3)3.1.2主要引脚功能 (3)3.1.3外部总线结构 (5)3.1.4振荡器特性 (5)3.1.5芯片擦除 (5)3.2硬件电路设计 (6)3.2.1震荡电路 (6)3.2.2LED电路显示 (7)3.2.3复位电路 (8)4软件设计 (8)4.1主程序设计 (8)4.2子程序设计 (9)4.3流水灯控制码程序设计 (9)4.4程序流程图 (9)5使用proteus软件调试仿真说明 (10)5.1 Proteus的介绍 (10)5.2 Proteus的特点 (10)5.3 Proteus的使用方法 (10)5.4电路原理图的设计方法 (11)5.5仿真过程 (12)6测试数据 (12)7附录 (13)7.1把戏流水灯程序 (13)7.2把戏流水灯总线路图 (13)结束语 (15)参考文献 (15)绪论随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯不断变化闪烁。
51单片机控制P2口8位LED灯左移C语
言程序
此程序控制P2.0~P2.7口8个LED(P2.0~P2.7)灯逐个依次点这,又从(P2.7~P2.0)这样的顺序一直到全部被点亮。
#include ;//头文件
void delay(unsigned int x)//延时函数
{
while(x--);
}
void main(void)
{
unsigned char i;//定义一个无符号字型局部变量i 取值范围0~255
delay(50000);
P2=0xfe;
for(i=0;i<8;i++)//加入for循环,表明for循环大括号中程序循环执行8次
{
delay(50000);//调用延时函数,更改延时的x变量的值可以更改延时长短,用于改变闪烁频率
P2<<=1;
}
}
知识要点:
1、<<符号。
这个是左移符号,P2<<=1;等效于
P2=P2<<1;
例如:temp=15;
temp<<=1;
15二进制为00001111,左移1位后,右端自动补0,变
成00011110,此时temp=30;数值左移一位相当于乘以2,反之右移一位相当于除以2.。
51单片机150个例程.zip简介:1-IO输出-点亮1个LED灯方法1"2-IO输出-点亮1个LED灯方法2"3-IO输出-点亮多个LED灯方法1"4-IO输出-点亮多个LED灯方法2"5-闪烁1个LED"6-不同频率闪烁1个LED灯"7-不同频率闪烁多个LED灯"8-8位LED左移"9-8位LED右移"10-LED循环左移"11-LED循环右移"12-查表显示LED灯"13-双灯左移右移闪烁"14-花样灯"15-PWM调光"16-共阳数码管静态显示"17-1个共阳数码管显示变化数字"18-单个数码管模拟水流"19-按键控制单个数码管显示"20-单个数码管指示逻辑电平"21-8位数码管显示其中之一"22-8位数码管静态显示其中之二"23-8位数码管动态扫描显示"24-8位数码管动态扫描原理演示"25-数码管显示动态数据"26-9累加"27-99累加"28-999累加"29-9999累加"30-9累减"31-99累减"32-999累减"33-9999累减"34-显示小数点"35-数码管消隐"36-数码管递加递减带消隐" 37-数码管左移"38-数码管右移"38-数码管右移1"39-数码管右移2"40-数码管循环左移"41-数码管循环右移"41-数码管循环右移1"42-数码管循环右移2"43-数码管闪烁"44-数码管局部闪烁"45-定时器0"46-定时器1"47-定时器2"48-产生1mS方波"49-产生200mS方波"50-产生多路不同频率方波"51-1个独立按键控制LED"52-1个独立按键控制LED状态转换"53-2按键加减操作"53-2按键加减操作数码管显示"54-多位数按键加减(闪烁)"54-多位数按键加减(闪烁)数码管显示" 55-多位数按键加减(不闪烁)"55-多位数按键加减(不闪烁)数码管显示" 56-定时器扫描数码管(不闪烁)"57-按键长按短按效果"58-抢答器"59-独立按键依次输入数据"60-按键从右至左输入"61-8位端口检测8独立按键"62-矩阵键盘行列扫描"63-矩阵键盘反转扫描"64-矩阵键盘中断扫描"65-矩阵键盘密码锁"66-矩阵键盘简易计算器"67-外部中断0电平触发"68-外部中断1电平触发"69-外部中断0下降沿触发"70-外部中断1下降沿触发"71-T0外部计数输入"72-T1外部计数输入"73-看门狗溢出测试"74-按键喂狗"75-喇叭发声原理"76-警车声音"77-救护车声音"78-喇叭滴答声"79-报警发声"80-消防车警报"81-音乐播放"82-步进电机转动原理"83-步进电机正反转"84-步进电机按键控制"85-步进电机转速数码管显示"86-双步进电机综合控制"86-步进电机调速原理"87-双步进电机综合控制"87-步进电机综合控制"87-步进电机调速原理"88-直流电机按键控制"89-直流电机调速控制"90-继电器控制原理"91-双继电器模拟洗衣机电机控制" 92-1602液晶静态显示"93-1602液晶动态显示"94-1602液晶滚动显示"95-1602液晶移动显示"96-1602液晶按键输入显示"97-2402存储1个数据"98-24c02存储多个数据"99-24c02存储花样流水灯"100-24c02记忆开机次数"101-24c02存储上次使用中状态"102-DS1302 时钟原理"103-DS1302可调时钟"104-DS1302时钟串口自动更新时间"105-1602液晶显示DS1302时钟"106-字库ST7920 12864液晶基础显示" 107-按键 12864显示"108-PCF8591 1路AD数码管显示"109-PCF8591 4路AD数码管显示"110-PCF8591 DA输出模拟"111-PCF8591 输出锯齿波"112-PCF8591 1602液晶显示"113-串口通讯"114-串口通讯中断应用"115-RS485基本通讯原理"116-红外接收原理"117-红外解码数码管显示"118-红外解码1602液晶显示"119-红外发射原理"120-红外收发测试"121-双红外发射避障原理测试"122-1个18B20 温度传感器数码管显示" 123-1个18b20温度传感器1602液晶显示" 124-多个18b20温度传感器1602液晶显示" 125-超温报警测试"126-温度可调上下限1602"126-温度可调上下限1602显示"127-PS2键盘输入1602液晶显示"128-双色点阵1种颜色显示测试"129-双色点阵2种颜色显示测试" 130-双色点阵显示特定图形" 131-双色点阵交替图形显示" 132-双色点阵双色交替动态显示" 133-热敏电阻测试数码管显示" 134-光敏电阻测试数码管显示" 135-自动调光测试"136-串转并数字芯片测试"137-非门数字芯片测试"138-电子琴"139-实用99分钟倒计时器" 140-外部频率测试"141-定时做普通时钟可调"142-1602液晶显示的密码锁" 143-实用密码锁"144-1602液晶显示的计算器" 145-秒表"146-串口测温电脑显示"147-交通灯测试"148-点阵模拟电梯上行下行" 149-点阵流动广告模拟"150-综合测试程序"。
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口按键初始化