文档库 最新最全的文档下载
当前位置:文档库 › 单片机三个发光二极管的循环点亮

单片机三个发光二极管的循环点亮

单片机三个发光二极管的循环点亮
单片机三个发光二极管的循环点亮

三个发光二极管的循环点亮

10

陈珏本

一,系统设计分析

本系统为最小单片机系统+三个LED

核心处理器采用c51系列单片机AT89C51。整个系统在系统软件的控制下工作。开始时将P1端口全部置1,在单片机内,经识别、延迟等环节实时发出控制LED1、2、3闪烁的控制信号。左侧电路使起完成相应的动作。

二,系统原件

AT89C51、CAP 30pf、CRYSTAL 12MHZ、RES、BUTTON、LED 三,系统原理图设计

四,源程序设计

ORG 0030H

MOV A,#0FFH

MOV P1,A LOOP:CLR

LCALL DELAY

CPL

CLR

LCALL DELAY

CPL

CLR

LCALL DELAY

CPL

LCALL DELAY

AJMP LOOP

DELAY:MOV R7,#200

D1:MOV R6,#248

D2:DJNZ R6,$

DJNZ R7,D1

RET

EXIT:NOP

END

五,keil仿真

创建“三个发光二极管的循环点亮”项目,选择单片机型号

为AT89C51,输入汇编语言程序,保存为“三个发光二极管的循环点亮.asm”。将源程序添加到项目中,编译源程序,创建“三个发光二极管的循环点亮.hex”。

六,prutues仿真

成果图

七,调试结果分析

第一次仿真失败,请教王初韩同学后找出问题,是我使用了另外一个之前做的HEX文件,修改后三展灯循环点亮,实验成功。

八,想对老师说的话

老师您好,是这样的,这次实验的编程语言我是从网上搜的,因为我完全不会编程语言,但是我的确照着网上的步骤一步步的把实验做成功了,也算是花了一番心血,至于其他的缺陷的部分,我会在之后的日子里向同学请教也好一点点的学的,希望老师给个高点的分数

用单片机控制的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灯智能亮度调节 系部:机电工程系 学生姓名:邓宇锋 专业班级:电气 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)

汇编语言发光二极管的点亮

【例8-2】图中外设是简单的发光二极管.此外设的接口是用锁存器来实现的.锁存器在打入脉冲CP上升沿将输入端D的数据锁存在它的输出Q端。编写点亮二极管的程序。 mov al,81h 状态是10000001 mov dx,0000h 外设地址 out dx, al 输出 mx: mov al,01h mov dx,0000h out dx,al mov cx,2DH mov dx,c6c0h mov ah.86h int 15h rol al,1 jmp mx 重点【例8-3】类似于例1中,让接在Q0~Q7上的二极管自上而下轮流点亮3s,编写程序实现。 程序如下: mov al,01h ;使Q0为1,LED0先亮 lop: out 0000h,al ; mov cx,2DH

mov dx,c6c0h mov ah.86h int 15h rol al,1 jmp lop 下面一段程序可判断按钮的状态。当K 闭合时,显示3,当K 断开时显示6。 【例8-4】 Start: mov dx,00F1H ; in al,dx test al,01h jnz kopen mov dx,00F0H mov al,4FH ; (3) out dx,al jmp start kopen: mov dx,00F0H mov al,7DH ;(6) out dx,al jmp start 1111 1 111~ Q 0 Q 1 Q 2 Q 3Q 4Q 5Q 6Q 7 Cp a b c d e f g DP +5V D 0D 774LS2738 510?Ω1≥1≥& 74LS138A G 2B G 2G C B A 1≥K +ΩK 10D 00 Y 1Y D 0 D 7 ~ IOW A 0A 1A 2A 4A 6A 3A 7A 9A 8A 5A 11A 13A 10A 12A 14A 15IOR

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

stm32点亮第一个发光二极管库函数版

