24个流水灯设计程序(流水灯程序设计流程图)
本篇文章给大家谈谈24个流水灯设计程序,以及流水灯程序设计流程图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
单片机程序设计:24位流水灯
// 功能 :p0口八个灯作3路跑马灯
#includereg51.h
#define uchar unsigned char
#define uint unsigned int
#define led_data P0 //数据口定义
//延时程序
void delay(uint a)
{
uint i,j;
for(i=a;i0;i--)
{
for(j=4000;j0;j--) ;
}
}
//主程序
void main()
{
while(1)
{
led_data=0xdb;
delay(5); //延时一段
led_data=0x6d;
delay(5); //延时一段
led_data=0xb6;
delay(5); //延时一段
}
}
; 功能 :p0口八个灯作3路跑马灯;
LED_DATA EQU P0 ;数据口定义
ORG 0000H
LJMP MAIN
ORG 030H
MAIN: MOV LED_DATA,#0DBH ;11011011--零为亮
ACALL DELAY ;延时一段
MOV LED_DATA,#06DH ;01101101
ACALL DELAY ;延时一段
MOV LED_DATA,#0B6H ;10110110
ACALL DELAY ;延时一段
AJMP MAIN ;跳转回主程序
DELAY: MOV R7,#255 ;延时子程序
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET END
流水灯亮依次为13亮24亮57亮68亮的程序
;即轮流点亮C口的8个灯(先点亮RC0,再熄灭RCO点亮RC1。。。。)
;硬件要求:拨码开关S2全部置ON。
#includep16f877A.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 ;程序人口地址
; addlw 0ffh
;**********************主程序开始***********************
main
nop ;ICD所需要的一条空指令
clrf PORTC ;先清楚C口所有显示
banksel TRISC ;选择I/O口方向寄存器所在的体
clrf TRISC ;设置C口全为输出
clrf STATUS ;返回体0
movlw .8
movwf count ;装载循环次数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
movlw del_va1 ;延时程序外层参数
movwf 30h
movlw del_va2 ;延时程序内层参数
movwf 31h
decfsz 31h,1
goto $-1
decfsz 30h,1
goto $-4
return
;********************程序结束****************************
end
流水灯程序设计
很简单啊
你没有说是用C语言编写还是用汇编啊
(汇编我还没学)
=======================
电路可以这样设计,
①P3口接4*4矩阵键盘或是直接接8个按键。
②P0口、P2口 合起来共16个I/O口,直接接16个发光二级管。
注意I/O口接三极管的负极,三极管正极串上一个1K的保护电阻,然后接+5V。
别忘了P2口的上拉电阻,用10*8的排阻就行(排阻公共端接+5V)
其他的就是复位电路、晶振、电源、程序下载口了,都比较简单,而且都是固定模式。
指示灯直接用发光二级管串分压电阻接到电源就行了。
电源可以用7805稳压(输入电压5V时),或者直接用5V电就行了。
=====================================================================
写程序方面:
数量比较多,流水灯设计宜用位操作,
①流水灯
for(i=0;i7;i++)
{
P2=~pow(2,i);delay(500);
}
这样就是8位流水灯了
剩下的8个一样。
delay是一个延时函数,就是让单片机空转消耗时间,可以这样
delay(int time)
{int x=0,y=0;
for(x=0;xtime;x++)
for(y=0;y100;y++);
}
②16灯逐个点亮。
P2=0xff;(开始8个灯都灭)
for(i=0;i7;i++)
{
P2=P2--;(每次点亮一盏灯)
delay(500);
}
这样就可以8位的流水灯
另外8个接下来一样的方法点亮,
这样就是16灯逐个点亮。
============
③逐渐点亮一个灯
用延时长短来控制
sbit P20=P2^0;
int m=500
for(i=0;i500;i++)
{
P20=1;delay(m);(灭P2.0口的灯)
P20=0;delay(500-m);(亮P2.0口的灯)
m--;
}
这样就可以500级渐亮一个灯了。
渐灭类似。
④ A-D-A
循环可以用for()来实现
或者直接来有条件跳转。
goto就行了
=========================
说的比较零碎,自己整合一下就OK;
24个流水灯设计程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于流水灯程序设计流程图、24个流水灯设计程序的信息别忘了在本站进行查找喔。