P1口点亮多个LED灯(C程序)(精)

合集下载

此程序是用单片机的p1口接八个led灯作跑马灯试验

此程序是用单片机的p1口接八个led灯作跑马灯试验

拆字程序Org 0000hMov A , 2000HAdd A ,#F0HMOV 2001H ,AMOV A ,2000HADD A , #0FHMOV 2002H , AMOV A , 2001HADD A , 2002HEND拆分BCD 码?***************************************************************************;此程序是用单片机的p1口接八个led灯作跑马灯试验,八个led依次亮了又熄灭,形成漂亮;的跑马灯。

本人已经试验成功。

;单片机教程网 原创;该8路单片机跑马灯程序代码简单,电路也容易搭建,只需把led接在p1口上就可以了,希望大家能试验成功顺利的完成跑马灯报告;***************************************************************************org 0000hloop0:cjne r0 ,#01h,rel,loop0 ;判断开关打开情况ajmp start;跳转到程序开始org 0030h;定义起始汇编地址start:mov a,#0ffh ;clr c ;mov r2,#08h ;循环八次。

loop: rlc a ;带进位左移。

mov p1,a ;此时led灯开始有反映了。

call delay ;延时djnz r2,loop ;循环(djnz条件判断)mov r2,#07h ;loop1: rrc a ;带进位右移mov p1,a ;此时led灯开始有反映了。

call delay ;djnz r2,loop1 ;反复循环jmp start ;回到程序的开头delay: mov r3,#20 ;延时子程序d1: mov r4,#20d2: mov r5,#248djnz r5,$djnz r4,d2```````````````````````````````````````````````---------3路单片机跑马灯程序---------------------------------------ORG 0000HLJMP MAINORG 030HMAIN: MOV P1,#0DBH ;化为2进制为11011011--0状态时led灯亮ACALL DELayMOV P1,#06DH ;化为2进制为01101101ACALL DELay ;MOV P1,#0B6H ;化为2进制为10110110ACALL DELayAJMP MAINdelay: mov r7,#255d1: mov r6,#255d2: djnz r6,d2djnz r7,d1retend。

实验二控制LED灯点亮实验(精)

实验二控制LED灯点亮实验(精)

实验二控制 LED 灯点亮实验一、实验目的1.. 进一步熟悉单片机编程和程序调试方法2. 学习 P1口的使用方法3. 学习延时子程序的编写和应用二、实验内容1.让实验板上的第 1、 3、 5、 7位置上的灯与第 2、 4、 6、 8位置上的灯交替闪烁。

2、设计出如下要求的流水灯程序。

变化要求:先从第 4个灯向左逐个点亮,接着从第 5个灯向右逐个点亮,然后, 从第 1个向右、第 8个向左同时开始的向内逐个点亮再从中间向两边逐个点亮的。

三、实验相关说明1、实验电路原理图100注意:在实验报告中,请画出实际运行你程序的电路的原理图2、 LED 灯控制。

从电路原理图可看到 ,当 P1 .0端口输出高电平,即 P1.0=1时 ,发光二极管 L1熄灭;当 P1 .0输出低电平即 P1 .0=0时, L 1亮;在汇编语言里可用 SETB P1.0指令使 P 1. 0端口输出高电平 ,用 CLR P1.0指令使 P1 .0 端口输出低电平, 从而控制 LED 的亮、灭。

注意:实验板是用哪个口连接了 LED 。

3.延时子程序的设计、应用单片机指令的执行时间很短,时间在微秒级,因此,如果我们想看灯闪烁, 那么就必须在用指令控制灯处于亮或灭的状态后, 保证那状态维持一段时间后再转换成另一状态。

如何做到维持一段时间呢?方法有很多, 其中最易实现的一种方法是:通过插入一段程序, 每条指令执行都需要 1个或若干个机器周期的时间。

因而执行完这段程序就过了一段时间, 通常把这称为延时。

延时程序一般采用单重或多重循环程序。

可以根据需要延时的时间来设计这段程序包含哪些指令、循环次数。

设计举例如下:若单片机晶振为 12MHz ,因此,则单片机的 1个机器周期为 1微秒,则下面这段循环程序中每条指令执行所需的机器周期数及其要花的时间列在下面。