#include "stm32f10x.h" u8 dt=0; void RCC_Configuration(void); void GPIO_Configuration(void); int main(void) { RCC_Configuration();//系统时钟初始化 GPIO_Configuration();//端口初始化 while(1) { GPIO_SetBits(GPIOB,GPIO_Pin_8); delay(1000000);//0.5s GPIO_ResetBits(GPIOB,GPIO_Pin_8); delay(1000000);//0.5s GPIO_SetBits(GPIOB,GPIO_Pin_5); delay(1000000);//0.5s GPIO_ResetBits(GPIOB,GPIO_Pin_5); delay(1000000);//0.5s } } void RCC_Configuration(void) { SystemInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOB,&GPIO_InitStructure); } void delay(u32 nCount) { for(;nCount!=0;nCount--); }

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

《让发光二极管亮起来》公开课教案

《让发光二极管亮起来》教学设计 天台小学许彩珍 教学目标: 1、初步认识发光二极管,了解发光二极管的结构特点。 2、认识二极管电路符号,能设计简单的小夜灯电路图,合理使用电阻原件 保护发光二极管。 3、继续了解简单电路,认识串联电路,能正确连接串联电路,点亮发光二极管。 4、通过点亮发光二极管,使学生喜爱电子技术,乐于探究。 教学重点和难点: 重点:认识发光二极管的特性,能正确连接发光二极管。 难点:能合理使用电阻元件保护发光二极管,能连接多个发光二极管。 教学准备: 材料:红、绿、黄等发光二极管若干,接插件若干,100欧姆电阻若干,不同类型导线若干,电池盒,5号电池4节,黑胶带等。 工具:剪刀。 教学过程: 课前谈话: 同学们请坐好。各小组组长请起立。课前我们来做个小游戏,看黑板上的符号猜元件名称。(电池、开关、灯泡)。让小灯泡亮起来,得用导线将它们连接起来,师画。 电流从电源的正极出发,依次经过开关、灯泡,最后接到电源的负极,形成了电路。这是我们在《让灯泡亮起来》这课中学过的知识,我们先回顾到这里。 一、创设情境,激趣导入 今天老师为大家准备了一些图片,请同学们欣赏。师边播放边介绍,这些屏幕叫LED屏幕,是由一个个发光二极管组成的,它还有一个名字叫“LED”。 LED被誉为21世纪的绿色光源。它色彩鲜艳,使用寿命长达10万个小时,电压一般为 1.5V----2.3V,它高效节能,安全系数高,已被广泛应用于生产和生活中。 这些屏幕中的发光二极管是如何亮起来的呢?这就是这节课我们要探究的内容。 二、认识发光二极管的构造和电路符号 (一)观察发光二极管

1、我们先来认识一下发光二极管。(出示发光二极管)请小组长拿起工具箱里的小塑料袋。组内同学一起看看塑料袋里的发光二极管,研究一下它的结构特点。 2、学生观察,组内交流。 3、汇报。你发现了什么?(发光二极管有一个半透明的草帽状外壳,两根引脚线。引脚线长的是正极,短的是负极。)(观察的很仔细) (二)了解发光二极管与小灯泡的区别 1、上课前我们已经回忆了点亮灯泡的方法,我们可以用两根导线、一节电池让灯泡亮起来,哪位同学愿意上来演示一下。 2、小灯泡已经亮起来了,用这样的方法连接也能让发光二极管也亮起来吗?请这位同学再来试试。 3、你发现什么了?(发光二极管不会亮。)为什么不会亮?电压不够。怎样才会使它亮起来呢?(预设:再加一节电池试试。) (三) 认识电路符号和电阻特点 1、在动手试验前先来看老师画发光二极管的电路图,师画。跟灯泡电路图比较一下,你发现了什么? 2、这是100欧姆的电阻符号。请同学们看书本30面图4---2,这就是电阻。那么为什么要在发光二极管电路中加100欧姆的电阻呢?小组内讨论一下,看哪一组同学最聪明。 3、汇报。(预设:一个发光二极管的能承受电压是1.5—2.3V, 两节电池的电压是3V,电压太大,需要接上100欧姆的电阻限流,保护发光二极管。) 三、合作尝试点亮一个发光二极管 1、按照这个电路图,能不能点亮发光二极管呢?同学们想不想尝试一下?(想) 2、下面我们先来点亮一个发光二极管。先看老师来示范一遍。坐得最端正,听得最认真这一小组,等一下肯定也能最快地点亮发光二极管。师边示范边讲解注意点:试验前先检查电池盒的开关是否处于断开状态。将电阻与电池盒的正极(红色导线)连接,用胶布绝缘,尽量将胶布贴得平整一些,不要露出铁丝。再将电阻的另一头与带有接插件的红色导线连接。装上发光二极管,接着将黑色导

