多种流水灯C语言程序设计

合集下载

多种方法写出的51单片机流水灯C语言程序

多种方法写出的51单片机流水灯C语言程序

目录流水灯最原始 (1)流水灯位左移 (3)流水灯移位函数 (4)流水灯数组 (5)流水灯精确定时器 (6)流水灯最原始#include "reg51.h"sbit p0=P1^0;sbit p1=P1^1;sbit p2=P1^2;sbit p3=P1^3;sbit p4=P1^4;sbit p5=P1^5;sbit p6=P1^6;sbit p7=P1^7;voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){while(1){P1=0;p0=1;mdelay(1000);p0=0;p1=1;mdelay(1000);p1=0;p2=1;mdelay(1000);p2=0;p3=1;mdelay(1000);p3=0;p4=1;mdelay(1000);p4=0;p5=1;mdelay(1000);p5=0;p6=1;mdelay(1000);p6=0;p7=1;mdelay(1000);p7=0;}}流水灯位左移#include "reg51.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;unsignedint led;while(1){led=0xfe;for(i=0;i<8;i++){P1=led;mdelay(1000);led=led<<1;led=led|0x01;}}}流水灯移位函数#include "reg51.h"#include "intrins.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char led;led=0x01;while(1){P1=led;led=_crol_(led,1);mdelay(1000);}}流水灯数组#include "reg51.h"unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;while(1){for(i=0;i<8;i++){P1=table[i];mdelay(1000);}}}流水灯精确定时器#include "reg51.h"#include "intrins.h"unsignedint count=0,led;void main(){P1=0x00;led=0x01;EA=1;ET0=1;TMOD=0x01;TH0=0x3c;TL0=0xb0;TR0=1;for(;;){;}}voidbiao() interrupt 1{count++;if(count==20){count=0;P1=led;led=_crol_(led,1);}TH0=0x3c;TL0=0xb0;}。

多模式流水灯c程序

多模式流水灯c程序

