单片机C语言LED灯点亮程序完全版
- 格式:docx
- 大小:168.03 KB
- 文档页数:8
单片机c语言闪烁灯程序Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】1.闪烁灯1.实验任务如图所示:在端口上接一个发光二极管L1,使L1 在不停地一亮灭,一亮一灭的时间间隔为秒。
2.电路原理图图系统板上硬件连线把“单片机系统”区域中的端口用导线连接到“八路发光二极管指示块”区域中的L1 端口上。
4.程序设计内容(1).延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢下面具体介绍其原理:2如图所示的石英晶体为12MHz,因此,1 个机器周期为1 微秒机器周期微秒MOV R6,#20 2 个机器周期2D1: MOV R7,#248 2 个机器周期2 2+2×248=498 20×DJNZ R7,$ 2 个机器周期2×248 498DJNZ R6,D1 2 个机器周期2×20=4010002因此,上面的延时程序时间为。
由以上可知,当R6=10、R7=248 时,延时5ms,R6=20、R7=248 时,延时10ms,以此为基本的计时单位。
如本实验要求秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET(2).输出控制如图1 所示,当端口输出高电平,即=1 时,根据发光二极管的单向导电性可知,这时发光二极管L1 熄灭;当端口输出低电平,即=0 时,发光二极管L1 亮;我们可以使用SETB 指令使端口输出高电平,使用CLR 指令使端口输出低电平。
5.程序框图如图所示3图汇编源程序ORG 0START: CLRLCALL DELAYSETBLCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时秒 D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7. C 语言源程序#include <>sbit L1=P1^0;void delay02s(void) //延时秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s(); 4L1=1;delay02s(); }}。
1. 闪烁灯1. 实验任务如图4、1、1 所示:在P1、0 端口上接一个发光二极管L1,使L1 在不停地一亮灭,一亮一灭的时间间隔为0、2 秒。
2. 电路原理图图4、1、13. 系统板上硬件连线把“单片机系统”区域中的P1、0 端口用导线连接到“八路发光二极管指示块”区域中的L1 端口上。
4. 程序设计内容(1). 延时程序的设计方法作为单片机的指令的执行的时间就是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0、2 秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序就是如何设计呢?下面具体介绍其原理:2如图4、1、1 所示的石英晶体为12MHz,因此,1 个机器周期为1 微秒机器周期微秒MOV R6,#20 2 个机器周期2D1: MOV R7,#248 2 个机器周期2 2+2×248=498 20×DJNZ R7,$ 2 个机器周期2×248 498DJNZ R6,D1 2 个机器周期2×20=4010002因此,上面的延时程序时间为10、002ms。
由以上可知,当R6=10、R7=248 时,延时5ms,R6=20、R7=248 时,延时10ms,以此为基本的计时单位。
如本实验要求0、2 秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET(2). 输出控制如图1 所示,当P1、0 端口输出高电平,即P1、0=1 时,根据发光二极管的单向导电性可知,这时发光二极管L1 熄灭;当P1、0 端口输出低电平,即P1、0=0 时,发光二极管L1 亮;我们可以使用SETB P1、0 指令使P1、0 端口输出高电平,使用CLR P1、0 指令使P1、0 端口输出低电平。
1例子1第二个灯亮include<reg52.h>void main{P1=0xfd;}include<reg52.h>Sbit D1=P1^0;Void main{D1=0}注意:稍微改程序时需重新hex化例子2第一个灯亮include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main //主函数{led1=0; //将单片机P1.0口清零while1; //程序停止在这里,在后面会讲到为什么这样写.}例子3第一个灯亮include<reg52.h> //52单片机头文件void main //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110while1; //程序停止在这里,在后面会讲到为什么这样写.}2例子1第三个灯闪烁fir循环include<reg52.h>sbit D2=P1^2;unsigned int a;void main{D2=0;fora=0;a<=10000;a++{};D2=1;fora=0;a<=10000;a++{};}例子2第三个闪烁while循环include<reg52.h>sbit D2=P1^2;unsigned int a;void main{a=5000;D2=0;whilea--;a=5000;D2=1;whilea--;}2.include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main //主函数{unsigned int i; //定义一个int型变量while1{i=50000; //变量赋初值为50000led1=0; //点亮灯whilei--; //延时i=50000;led1=1; //熄灭灯whilei--;}}3例子1 3 5 7灯同时亮include<reg52.h> //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口清零while1; //程序停止在这里,在后面会讲到为什么这样写.}例子2 1 3 5 7同时亮include<reg52.h> //52单片机头文件void main //主函数{P1=0xaa; //将单片机P1口的8个口由高到低分别赋值为10101010while1; //程序停止在这里,在后面会讲到为什么这样写.}例子3流水灯一个一个接着亮不循环include<reg52.h> //52单片机头文件void main //主函数{unsigned int i; //定义一个int型变量while1{i=50000; //变量赋初值为50000P1=0xfe; //点亮第一个灯whilei--; //延时i=50000; //变量赋初值为50000P1=0xfd; //点亮第二个灯whilei--; //延时i=50000; //变量赋初值为50000P1=0xfb; //点亮第三个灯whilei--; //延时i=50000; //变量赋初值为50000P1=0xf7; //点亮第四个灯whilei--; //延时i=50000; //变量赋初值为50000P1=0xef; //点亮第五个灯whilei--; //延时i=50000; //变量赋初值为50000P1=0xdf; //点亮第六个灯whilei--; //延时i=50000; //变量赋初值为50000P1=0xbf; //点亮第七个灯whilei--; //延时i=50000; //变量赋初值为50000P1=0x7f; //点亮第八个灯whilei--; //延时}}例子4include<reg52.h>include <intrins.h>define uint unsigned intdefine uchar unsigned char uchar temp,num,num1;sbit beep=P2^3;void delayuint;void main{temp=0xfe;while1{fornum1=0;num1<3;num1++ {fornum=0;num<8;num++{P1=temp;beep=0;delay100;temp=_crol_temp,1;P1=0xff;beep=1;delay100;}}fornum1=0;num1<3;num1++{fornum=0;num<8;num++{P1=temp;beep=0;delay100;temp=_cror_temp,1;P1=0xff;beep=1;delay100;}}while1;}}void delayuint z{uint x,y;forx=z;x>0;x--fory=110;y>0;y--;}4延时子程序void delay{uint x;forx=100;x>0;x--{};}For的嵌套void delay{uint x,y; %局部变量forx=100;x>0;x-- %小括号后不加分号fory=600;y>0;y--; %小括号后的分号表示该语句是上一条语句的,分号将该句与下句隔开或者{fory=600;y>0;y--;}include<reg52.h>例子1include<reg52.h>define uint unsigned intdefine uchar unsigned charsbit D1=P1^0;void delay; %注意分号不能少void main{while1{D1=0;delay;D1=1;delay;}}void delay{uint x,y;forx=100;x>0;x--fory=600;y>0;y--;}带参数的比不带参数的要方便例子2无参和有参的对比include<reg52.h>define uint unsigned intdefine uchar unsigned charsbit D1=P1^0;//void delay;void delayuint;%带一个参数的,参数类型必须要写,参数可不写.比如可以写成uint z.也可以带多个参数void main{while1{D1=0;delay1200;%亮2秒D1=1;delay1200;}}/void delay{uint x,y;forx=100;x>0;x--fory=600;y>0;y--; }/void delayuint z{uint x;uchar y;forx=z;x>0;x--}例子3include<reg52.h> define uint unsigned int define uchar unsigned char sbit D1=P1^0;void delayuint;void main{while1{D1=0;delay1200;D1=1;delay1200;}}void delayuint z{uint x;uchar y;forx=z;x>0;x--}5循环左移三位如10100101a5-001011012d。
led点亮电路的c语言程序设计以下是一个简单的使用C语言编写的LED点亮电路的程序:
c
#include <stdio.h>
#include <wiringPi.h>
#define LED_PIN 4
int main(void) {
初始化wiringPi库
if (wiringPiSetup() == -1) {
printf("wiringPi初始化失败!\n");
return 1;
}
设置LED引脚为输出模式
pinMode(LED_PIN, OUTPUT);
while (1) {
点亮LED
digitalWrite(LED_PIN, HIGH);
delay(1000); 延时1秒
关闭LED
digitalWrite(LED_PIN, LOW);
delay(1000); 延时1秒
}
return 0;
}
这个程序使用了WiringPi库,因此在编译之前需要先安装WiringPi库。
可以使用下面的命令在树莓派上安装WiringPi库:
sudo apt-get install wiringpi
编译程序使用下面的命令:
gcc -o led led.c -lwiringPi
然后运行程序:
./led
这个程序会让LED灯每隔1秒钟点亮和熄灭一次,不断循环。
在Raspberry Pi 的GPIO引脚中,将LED的正极连接到GPIO 4引脚,负极连接到地线上。
单片机控制LED灯点亮在嵌入式系统开发中,单片机控制LED灯是入门阶段必不可少的实验。
本文将介绍如何在单片机中使用C语言编程控制LED灯点亮。
硬件准备本实验所需硬件材料如下:•单片机主板•LED灯•杜邦线根据图示,将单片机主板上的引脚和LED灯连接起来。
单片机引脚 LED灯P0.0 +端GND -端软件准备我们选择Keil uVision作为编程环境来编写代码。
在开始编写代码之前,需要下载并安装Keil uVision软件。
新建工程在Keil uVision软件中,通过菜单Project -> New µVision Project新建一个工程。
新建工程新建工程在弹出的对话框中,选择保存工程的路径,命名工程名字,选择MCU型号并确定。
选择MCU型号选择MCU型号添加源文件在Keil uVision软件中,将编写的源代码文件添加到工程中。
选择菜单Project -> Add New Item,在弹出的对话框中选择新建一个源文件。
添加源文件添加源文件编写代码以下是控制LED灯点亮的C语言代码#include <STC89C5xRC.H>int main(void){while(1) {P0 = 0x01; // P0.0 点亮LED灯}}程序的执行流程如下:1.定义一个无限循环,反复执行控制LED灯点亮的操作。
2.将P0.0 IO口设为高电平,点亮LED灯。
编译和烧录完成编写代码之后,可进行编译和烧录。
选择菜单Project -> Build Target进行编译,将生成的hex文件烧录到单片机上即可。
本文介绍了如何在单片机中使用C语言编程控制LED灯点亮的操作。
通过对硬件和软件的介绍,读者可以学习到单片机的基础知识与相关编程知识,对深入学习嵌入式系统和单片机开发有很大的帮助。
用c语言编写点灯程序点灯程序是指利用C语言编写的一段代码,可以控制硬件设备上的LED灯进行开关操作。
在嵌入式系统开发领域,点灯程序是入门级的示例程序,也是初学者熟悉硬件编程的重要一步。
我们需要了解一些基本的硬件知识。
在嵌入式系统中,LED灯是一种常见的输出设备,它通常由一个电源引脚和一个控制引脚组成。
通过控制引脚的高低电平,我们可以控制LED灯的亮灭状态。
在C语言中,我们可以通过操作硬件寄存器来控制LED灯的状态。
下面是一个简单的点灯程序示例:```#include <stdio.h>#include <wiringPi.h>#define LED_PIN 0int main(){// 初始化wiringPi库if (wiringPiSetup() == -1){printf("初始化wiringPi失败!\n");return 1;}// 设置LED引脚为输出模式pinMode(LED_PIN, OUTPUT);while (1){// 点亮LED灯digitalWrite(LED_PIN, HIGH);delay(1000); // 延时1秒// 熄灭LED灯digitalWrite(LED_PIN, LOW);delay(1000); // 延时1秒}return 0;}```以上代码使用了wiringPi库来进行GPIO控制。
首先,我们需要在程序中引入`wiringPi.h`头文件,并且定义LED引脚的宏。
接下来,在`main`函数中,我们先初始化wiringPi库,然后将LED引脚设置为输出模式。
在主循环中,我们使用`digitalWrite`函数将LED引脚的电平设置为高电平,从而点亮LED灯。
然后,通过`delay`函数延时1秒钟。
接着,我们将LED引脚的电平设置为低电平,熄灭LED灯,并再次延时1秒钟。
这样循环执行,LED灯就会周期性地亮灭。