用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!,第1张

C语言实现LED灯闪烁控制配套51单片机开发板。

#include    //包含单片机寄存器的头文件

/****************************************

函数功能:延时一段时间

*****************************************/

void delay(void)        //两个void意思分别为无需返回值,没有参数传递。

{

unsigned int i       //定义无符号整数,最大取值范围65535。

for(i=0i<20000i++)  //做20000次空循环。

               //什么也不做,等待一个机器周期。

}

/*******************************************************

函数功能:主函数 (C语言规定必须有也只能有1个主函数)。

********************************************************/

void main(void)

{

while(1)      //无限循环。

{

P0=0xfe   //P1=1111 1110B, P0.0输出低电平。

delay()   //延时一段时间。

P0=0xff   //P1=1111 1111B, P0.0输出高电平。

delay()  //延时一段时间。

}

}

单片机驱动LED灯的源程序:

#include<reg52.h>//头文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7//位定义。

void delay_ms(uint)//mS级带参数延时函数。

void main()

{

while(1)

{

LED1=0

delay_ms(1000)

LED1=1

delay_ms(1000)

}

}

void delay_ms(uint z) //延时子程序

{

uint x,y

for(x=zx>0x--)

for(y=110y>0y--)

}

扩展资料:

单片机应用分类:

通用型:

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型:

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。

另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型:

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。

通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

参考资料来源:百度百科-单片机

1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。

2、然后设计单片机端口与LED灯相连,如下图所示,输入代码。

3、接着创建延迟函数,如下图所示,输入以下代码。

4、然后创建C语言主函数,如下图所示,输入以下代码。

5、接着输入对输出取反,最后调用延迟函数,如下图所示就完成了。

NAMET3I/O口扩展实验一

PORTEQU 0CFA0H 片选地址CS0

CSEG AT 0000H

LJMP START

CSEG AT 4100H

START: MOVA,#11H 两个红灯亮,黄灯、绿灯灭

ACALL DISP 调用273显示单元(以下雷同)

ACALL DE3S延时3秒

LLL:MOVA,#12H 东西路口绿灯亮南北路口红灯亮

ACALL DISP

ACALL DE10S 延时10秒

MOVA,#10H 东西路口绿灯灭南北路口红灯亮

ACALL DISP

MOVR2,#05H R2中的值为黄灯闪烁次数

TTT:MOVA,#14H 东西路口黄灯亮南北路口红灯亮

ACALL DISP

ACALL DE02S 延时0.2秒

MOVA,#10H 东西路口黄灯灭南北路口红灯亮

ACALL DISP

ACALL DE02S 延时0.2秒

DJNZ R2,TTT 返回TTT,使东西路口黄灯闪烁五次

MOVA,#11H 两个红灯亮,黄灯、绿灯灭

ACALL DISP

ACALL DE02S 延时0.2秒

MOVA,#21H 东西路口红灯亮南北路口绿灯亮

ACALL DISP

ACALL DE10S 延时10秒

MOVA,#01H 东西路口红灯亮南北路口绿灯灭

ACALL DISP

MOVR2,#05H 黄灯闪烁五次

GGG:MOVA,#41H 东西路口红灯亮南北路口黄灯亮

ACALL DISP

ACALL DE02S 延时0.2秒

MOVA,#01H 东西路口红灯亮南北路口黄灯灭

ACALL DISP

ACALL DE02S 延时0.2秒

DJNZ R2,GGG 返回GGG,使南北路口黄灯闪烁五次

MOVA,#03H 两个红灯亮,黄灯、绿灯灭

ACALL DISP

ACALL DE02S 延时0.2秒

JMPLLL 转LLL循环

DE10S: MOVR5,#100 延时10秒

JMPDE1

DE3S: MOVR5,#30 延时3秒

JMPDE1

DE02S: MOVR5,#02 延时0.2秒

DE1:MOVR6,#200

DE2:MOVR7,#126

DE3:DJNZ R7,DE3

DJNZ R6,DE2

DJNZ R5,DE1

RET

DISP: MOVDPTR,#PORT 273显示单元

CPLA

MOVX @DPTR,A

RET

END

你看看行不行 如果不行你自己再稍微改一下吧 反正大概就这些了

希望对你能有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7758393.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存