#include <REG52.H>#include "SoundPlay.h"unsigned char RunMode;//**********************************SystemFuction************************************************* void Delay1ms(unsigned int count){unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}unsigned char code LEDDisplayCode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, //0~70x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};void Display(unsigned char Value){P3 = LEDDisplayCode[Value];}void LEDFlash(unsigned char Count){unsigned char i;bit Flag;for(i = 0; i<Count;i++){Flag = !Flag;if(Flag)Display(RunMode);elseDisplay(0x10);Delay1ms(100);}Display(RunMode);}unsigned char GetKey(void){unsigned char KeyTemp,CheckValue,Key = 0x00;CheckValue = P2&0x32;if(CheckValue==0x32)return 0x00;Delay1ms(10);KeyTemp = P2&0x32;if(KeyTemp==CheckValue)return 0x00;if(!(CheckValue&0x02))Key|=0x01;if(!(CheckValue&0x10))Key|=0x02;if(!(CheckValue&0x20))Key|=0x04;return Key;}unsigned int Timer0Count,SystemSpeed,SystemSpeedIndex;void InitialTimer2(void){T2CON = 0x00; //16 Bit Auto-Reload ModeTH2 = RCAP2H = 0xFC; //重装值,初始值TL2 = RCAP2L = 0x18;ET2=1; //定时器 2 中断允许TR2 = 1; //定时器 2 启动EA=1;}unsigned int code SpeedCode[]={ 1, 2, 3, 5, 8, 10, 14, 17, 20, 30,40, 50, 60, 70, 80, 90, 100, 120, 140, 160,180, 200, 300, 400, 500, 600, 700, 800, 900,1000};//30void SetSpeed(unsigned char Speed){SystemSpeed =SpeedCode[Speed];}void LEDShow(unsigned int LEDStatus){P1 = ~(LEDStatus&0x00FF);P0 = ~((LEDStatus>>8)&0x00FF);}void InitialCPU(void){RunMode = 0x00;Timer0Count = 0;SystemSpeedIndex = 9;P1 = 0x00;P0 = 0x00;P2 = 0xFF;P3 = 0x00;Delay1ms(500);P1 = 0xFF;P0 = 0xFF;P2 = 0xFF;P3 = 0xFF;SetSpeed(SystemSpeedIndex);Display(RunMode);}//Mode 0unsigned int LEDIndex = 0;bit LEDDirection = 1,LEDFlag = 1; void Mode_0(void){LEDShow(0x0001<<LEDIndex);LEDIndex = (LEDIndex+1)%16; }//Mode 1void Mode_1(void){LEDShow(0x8000>>LEDIndex);LEDIndex = (LEDIndex+1)%16; }//Mode 2void Mode_2(void){if(LEDDirection)LEDShow(0x0001<<LEDIndex);elseLEDShow(0x8000>>LEDIndex);if(LEDIndex==15)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%16;}//Mode 3void Mode_3(void){if(LEDDirection)LEDShow(~(0x0001<<LEDIndex));elseLEDShow(~(0x8000>>LEDIndex));if(LEDIndex==15)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%16;}//Mode 4void Mode_4(void){if(LEDDirection){if(LEDFlag)LEDShow(0xFFFE<<LEDIndex);elseLEDShow(~(0x7FFF>>LEDIndex));}else{if(LEDFlag)LEDShow(0x7FFF>>LEDIndex);elseLEDShow(~(0xFFFE<<LEDIndex));}if(LEDIndex==15){LEDDirection = !LEDDirection;if(LEDDirection) LEDFlag = !LEDFlag;}LEDIndex = (LEDIndex+1)%16;}//Mode 5void Mode_5(void){if(LEDDirection)LEDShow(0x000F<<LEDIndex);elseLEDShow(0xF000>>LEDIndex);if(LEDIndex==15)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%16;}//Mode 6void Mode_6(void){if(LEDDirection)LEDShow(~(0x000F<<LEDIndex));elseLEDShow(~(0xF000>>LEDIndex));if(LEDIndex==15)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%16;}//Mode 7void Mode_7(void){if(LEDDirection)LEDShow(0x003F<<LEDIndex);elseLEDShow(0xFC00>>LEDIndex);if(LEDIndex==9)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%10;}//Mode 8void Mode_8(void){LEDShow(++LEDIndex);}void Timer0EventRun(void){if(RunMode==0x00){Mode_0();}else if(RunMode ==0x01){Mode_1();}else if(RunMode ==0x02){Mode_2();}else if(RunMode ==0x03){Mode_3();}else if(RunMode ==0x04){Mode_4();}else if(RunMode ==0x05){Mode_5();}else if(RunMode ==0x06){Mode_6();}else if(RunMode ==0x07){Mode_7();}else if(RunMode ==0x08){Mode_8();}}void Timer2(void) interrupt 5 using 3{TF2 = 0; //中断标志清除( Timer2 必须软件清标志!)if(++Timer0Count>=SystemSpeed){Timer0Count = 0;Timer0EventRun();}}unsigned char MusicIndex = 0;void KeyDispose(unsigned char Key){if(Key&0x01){LEDDirection = 1;LEDIndex = 0;LEDFlag = 1;RunMode = (RunMode+1)%10;Display(RunMode);if(RunMode==0x09)TR2 = 0;elseTR2 = 1;}if(Key&0x02){if(RunMode==0x09){MusicIndex =(MusicIndex+MUSICNUMBER-1)%MUSICNUMBER;}else{if(SystemSpeedIndex>0){--SystemSpeedIndex;SetSpeed(SystemSpeedIndex);}else{LEDFlash(6);}}}if(Key&0x04){if(RunMode==0x09){MusicIndex =(MusicIndex+1)%MUSICNUMBER;}else{if(SystemSpeedIndex<28){++SystemSpeedIndex;SetSpeed(SystemSpeedIndex);}else{LEDFlash(6);}}}}//*****************************Music********************************** ********************//挥着翅膀的女孩unsigned char code Music_Girl[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03, 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03, 0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03, 0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02, 0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02, 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00}; //同一首歌unsigned char code Music_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00, 0x00,0x00 };//两只蝴蝶unsigned char code Music_Two[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02, 0x10,0x03, 0x15,0x00, 0x00,0x00 };//******************************************************************* ****************unsigned char * SelectMusic(unsigned char SoundIndex){unsigned char *MusicAddress = 0;switch (SoundIndex){case 0x00:MusicAddress = &Music_Girl[0]; //挥着翅膀的女孩break;case 0x01:MusicAddress = &Music_Same[0]; //同一首歌break;case 0x02:MusicAddress = &Music_Two[0]; //两只蝴蝶break;case 0x03:break;case 0x04:break;case 0x05:break;case 0x06:break;case 0x07:break;case 0x08:break;case 0x09:break;default:break;}return MusicAddress;}void PlayMusic(void){Delay1ms(200);Play(SelectMusic(MusicIndex),0,3,360);}//******************************************************************* ****************main(){unsigned char Key;InitialCPU();InitialSound();InitialTimer2();while(1){Key = GetKey();if(RunMode==0x09){PlayMusic();}if(Key!=0x00){KeyDispose(Key);}}}。

