单片机 8个按键分别控制8个LED灯 C语言代码

单片机 8个按键分别控制8个LED灯 C语言代码

用单片机控制的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。因此,要

独立按键控制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灯亮度调节 邓宇锋

基于单片机控制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)

单片机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型变量

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 ;重新设定显示值

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

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

学生:钟静茹 学号: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,做出电路板。

独立按键控制LED灯

项目五独立按键控制LED灯 1. 掌握独立按键消抖原理 2. 掌握独立按键接口电路设计 3. 掌握独立按键控制 LED灯的程序编写 项目任务 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端口的电压为高电平;当按键按下

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

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

单片机课程设计 8个LED灯来回点亮

目录 第一章绪论--------------------------------------------------------3 第二章设计目的及要求-----------------------------------------5 1.1 设计目的--------------------------------------------------------5 1.2 设计要求--------------------------------------------------------5 第三章设计电路原理----------- -------------------------------7 3.1 控制部分的设计与选择-------------------------------------7 3.2 LED显示方案-----------------------------------------------8 第四章硬件系统------------------------------------------------9 4.1 原件清单-------------------------------------------------------9 4.2 单片机AT89C51---------------------------------------------9 4.3 单片机时钟电路--------------------------------------------10

4.4 单片机复位电路---------------------------------------------11 4.5 工作电路------------------------------------------------------12 第五章软件设计------------------------------------------------13 5.1 程序流程图--------------------------------------------------13 5.2 编辑源程序--------------------------------------------------14 第六章系统调试与仿真结果--------------------------------16 6.1系统调试-----------------------------------------------------16 6.2仿真结果----------------------------------------------------16 总结------------------------------------------------------------- 19 参考文献--------------------------------------------------------20 第一章绪论

按键控制数码管和流水灯设计报告实验报告要点

摘要 单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。在硬件电路的基础上加上软件程序的控制来实现本设计。其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。 关键字:单片机、流水灯、数码管、控制系统 SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the Keywords: SCM, water lights, digital tubes, control system 键盘控制流水灯和数码管实验报告 目录 一设计的目的 (2) 二任务描述及方案设计 (3) 1. 任务描述 (3)

独立按键控制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口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。

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

`
东北石油大学
实习总结报告
实习类型
生产实习
实习单位
东北石油大学实习基地
实习起止时间 2018 年 7 月 7 日至 2018 年 7 月 16 日
指导教师
东明、鉴
所在院(系) 电子科学学院
班 级 电子科学与技术 15-2
学生
学号
1509012402
Word 文档
2018 年 7 月 16 日

`
目录
第 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
Word 文档

实验2单片机控制LED灯点亮

实验2 单片机控制LED灯点亮 一、实验目的 1、熟悉实验板的电路结构。 2、完成简单的功能,并掌握程序调试的方法。 二、实验准备 1.实验电路连接 实验板LED电路图 2.实验中常见问题: ●区别中英文字符,区别字母O和数字0 ●注意关键字的拼写 include、void、main ●SFR寄存器需要大写 三、实验内容

一、基础实验 (一)、点亮1个LED 分别用汇编和C语言编程,对比2种语言的相同和不同 1.用汇编语言编写 ORG 0000H LJMP MAIN ORG 0030H MAIN: CLR CLR ;可随意指定一个输出口作为驱动,点亮LED灯 END 2.用C语言编写 #include <> //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit P1_0=P1^0;// 用sbit 关键字定义LED到端口, //LED是自己任意定义且容易记忆的符号 /*---------------主函数-------------------*/ void main (void) { P1_0=0; //将口赋值0,对外输出低电平 } (二)、1个LED闪烁 分别用汇编和C语言编程,对比2种语言的相同和不同 问题:若想改变闪烁的频率,应该修改程序的哪部分? 1.用汇编语言编写 ORG 0000H LJMP MAIN ORG 0030H MAIN: CLR ;点亮LED灯 CLR LCALL DELAY SETB ;熄灭LED灯

SETB LCALL DELAY LJMP MAIN DELAY: M OV R6,#125 ;延时50ms子程序 LOOP2: MOV R7,#200 LOOP1: DJNZ R7,LOOP1 DJNZ R6,LOOP2 RET END 2.用C语言编写 #include "" sbit P1_0=P1^0; //延时50ms子程序 void delay50ms() { unsigned char i,j; for (i=125;i>0;i--) { for(j=200;j>0;j--) {} } } //主程序段 void main() { while(1) //重复循环执行,实现闪烁 { P1_0=0; delay50ms(); P1_0=1; delay50ms(); } } 思考: 对比2中语言编写的延时子程序的相同和不同

01[1]了解单片机的原理控制一个LED灯的亮和灭.

