24个流水灯设计程序(流水灯程序设计流程图)

程序设计 165
本篇文章给大家谈谈24个流水灯设计程序,以及流水灯程序设计流程图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、单片机程序设计: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个流水灯设计程序的信息别忘了在本站进行查找喔。

扫码二维码