单片机流水灯程序

单片机流水灯程序

单片机流水灯程序流水灯是一种简单而常见的电子技术实验项目,也是学习掌握单片机编程的基本操作之一。

本文将介绍如何使用C语言编写单片机流水灯程序,并通过Markdown文本格式输出。

硬件准备在开始编写流水灯程序之前,我们需要准备以下硬件设备:1.单片机开发板(如:Arduino、STM32等)2.LED灯(可根据自己的需求选择,一般使用红色、黄色、绿色等常见颜色的LED灯即可)3.杜邦线(用于连接单片机和LED灯)程序编写引入头文件首先,我们需要引入相应的头文件,以便使用单片机相关的功能库和定义常量。

#include <Arduino.h>定义引脚接下来,我们需要定义引脚,将LED灯的接口与开发板的引脚连接起来。

#define LED_PIN_1 2#define LED_PIN_2 3#define LED_PIN_3 4#define DELAY_TIME 500在这个例子中,我们使用了3个LED灯,分别连接到开发板的2、3、4号引脚。

DELAY_TIME用于控制每个灯亮起的时间间隔,单位是毫秒。

初始化引脚在进入主程序之前,我们需要对引脚进行初始化,设置引脚的输出模式。

void setup() {pinMode(LED_PIN_1, OUTPUT);pinMode(LED_PIN_2, OUTPUT);pinMode(LED_PIN_3, OUTPUT);}主程序接下来就是我们的主程序部分,我们可以使用循环语句来实现LED灯的流水效果。

void loop() {digitalWrite(LED_PIN_1, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_1, LOW);digitalWrite(LED_PIN_2, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_2, LOW);digitalWrite(LED_PIN_3, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_3, LOW);}在这个例子中,我们依次点亮每个LED灯,并延迟一定的时间后熄灭,然后依次点亮下一个LED灯,以此循环。

基于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 的时间}}。

51单片机流水灯汇编与c语言程序

51单片机流水灯汇编与c语言程序

ALEA B C D E F G DPALE A B C D E F G D P1234ALE 2134XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52234567891RP1RESPACK-8D02D13D24D35D46D57D68D79Q019Q118Q217Q316Q415Q514Q613Q712LE 11OE 1U274HC573R1R2R3R4R5R6R7R8D1LED-REDD2LED-YELLOW D3LED-GREEND4LED-GREEND5LED-REDD6LED-YELLOWD7LED-GREEND8LED-GREEND02D13D24D35D46D57D68D79Q019Q118Q217Q316Q415Q514Q613Q712LE 11OE 1U374HC573R171kR181kR191kR201k/*******flowing water light*********///晶振:12M ,P0口接8个led进行流水灯显示,74HC573驱动,8位led共阴接法ORG 0000HLJMP MAINORG 0030H //主程序从程序存储器0030H单元开始存放MAIN: MOV P0,#0FFH //P0口初始化MOV A,#01H //共阴接法,点亮最低位LEDLOOP: MOV P0,ALCALL DELAY_1S //延时1sRL A //循环左移一次,点亮下一位SJMP LOOP //跳转到LOOP处执行,死循环// 3层嵌套软件延时子程序,延时1sDELAY_1S: MOV R1,#10 //最外层循环体执行10次DELAY0: MOV R2,#200 //中间层循环体执行200次DELAY1: MOV R3,#248 //最内层循环体执行248次DJNZ R3,$ //循环子程序最内层,执行时间248*2=496usNOP //空操作,为了凑到准确的500us执行时间DJNZ R2,DELAY1 //中间层循环体(1+496+1+2)*200=100000us=100msDJNZ R1,DELAY0 //最外层循环体(100ms+2us)*10=1000.02msRETEND/*******flowing water light*********/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时函数void Delay_ms(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主函数void main(){P0=0xff; //P0口初始化P0=0x01; //共阴接法,点亮最低位LEDwhile(1){Delay_ms(1000); //延时约1sP0=_crol_(P0,1); //P0 的值向左循环移动,_crol_()函数在头文件intrins.h中}}。