点亮一个LED程序

如何点亮一个LED #include sbit D=P0^0; void main() { D=0; } 使LED闪烁 #include sbit D=P0^0; void delay(int z); void main() { D=0; delay(110); D=1; delay(110); } void delay(int z) { int x,y;

for(x=z;x>0;x--) for(y=200;y>0;y--); } #include sbit D=p1^3; void main(void) { int j; while(1) { D=0; for(j=0;j<30000;j++); D=1; for(j=0;j<30000;j++); } } 手把手教您编写第一个单片机程序

来源:21ic作者: 关键字:手把手编写单片机程序 51单片机的开发环境是Keil 软件。Keil 软件虽然是一个收费软件,但从uVision2到目前的uVison4版本都有破解版,在网上都可以找到下载。笔者推荐大家使用uVisong4破解版本,好处不用多说。Keil uVision4软件的压缩包里附有安装和破解说明,本文不再赘述。 开发一个单片机程序,一般都要经过这几个步骤:建立工程->建立C文件->添加C文件到工程->编写C代码->设置目标工程的选项->编译工程产生HEX文件->将HEX文件下载到单片机。本文将一步一步手把手教您开发一个LED闪烁的简单且实用的C51程序。让您从0基础起步学习开发51单片机。 安装Keil uVison4之后,第一次运行出现如图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,做出电路板。

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

点亮发光二极管

EDA实验单元1 FPGA器件为用户提供了数量较多的灵活独立的输入/输出I/O口,FPGA的每个I/O口可以配置为输入、输出、双向I/O、集电极开路和三态门等各种状态。作为输出口使用时FPGA的I/O口可以输出最大40mA的电流,可以直接驱动发光二极管LED等硬件。FreeDev系列开发板配置了4~8个LED和4位的数码管等器件,我们安排下列实验可以让用户感受和熟悉FPGA 的开发过程,学习Quartus II开发工具的使用方法和Verilog HDL语言的编程方法。 点亮发光二极管 1.要求 点亮FreeDev开发板上的8个发光二极管,通过此实验让用户逐步了解、熟悉和掌握FPGA开发软件Quartus II的使用方法及Verilog HDL编程方法。 2.分析 FreeDev开发板为用户准备了8个发光二极管,其原理图见下图: 标号LED0~LED7分别连接到FPGA的I/O引脚(具体引脚对应表见后),只要正确分配并锁定引脚后,在相应的引脚上输出高电平“1”,就可以实现点亮该发光二 极管的功能。 3.程序设计 要求实现点亮LED发光二极管,因此只须在相应的引脚上输出高电平“1”即可,完整的Verilog HDL程序如下(两种实现方法,二选一即可):

(1)利用assign语句实现,文件名led.v。 module led(ledout); //模块名led output [7:0]ledout; //定义输出口 assign ledout=8’01010101; //输出0x55 endmodule (2)利用过程赋值语句来实现,文件名led2.v。 module led(ledout); //模块名led output [7:0]ledout; //定义输出口 reg [7:0]ledout; //定义寄存器 always begin ledout=8’b01010101; end endmodule 4.实验方法 注意:在该范例实验工程中我们给出Quartus II下面操作实现的详细图示,在以后的实验范例中这些基本操作不再详细图示。 (1)启动Quautus II (2)启动新工程向导 (3)