机器周期微秒MOV R6,#20 2个机器周期 2D1: MOV R7,#248 2个机器周期 2×20DJNZ R7,$ 2个机器周期 2×248×20DJNZ R6,D1 2个机器周期 2×20=4010002 因此,上面的延时程序时间为10.002ms 。

单片机C语言LED灯点亮程序完全版之欧阳学创编

单片机C语言LED灯点亮程序完全版之欧阳学创编

1例子1第二个灯亮#include<reg52.h>void main(){P1=0xfd;}#include<reg52.h>Sbit D1=P1^0;V oid main(){D1=0}注意:稍微改程序时需重新hex化例子2第一个灯亮#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{led1=0;//将单片机P1.0口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

}例子3第一个灯亮#include<reg52.h> //52单片机头文件void main() //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110while(1); //程序停止在这里,在后面会讲到为什么这样写。

}2例子1第三个灯闪烁fir循环#include<reg52.h>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<reg52.h>sbit D2=P1^2;unsigned int a;void main(){a=5000;D2=0;while(a--);a=5000;D2=1;while(a--);}2.#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000led1=0;//点亮灯while(i--); //延时i=50000;led1=1; //熄灭灯while(i--);}}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口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

单片机C语言LED灯点亮程序完全版之欧阳家百创编

单片机C语言LED灯点亮程序完全版之欧阳家百创编

1例子1第二个灯亮欧阳家百(2021.03.07)#include<reg52.h>void main(){P1=0xfd;}#include<reg52.h>Sbit D1=P1^0;V oid main(){D1=0}注意:稍微改程序时需重新hex化例子2第一个灯亮#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{led1=0; //将单片机P1.0口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

}例子3第一个灯亮#include<reg52.h> //52单片机头文件void main() //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110while(1); //程序停止在这里,在后面会讲到为什么这样写。

}2例子1第三个灯闪烁fir循环#include<reg52.h>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<reg52.h>sbit D2=P1^2;unsigned int a;void main(){a=5000;D2=0;while(a--);a=5000;D2=1;while(a--);}2.#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000led1=0; //点亮灯while(i--); //延时i=50000;led1=1; //熄灭灯while(i--);}}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口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

led点亮电路的c语言程序设计

led点亮电路的c语言程序设计

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灯点亮(C语言)

单片机控制LED灯点亮(C语言)

将0xfe赋给P1口,然后使用移位函数来改变P1口的值,达到流水灯的效果 移位函数: _crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回 。 _crol_,_cror_: c51中的intrins.h库函数
程序如下:
随后会弹出一个对话框,要求选择单片机的型号。在该对话框中显示了Vision2的器件数据库,从中可以根据使用的单片机来选择。
PART ONE
AT89S52
8051 based Full Static CMOS controller with Three-Level Program Memory Lock, 32 I/O lines, 3 Timers/Counters, 8 Interrupts Sources, Watchdog Timer, 2 DPTRs(DATA POINTER REGISTERS ), 8K Flash Memory, 256 Bytes On-chip RAM 基于8051全静态CMOS控制器、 三级加密程序存储器 、 32个I/O口 、三个定时器/计数器 、八个中断源 、看门狗定时器、2 个数据指针 寄存器、8k字节Flash,256字节片内RAM
十六进制整常数
十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。 以下各数是合法的十六进制整常数: 0X2A(十进制为42) 0XA0 (十进制为160) 0XFFFF (十进制为65535) 以下各数不是合法的十六进制整常数: 5A (无前缀0X) 0X3H (含有非十六进制数码)
各种进位制的对应关系
十进制
二进制
十六进制
十进制
二进制
十六进制
0
0
0
9
1001

实验二P1口控制LED发光二极管

实验二P1口控制LED发光二极管

实验二 P1口控制LED发光二极管一、实验目的1、进一步熟练Proteus及Keil软件的基本操作2、掌握8051单片机P1口的使用方法3、掌握LED发光二极管的原理及使用方法4、学习汇编程序的调试及仿真方法二、实验电路三、实验内容及步骤:要求:8个LED发光二极管循环左移显示(发光的移位),间隔时间为一秒。

1、使用Proteus画出电路原理图2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件3、进行Protues与Keil uVision联动的相关设置:4、在Proteus中仿真运行。

