1单片机并口简单应用(流水灯)
- 格式:doc
- 大小:708.43 KB
- 文档页数:7
单片机控制左右循环的流水灯设计单片机是一种微型计算机芯片,可以用于控制和管理各种电子设备。
流水灯是一种经典的电子元件,通过依次点亮或熄灭一组LED灯来形成流动效果。
本文将设计一个使用单片机控制的左右循环流水灯。
设计思路:1.硬件设计:a.先准备一个单片机开发板、一组LED灯和与LED灯串联的电阻。
b.将LED灯按照循序连接,连接方式可以为并联或串联。
c.通过引脚和外部电路将LED灯与单片机的IO口相连。
每个LED灯与一个IO口相连,并且通过电阻限流。
2.软件设计:a.在单片机上编写控制流水灯的程序。
这可以使用C语言或汇编语言进行编写。
b.程序主要通过循环结构来实现流水灯的效果。
编写一个循环函数,用于控制LED灯的点亮和熄灭。
c.在循环函数中,通过控制IO口输出高电平或低电平来控制LED灯的亮灭。
每次循环,根据需要逐个点亮或熄灭LED灯。
d.为了实现左右循环的效果,可以通过改变点亮或熄灭的顺序来改变流水灯的方向。
可以使用一个变量来控制点亮和熄灭的顺序,每次循环后改变该变量的值。
示例代码:以下是一个使用C语言编写的简单示例代码,来控制左右循环流水灯。
```c#include <reg52.h>//定义LED灯使用的IO口sbit LED1 = P1^0;sbit LED2 = P1^1;sbit LED3 = P1^2;sbit LED4 = P1^3;//控制流水灯循环void lightFlowint i;int direction = 1; // 控制流水灯的方向,1表示向右,-1表示向左//流水灯循环while(1)//控制LED灯的点亮和熄灭LED1=0;LED2=1;LED3=1;LED1=1;LED2=0;LED3=1;LED4=1;LED1=1;LED2=1;LED3=0;LED4=1;LED1=1;LED2=1;LED3=1;LED4=0;//根据方向改变控制顺序if(direction == 1)//向右direction = -1;}elsedirection = 1;}}void mainlightFlow(;```这个示例代码中,使用P1口上的4个IO口来控制4个LED灯的点亮和熄灭。
C51单⽚机实现呼吸灯和花样流⽔灯程序1.⽤C51单⽚机实现花样流⽔灯,代码如下:#include <reg52.h>#define LED_A P1 //led灯所⽤的接⼝,是哪个⼝就写P⼏void delayms(){unsigned char x = 0; unsigned char i;unsigned char y = 0;while(y < 0.001) //定义led灯的切换的延时时间,越⼩越快。
{ //(y < 0.001);(x<100);(i<100)都可以修改x = 0;while(x<100){i = 0;while(i<100){i++;}x++;}y++;}}#define LED_NUM 8 //定义led灯的数量,可快速实现不同⽤途的修改;void main(){unsigned char k;unsigned char j;unsigned char LED_ALL[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F}; //led灯亮灭的⼗六进制数组;unsigned char LED_ALL_2[] = {0XFC,0XF3,0XCF,0X3F}; while(1) { for(k=0;k<3;k++) //第⼀个for实现奇偶灯交叉闪烁三次,想闪烁⼏次就修改(K<3)中的数值; { LED_A = 0xAA; delayms(); LED_A = 0x55; delayms(); } for(k=3;k>0;k--) //实现⼀个流⽔灯左右三次(从左到右再从右到左算⼀次); { for(j=0;j<LED_NUM;j++) { LED_A = LED_ALL[j]; delayms(); } for(j=6;j>0;j--) { LED_A = LED_ALL[j]; delayms(); } } for(k=0;k<3;k++) //实现前四个灯亮后四个灯灭,交叉闪烁3次,修改次数同上; { LED_A = 0xf0; delayms(); LED_A = 0xf; delayms(); } for(k=3;k>0;k--) //实现两个灯依次流⽔3次; { for(j=0;j<4;j++) { LED_A = LED_ALL_2[j]; delayms(); } for(j=2;j>0;j--) { LED_A = LED_ALL_2[j]; delayms(); } } }}2.实现第⼀个灯呼吸,由暗变亮,再由亮变暗,程序如下;#include <reg52.h>sbit LED1 = P3^0;void delay(unsigned int a) //定义⼀个延时函数{ while(--a);}void main(){ unsigned int t,circle=800; //定义变量,circle=800为led灯呼吸的间隔长短,数值越⼩,间隔越短。
1单片机并口简单应用(流水灯)试验1 单片机并口简单应用(流水灯)实验目的1、了解单片机C语言程序的基本结构2、了解单片机C语言程序的设计和调试方法3、掌握顺序控制程序的简单编程4、熟悉51单片机的端口使用实验仪器单片机开发试验仪、稳压电源、计算机实验原理1、硬件电路如图1所示,流水灯硬件电路由发光二极管、单片机并口(P0)、限流电阻等组成。
发光二极管连接成共阳极结构。
发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。
因此,二极管公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。
图1 流水灯电路图2、程序流程图如下。
开实验内容:1、开发板接线图2、开发环境设置打开keil软件,版本μ Vision2 ,μvision3,μvision4 都一样,在这里用μvision4版本演示,打开之后如下图,有的时候会默认打开上次使用的工程,单击Project 菜单,选择 Close Project 关闭了默认打开的工程,显示下图界面:我们要建立新的工程,选择Project→ newμvision projiect…选择工程要保存的路径,输入工程文件名,如图点击保存后会弹出一个对话框,要求用户选择单片机型号,可以根据用户使用的单片机来选择,我们使用的STC90单片机是兼容51内核的,Keil C51 几乎支持所有的51内核单片机,51内核具有通用型,如果程序用的资源不是太复杂,我们可以选择任意一款51单片机内核就行。
例程以添加Atmel 的AT89C51来说明。
如图,然后,单击确定(OK)。
功能描述如果出现下面的界面:单击是就可以,意思是将单片机的启动代码添加到工程,我们不用修改。
到目前我们还没建立一个完整的工程,只是有工程的名字,框架,工程中还没有任何文件代码,(除了启动代码,有的keil 版本不显示启动代码),接下来我们添加文件及代码。
单击菜单File→New选项,或者单击界面上的快捷图标,新建文件串口如下。
手把手教你单片机流水灯实验(详解)每当夜幕降临,我们可以看到大街各式各样广告牌上漂亮的霓虹灯,看起来令人赏心悦目,为夜幕中的城市增添了不少亮丽色彩。
其实这些霓虹灯的工作原理和单片机流水灯是一样的,只不过霓虹灯的花样更多,看起来更漂亮一些。
这一课我们就结合S51增强型单片机实验板、ISP 编程器来手把手教你详细学习单片机的流水灯实验。
首先介绍实验的硬件设备:S51增强型单片机实验板+ISP编程器图1:S51增强型单片机实验板图2:ISP编程器套件S51增强型单片机实验板上有8个高亮度发光二极管(见图1所示),可以用来做单片机流水灯、跑马灯。
等实验,电路原理图见下图3。
图3从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法方法同LED1。
因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。
从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。
我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译” 成单片机所需的二进制代码,然后交给单片机去执行。
一、实验目的1. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。
2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。
3. 提高动手实践能力,培养团队协作精神。
二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。
2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。
三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。
实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。
四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。
2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。
3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。
(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。
(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。
(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。
4. 编译程序,生成HEX文件。
5. 将生成的HEX文件导入Proteus软件,运行仿真实验。
6. 观察实验现象,检查LED灯的流水灯效果是否正常。
五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。
2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。
实验过程中,可以调整定时器的定时时间,改变流水灯的速度。
六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。
2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。
3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。
单片机流水灯实验总结引言流水灯是单片机实验中最基础的实验之一,通过控制单片机的IO口,让灯泡按照一定的顺序或方式依次点亮和熄灭,从而形成灯光的流动效果。
本篇文档将总结单片机流水灯实验的原理、实验步骤和实验结果,并对其中的关键点进行说明和分析。
实验原理单片机流水灯实验的原理主要涉及到两方面:单片机的IO口和时序控制。
单片机的IO口单片机的IO口是其与外部设备进行数据交换和控制的接口,通过设置IO口的电平状态,可以控制外部设备的操作。
在流水灯实验中,我们将使用单片机的多个IO口分别控制多个灯泡的点亮和熄灭。
时序控制流水灯的效果是通过按照一定的时序来依次点亮和熄灭灯泡。
在单片机中,我们可以通过控制程序中的延时和循环来实现灯泡的时序控制。
实验步骤以下将详细介绍单片机流水灯实验的步骤:1.准备材料和工具:单片机、灯泡、电阻、面包板、导线等。
2.连接电路:将单片机和灯泡通过导线连接起来,同时将电阻与灯泡串联,用以限流。
3.编写程序:使用相应的编程软件,编写控制流水灯的程序。
程序主要包括初始化IO口、控制时序、循环控制灯泡的点亮和熄灭等。
4.烧录程序:将编写好的程序烧录到单片机中。
5.调试和测试:将单片机连接到电源,观察灯泡是否按照预定的流水灯效果点亮和熄灭。
如果效果不符合预期,可以通过修改程序和调整电路进行调试。
实验结果经过以上步骤,我们成功搭建了单片机流水灯的实验电路,并编写了控制流水灯的程序。
经过测试,实验效果良好,灯泡按照预定的顺序和方式点亮和熄灭。
实验中的关键点分析在单片机流水灯实验中,有几个关键点需要特别注意:1.IO口的选择:根据需要控制的灯泡个数,选择合适数量的IO口。
如果使用的IO口数量较多,可以考虑使用扩展芯片或IO口拓展模块。
2.电路的设计:在电路设计中,需要合理选择电阻的阻值,以确保灯泡正常工作,并保护单片机和其他电路。
3.程序的编写:程序的编写需要注意控制流水灯的循序和时序,以及延时和循环的设置。
实验一单片机并口简单应用(流水灯、数码管)实验目的1、了解简单单片机应用系统的设计方法。
2、了解单片机汇编语言程序的基本结构3、了解单片机汇编语言程序的设计和调试方法4、掌握应用PROTEUS仿真软件的操作方法。
5、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。
6、培养良好的实验习惯。
实验内容1、AT89S51为主控芯片,用PROTEUS仿真设计简单单片机应用系统。
2、编程实现8个发光LED“流水”的现象,用一个按键控制灯的上、下、开花三种状态,先用查询。
3、用四个数码管开始现实185,做二个按键,加5,减4,最多加到210,最多减到150。
发辉部分:修改程序,用中断完成以上功能,用六位数码管显示学号后六位。
实验原理1、流水灯(1)实验原理图(可打印)(2)实验程序(必须手写)流水灯中断ORG 0000HAJMP MAINORG 0003HAJMP KEYMAIN:CALL INITLOOP:CALL MOVECALL DELAYAJMP LOOPINIT:MOV R3,#0FEHMOV R4,#0MOV P2,#0FFHMOV R0,#00HSETB IT0SETB EX0SETB EARETMOVE:CJNE R0,#00H,MOV2 MOV A,R3RL AMOV R3,AMOV P2,R3MOV2:CJNE R0,#01H,MOV3 MOV A,R3RR AMOV R3,AMOV P2,R3MOV3:CJNE R0,#02H,LEND MOV DPTR,#TABMOV R7,#0MOV R6,#4LOP: MOV A,R7MOVC A,@A+DPTRMOV P2,ALCALL DELAYINC R7DJNZ R6,LOP LEND: RETKEY: PUSH PSWPUSH ACCMOV A,R0INC ACJNE A,#03H,HU1MOV A,#00HHU1: MOV R0,APOP ACCPOP PSWRETIDELAY:MOV R2,#150DE1: MOV R5,#200DJNZ R5,$DJNZ R2,DE1RETTAB: DB 0e7H,0dbH,0bdH,07eH END;OK查询ORG 0000HAJMP STARTSTART:MOV R3,#0FEHMOV R4,#0MOV P2,#0FFHMOV R0,#00HMAIN:CALL DETCALL MOVEAJMP MAINDET:JB P3.2,DENDJNB P3.2,$MOV A,R0INC AMOV R0,ACJNE A,#03H,DENDMOV R0,#00HDEND:RETMOVE:CJNE R0,#00H,MOV2MOV A,R3RL AMOV R3,AMOV P2,R3MOV2:CJNE R0,#01H,MOV3MOV A,R3RR AMOV R3,AMOV P2,R3MOV3:CJNE R0,#02H,LENDMOV DPTR,#TABMOV R7,#0MOV R6,#4LOP: MOV A,R7MOVC A,@A+DPTRMOV P2,ALCALL DELAYINC R7DJNZ R6,LOPLEND: RETDELAY: MOV R4,#250DE1: MOV R5,#200DJNZ R5,$DJNZ R4,DE1RETTAB: DB 0e7H,0dbH,0bdH,07eH END;OK2、数码管显示(1)实验原理图(可打印)(2)实验程序(可打印)(3)数码管查询(4) ORG 0000H(5) AJMP MAIN(6)(7) MAIN:(8)MOV R2,#000(9)MOV R3,#185(10)(11)MANAGE:(12)LCALL COMPUTING(13)LCALL BCD(14)LCALL DISPLAY(15)AJMP MANAGE(16)(17)(18)COMPUTING:(19)JB P3.1,SU(20)JNB P3.1,$(21)INC R3(22)INC R3(23)INC R3(24)INC R3(25)INC R3(26)CJNE R3,#210,PD1(27)PD1: JC LEND(28)MOV R3,#210(29)SU: JB P3.2,LEND(30)JNB P3.2,$(31)DEC R3(32)DEC R3(33)DEC R3(34)DEC R3(35)CJNE R3,#150,PD2 (36)PD2: JNC LEND (37)MOV R3,#150 (38)LEND:RET(39)(40)(41)BCD:(42)MOV A,R2(43)MOV B,#100 (44)DIV AB(45)MOV 30H,A(46)MOV A,B(47)MOV B,#10(48)DIV AB(49)MOV 31H,A(50)MOV 32H,B(51)(52)MOV A,R3(53)MOV B,#100 (54)DIV AB(55)MOV 33H,A(56)MOV A,B(57)MOV B,#10(58)DIV AB(59)MOV 34H,A(60)MOV 35H,B(61)(62)DISPLAY:(63)MOV R7,#7(64)MOV R0,#30H (65)MOV DPTR,#TAB (66)MOV R6,#0FEH (67)LOOP:(68)MOV A,@R0(69)MOVC A,@A+DPTR (70)MOV P1,R6(71)MOV P2,A(72)LCALL DELAY (73)MOV A,R6(74)RR A(75)MOV R6,A(76)LCALL DELAY(77)INC R0(78)DJNZ R7,LOOP(79)RET(80)(81)DELAY:(82)MOV R5,#50(83)DE1:MOV R4,#10(84)DJNZ R4,$(85)DJNZ R5,DE1(86)RET(87)(88)(89)TAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H (90)(91)END(92)(93);OK(94)(95)中断(96) ORG 0000H(97) AJMP MAIN(98) ORG 0003H(99) AJMP KEY(100) ORG 0013H(101) AJMP KEY2(102)(103)MAIN:(104)LCALL INIT(105)MOV R2,#000(106)MOV R3,#185(107)(108)MANAGE:(109)LCALL BCD(110)LCALL DISPLAY(111)AJMP MANAGE(112)(113)INIT:(114) SETB IT0(115) SETB IT1(116) SETB EX0(117) SETB EX1(118) SETB EA(119) RET(120)(121)KEY: MOV A,R3 (122)ADD A,#5 (123)MOV R3,A (124)CJNE R3,#210,M1 (125)M1: JC KEND(126)MOV R3,#210 (127)AJMP KEND (128)KEY2: MOV A,R3 (129)SUBB A,#4 (130)MOV R3,A (131)CJNE R3,#150,M2 (132)M2: JNC KEND (133)MOV R3,#150 (134)KEND: RETI(135)(136)(137)BCD:(138)MOV A,R2(139)MOV B,#100(140)DIV AB(141)MOV 30H,A(142)MOV A,B(143)MOV B,#10(144)DIV AB(145)MOV 31H,A(146)MOV 32H,B(147)(148)MOV A,R3(149)MOV B,#100(150)DIV AB(151)MOV 33H,A(152)MOV A,B(153)MOV B,#10(154)DIV AB(155)MOV 34H,A(156)MOV 35H,B(157)(158)DISPLAY:(159)MOV R7,#7(160)MOV R0,#30H (161)MOV DPTR,#TAB (162)MOV R6,#0FEH (163)LOOP:(164)MOV A,@R0(165)MOVC A,@A+DPTR(166)MOV P1,R6(167)MOV P2,A(168)LCALL DELAY(169)MOV A,R6(170)RR A(171)MOV R6,A(172)LCALL DELAY(173)INC R0(174)DJNZ R7,LOOP(175)RET(176)(177)DELAY:(178)MOV R5,#50(179)DE1:MOV R4,#10(180)DJNZ R4,$(181)DJNZ R5,DE1(182)RET(183)(184)(185)TAB: DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H (186)(187)END(188)(189);OK3、显示学号后六位(1)实验原理图(可打印)(2)实验程序(可打印)学号ORG 0000HAJMP MAINMAIN:MOV R2,#071MOV R3,#082MANAGE:LCALL BCDLCALL DISPLAYAJMP MANAGEBCD:MOV A,R2MOV B,#100DIV ABMOV 30H,AMOV A,BMOV B,#10DIV ABMOV 31H,AMOV 32H,BMOV A,R3MOV B,#100DIV ABMOV 33H,AMOV A,BMOV B,#10DIV ABMOV 34H,AMOV 35H,BDISPLAY:MOV R7,#7MOV R0,#30HMOV DPTR,#TABMOV R6,#0FEHLOOP:MOV A,@R0MOVC A,@A+DPTRMOV P1,R6MOV P2,ALCALL DELAYMOV A,R6RR AMOV R6,ALCALL DELAYINC R0DJNZ R7,LOOPRETDELAY:MOV R5,#50DE1:MOV R4,#10DJNZ R4,$DJNZ R5,DE1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H END实验总结1、实验中出现的问题,如何解决2、心得体会。
试验1 单片机并口简单应用(流水灯)
实验目的
1、了解单片机C语言程序的基本结构
2、了解单片机C语言程序的设计和调试方法
3、掌握顺序控制程序的简单编程
4、熟悉51单片机的端口使用
实验仪器
单片机开发试验仪、稳压电源、计算机
实验原理
1、硬件电路
如图1所示,流水灯硬件电路由发光二极管、单片机并口(P0)、限流电阻等组成。
发光二极管连接成共阳极结构。
发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。
因此,二极管公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。
图1 流水灯电路图
2、程序流程图如下。
实验内容:1、开发板接线图
延时
P0口初态循环右移1位
P0口状重新赋值0XFE
开始
P0口输出0XFE
P0是否等于0X00
Y
N
2、开发环境设置
打开keil软件,版本μ Vision2 ,μvision3,μvision4 都一样,在这里用μvision4版本演示,打开之后如下图,有的时候会默认打开上次使用的工程,单击Project 菜单,选择 Close Project 关闭了默认打开的工程,显示下图界面:
我们要建立新的工程,选择Project→ newμ vision projiect…
选择工程要保存的路径,输入工程文件名,如图
点击保存后会弹出一个对话框,要求用户选择单片机型号,可以根据用户使用的单片机来选择,我们使用的STC90单片机是兼容51内核的,Keil C51 几乎支持所有的51内核单片机,51内核具有通用型,如果程序用的资源不是太复杂,我们可以选择任意一款51单片机内核就行。
例程以添加Atmel 的AT89C51来说明。
如图,然后,单击确定(OK)。
功能描述
如果出现下面的界面:单击是就可以,意思是将单片机的启动代码添加到工程,我们不用修改。
到目前我们还没建立一个完整的工程,只是有工程的名字,框架,工程中还没有任何文件代码,(除了启动代码,有的keil 版本不显示启动代码),接下来我们添加文件及代码。
单击菜单File→New 选项,或者单击界面上的快捷图标,新建文件串口如下。
界面显示的Text1就是我们刚刚加入的文件,但是这个文件与我们的工程还没有直接联系起
来,单击图标,保存我们当前的text1文件,输入要保存的文件名,同时要输入文件扩展名,扩展名很关键,用C语言编写的程序,则必须为**.c,汇编语言必须为**.asm(**为文件名),文件名是用户自己取的。
填好文件名后单击保存。
回到编辑界面,单击Target1 前面的“+”号,然后在Source Group 1 上右键单击,选择
Add Files to Group Source Group1,选中我们刚才建立的.c文件,这里是led test.c,
单击add,只需单击一次。
之后单击Close就可以。
回到主界面后,单击Source Group 1前的“+”号,刚刚添加的文件显示在里面。
通过以上步骤我们就建立好了一个工程。
接下来就可以写代码了。
在写代码之前介绍介个常用的按钮:
按钮:用来编译我们正在操作的文件。
按钮:用来编译修改过的文件,并生成应用程序共单片机下载。
按钮:用来重新编译当前工程中所有的文件,并生成应用程序共单片机下载。
因为很多工程不止有一个文件,当有多个文件时,用它进行编译。
按钮:用来打开“Option for Target”对话框,对当前工程进行设置。
工程的各个参数都可以在这里设置,具体的设置方法用到的时候,再和大家详细讲述。
以上几个按钮是常用的,其他按钮在使用的时候再介绍。
3、编写程序
实验名: 流水灯实验
实验说明 : 延时实现LED流水灯效果P0口八个灯作跑马灯。
//--包含你要使用的头文件
#include <reg52.h> //此文件中定义了52的一些特殊功能寄存器
#include <intrins.h>
//--声明全局函数--//
void Delay10ms(unsigned int c); //延时10ms
/****************************************************************************** * 函数名 : main
* 函数功能 : 主函数
* 输入 : 无
* 输出 : 无
******************************************************************************/
void main()
{
unsigned char LED;
LED = 0xfe; //0xfe = 1111 1110
while (1)
{
P0 = LED;
Delay10ms(50);
LED = LED << 1; //循环右移1位,点亮下一个LED "<<"为左移位
if (P0 == 0xFF) //当它全灭的时候,重新赋值
{
LED = 0xfe; // 0xfe = 1111 1110
}
}
}
/****************************************************************************** * 函数名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输入 : 无
* 输出 : 无
******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}。