STCC单片机花样流水灯C语言程序

合集下载

STC15F单片机流水灯程序设计说明

STC15F单片机流水灯程序设计说明

“流水灯”程序设计说明1程序设计思路流水灯是经典的测试发光二极管是否正常工作和学习使用发光二极管的案例。

流水灯电路连接示意图2关键代码设计说明本程序由三个函数组成:(1)void Init() 初始化函数{P0M1 = 0x00;//0000 0000P0M0 = 0xff;//1111 1111 将P0各位设置为推挽输出P2M1 = 0x00;//0000 0000P2M0 = 0xff;//1111 1111 将P2各位设置为推挽输出led_sel = 1;//为1时是led灯显示,为0时是数码管显示}(2)void delay(uint t):本过程目的是延时tms;但是延时的时间可能不是很准确。

单片机工作时,是在统一的时钟脉冲控制下有序进行的。

这个脉冲是由单片机控制器中的时钟电路产生的。

时钟电路由振荡器和分频器组成,振荡器产生基本的振荡信号,然后进行分频,得到相应的时钟。

振荡电路通常有内部振荡和外部振荡两种方式。

STC15F2K60S2单片机内部集成高精度R/C时钟,工作时钟可以使用内部振荡器或者外部晶体振荡器(简称晶振)产生的时钟。

外部振荡信号通过内部时钟电路,经过分频,得到相应的时钟信号。

图2外部振荡模式工作原理示意图说明:(1)振荡周期:晶体振荡器的周期。

(2)状态周期:振荡信号经二分频后形成的时钟脉冲信号,用S表示。

一个状态周期的两个振荡周期作为两个节拍分别称为节拍P1和节拍P2。

P1有效时,通常完成算术逻辑操作;P2有效时,一般进行内部寄存器之间的传输。

(3)机器周期:完成一个基本操作所需的时间称为机器周期。

一个机器周期包含6个状态周期,用S1、S2、….、S6表示;共12个节拍,依次可表示为S1P1、S1P2、S2P1、S2P2、……、S6P1、S6P2。

(4)指令周期:CPU执行一条指令所需要的时间。

CPU执行指令是在时钟脉冲控制下一步一步进行的,由于指令的功能和长短各不相同,因此,指令执行所需的时间也不一样。

基于STC89C52的键控花样流水灯

基于STC89C52的键控花样流水灯
EX0 = 1;
EA = 1;
IT0 = 1;
while(1)
{
if(label == 0)//从左至右流;i++)
{
delayms(100);
if(label == 0)
P1 = _crol_(P1,1);
else break;
}
}
if(label == 1)//从右至左流水灯
if(label == 4)
P1 = (~(0xfe << i));
else break;
}
}
}
}
void INT_0() interrupt 0
{
delayms(10);
if(BUTTON == 1) return;
label++;
if(label == 5)
label = 0;
//以上三句话也可以通过label = (label+1)%5;来代替
{
P1 = 0x7f;
for(i=0;i<8;i++)
{
delayms(100);
if(label == 1)
P1 = _cror_(P1,1);
else break;
}
}
if(label == 2)//对向流水灯
{
a = 0x7f; b = 0xfe;
for(i=0;i<8;i++)
{
P1 = a&b;//&表示按位与
#define uint unsigned int
sbit BUTTON = P3^2;
uchar label = 0;

51单片机流水灯C语言源代码

51单片机流水灯C语言源代码

51单片机流水灯C语言源代码#include#include#define uint unsigned int#define uchar unsigned char uchar z=50,e=0x00,f=0xff; uchar code table1[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};uchar code table2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; uchar code table3[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};uchar code table4[]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff}; uchar code table5[]={0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff};uchar code table6[]={0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff}; void delay(uchar); void lsd1();void lsd2();void lsd3();void lsd4();void lsd5();void lsd6();void lsd7();void lsd8();void lsd9();void lsd10();void lsd11();void lsd12();main(){while(1){lsd1();lsd2();lsd3();lsd4();lsd5();lsd6();lsd7();lsd8();lsd9();lsd10();lsd11();lsd12();}}void delay(uchar x) //延时函数{uint i,j;for(i=x;i>0;i--)for(j=250;j>0;j--);}void lsd1() //lsd1 单个流水灯双程模式1 { uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i++) //仅单个灯亮从上往下流{ a=_crol_(a,1);P0=a;delay(z);}P0=0xff;a=0xfe;P2=a;delay(z);for(j=0;j<7;j++){a=_crol_(a,1);P2=a;delay(z);}P2=0xff;a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=_crol_(a,1);P3=a;delay(z);}P3=0xff;a=0xfe;P1=a;delay(z);for(l=0;l<7;l++){a=_crol_(a,1);P1=a;delay(z);}a=0xbf;P1=a;delay(z);for(l1=0;l1<6;l1++) //l1==6 仅单个灯亮从下往上流{ a=_cror_(a,1);P1=a;delay(z);}P1=0xff;a=0x7f;P3=a;delay(z);for(k1=0;k1<7;k1++) {a=_cror_(a,1);P3=a;delay(z);}P3=0xff;a=0x7f;P2=a;delay(z);for(j1=0;j1<7;j1++) {a=_cror_(a,1);P2=a;delay(z);}P2=0xff;a=0x7f;P0=a;delay(z);for(i1=0;i1<7;i1++){a=_cror_(a,1);P0=a;delay(z);}P0=0xff;}void lsd2() //lsd2 两个灯流水双程模式1 { uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);a=a<<1;P0=a;delay(z);for(i=0;i<6;i++){a=_crol_(a,1);P0=a;delay(z);}P0=0x7f;P2=0xfe;delay(z);P0=0xff;a=0xfc;P2=a;delay(z);for(j=0;j<6;j++) { a=_crol_(a,1);P2=a;delay(z);}P2=0x7f;P3=0xfe;delay(z);P2=0xff;a=0xfc;delay(z);for(k=0;k<6;k++) { a=_crol_(a,1);P3=a;delay(z);}P3=0x7f;P1=0xfe;delay(z);P3=0xff;a=0xfc;P1=a;delay(z);for(l=0;l<6;l++) {a=_crol_(a,1);P1=a;delay(z);}P1=0x7f;P1=0xff;delay(z);a=0x7f;P1=a;delay(z);a=a>>1;P1=a;delay(z);for(l1=0;l1<6;l1++) { a=_cror_(a,1);P1=a;delay(z);}P1=0xfe;P3=0x7f;delay(z);P1=0xff;a=0x3f;P3=a;delay(z);for(k1=0;k1<6;k1++) { a=_cror_(a,1);P3=a;delay(z);}P3=0xfe;P2=0x7f;delay(z);P3=0xff;a=0x3f;P2=a;delay(z);for(j1=0;j1<6;j1++) {a=_cror_(a,1);P2=a;delay(z);}P2=0xfe;P0=0x7f;delay(z);a=0x3f;P0=a;delay(z);for(i1=0;i1<6;i1++){a=_cror_(a,1);P0=a;delay(z);}P0=0xfe;delay(z);P0=0xff;delay(z);}void lsd3() //lsd3 两个灯流水双程模式2 {uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);a=a<<1;delay(z);for(i=0;i<6;i++) //_crol_与_cror_混合使用{ a=_crol_(a,1);P0=a;delay(z);}P0=0x7f;a=0x7f;P2=a;delay(z);P0=f;a=a>>1;P2=a;delay(z);for(j=0;j<6;j++){a=_cror_(a,1);P2=a;delay(z);}a=0xfe;P3=a;delay(z);P2=f;a=a<<1;P3=a;delay(z);for(k=0;k<6;k++) { a=_crol_(a,1);P3=a;delay(z);}P3=0x7f;a=0x7f;P1=a;delay(z);P3=f;a=a>>1;P1=a;delay(z);for(l=0;l<6;l++) {a=_cror_(a,1);P1=a;delay(z);}P1=0xfe;delay(z);P1=f;delay(z);a=0xfe;P1=a;delay(z);a=a<<1;P1=a;for(l1=0;l1<6;l1++) //l1==6 { a=_crol_(a,1);P1=a;delay(z);}P1=0x7f;a=0x7f;P3=a;delay(z);P1=f;a=a>>1;P3=a;for(k1=0;k1<6;k1++) {a=_cror_(a,1);P3=a;delay(z);}P3=0xfe;a=0xfe;P2=a;delay(z);P3=f;a=a<<1;P2=a;delay(z);for(j1=0;j1<6;j1++){a=_crol_(a,1);P2=a;}P2=0x7f;a=0x7f;P0=a;delay(z);P2=f;a=a>>1;P0=a;delay(z);for(i1=0;i1<6;i1++) {a=_cror_(a,1);P0=a;delay(z);}P0=0xfe;delay(z);P0=f;delay(z);}void lsd4() //lsd4{uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i++){a=a<<1; //单个灯依次点亮所有灯,从上往下P0=a;}a=0xfe;P2=a;delay(z);for(j=0;j<7;j++){a=a<<1;P2=a;delay(z);}a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=a<<1;P3=a;delay(z);}a=0xfe;P1=a;delay(z);for(l=0;l<7;l++){a=a<<1;P1=a;delay(z);}for(l1=0;l1<8;l1++) //l1==8{P1=table1[l1]; //单个灯依次熄灭所有灯,从下往上。

基于单片机c语言花样彩灯设计

基于单片机c语言花样彩灯设计

/*-------------2011.3.19 xxx编写------------------------------------------------------------设计名称:花样和速度可控的花样彩灯设计功能:1.本程序用了两个按键,其中一个可以循环控制花样,另一个循环控制流水速度;2.有断电保存当前花样和速度功能,即断电后,在重现上电时,执行的花样和速度仍旧是断电前的速度和花样。

缺点:1、本程序为延时计时,精度不高;2、由于使用延时来得到秒信号,时数和分数被改变后,有时要过一秒后才能被更新显示------------------------------------------------------------------------------------------------*/#include<reg52.h>#include<zi.c>#include<24c02.c>sbit s1=P1^4; //定义按键sbit s2=P1^5;void zhongduan(void)interrupt 1{//P1=0xff;TR0=0; //关闭定时器T0if(s1==0) //如果按键s1被按下{delay_ms(10); //延时消抖di();{if(s1==0) //如果按键s1按下{k++;write_add_24c02(0,k);if(k==6){k=1;}}while(!s1);flag=1;} //等待s1键抬起并改变标志位TR0=1; //启动定时器T0}if(s2==0) //如果按键s2被按下{delay_ms(10); //延时消抖di();if(s2==0){i++;write_add_24c02(1,i);if(i==6)i=1;}while(!s2);flag=1;} //等待s2键抬起并改变标志位TR0=1; //启动定时器T0}void main(void){TMOD=0X02; // 定时器TO,工作方式2,带自动装在的8位计数器,最大数值2^8=256TH0=256-200; //装载初值TL0=256-200;ET0=1; // 定时器T0中断允许TR0=1; //开启定时器T0EA=1; //打开外部中断0k=read_add_24c02(0);i=read_add_24c02(1);if(k>=6)k=1;if(i>=6)i=1;while(1){flag=0; //按键按下标志位while(flag==0) //检测到有按键按下{ switch(k){case 1:huayang_1();break;case 2:huayang_2();break;case 3:huayang_3();break;case 4:huayang_4();break;case 5:huayang_5();break;}switch(i){case 1:x=10;break;case 2:x=100;break;case 3:x=500;break;case 4:x=1000;break;case 5:x=2000;break;}}}}/****************************************花样子文件zi.c*************************************************/ /*sbit S1=P1^3; 定义按键s1为引脚P1.3sbit S2=P1^4;sbit S3=P1^5;sbit S4=P1^6;sbit S5=P1^7;*/#define led P3sbit beep=P2^0; //定义蜂鸣器为引脚P2.0unsigned int x=10;unsigned char k=1,i=1,flag=0;//#define led ledvoid delay_ms(unsigned int xms) //1ms延时子程序{ unsigned int aa,bb;for(aa=xms;aa>0;aa--){if(flag==1) //当检测到有按键按下,跳出内层循环break;for(bb=800;bb>0;bb--);} //调整bb数值,以使本句运行时间为1ms 。

基于51单片机的C语言流水灯程序

基于51单片机的C语言流水灯程序

基于51单片机的C语言流水灯程序#include //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint); //声明延时函数void main(){uint i;uchar temp;while(1){temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动{P2=~temp;delay(500); //调用延时函数temp<<=1;}temp=0x80;for(i=0;i<8;i++) //8个流水灯反向逐个闪动{P2=~temp;delay(500); //调用延时函数temp>>=1;}temp=0xFE;for(i=0;i<8;i++) //8个流水灯依次全部点亮{P2=temp;delay(500); //调用延时函数temp<<=1;}temp=0x7F;for(i=0;i<8;i++) //8个流水灯依次反向全部点亮{P2=temp;delay(500); //调用延时函数temp>>=1;}}}void delay(uint a) //延时函数,毫秒级别{uint i;while(--a!=0) //执行空操作循环,其中a为形参,由调用该函数的函数语句提供值{for(i=0;i<125;i++);//执行当0加到125时,大约会用掉1ms 的时间}}。

单片机原理流水灯实验

单片机原理流水灯实验

单片机原理流水灯实验单片机原理流水灯实验是一种十分基础的单片机实验,在学习单片机的初级阶段非常重要。

流水灯可以通过多个灯依次亮起,再逐个熄灭,形成灯光流动的效果。

下面将详细介绍单片机原理流水灯实验的步骤和实现原理。

首先,我们需要准备的材料和工具有:1. 单片机主板:例如STC89C52RC型号。

2. LED灯:我们需要7个LED灯,可以选择不同颜色和尺寸的。

3. 面包板:用于连接电路。

4. 连接线:用于连接单片机主板和面包板以及连接LED灯。

接下来,我们开始进行单片机原理流水灯实验的步骤:第一步:连接电路1. 将7个LED灯连接到面包板上,按照流水灯的顺序连接,可以使用杜邦线连接。

2. 在面包板上连接7个电流限制电阻,以保护LED灯,限制电流的大小根据具体LED灯的要求确定。

3. 将面包板的VCC和GND引线分别连接到单片机主板的VCC和GND引脚上。

第二步:编写程序1. 打开Keil C51编译器,新建一个项目。

2. 编写C语言程序,实现流水灯的效果,代码如下:c#include <reg52.h>声明I/O口函数void delay(unsigned int t);void ledFlow(void);程序入口void main(void){主循环while (1){LED流水灯效果ledFlow();}}延时函数void delay(unsigned int t)unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 120; j++);}LED流水灯效果函数void ledFlow(void){unsigned int i;unsigned char flowData = 0x01;for (i = 0; i < 8; i++){P0 = flowData; 将数据输出到P0口delay(500); 延时500msflowData <<= 1; 左移一位}delay(500); 延时500msflowData = 0x80; 数据复位for (i = 0; i < 8; i++){P0 = flowData; 将数据输出到P0口delay(500); 延时500msflowData >>= 1; 右移一位}delay(500); 延时500ms}第三步:烧录程序1. 将单片机主板连接到电脑上,并打开STC-ISP烧录软件。

流水灯c语言及汇编程序

一、51单片机流水灯C语言源程序文件说明:流水灯C程序程序说明:MCU采用AT89S51,外接11.0592M晶振,P2口输出#include<reg51.h> //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=0;i<8;i++) //8个流水灯逐个闪动{P2=~temp;delay(100); //调用延时函数temp<<=1;}temp=0x80;for(i=0;i<8;i++) //8个流水灯反向逐个闪动 {P2=~temp;delay(100); //调用延时函数temp>>=1;}temp=0xFE;for(i=0;i<8;i++) //8个流水灯依次全部点亮{P2=temp;delay(100); //调用延时函数temp<<=1;}temp=0x7F;for(i=0;i<8;i++) //8个流水灯依次反向全部点亮{P2=temp;delay(100); //调用延时函数temp>>=1;}}}void delay(uint t) //定义延时函数{register uint bt;for(;t;t--)for(bt=0;bt<255;bt++);}二、汇编程序:(同样P2为输出端口)左移依次循环:ORG 0000HSJMP MAINORG 0030H 主程序开始的地址MAIN: MOV R2,#08H 设置循环次数MOV A,#0FEH 赋初值NEXT: MOV P2,A 把初值送到P2口 LCALL DELAY 延时RL A 左移一位DJNZ R2,NEXT 判断循环次数是否到,没有跳转到NEXT继续执行SJMP MAIN 重复循环DELAY: MOV R3,#0FFH 延时程序DEL2: MOV R4,#0FFHDEL1: NOPDJNZ R4,DEL1DJNZ R3,DEL2RETEND 结束二边散开后缩进(查表指令)ORG 0000HSJMP MAINORG 0030HMAIN: MOV SP,#60HMOV DPTR,#TAB 把表首地址送到DPTR MOV R2,#06 设置循环次数LOOP: CLR A 清零AMOVC A,@A+DPTR 查表指令MOV P1,A 把A中的值送到P1口 LCALL DELAY 延时INC DPTR 改变数据指针DJNZ R2,LOOP 判断循环是否到,没有跳转LOOP SJMP MAIN 重复循环DELAY: MOV R0.#10 延时DEL2: MOV R1,#200DEL1: MOV R3,#255DJNZ R3,$DJNZ R1,DEL1DJNZ R0,DEL2RETTAB: DB 0E7H,0DBH,0BDH,7EH,0BDH,0DBH 查表END。

单片机流水灯实验程序

#include #define int int i,j; sbit led1=P1^0; void delay(int); void delay(int k) { for(i=0;i{ for(j=0;j<500;j++); } }

a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfb,0xf7,0xef,0xdf}; int m,l,n; sbit K=P3^6; void ni(); void shun() { while(1) { for (m=0;m<8;m++) { P2=a[m]; delay(250); P2=0xff; if(K==0) ni(); delay(250); if(K==0)ni(); } for (l=8;l<12;l++) { P3=a[l]; delay(250); P3=0xff; if(K==0)ni(); delay(250); if(K==0)ni(); } } } void ni() { while(1) { for(l=11;l>=8;l--) { P3=a[l]; delay(250); P3=0xff; if(K==0)shun(); delay(250); if(K==0)shun(); } for (m=7;m>=0;m--) { P2=a[m]; delay(250); P2=0xff; if(K==0)shun(); delay(250); if(K==0)shun(); } } } void main() {

P0=0xdf; while(1) { for(n=0;n<3;n++) { P2=0x00,P3=0X00; delay(1000); P2=0xff,P3=0xff; delay(1000); } shun(); }

}

基于单片机心形流水灯C语言源程序精编

基于单片机心形流水灯C语言源程序精编Document number:WTT-LKK-GBB-08921-EIGG-22986#include<>unsigned int x,y;void delayms(unsigned int z) //延时{unsigned int i,j;for(i=z;i>0;i--)for(j=150;j>0;j--);}void On_all() //开启所有灯{P0=0x00; P1=0x00; P2=0x00; P3=0x00; }void Off_all()//关闭所有灯{P0=0xff; P1=0xff; P2=0xff; P3=0xff; }void ls()//正向流水灯{P0=0x00; delayms(400);P2=0x00; delayms(400);P3=0x00; delayms(400);P1=0x00; delayms(400);P0=0x01; delayms(50);P0=0x02; delayms(50);P0=0x04; delayms(50);P0=0x08; delayms(50);P0=0x10; delayms(50);P0=0x20; delayms(50);P0=0x40; delayms(50);P0=0x80; delayms(50);P0=0x00;P2=0x01; delayms(50);P2=0x04; delayms(50); P2=0x08; delayms(50);P2=0x10; delayms(50); P2=0x20; delayms(50);P2=0x40; delayms(50); P2=0x80; delayms(50);P2=0x00;P3=0x80; delayms(50);P3=0x40; delayms(50); P3=0x20; delayms(50);P3=0x10; delayms(50);P3=0x08; delayms(50); P3=0x04; delayms(50);P3=0x02; delayms(50); P3=0x01; delayms(50); P3=0x00;P1=0x80; delayms(50);P1=0x40; delayms(50);P1=0x20; delayms(50); P1=0x10; delayms(50);P1=0x08; delayms(50); P1=0x04; delayms(50);P1=0x02; delayms(50); P1=0x01; delayms(50); P1=0x00;Off_all();P0=0xfe; delayms(50);P0=0xfd; delayms(50);P0=0xfb; delayms(50); P0=0xf7; delayms(50); P0=0xef; delayms(50); P0=0xdf; delayms(50);P0=0x7f; delayms(50);P0=0xff;P2=0xfe; delayms(50);P2=0xfd; delayms(50);P2=0xfb; delayms(50);P2=0xf7; delayms(50);P2=0xef; delayms(50);P2=0xdf; delayms(50);P2=0xbf; delayms(50);P2=0x7f; delayms(50); P2=0xff;P3=0x7f; delayms(50);P3=0xbf; delayms(50);P3=0xdf; delayms(50);P3=0xef; delayms(50);P3=0xf7; delayms(50);P3=0xfb; delayms(50);P3=0xfd; delayms(50);P3=0xfe; delayms(50);P3=0xff;P1=0x7f; delayms(50);P1=0xbf; delayms(50);P1=0xdf; delayms(50);P1=0xef; delayms(50);P1=0xf7; delayms(50);P1=0xfb; delayms(50);P1=0xfd; delayms(50);P1=0xfe; delayms(50);P1=0xff;P0=0xfe; delayms(50);P0=0xfc; delayms(50);P0=0xf8; delayms(50);P0=0xf0; delayms(50);P0=0xe0; delayms(50);P0=0xc0; delayms(50);P0=0x80; delayms(50);P0=0x00; delayms(50);P2=0xfe; delayms(50);P2=0xfc; delayms(50);P2=0xf8; delayms(50);P2=0xf0; delayms(50);P2=0xe0; delayms(50);P2=0xc0; delayms(50);P2=0x80; delayms(50);P2=0x00; delayms(50);P3=0x7f; delayms(50);P3=0x3f; delayms(50);P3=0x1f; delayms(50);P3=0x0f; delayms(50);P3=0x07; delayms(50);P3=0x03; delayms(50);P3=0x01; delayms(50);P3=0x00; delayms(50);P1=0x7f; delayms(50);P1=0x3f; delayms(50);P1=0x1f; delayms(50);P1=0x0f; delayms(50);P1=0x07; delayms(50);P1=0x03; delayms(50);P1=0x01; delayms(50);P1=0x00; delayms(50);}void fan_ls()//反向流水灯{Off_all(); delayms(300);On_all(); delayms(300); Off_all(); delayms(300); P1=0x00;delayms(400);P3=0x00;delayms(400);P2=0x00;delayms(400);P0=0x00;delayms(400); P1=0x01;delayms(50);P1=0x02;delayms(50);P1=0x04;delayms(50);P1=0x08;delayms(50);P1=0x10;delayms(50);P1=0x20;delayms(50);P1=0x40;delayms(50);P1=0x80;delayms(50);P1=0x00;P3=0x01;delayms(50);P3=0x02;delayms(50);P3=0x04;delayms(50);P3=0x08;delayms(50);P3=0x10;delayms(50);P3=0x20;delayms(50);P3=0x40;delayms(50);P3=0x80;delayms(50);P3=0x00;P2=0x80;delayms(50);P2=0x40;delayms(50);P2=0x20;delayms(50);P2=0x10;delayms(50);P2=0x08;delayms(50);P2=0x04;delayms(50);P2=0x02;delayms(50);P2=0x01;delayms(50);P2=0x00;P0=0x80;delayms(50);P0=0x40;delayms(50);P0=0x20;delayms(50);P0=0x10;delayms(50);P0=0x08;delayms(50);P0=0x04;delayms(50); P0=0x02;delayms(50);P0=0x01;delayms(50);P0=0x00;Off_all();P1=0xfe; delayms(50);P1=0xfd; delayms(50);P1=0xfb; delayms(50); P1=0xf7; delayms(50); P1=0xef; delayms(50); P1=0xdf; delayms(50); P1=0xbf; delayms(50); P1=0x7f; delayms(50);P1=0xff;P3=0xfe; delayms(50);P3=0xfd; delayms(50);P3=0xfb; delayms(50); P3=0xf7; delayms(50); P3=0xef; delayms(50); P3=0xdf; delayms(50); P3=0xbf; delayms(50); P3=0x7f; delayms(50);P3=0xff;P2=0x7f; delayms(50);P2=0xbf; delayms(50); P2=0xdf; delayms(50);P2=0xef; delayms(50); P2=0xf7; delayms(50);P2=0xfb; delayms(50); P2=0xfd; delayms(50); P2=0xfe; delayms(50);P2=0xff;P0=0x7f; delayms(50);P0=0xbf; delayms(50);P0=0xdf; delayms(50);P0=0xef; delayms(50);P0=0xf7; delayms(50);P0=0xfb; delayms(50); P0=0xfd; delayms(50); P0=0xfe; delayms(50);P0=0xff;P1=0xfe; delayms(50);P1=0xfc; delayms(50);P1=0xf8; delayms(50);P1=0xf0; delayms(50);P1=0xe0; delayms(50);P1=0xc0; delayms(50); P1=0x80; delayms(50); P1=0x00; delayms(50);P3=0xfe; delayms(50);P3=0xfc; delayms(50);P3=0xf8; delayms(50);P3=0xf0; delayms(50);P3=0xe0; delayms(50);P3=0xc0; delayms(50); P3=0x80; delayms(50); P3=0x00; delayms(50);P2=0x7f; delayms(50);P2=0x3f; delayms(50);P2=0x1f; delayms(50);P2=0x0f; delayms(50);P2=0x07; delayms(50);P2=0x03; delayms(50);P2=0x01; delayms(50);P2=0x00; delayms(50);P0=0x7f; delayms(50);P0=0x3f; delayms(50);P0=0x1f; delayms(50);P0=0x0f; delayms(50);P0=0x07; delayms(50);P0=0x03; delayms(50);P0=0x01; delayms(50);P0=0x00; delayms(50);Off_all();On_all();Off_all();On_all();Off_all();}void ban_shan()//半边交替闪{Off_all();P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff;d elayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00;d elayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff;d elayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00;d elayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff;d elayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00;d elayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff;d elayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00;d elayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff;d elayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00;d elayms(50);}void shangxia_shan()//上下交替闪{On_all();Off_all();P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff;d elayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00;d elayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff;d elayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00;d elayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff;d elayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00;d elayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff;d elayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00;d elayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff;d elayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00;d elayms(50);}void huayang_shan()//花样闪烁{On_all();delayms(400);P0=0xff;P2=0x00;P3=0x00;P1=0x00;delayms(200);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(200);P0=0x00;P2=0x00;P3=0xff;P1=0x00;delayms(200);P0=0x00;P2=0x00;P3=0x00;P1=0xff;delayms(200);P0=0x00;P2=0x00;P3=0xff;P1=0x00;delayms(200);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(200);P0=0xff;P2=0x00;P3=0x00;P1=0x00;delayms(200);On_all();delayms(400);P0=0x00;P2=0x00;P3=0x00;P1=0xff;delayms(200);P0=0x00;P2=0x00;P3=0xff;P1=0x00;delayms(200);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(200);P0=0xff;P2=0x00;P3=0x00;P1=0x00;delayms(200);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(200);P0=0x00;P2=0x00;P3=0xff;P1=0x00;delayms(200);P0=0x00;P2=0x00;P3=0x00;P1=0xff;delayms(200);On_all();delayms(400);Off_all();delayms(400);P0=0x00;delayms(200);P3=0x00;delayms(200);P1=0x00;delayms(200);P2=0x00;delayms(200);On_all();delayms(400);Off_all();delayms(400);P1=0x00;delayms(200);P2=0x00;delayms(200);P0=0x00;delayms(200);P3=0x00;delayms(200);On_all();delayms(400);Off_all();delayms(50);On_all();delayms(50);Off_all();delayms(50);On_all();delayms(50);Off_all();delayms(50);}void main(){On_all(); delayms(300);Off_all(); delayms(300);On_all(); delayms(300);Off_all(); delayms(300);On_all(); delayms(300);Off_all(); delayms(300);ls(); //正向流水fan_ls(); //反向流水ban_shan(); //半边交替闪shangxia_shan(); //上下交替闪烁huayang_shan();// 花样闪烁}。

单片机流水灯C程序汇总

基于AT89C51的单片机流水灯C程序最近学习了单片机流水灯的实验,主要是用仿真软件KEIL和Protues,在这里系统的总结一下,希望对大家有所帮助实验原理图如下:图片说明:Ri=330 P1口输入下面是几个C程序:(一),初学时,大家一般都会写这样的程序#include<reg51.h>void delay() //延时函数{unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++);}void main(){P1=0xff; //赋初始值while(1){P1=0x7f; //P1.7亮 ,下面几个雷同delay(); //调用延时函数P1=0xbf;delay();P1=0xdf;delay();P1=0xef;delay();P1=0xf7;delay();P1=0xfb;delay();P1=0xfd;delay();P1=0xfe;delay();}}(二),第二个程序很经典,用数组把每个流水灯的状态都描述出来,是程序变得简洁#include<reg51.h>void main(){unsigned char led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //引用数组unsigned int i,j,m;P1=0xff;while(1){for(m=0;m<8;m++){P1=led[m];for(i=0;i<250;i++)for(j=0;j<250;j++); //延时}}}。

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