搜档网
当前位置:搜档网 › 点亮LED灯闪烁,进入Arduino世界

点亮LED灯闪烁,进入Arduino世界

点亮LED灯闪烁,进入Arduino世界
点亮LED灯闪烁,进入Arduino世界

点亮LED灯闪烁,进入Arduino世界

一.实验目的:制作第一个电路 单LED闪烁,进入Arduino世界。

二.实验器材:

序号名称图片技术分析

1LED灯LED灯的工作电流为1.5-2V,

长引脚为+,短引脚为-。

2面包板+线纵向全部导通

-线纵向全部导通

abcde线横向导通

fghij线横向导通

3Arduino控制

编程烧入程序,控制外围设备使用。

4220欧姆电子由于LED灯的工作电压为1.5V-2V,工作电流

一般为10-20mA,反向击穿电压为5V。控

制板逻辑电路供电为5V。根据以上参数假设

LED工作电压选用1.7V,工作电流选用15m

A,最终算出需要串接一个220Ω的电阻。

5连接线短接线路使用

三.硬件的连接

四.程序编写

int ledpin=5;//设定控制LED的数字IO脚

void setup()

{

pinMode(ledpin,OUTPUT); //设定数字IO口的模式,OUTPUT为输出 }

void loop()

{

digitalWrite(ledpin,HIGH); //Ledpin引脚输出高电平,即将小灯点亮 delay(2000);

digitalWrite(ledpin,LOW); //Ledpin引脚输出低电平,即将小灯熄灭 delay(2000);

}

实验成功!

单灯闪烁程序

实验一单灯闪烁实验 一、实验要求 发光二极管按照设定的时间间隔闪烁。 二、实验目的 1、了解单片机内部结构和最小系统。 2、掌握单片机与LED的硬件连接。 3、掌握单片机C51语言的程序框架。 4、了解Keil软件和Proteus软件的使用。 5、参考电路图一般最小系统 包括单片机、电源、时钟 电路、复位电路四部分。 根据编写的程序P1.0 口 接发光二极管。

三、实验说明 Proteus仿真时注意与LED连接的电阻阻值,若阻值过大LED 将没有反应。编写程序时,注意for语句于简单延时语句的运用。 四、实验框图 五、实验程序 ORG 0 START: CLR P1.0 LCALL DELAY

SETB P1.0 LCALL DELAY LJMP START DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END

实验二LED流水灯实验 一、实验要求 编写一段流水灯控制程序,用P1 口作为输出控制端,实现八只发光二极管从左至右循环亮灭。 二、实验目的 1、进一步熟悉keil仿真软件、proteus仿真软件的使用。 2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。 3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。。

三、参考电路图复位电路、时钟电路的基础连线。P1端口分 别连接八只发光二极管。 四、实验说明编写程序时注意对延时子程序的使用,以及了解 _crol函数的使用。 unsigned char _crol_(unsigned char c,unsigned char b); 描述: 将字符c循环左移b位。_crol_函数有返回值,返回的是将c循环左移之后 的值。这是c51库自带函数,包含在intrins.h文件中。五、实验框图

点亮P1口的多个LED灯闪烁

点亮P1口的多个LED灯闪烁 功能:点亮P1口的多个LED灯闪烁 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 sbit LED0=P1^0;// 用sbit 关键字定义LED到P1.0端口,LED是自己任意定义且容易记忆的符号 sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; void Delay(unsigned int t); //函数声明 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255 while (1) //主循环 { for(i=0;i<10;i++) //加入for循环,表明for循环大括号中 //的程序循环执行10次 { LED0=0; //将P1.0口赋值0,对外输出低电平 LED2=1; LED4=0; Delay(5000); //调用延时程序;更改延时数字可以更改延时长度; //用于改变闪烁频率 LED0=1; //将P1.0口赋值1,对外输出高电平 LED2=0; LED4=1; Delay(5000); } for(i=0;i<10;i++)

用C语言编写程序实现通过按键使LED灯周期闪烁

用C语言编写程序实现通过按键使LED灯周期闪烁(2010-02-24 21:12:44)标签: 循环闪烁周期led灯按键杂谈 一、设计题目 二、程序功能: 开机复位后,LED0到LED7全部点亮,所有LEDPort持续2S后熄灭,然后等待按键,按0键LED7以 0.8S周期闪烁,按1键LEDPort以1S周期闪烁。 三、总体设计思想 用中断方式实现定时器的定时,然后通过键盘中断程序实现通过对按键的操作来实现相应的周期闪烁。 在我编写的实验程序中我用到了定时器中断和外部中断。程序共分为两个模块,一个为定时器模块,一个为键盘中断程序模块,在主函数中,首先实现所有LEDPort点亮,然后通过中断方式实现定时2S,在定时器num==20时,设定全局变量为标志位flag=1,然后再主函数中设定条件,通过标志位的变化实现所有LEDPort持续2S后熄灭。然后进入循环,等待按键,在按键中断服务程序中使用switch语句实现通过改变num1的值来实现LED7的闪烁周期。设定标志位b=0,在主函数中使用if语句通过判断b的值来改变LED7的亮灭情况,同时相应的b值会取反。 四、程序具体实现 实验要求开机复位后,LED0到LED7全部点亮2S后熄灭。在主函数中使用LEDPort=0x00;这条语句实现所有灯都亮,使用中断方式实现定时器定时2S,因为实验要求20ms溢出,所以设定num=100,在定时器中断服务程序中使用if语句判断条件,当num加到100,也就是说2S时间到时,执行flag=1;语句(先设定全局变量flag=0)。然后在主函数中使用while语句规定只有在flag=0时才执行所有LEDPort点亮的操作。2S时间到后,所有灯熄灭。然后进入while循环,

8个LED灯循环闪烁课程设计

摘要 “微机原理与接口技术”是高等学校电子信息工程、通信工程、自动化、电气工程及其自动化等工科电气与电子信息类各专业的核心课程。该课程以INTER 8086微处理器和IBM PC系列微机为主要对象,系统。深入地介绍了微型计算机的基本组成、工作原理、接口技术及应用,把微机系统开发过程中用到的硬件技术和软件技术有机地结合起来。 本文详述了8个LED灯循环闪烁的课程设计。设置8个LED灯,首先是1、3、5、7号LED依次亮1秒钟,当7号LED亮后,这四个灯同时闪烁5下。然后是2、4、6、8号LED 依次亮1秒钟,当8号LED亮后,这四个灯同时闪烁5下。 本课程设计,由于自身能力和学习水平有限,可能存在一定的错误和不当之处,敬请批评和指正。 一、设计目的 1.巩固和加深课堂所学知识;熟悉各种指令的应用及条件; 2.学习掌握一般的软硬件的设计方法和查阅、运用资料的能力; 3.进一步了解8255A各引脚的功能, 8255A和系统总线之间的连接, 8255A和CPU 之间的数据交换,以及8255A的内部逻辑结构。深入掌握8255A显示电路的基本功能及编程方法,8255等芯片的工作方式、作用。 4.培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。 二、设计内容 根据所学内容和对8255A的应用,整个系统硬件采用8086微处理器和8255A可编程并行接口芯片和8个LED等连成硬件电路。设计8个LED灯,实现如下要求:首先是1、3、5、7号LED依次亮1秒钟,当7号LED亮后,这四个灯同时闪烁5下。然后是2、4、6、8号LED依次亮1秒钟,当8号LED亮后,这四个灯同时闪烁5下。 三、设计要求 使用8255A可编程接口芯片实现8个LED灯以十种不同的方式显示。画出硬件电路图,能在PROTEUS中模拟实现。

单片机控制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.新建一个项目

实验一LED灯闪烁

单片机小系统设计与制作实验报告 姓名:李文浩 学号:1423102 班级:14级电仪维 指导教师:陈雪莲

实验一八个LED灯闪烁 一、实验要求 仿照图1-1在Proteus中绘制一个基于AT89C51单片机控制八个LED灯进行闪烁。 现象: 八个LED灯闪烁,为黄灯; 图1-1 八个LED灯闪烁电路图 二、实验目的 (1)学会使用Proteus ISIS绘制硬件电路图,掌握加载程序和仿真运行等基本操作。 (2)掌握c语言里调用延时子程序的方法。 (3)掌握proteus的工程建立,仿真,调试。 (4)学会如何在Proteus ISIS上放置元件和连线。 (5)学会如何在Proteus ISIS加载目标代码。 三、实验步骤 1、在Proteus ISIS中设计硬件电路 (1)创建文件名“123”保存在对应的文件夹“E:\123"下。 (2)利用关键字或分类检索的方法将电路原理图中需要的元器件挑选至对象选择列表,主要元件可参照表1-1,然后依次选中在设计区单击,放入电路图。

(3)从模型选择工具栏的终端(Terminal)模型中将地线端子(Ground)和电源端子(Power)放置到电路中。 (4)连接电路原理图,可参考图1-1。 表1-1 (1)启动Keil uVision2软件,创建新工程:123,CPU选择Atmel 89C51。 (2)创建文件,以c为扩展名保存。 (3)执行“Source”菜单下的“Add”命令添加程序“123.c”。 (4)对工程的属性进行设置:目标属性中选择“生成HEX文件” (5)编写源程序,进行汇编/编译、调试。 3、仿真运行 启动Proteus ISIS,打开电路图“123.DSN”,单片机属性中选择目标文件123.HEX,然后进行仿真运行,操作电路中的开关,观察运行结果。 4、程序 #include void delay(unsigned char x); void main() { while(1) { P1=0; delay(1000); P1=0xff; delay(1000); } } void delay(unsigned char x) { unsigned char t;while(x--) for(t=0;t<255;t++); }

LED灯闪烁控制

太原理工大学 单片机原理与应用技术课程实验报告 专业班级 学号 姓名 指导教师

LED 灯闪烁控制 一、实验目的 (1)掌握C语言、汇编语言编写单片机控制程序的方法; (2)掌握使用Keil C软件编写、编译、调试程序的方法; (3)掌握使用Proteus软件绘制电路原理图、硬件仿真和程序调试; (4)理解LED灯控制电路原理和延时程序的编写。 二、实验硬件和软件 计算机1台,并安装Proteus软件和Keil C51软件。 三、实验任务 在单片机I/O口上外接一个发光二极管LED,通过程序实现LED闪烁显示,即不停地一亮一灭,亮、灭持续时间均为0.2秒。 四、实验电路及分析 实验电路如图所示,在P1.7口(也可选择其它端口)外接一个发光二极管D1,分析可知P1.7输出“0”时,D1点亮,P1.7输出“1”时D1熄灭。 LED 灯闪烁控制电路图

五、实验程序编写 1.程序编写 (1)C语言程序 #include sbit D1=P1^7; void Delayms(unsigned int n) { unsigned int i, j; for(j=n; j>0;j--) for(i=112; i>0; i--); } int main( ) { while(1) { D1=0; Delayms(200); D1=1; Delayms(200); } } (2)程序流程图

六、实验步骤 1.利用Proteus软件绘制仿真电路图 (1)打开Proteus软件,File→New Project进入工程创建向导,选择项目文件存放路径,项目文件名为“实验1.pdsprj”。 (2)创建原理图(schematic),默认模板为default,可根据电路规模选择合适的图纸大小。 (3)选择“Do not create a PCB layout”,即不绘制PCB图。 (4)选择第一项“No Firmware Project”,即不在Proteus平台下创建源程序。需要在Keil C环境下编写源程序并成功编译生成hex文件,然后加载到Proteus 仿真电路的单片机上。 (5)工程创建向导结束,配置情况确认。 (6)点击“P”按钮在器件库中搜索并添加电路中所需要的器件。 (7)根据电路图将器件放置到绘图区并合理布局,右键单击器件弹出快捷菜单,可以进行旋转、镜像、修改参数(如电容、电阻大小、晶振频率)等操作,双击器件也可以打开参数设置对话框,例如电容C1的设置对话框,将电容参数设置为30pF。

51单片机:LED灯亮灯灭程序设计

1.功能说明:控制单片机P1端口输出,使位所接的LED点亮,其他7只灯熄灭。程序: 01: MOV A , #B ; 存入欲显示灯的位置数据 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, #B ;存入开始点亮灯位置 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,每次点亮一只,先把右边的第一只点亮,秒后点亮右数的第二只灯,第一只熄灭,再过秒点亮右数的第三只灯,第二只熄灭,…亮灯按此顺序由右向左移动。当亮灯移到左侧后,开始与上述反方向移动,即亮灯由左向右移动,重复循环。 程序: 01: START: MOV R0, #8 ;设左移8次 02: MOV A,#0FEH ;存入开始亮灯位置 03: LOOP: MOV P1, A ;传送到P1并输出 04: ACALL DELAY ;调延时子程序 05: RL A ;左移一位 06: DJNZ R0, LOOP ;判断移动次数 07: MOV R1, #8 ;设右移8次 08; LOOP1: RR A ;右移一位 09: MOV P1, A ;传送到P1并输出

Arduino入门教程(2)—LED灯闪烁

Arduino 入门教程(2)—LED 灯闪烁 回顾一下 Lesson 1 的内容,我简单分了以下几点: 了解 Arduino 软件编辑环境-- Arduino IDE 如何通过 Arduino IDE 下载一个 Blink 程序 "//" 和"/*...*/"的含义 setup()和 loop()函数的重要性及作用 pinMode(pin,mode)函数 digitalWrite(pin,value)函数 delay(ms)函数 开始新的一课! 这次我们还是同样要用 Blink 程序,有所不同的是,这里我们需要外接一个 LED 到数字引脚,而不是使用焊在 Arduino 板上的 LED 13(也就是“L”灯)。便于我们能清晰的认识 LED 的工作原理及一些硬件电路的搭建。 STEP 1:需要准备的东西: 1 ×DFduino UNO R3(以及配套 USB 数据线)

STEP 2:硬件连接 首先,从我们的套件中取出 Prototype shield 扩展板和面包板,将面包板背面的双面胶歇下,粘贴到 Prototype shield 扩展板上。再取出 UNO,把贴有面包板 Prototype shield 扩展板插到 UNO 上。取出所有元件,按照下图连接。

图中的蓝色与红色的线用彩色面包线连接,使用面包板上其他孔也没关系,只要元件和线的连接顺序与上图保持一致即可。 确保 LED 连接是否正确的,LED 长脚为+,短脚为-,完成连接后,给 Arduino 接上 USB 数据线,供电,准备下载程序。 STEP 3:输入代码 打开 Arduino IDE,在编辑框中输入样例代码 1-1 所示代码。(输入代码也是一种学习编程的过程,虽然提供代码的压缩包,但还是建议初学者自己输入代码,亲身体验一下。) 样例代码1-1: 1. 3. 描述:LED 每隔一秒交替亮灭一次 5. int ledPin = 10; 6. void setup() { 8. } 9. void loop() { 14. } 15. 输入完毕后,点击 IDE 的“校验(Verify)”,查看输入代码是否通过编译。如果显示没有错误,单击“下载(UpLoad)”,给 Arduino 下载代码。以上每一步都完成了的话,你应该可以看到面包板上的红色 LED 每隔一秒交替亮灭一次。

LED灯闪烁程序

1.闪烁灯程序 MOV R6,#20 2 个机器周期2 D1: MOV R7,#248 2个机器周期2 2+2×248=498 20× DJNZ R7,$ 2 个机器周期2×248 498 DJNZ R6,D1 2 个机器周期2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248 时,延时5ms,R6=20、R7=248 时,延时10ms,以此为基本的计时单位。如本实验要求0.2 秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1 所示,当P1.0 端口输出高电平,即P1.0=1 时,根据发光二极管 的单向导电性可知,这时发光二极管L1 熄灭;当P1.0 端口输出低电平,即P1.0=0时,发光二极管L1 亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0 指令使P1.0 端口输出低电平。 5.程序框图 如图4.1.2所示 3 图4.1.2 6.汇编源程序 ORG 0 START: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP START DELAY: MOV R5,#20 ;延时子程序,延时0.2 秒 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 7.C 语言源程序 #include sbit L1=P1^0;

LED灯闪烁实验总结

课程名称:Zigbee技术及应用实验项目: LED灯闪烁实验指导教师: 专业班级:姓名:学号:成绩: 1.实验目的 (1)学习单片机IO口配置与驱动,实现指示灯LED1闪烁,频率为1Hz; (2)通过模块化编程,养成良好编程习惯。 2.实验设备 (1)CC2530核心板一块; (2)传感器底板一个; (3)仿真器一个; (4)方口USB线一根; 3.实验原理 3.1硬件设计原理 本实验的原理如图1-1所示。其中,LED1和LED3都串联一个R273和R275限流电阻,然后连接到CC2530的P1口的P1_1和P1_0管脚上。当P1_1为低电平时,LED1上有电流流过,LED1被点亮,反之熄灭。

图1-1 LED灯原理图 限流电阻R的计算:图中R273和R275限流电阻,其计算公式如下: R=(U-UF)/ID (1-1) 式中,U为电路供电电压,UF为LED正向压降,ID为LED的工作电流。对于普通LED发光二极管,其正向压降:黄色为1.4V、红色为1.6V、蓝/白色为2.5V;点亮工作电流为3-20mA。 由图1-1可知,电路供电电压为U=3.3V,LED1选择为黄色发光二极管(压降是1.4V),带入(1-1)式可得R的取值范围是95-633Ω,电阻只要在此范围内即可,一般选择了470Ω的常用电阻。 从图1-1可以看出,如果要让LED1发光,需要设置CC2530对应的I/O口将LED电平拉低。本实验我们只点亮LED1指示灯,所以只要设置LED1为低电平即可,所以只要我们知道LED1与CC2530哪个管脚相连就可以进行编程。随着这个思路我们在原理图中找到LED1与CC2530芯片的P1_1管脚连接,将P1_1管脚拉低LED1即被点亮。 3.2程序设计原理 (1)主程序分析 本实验的程序流程如图1-2所示,其重点IO口的配置。如果以1Hz的频率点亮LED1闪烁,则需要配置P1_1为输出,然后在P1_1输出1Hz的脉冲信号。

c51闪烁一个led灯的程序

P14插针是8个LED的输出插针,使用8P杜邦线从P14的8个插针连接到单片机P1口。 /*----------------------------------------------- 内容:点亮P1口的1个LED灯闪烁 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit L1=P1^0;// 用sbit 关键字定义L1到P1.0端口, //LED是自己任意定义且容易记忆的符号 void Delay(unsigned int t); //函数声明 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 while (1) //主循环 { L1=0; //将P0.0口赋值0,对外输出低电平 Delay(10000); //调用延时程序;更改延时数字可以更改延时长度; //用于改变闪烁频率 L1=1; //将P0.0口赋值1,对外输出高电平 Delay(10000); //主循环中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延时函数,含有输入参数unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); }

基于单片机多控制、多闪烁LED彩灯

四川信息职业技术学院 毕业设计说明书 设计题目:基于单片机多控制 多闪烁LED彩灯 专业:电子信息工程技术 班级:电信08-3 学号: 08190** 姓名:潘 * * 指导教师:张万良 二〇一〇年十二月二十二日

四川信息职业技术学院毕业设计任务书 备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。

目录 摘要.................................................... 错误!未定义书签。第1章方案设计.......................................... 错误!未定义书签。 设计方案............................................ 错误!未定义书签。 方案选择............................................ 错误!未定义书签。第2章硬件设计.......................................... 错误!未定义书签。 直流稳压电源电路.................................... 错误!未定义书签。 单片机最小系统...................................... 错误!未定义书签。 LED彩灯显示电路..................................... 错误!未定义书签。 按键控制电路........................................ 错误!未定义书签。 串口电路............................................ 错误!未定义书签。第3章软件设计.......................................... 错误!未定义书签。第4章系统仿真调试...................................... 错误!未定义书签。 系统仿真............................................ 错误!未定义书签。 仿真调试............................................ 错误!未定义书签。总结.................................................... 错误!未定义书签。参考文献.................................................. 错误!未定义书签。附录1 LED彩灯控制系统仿真电路图......................... 错误!未定义书签。附录2 LED彩灯彩灯控制程序代码........................... 错误!未定义书签。

P1.0上实现LED灯闪烁

子项目一:P1.0上实现LED灯闪烁 目标: 1、通过一个简单实例的仿真,掌握单片机仿真的基本过程 2、了解单片机C51程序设计基础。 3、掌握keilC编译器的使用。 4、掌握proteus仿真软件进行仿真的基本过程。 任务: 设计一个单片机最小应用系统,并在P1.0上实现LED灯闪烁 任务分解: 1、设计原理图; 2、利用proteus绘制原理图; 3、编写程序,并利用KeilC进行编译,生成hex文件; 4、利用proteus进行仿真调试。 技能拓展: 1、proteus软件使用。 2、KeilC编译器使用 3、C51程序设计 一、原理 由于需要实现的功能比较简单,所以单片机最小系统,时钟采用内部时钟,复位采用上电复位,在P1.0 端口上接一个发光二极管L1,使L1 在不停地一亮一灭,一亮一灭的时间间隔为0.2 秒,电路图如下图所示。

二、原理图绘制 安装完Proteus后,运行ISIS 7 Professional,会出现以下窗口界面: 1、将所需元器件加入到对象选择器窗口: 本例要用到的元件有:AT89C51、电阻(RES)、电容(CAP)、电解电容(HITEMP)、发光二极管(LED)、晶振(CRYSTAL) 单击对象选择器按钮,如图所示 弹出“Pick Devices”页面,在“Keywords”输入AT89C51,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如图所示。

在“Results”栏中的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口。然后用同样的步骤添加其他器件,完成后单击“OK”按钮,结束对象选择。 最终结果: 经过以上操作,在对象选择器窗口中,就有了需要的元器件对象,单击,在预览窗口中,可见到的实物图,如图所示;此时,在绘图工具栏中的元器件按钮 处于选中状态。 2、放置元器件至图形编辑窗口

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

1例子1第二个灯亮 #include void main() { P1=0xfd; } #include Sbit D1=P1^0; V oid 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

相关主题