四、思考1、将本实验的实验现象改为“不发光二极管循环移位”。

2、将本实验的实验现象改为“每隔0.5秒发光二极管循环移位”。

参考程序:ORG 0LJMP MAINORG 30H MAIN: MOV A,#0FEH LOOP: MOV P1,ALCALL DELAYRL ASJMP LOOP DELAY: MOV R7,#20H DELAY1:MOV R6,#200 DELAY2:MOV R5,#123DJNZ R5,$DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND实验三数码管静态显示实验一、实验目的1、进一步熟悉51系列单片机2、了解8051单片机P0口的使用方法3、掌握共阴极数码管的原理及使用方法4、学习8051的编程、调试、编译、仿真。

二、实验电路图3 数码管静态显示电路原理图注:数码管要从元件库选择Optoelectronics类中的7SEG-COM-CAT-GRN。

三、要求及步骤:要求:在七段数码管上以递增方式循环显示数字0—9,间隔时间为一秒。

1、使用Proteus画出电路原理图2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件3、进行Protues与Keil uVision联动的相关设置:4、在Proteus中仿真运行。

四、思考1、为什么要将P0口各引脚通过电阻R3-R9接到电源?2、如何在共阴数码管上循环显示十六进制数字0—F(不区分字母的大小写)?3、怎样修改程序使数字以递减方式循环显示?4、若用共阳极数码管应如何修改电路和程序,才能完成本实验的功能?参考程序:ORG 00HLJMP STARTORG 30HSTART: MOV DPTR,#TABLES1: MOV R4,#00HS2: MOV A,R4MOVC A,@A+DPTRMOV P0,ALCALL DELAYINC R4CJNE R4,#0AH,S2SJMP S1DELAY: MOV R5,#20 ;延时子程序D2: MOV R6,#200D1: MOV R7,#123DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE: DB 3FH,06H,5BH,4FH,66H ;段码表DB 6DH,7DH,07H,7FH,6FHEND实验四基本输入/输出实验一、实验目的1、进一步熟悉8051单片机并行I/O口的使用方法3、掌握并行I/O口输入/输出操作的方法4、学习8051的编程、调试、编译、仿真。

单片机控制LED灯点亮(C语言)

单片机控制LED灯点亮(C语言)

单片机控制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语言LED灯点亮程序完全版之欧阳理创编

单片机C语言LED灯点亮程序完全版之欧阳理创编

1例子1第二个灯亮#include<reg52.h>void main(){P1=0xfd;}#include<reg52.h>Sbit D1=P1^0;V oid main(){D1=0}注意:稍微改程序时需重新hex化例子2第一个灯亮#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{led1=0; //将单片机P1.0口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

}例子3第一个灯亮#include<reg52.h> //52单片机头文件void main() //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110while(1); //程序停止在这里,在后面会讲到为什么这样写。

}2例子1第三个灯闪烁fir循环#include<reg52.h>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<reg52.h>sbit D2=P1^2;unsigned int a;void main(){a=5000;D2=0;while(a--);a=5000;D2=1;while(a--);}2.#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000led1=0; //点亮灯while(i--); //延时i=50000;led1=1; //熄灭灯while(i--);}}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口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

单片机C语言LED灯点亮程序完全版之欧阳语创编

单片机C语言LED灯点亮程序完全版之欧阳语创编

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口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

}例子3第一个灯亮#include<reg52.h> //52单片机头文件void main() //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110while(1); //程序停止在这里,在后面会讲到为什么这样写。

}2例子1第三个灯闪烁fir循环#include<reg52.h>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<reg52.h>sbit D2=P1^2;unsigned int a;void main(){a=5000;D2=0;while(a--);a=5000;D2=1;while(a--);}2.#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000led1=0;//点亮灯while(i--); //延时i=50000;led1=1; //熄灭灯while(i--);}}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口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

控制P1口的8只LED灯每0.5秒闪亮一次

控制P1口的8只LED灯每0.5秒闪亮一次

单片机课程设计论文题目:控制P1口的8只LED灯每0.5秒闪亮一次系部电子信息工程学院专业通信工程学号姓名指导教师程亮亮2015年6月25日摘要现当今,单片机的应用无处不在。