单片机课程设计 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 第一章绪论

单片机试验一:点亮一个发光二极管

单片机试验一:点亮一个发光二极管 拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称 之为89S52 的芯片,下面就看一下如何给它连线。1、电源:这当然是必不可少的了。单片机使用的是5V 电源,其中正极接40 引脚,负极(地)接20 引脚。2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19 脚。只要 买来晶振,电容,连上就可以了,按图1 接上即可。3、复位引脚:按图1 中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。4、EA 引脚:EA 引脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开始工作了。当然:您并不一定完全需要一片89S52, 实际上我们用8051 系列的任何一种芯片都是可以的。例如89s51,89c52 等等。 我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED 必须要和单片机的某个引脚相连,否则单片机就没法控制它了,那么和哪个引 脚相连呢?单片机上除了刚才用掉的5 个引脚,还有35 个,将这个LED 和1 脚相连。(见图1,其中R2 是限流电阻)按照这个图的接法,当1 脚是高电平时,LED 不亮,只有1 脚是低电平时,LED 才发亮。因此要1 脚要能够控制,也就是说,要能够让1 引脚按要求变为高或低电平。即然要控制1 脚,就得给 它起个名字,总不能就叫它一脚吧?叫它什么名字呢?设计51 芯片的INTEL 公司已经起好了,就叫它P1.0,这是规定,不可以由我们来更改。名字有了,又怎样让它变高或变低呢?叫人做事,说一声就可以,这叫发布命令,要计算 机做事,也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。让一个引脚输出高电平的指令是SETB,让一个引脚输出低电平的指令是 CLR。因此,要P1.0 输出高电平,只要写SETB P1.0,要P1.0 输出低电平,只

点亮一个LED程序

如何点亮一个LED #include sbit D=P0^0; void main() { D=0; } 使LED闪烁 #include sbit D=P0^0; void delay(int z); void main() { D=0; delay(110); D=1; delay(110); } void delay(int z) { int x,y; for(x=z;x>0;x--) for(y=200;y>0;y--); } #include sbit D=p1^3; void main(void) { int j; while(1) { D=0; for(j=0;j<30000;j++); D=1; for(j=0;j<30000;j++); } }

手把手教您编写第一个单片机程序 来源:21ic作者: 关键字:手把手编写单片机程序 51单片机的开发环境是Keil 软件。Keil 软件虽然是一个收费软件,但从uVision2到目前的uVison4版本都有破解版,在网上都可以找到下载。笔者推荐大家使用uVisong4破解版本,好处不用多说。Keil uVision4软件的压缩包里附有安装和破解说明,本文不再赘述。 开发一个单片机程序,一般都要经过这几个步骤:建立工程->建立C文件->添加C文件到工程->编写C代码->设置目标工程的选项->编译工程产生HEX文件->将HEX文件下载到单片机。本文将一步一步手把手教您开发一个LED闪烁的简单且实用的C51程序。让您从0基础起步学习开发51单片机。 安装Keil uVison4之后,第一次运行出现如图1的界面,从上往下数,依次是菜单栏、第一条工具栏、第二条工具栏,接下来左边白色部分为工程文件区(显示文件、函数、语言模板和相关书籍),右边灰色部分为文本区(编写源文件),最下边为编译信息栏(显示编译时产生的相关信息)。

实验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仿真器是赠送的。

单片机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

任务2.1 点亮发光二极管分解

项目2 发光二极管的闪烁 大多数单片机初学者都是从点亮一个发光二极管开始单片机学习之路的。在项目2中我们安排了3个简单的任务,分别是点亮一个发光二极管、发光二极管闪烁和8位流水灯。 通过这三个任务,让初学者初步了解51单片机IO口控制外围器件的原理,激发初学者学习单片机的兴趣。在完成这三个任务之外,教程中穿插讲述了51单片机编程软件KeilC51以及STC烧录软件的使用、C语言入门基础、模拟电路基本元件的特点等入门知识,为今后的学习打下良好的基础。 【内容安排】 2.1点亮一个发光二极管 2.2 发光二极管的闪烁 2.3 8位流水灯