第一课,了解单片机及单片机的控制原理和DX516的用法,控制一个LED灯的亮和灭 本章学习内容: 单片机基本原理,如何使用DX516仿真器,如何编程点亮和灭掉一个LED灯,如何进入KEILC51uV 调试环境,如何使用单步,断点,全速,停止的调试方法 聂小猛 2006年6月 单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需要学习单片机。可以说,掌握了单片机开发,就多了一个饭碗。 51单片机已经有30多年的历史了,在中国,高校的单片机课程大多数都是51,而51经过这么多年的发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。而国内书店的单片机专架上,也大多数都是51系列。可以预见,51单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的数十年内是不可能会消失的。 作为一个初学者,如何单片机入门?需要那些知识和设备呢?知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以快速入门,自学过这2门课程的高中生也够条件。 就算你没有学过单片机课程,只掌握了C语言的皮毛,通过本系列的教程,您也会逐渐的进入单片机的大门。当然在学习的过程中,您还是必须多去研读单片机书籍,了解他们的基本结构及工作方式。 下面以51为例来了解一下单片机是什么东西,控制原理又是什么? 在数字电路中,电压信号只有两种情况,高电平和低电平,用数字来记录就是1和0。单片机内部的CPU,寄存器,总线等等结构都是通过1和0两种信号来运作的,数据也是以1或者0来保存的。单片机的输入输出管脚,也就是IO口,也是只输出或识别1和0两种信号,也就是高电平和低电平。当单片机输出一个或一组电平信号到IO口后,外部的设备就可以读到这些信号,并进行相应操作,这就是单片机对外部的控制。当外部一个或一组电平信号送到单片机的IO口时,单片机也可以读到这些信号,并进行分析操作,这就是单片机对外部设备信号的读取。当然实际的操作中,这些信号可能十分复杂,必须严格地按照规定的时间顺序(时序)输入输出。每种设备也都规定了自己的时序,只要都严格遵守,就可以控制任何设备,做出只要你想象得出的任何事情。 您可能会再问,我如何让单片机去控制和分析外部设备呢?答案是程序,您可以编写相关的程序,并且把他们烧写到单片机内部的程序空间,单片机在上电时,就会一步一步按照您写的程序去执行指令,做您想做的事情。 在51标准芯片中,有32个输入输出IO,分为4组,每组8个,分别为P0口,P1口,P2口,P3口。P1口的8条脚就用P1.0至P1.7表示,其余类似。51就是用这32个口来完成所有外部操作的。对于51的内部结构,如果您已经了解,那是最好;如果不懂,也可以先放下,在完成了本教程开始的几个章节之后,您就会大有兴趣,自己去寻找资料阅读了。当然,如果您希望成为一个优秀的单片机开发程序员,还是必须熟悉单片机的内部结构及工作原理,切不可偷懒! 在这一章,您将用程序去控制一个LED发光管的亮和灭。你应该知道,LED发光管在通过一定电流时亮,不通电就灭。为了不让LED通过太大的电流把它烧坏,我们还要串上限流电阻。51的IO是弱上拉的方式,在输出高电平时,只能输出几十微安的电流到地,而在输出低电平时,VCC电源可以输入几十毫安的电流到IO。一般LED需要10毫安左右电流点亮,我们就将LED接在电源VCC和IO口之间,中间串上电阻,当IO输出低电平时,灯就亮了,反之,灯就灭了。我们在这个程序里要控制的是P1.0。请参考一下我们将要使用的试验板的电路图,这个试验板是在购买dx516仿真器是赠送的。

4-4矩阵键盘控制16个LED灯

一、任务说明 本次的任务是利用51单片机设计一个4*4矩阵键盘输入系统,用16个发光二级管对应16个不同的按键。每按下一个按键对应的发光二极管就亮。 矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为N*N个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。 最常见的键盘布局如图1所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。 图1 键盘布局 利用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.3各管脚作输入线,以单片机的P1.4-P1.7各管脚作输出线;利用P2、P3口控制灯1-灯16,。用Proteus绘制其电路原理图(附录一)。此任务用到了AT89C51芯片,还用到了晶体振荡器、按钮开关、发光二级管以及一些电阻。 这次任务中采用C语言编写程序,在编译过程中设置成自动产生HEX文件,将此文件导入AT89C51中,即可实现相应的功能。 二、原理图绘制说明 电路原理图的设计与绘制是整个电路设计的基础,设计一个电路原理图的工作包括:设置电路图图纸的大小,规划电路图的总体布局,在图纸上放置元器件并对元器件进行调整,进行布线和整体布局,最后保存并打印输出等几个步骤。 安装完Proteus后,运行ISIS 7 Professional,在原理图编辑窗口绘制电路图,在该界面下还有预览窗口和元件列表区,在左侧的工具箱中还有模型选择工具栏,方向工具栏及仿真按钮等工具。其具体的使用步骤如下: 1.运行该软件后,新建一个设计文件,设置图纸大小。选择界面如图2所示。

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

1例子1第二个灯亮 #include void main() { P1=0xfd; } #include Sbit D1=P1^0; Void main() { D1=0 } 注意:稍微改程序时需重新hex化 例子2第一个灯亮 #include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数 { led1=0; //将单片机P1.0口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 例子3第一个灯亮 #include //52单片机头文件 void main() //主函数 { P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 2例子1第三个灯闪烁fir循环 #include sbit D2=P1^2; unsigned int a; void main() { D2=0; for(a=0;a<=10000;a++){}; D2=1; for(a=0;a<=10000;a++){}; } 例子2第三个闪烁while循环 #include sbit D2=P1^2; unsigned int a; void main()

{ a=5000; D2=0; while(a--); a=5000; D2=1; while(a--); } 2.#include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数 { unsigned int i; //定义一个int型变量 while(1) { i=50000; //变量赋初值为50000 led1=0; //点亮灯 while(i--); //延时 i=50000; led1=1; //熄灭灯 while(i--); } } 3例子1 3 5 7灯同时亮 #include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 sbit led3=P1^2; //单片机管脚位声明 sbit led5=P1^4; //单片机管脚位声明 sbit led7=P1^6; //单片机管脚位声明 void main() //主函数 { led1=0; //将单片机P1.0口清零 led3=0; //将单片机P1.2口清零 led5=0; //将单片机P1.4口清零 led7=0; //将单片机P1.6口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 } 例子2 1 3 5 7同时亮 #include //52单片机头文件 void main() //主函数 { P1=0xaa; //将单片机P1口的8个口由高到低分别赋值为10101010

相关文档
最新文档