多种流水灯C语言程序设计

多种流水灯C语言程序设计

/*****************************以下程序均采用12M晶振*****************************************************/#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longsbit p2=P2^0;void main(){TMOD=0x01;TR0=1;ET0=1;EA=1;while(1){;}}timer0() interrupt 1{TH0=0x00;TL0=0x06;p2=!p2;}定时流水灯//#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;void main(){uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda;TMOD=0x00;TR0=1;ET0=1;EA=1;while(1)if(ldelay){ldelay=0;P2=led[leda];leda++;if(leda==9)leda=0;}}}timer2() interrupt 1{static uchar t;TF0=0;t++;if(t==10){t=0;ldelay=1;}}变速流水灯//#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;uchar speed=100;void main(){uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda;TMOD=0x00;TR0=1;ET0=1;EA=1;while(1)if(ldelay){ldelay=0;P2=led[leda];leda++;if(leda==9){leda=0;speed-=10;if(speed==0)speed=100;}}}}timer2() interrupt 1{static uchar t;TF0=0;t++;if(t==speed){t=0;ldelay=1;}}//每2两圈改变一次亮度#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;uchar speeda=30;uint k=0;void main(){uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda;uchar speed[10]={5,80,70,60,50,40,30,20,10,5}; uint i;uint k;TMOD=0x00;TR0=1;ET0=1;EA=1;while(1){if(ldelay){ldelay=0;P2=led[leda];leda++;if(leda==9){leda=0;k++;if(k==2){k=0;speeda=speed[i];i++;if(i==9)i=0;}}}}}timer2() interrupt 1{static uchar t;TF0=0;t++;if(t==speeda){t=0;ldelay=1;}}//在上面基础上调灯的亮度(调占空比)#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;uchar speeda=30;uint k=0;uchar scale;void main(){uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda;uchar speed[10]={5,80,70,60,50,40,30,20,10,5};uint i;uint k;TMOD=0x00;TR0=1;ET0=1;EA=1;while(1){if(ldelay==1){ldelay=0;P2=led[leda];leda++;scale++;if(scale==10)scale=0;if(leda==9){leda=0;k++;if(k==2){k=0;speeda=speed[i];i++;if(i==9)i=0;}}}}}timer2() interrupt 1 {static uchar t;TH0=0x1c;TL0=0xbf;TF0=0;t++;if(t==speeda){t=0;ldelay=1;}if(scale==10)P2=0; if(scale==0)P2=1; }。

单片机流水灯c语言实现