利用单片机控制灯具的实例也不胜枚举,可控制灯具的芯片也相当之多,而利用单片机控制灯具,达到人们预想效果的方法最为广泛。

它有功能多、价格优、外部电路简单的特点,深受单片机爱好者及灯具控制制造商的青昧,用80C51 单片机及少数外部电路控制LED灯光,使LED灯产生明暗效果,并在灯光达到最亮与最暗时伴随响亮的告警音。

通过硬件电路的制作以及软件程序的编制,使灯光的亮度与告警音配合得当。

LED又称为发光二极管,是一种新型光源,具有高效节能、绿色环保、使用寿命长等其他光源无法比拟的优点。

作为绿色照明光源产品,国家绿色照明推广使用的产品,代表着未来照明技术的发展方向。

本文介绍了以STC89C52为控制核心,利用PWM调光技术,通过调整PWM的周期、PWM的占空比从而控制电流,进而达到对LED进行光度亮暗的控制调节的效果,实现对LED灯的PWM调光控制。

关键词:单片机;LED灯;软件程序AbstractNowadays, the application of single chip microcomputer. SCM is used to control the lamps and lanterns of examples are numerous, control the lamps and lanterns of chip is quite much, and using single chip computer control lamps and lanterns, achieve expected effect of the method is the most widely used. It has multi functions, excellent prices, the characteristics of the external circuit is simple, by the Qing Mei single-chip lovers and lamp control manufacturers, with 80C51 microcontroller and a few external circuit to control the LED light, LED lamp has the effect of light and shade, and the light to the brightest and darkest with loud alarm sound. Through the production of the hardware circuit and software program, the brightness of the lighting and sound alarm.LED is also known as light-emitting diode, is a new type of light source, with high efficiency, energy saving, environmental protection, long service life and other light source can not match the advantages. As a green light source products, national green lighting to promote the use of products, representing the development direction of future lighting technology. STC89C52 as control core, using PWM dimming technology, by adjusting the PWM cycle, PWM accounted for empty than to control electric current, thus achieving the photometric light and dark control and regulation of the effect of the LED, LED lamp dimming with PWM control is introduced in this paper.Key words: single chip microcomputer; LED; software program目录摘要 (Ⅱ)Abstract (Ⅲ)目录 (Ⅳ)前言 (1)1:制P1口8只LED灯每0.5秒闪亮一次原理图 (2)1.1原理图 (2)1.2原理图器件 (2)1.3原理图参数设置说明 (3)1.4 PCB板图 (4)2:制P1口8只LED灯每0.5秒闪亮一次程序 (5)2.1 程序 (5)2.2 程序原理详细介绍 (5)3:件流程图 (7)3.1流程图的优点 (7)3.2流程图采用的符号 (7)3.3软件流程图制作软件 (7)3.4流程图 (7)4:软件仿真 (9)4.1 Proteus仿真原理图 (9)参考文献 (11)前言:单片机技术飞速发展,单片机的应用已经渗透到了国民经济的各个领域,处处影响着人们的生活,它的出现给现代工业测控领域带来了一次新的技术革命。

单片机C语言LED灯点亮程序完全版之欧阳音创编

单片机C语言LED灯点亮程序完全版之欧阳音创编

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口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

}例子3第一个灯亮#include<reg52.h> //52单片机头文件void main() //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110while(1); //程序停止在这里,在后面会讲到为什么这样写。

}2例子1第三个灯闪烁fir循环#include<reg52.h>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<reg52.h>sbit D2=P1^2;unsigned int a;void main(){a=5000;D2=0;while(a--);a=5000;D2=1;while(a--);}2.#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000led1=0;//点亮灯while(i--); //延时i=50000;led1=1; //熄灭灯while(i--);}}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口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

51单片机技术应用教程(C语言版)项目四 花样霓红灯的设计与制作

51单片机技术应用教程(C语言版)项目四 花样霓红灯的设计与制作

