单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS),第1张

单片机流水灯C语言程序的源代码如下:

#include //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint)//声明延时函数

void main(void)

{

uint i

uchar temp

while(1)

{

temp=0x01

for(i=0i<8i++) //8个流水灯逐个闪动

{

P1=~temp

delay(100)//调用延时函数

temp<<=1

}

temp=0x80

for(i=0i<8i++) //8个流水灯反向逐个闪动

{

P1=~temp

delay(100)//调用延时函数

temp>>=1

}

temp=0xFE

for(i=0i<8i++) //8个流水灯依次全部点亮

{

P1=temp

delay(100)//调用延时函数

temp<<=1

}

temp=0x7F

for(i=0i<8i++) //8个流水灯依次反向全部点亮

{

P1=temp

delay(100)//调用延时函数

temp>>=1

}

void delay(uint t) //定义延时函数

{

register uint bt

for(tt--)

for(bt=0bt<255bt++)

}

扩展资料

51单片机流水灯的源代码如下

#include<reg51.h>

#include<intrins.h>

void delay(int a)

{

int i

while(a--)for(i=0i<110i++)

}

main()

{

int i

while(1)

{

P0=0xfe

for(i=0i<8i++)

{

P0=_crol_(P0,1)

delay(500)

}

}

}

程序如下:

#include <reg52.h>

sbit led1 = P2^0

sbit led2 = P2^1

sbit led3 = P2^2

sbit led4 = P2^3。

让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。

从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期。

无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用。

实验目的:本程序主要实现一个简单的流水灯程序

即轮流点亮C口的8个灯(先点亮RC0,再熄灭RCO点亮RC1。。。。)

硬件要求:拨码开关S2全部置ON。

#include<p16f877A.inc> 调用头文件

__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC

芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

**********************用户寄存器定义********************

count equ 20h 移位次数寄存器

del_va1 equ 0ffh 外层延时参数

del_va2 equ 0ffh 内层延时参数

org 00h 程序人口地址

addlw0ffh

**********************主程序开始***********************

main

nop ICD所需要的一条空指令

clrf PORTC 先清楚C口所有显示

banksel TRISC 选择I/O口方向寄存器所在的体

clrf TRISC 设置C口全为输出

clrf STATUS 返回体0

movlw.8

movwfcount 装载循环次数8(C口共8位)

bsf STATUS,C置进位标志位为1,因循环移位是带进位循环的

loop

rlf PORTC,1 C口左移1位

call delay

call delay

CALL delay 调用三次延时程序(保证亮度,以及流水灯闪烁速度)

bcf STATUS,C清0进位标志位(永远只有一只LED亮)

DECFSZ count,1 判断是否一轮循环结束

goto loop否,继续循环移位

GOTO main是,程序重头开始

***********************延时程序*************************

delay

movlwdel_va1 延时程序外层参数

movwf30h

movlwdel_va2 延时程序内层参数

movwf31h

decfsz 31h,1

goto $-1

decfsz 30h,1

goto $-4

return

********************程序结束****************************

end


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

原文地址: http://outofmemory.cn/yw/7692888.html

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

发表评论

登录后才能评论

评论列表(0条)

保存