单片机流水灯c语言实现
//使数字0--9循环显示
//------------------------------------------------
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE []=
red_a=1;yellow_a=1;green_a=0;
red_b=0;yellow_b=1;green_b=1;
delayMs(2000);
Operation_Type=2;
break;
case 2://东西向黄灯开始闪烁,绿灯关闭
delayMs(300);
yellow_a=!yellow_a; green_a=1;
while(x--)
{
for(i=0;i<120;i++);
}
}
//---------------------------------------------
//交通灯切换子程序
void Traffic_Light()
{
switch (Operation_Type)
{
case 1://东西向绿灯亮与南北向红灯亮
{
uchar i;
P2=0x01;//P2端口初始化
while(1)//死循环
{
for(i=0;i<7;i++)//i自加1,当i=7时执行第二个for语句
{
P2=_crol_(P2,1);//P2端口循环左移1位
delayMs(150);
}
for(i=0;i<7;i++)

32种花样流水灯c语言程序,32LED单片机心形花样流水灯程序+视频

32种花样流水灯c语言程序,32LED单片机心形花样流水灯程序+视频

32种花样流⽔灯c语⾔程序,32LED单⽚机⼼形花样流⽔灯程序+视频include#include#define uint unsigned int#define uchar unsigned charuchar code zou[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//单个从0到7uchar code you[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//单个从7到0uchar code liang0_7[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个点亮0~7uchar code liang7_0[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个点亮7~0uchar code mie0_7[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个灭0~7uchar code mie7_0[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个灭7~0/***********************************************************/void delay(uint t); //延时void zg(uint t,uchar a);//两边逐个亮void qs(uint t,uchar a);//全部闪烁void zgxh(uint t,uchar a); // 逆时针逐个点亮//void zgxh1(uint t,uchar a); // 顺时针逐个点亮void djs(uint t,uchar a); //对⾓闪void lbzgm(uint t,uchar a);//两边逐个灭//void sszgm(uint t,uchar a); // 顺时针逐个灭void nszgm(uint t,uchar a); // 逆时针逐个灭void sztl(uint t,uchar a);//顺时逐个同步亮void nztl(uint t,uchar a);//逆时逐个同步亮void sztm(uint t,uchar a);//顺时逐个同步灭void nztm(uint t,uchar a);//逆时逐个同步灭void hwzjl(uint t,uchar a); //横往中间亮void hwzjm(uint t,uchar a); //横往中间灭//void swzjl(uint t,uchar a); //竖往中间亮//void swzjm(uint t,uchar a); //竖往中间灭void nzdl(uint t,uchar a); //逆时逐段亮void nzdgl(uint t,uchar a); //逆时逐段⼀个点亮void jgs(uint t,uchar a); //间隔闪/**********************************************************/ void zg(uint t,uchar a)//两边逐个亮{uchar i,j;for(j=0;j{P0=P1=P2=P3=0x00;P0=0x01;delay(t);for(i=0;i<7;i++){P0=liang0_7[i+1];P3=liang7_0[i];delay(t);}P3=0xff;P1=0x01;delay(t);for(i=0;i<7;i++){P1=liang0_7[i+1];P2=liang7_0[i];delay(t);}P2=0xff;delay(t);}}void qs(uint t,uchar a) //全部闪烁{uchar j;for(j=0;j。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//在上面基础上调灯的亮度(调占空比) #include<reg51.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long
bit ldelay=0; uchar speeda=30; uint k=0; uchar scale;
定时流水灯// #include<reg51.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long
bit ldelay=0;
void main() {
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) { if(ldelay) {
ldelay=0; P2=led[leda]; leda++; if(leda==9) { leda=0; speed-=10; if(speed==0)speed=100; }
} } }
timer2() interrupt 1 {
static uchar t; TF0=0; t++; if(t==speed) { t=0; ldelay=1; } }
ldelay=0; P2=led[leda]; leda++; if(leda==9)leda=0;
} } }
timer2() interrupt 1 {
static uchar t; TF0=0; t++; if(t==10) { t=0; ldelay=1; } }
变速流水灯// #include<reg51.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long
void main() {
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda; uchar speed[10]={5,80,70,60,50,40,30,20,10,5}; uint i; uint k; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) { if(ldelay) {
void main() {
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda; uchar speed[10]={5,80,70,60,50,40,30,20,10,5}; uint i; uint k; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) { if(ldelay==1) {
//每 2 两圈改变一次亮度 #include<reg51.h> #define uint unsigned int
#define uchar unsigned char #define ulong unsigned long
bit ldelay=0; uchar speeda=30; uint k=0;
sbit p2=P2^0; void main() {
TMOD=0x01; TR0=1; ET0=1; EA=1; while(1) {
; } }
电子科学与技术 用 12M 晶 振
电子科学与技术 用 12M 晶 振
timer0() interrupt 1 {
TH0=ห้องสมุดไป่ตู้x00; TL0=0x06; p2=!p2; }
多种流水灯 C 语言程序设计 /********************************** 王 忠 河 海 大 学 2007 年 9 月 19 日**********************/ /***************************** 以 下 程 序 均 采 *****************************************************/ #include<reg51.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long /********************************** 王 忠 河 海 大 学 2007 年 9 月 19 日**********************/ /***************************** 以 下 程 序 均 采 *****************************************************/ #include<reg51.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long
ldelay=0; P2=led[leda]; leda++; if(leda==9) { leda=0; k++; if(k==2){ k=0; speeda=speed[i]; i++; if(i==9)i=0; } }
} } }
timer2() interrupt 1 {
static uchar t; TF0=0; t++; if(t==speeda) { t=0; ldelay=1; } }
ldelay=0; P2=led[leda]; leda++; scale++; if(scale==10)scale=0; if(leda==9)
{ leda=0; k++; if(k==2){ k=0; speeda=speed[i]; i++; if(i==9)i=0; } }
} } }
timer2() interrupt 1 {
static uchar t; TH0=0x1c; TL0=0xbf; TF0=0; t++; if(t==speeda) { t=0; ldelay=1; } if(scale==10)P2=0; if(scale==0)P2=1; }
bit ldelay=0; uchar speed=100;
void main() {
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; uchar leda; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) { if(ldelay) {
相关文档
最新文档