函数 atoi atol atof strtod strtol strtoul
rand srand calloc free init_mempool
malloc realloc
功能 将字符串sl转换成整型数值并返回这个值 将字符串sl转换成长整型数值并返回这个值 将字符串sl转换成浮点数值并返回这个值 将字符串s转换成浮点型数据并返回这个值 将字符串s转换成long型数值并返回这个值 将字符串s转换成unsigned long型数值并返回这个值
5.请写出二维数组的格式,并举例说明。
51单片机技术应用活页式教程(C语言版)
项目四 花样霓虹灯的设计与制作
4.1 C51库函数
知识 链接
4.2 用户自定义函数 4.3 C51数组
【知识点4.1】 C51库函数
• 函数有库函数和自定义函数两类。 • C51的库函数由C51的编译器提供,每个库函数的原型放
使单片机程序产生延时 对字节中的一位进行测试
【知识点4.2】用户自定义函数
• 1.用户自定义函数的形式
• (1)无参数函数。此种函数被调用时,既无参数输入,也不返回结果给调用函数,它 是为完成某种操作过程而编写的。
• (2)有参数函数。在定义此类函数时,必须定义与实际参数一一对应的形式参数,并 在函数结束时返回结果给调用该函数的程序使用,函数的返回值是通过函数中的return 语句获得的。调用时必须提供实际的输入参数。
如果P1口接了8个LED灯,该程序的功能是:
51单片机技术应用活页式教程(C语言版)
项目四 花样霓虹灯的设计与制作
【引导学习】
2. 请接合第1题程序,请写出有参与无参、形参与实参的含义。
3.请用字符型数组定义LED,存放流水灯8种显示状态,存放在程 序存储器中。 4.请用一维数组定义LED数码管的0-9的显示编码。

通过编程可实现P0口上的八个发光二极管出现...-世界(精)

通过编程可实现P0口上的八个发光二极管出现...-世界(精)

第二次上机作业通过编程可实现P1口上的八个发光二极管出现不同的闪烁效果,就是要改变I/O口上的电平变化来控制的,既低电平亮、高电平灭。

要让二极管循环闪烁,就是让低电平从右到左循环移动。

下面简单的编写一段使P1.0、P1.5、P1.7口上的三个二极管闪烁的程序,延时时间约为1s。

通过编译可知:如果连接这三个二极管的I/O口处于低电平,二极管就亮了;如果连接这三个二极管的I/O口处于高电平,则灭了。

程序如下:#include <reg51.h>sbit p1_0=P1^0;sbit p1_5=P1^5;sbit p1_7=P1^7;#define uint unsigned int#define uchar unsigned charvoid delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){p1_0=0;p1_5=1;p1_7=1;delay(1000);p1_0=1;p1_5=0;p1_7=0;delay(1000);在调试界面"View"-“Serial Window #1串行输出窗口可以看到4433221100这10个数字。

以下做个简单说明:1、在程序中进行串口初始化时设置相应的波特率。

2、在程序中定义了整形数据a和i以及分别赋予2和10,当程序执行到while(i--)时,会循环执行10次每次输出一个数字,所以就会看到串行输出调试窗口中输出10个数字。

3、每执行一次printf(“%d\n“,i/a)就会输出一次。

4、“\n”这时换行符,所以我们看到一行只有一个数字。

5、“i/a”是i的值除以a的值的商的整数部分,在执行printf(“%d\n“,i/a)之前,i的值已经先自减1变成9了,所以9/2商4余1,所以输出的第一个数字是4,执行完后i的值不为0再自减1变成8,8/2商4,所以第二个输出的数字也是4,以此类推,当i值减为0时,0/2商0,所以输出的是0.在调试界面"View"-“Serial Window #1串行输出窗口可以看30。

51单片机P1口亮灯实验

51单片机P1口亮灯实验

微机原理及单片机应用实

实验报告
实验P1亮灯
一、实验内容
P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

二、实验步骤
P1.0~P1.7用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。

三、实验原理图
实验程序框图:
实验接线图:
四.实验程序清单
ORG 0000H
LJMP SE18
ORG 0790H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1发光二极管点亮LO33: MOV P1,A
LCALL SE19 ;延时
RL A ;左移位
SJMP LO33 ;循环
ORG 07A0H
SE19: MOV R6,#0A0H
LO36: MOV R7,#0FFH
LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时
RET
END
五、实验总结
1、通过实验我们熟悉了51单片机的仿真开发系统,熟悉了编译连接的过程。

2、通过实验了解了P1口的工作原理,通过程序编写调试使LED灯循环点亮。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档