任务2.1 点亮一个发光二极管 2.1.1任务要求 使用单片机的两个I/O 口,其中一个I/O 口作为输入引脚,接开发板上的高电平(或低电平),另外一个I/O 口作为输出引脚,控制开发板上的一个发光二极管亮灭。当输入I/O 接高电平时,发光二极管点亮,反之当输入I/O 接低电平时,发光二极管熄灭。 2.1.2知识准备 1、发光二极管 LED(light-emitting diode),即发光二极管,有贴片的,也有直插的,如图2.1.1所示,常见的颜色有红、绿、黄、蓝、白等。从发光二极管的字面上我们可以看出它的一些特性:首先它能发出可见光,另外这种器件具有普通二极管的特性,即单向导电性,具有阴极和阳极之分。 图2.1.1 直插发光二极管和贴片发光二极管 开发板上的发光二极管发出的光是红颜色,0805贴片封装。这种二极管的正向导通电压 在1.8V 到 2.2V 之间,工作电流在1mA ~20mA 之间。当导通电流大约1mA 时,人的眼睛就可以明显地观察到二极管的发光,导通电流越大,亮度越高,超过10mA ,亮度变化就不明显了,当电流超过20mA 时,发光二极管就会有烧坏的危险。 在设计发光二极管驱动电路时,要在发光二极管电路中串接一个限流电阻,调节阻值的大小可以控制发光二极管的发光亮度。导通电流与限流电阻的关系为Iled=(VCC-Vled)/R ,Iled 是流过发光二极管的电流,Vled 是发光二极管两端电压,电阻R 是限流电 阻。电流3-10mA ,电源电压5V ,Vled 在2V 左右,则限流电阻的取值在300-1K Ω之间。

点亮一个发光二极管方式

一、点亮一个发光二极管方式 #include //调用51单片机的头文件void main(void) //主函数,单片机开机后就是从这个函数开始运行 { P0_0=1; //按位方式写PO.0=1 P0_1=0; //按位方式写PO.1=0 P0_2=0; //按位方式写PO.2=0 P0_3=0; //按位方式写PO.3=0 P0_4=0; //按位方式写PO.4=0 P0_5=0; //按位方式写PO.5=0 P0_6=0; //按位方式写PO.6=0 P0_7=0; //按位方式写PO.7=0 while(1) //死循环,单片机初始化后,将一直运行这个死循环 { } }

二、发光二极管流水显示 #include //调用51单片机的头文件 //--------------------------------------- void main(void) //主函数,单片机开机后就是从这个函数开始运行 { unsigned int a; //定义一个int型变量,做延时用P0=0; while(1) //死循环,单片机初始化后,将一直运行这个死循环 { for(a=0;a<20000;a++); //延时若干时间,具体时长暂不理会 if(P0==0) P0=0x80; else P0=P0>>1; //将PO右移 } }

三、8独立按键一位数码管显示 #include //调用51单片机的头文件 //--------------------------------------- //定义一个数据表格 unsigned char code TAB[10]= { //定义表格一定要使用code,这样会做到程序存储区中 0x3F, //表格第1步数据0b00111111 0x06, //表格第2步数据0b00000110 0x5B, //表格第3步数据0b01011011 0x4F, //表格第4步数据0b01001111 0x66, //表格第5步数据0b01100110 0x6D, //表格第6步数据0b01101101 0x7D, //表格第7步数据0b01111101 0x07, //表格第8步数据0b00000111 0x7F, //表格第9步数据0b01111111 0x6F, //表格第10步数据0b01101111 }; //--------------------------------------- //8独立按键相关I/O设置 sbit P1key=P1^0; //按键P1接在P0.0口上

相关文档
相关文档 最新文档