多种流水灯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。

8个流水灯来回点亮设计程序

8个流水灯来回点亮设计程序

单片机C语言如何实现8个LED流水灯来回流动?第一部分参考程序#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int//--------------------------------void DelayMS(uint ms){uchar t;while(ms--) for (t=0;t<120;t++);}//----------------------------------void main(){P2= 0xfe;while (1){P2 =_crol_(P2,1);DelayMS(200);}}2012-06-14 17:06 芯DZ|分类:C/C++|浏览267次现在只能从左到右循环流动,怎么才能从左到右再从右到左流动呢?#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit beep=P2^3;uchar p1e;void delay(uint a);void main(){p1e=0xfe;P1=p1e;while(1){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}void delay(uint a){uint x,y;for(x=a;x>0;x--)for(y=150;y>0;y--); }提问者采纳2012-06-14 17:51char i;while(1){for(i=0; i<7; i++){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}for(i=0; i<7; i++){p1e=_cror_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}CYF0316|六级p1e=_cror_(p1e,1);追问这个只是向右移吧...我是说向左移动到第8个LED后再从第8个向左移,实现来回流动回答1,赋值2,右移动3,再赋值4,左移动你程序都写出了只是把程序COPy 粘帖到下面把p1e=_crol_(p1e,1); 改成p1e=_cror_ (p1e,1); 就好了呀第二部分参考、归纳、总结得正确程序(仅供参考)#include <AT89X51.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint ms) {uchar t;while(ms--) for (t=0;t<120;t++);}void main(){ char i;P2= 0xfe;while (1){for(i=0; i<7; i++){P2 =_crol_(P2,1);DelayMS(200);}for(i=0; i<7; i++){P2 =_cror_(P2,1);DelayMS(200);}}}。

五种编程方式实现流水灯的单片机C程序

五种编程方式实现流水灯的单片机C程序

五种编程方式实现流水灯的单片机C程序//功能:采用顺序结构实现的流水灯控制程序/*此方式中采用的是字操作(也称为总线操作)*/#include <reg51."h>void delay(unsigned char i);//延时函数声明void main()//主函数{while(1) {P1 = 0xfe;//点亮第1个发光二极管,0."000389sdelay(200);//延时P1 = 0xfd;//点亮第2个发光二极管,0."155403s,0."1558delay(200);//延时P1 = 0xfb;//点亮第3个发光二极管delay(200);//延时P1 = 0xf7;//点亮第4个发光二极管delay(200);//延时P1 = 0xef;//点亮第5个发光二极管delay(200);//延时P1 = 0xdf;//点亮第6个发光二极管delay(200);//延时P1 = 0xbf;//点亮第7个发光二极管delay(200);//延时P1 = 0x7f;//点亮第8个发光二极管delay(200);//延时}}//函数名:delay//函数功能:实现软件延时//形式参数:unsigned char i;//i控制空循环的外循环次数,共循环i*255次//返回值:无voiddelay(unsigned char i) //延时函数,无符号字符型变量i为形式参数{unsigned char j, k;//定义无符号字符型变量j和kfor(k = 0; k < i; k++)//双重for循环语句实现软件延时for(j = 0; j < 255; j++);}//功能:采用循环结构实现的流水灯控制程序//此方式中采用的移位,按位取反等操作是位操作#include <reg51."h>//包含头文件REG51."Hvoid delay(unsigned char i);//延时函数声明void main()//主函数{unsigned char i,w;while(1){w = 0x01;//信号灯显示字初值为01Hfor(i = 0; i < 8; i++){P1 = ~w;//显示字取反后,送P1口delay(200);//延时w <<= 1;//显示字左移一位}}}//函数名:delay//函数功能:实现软件延时//形式参数:unsigned char i;//i控制空循环的外循环次数,共循环i*255次//返回值:无voiddelay(unsigned char i) //延时函数,无符号字符型变量i为形式参数{unsigned char j,k;//定义无符号字符型变量j和kfor(k = 0; k < i; k++)//双重for循环语句实现软件延时for(j = 0; j < 255;j++);}/**************************************************************** *****///功能:采用位运算符编写的流水灯控制程序,显示效果为依次熄灭信号灯//此方式也是典型的顺序结构#include <reg51."h>void delay(unsigned char i);//延时函数声明void main()//主函数{while(1) {P1 = 0x00;//P1口全部清0,即点亮8个发光二极管delay(200);//延时P1 = P1 | 0x01;//熄灭第1个发光二极管delay(200);//延时P1 = P1 | 0x03;//熄灭第1、"2个发光二极管delay(200);//延时P1 = P1 | 0x07;//熄灭第1~3个发光二极管delay(200);//延时P1 = P1 | 0x0f;//熄灭第1~4个发光二极管delay(200);//延时P1 = P1 | 0x1f;//熄灭第1~5个发光二极管delay(200);//延时P1 = P1 | 0x3f;//熄灭第1~6个发光二极管delay(200);//延时P1 = P1 | 0x7f;//熄灭第1~7个发光二极管delay(200);//延时P1 = P1 | 0x7f;//熄灭所有发光二极管delay(200);//延时}}//函数名:delay//函数功能:实现软件延时//形式参数:unsigned char i;//i控制空循环的外循环次数,共循环i*255次//返回值:无voiddelay(unsigned char i) //延时函数,无符号字符型变量i为形式参数{unsigned char j, k;//定义无符号字符型变量j和kfor(k = 0; k < i; k++)//双重for循环语句实现软件延时for(j = 0; j < 255;j++);}/**********************************************************/ //功能:采用数组实现的流水灯控制程序//此方式也是典型的循环结构#include <reg51."h>//包含头文件REG51."Hvoid delay(unsigned char i);//延时函数声明void main()//主函数{unsigned char i;unsigned char display[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};(1){for(i = 0; i < 8; i++){P1 = display[i];//显示字送P1口delay(200);//延时}}}//函数名:delay//函数功能:实现软件延时//形式参数:unsigned char i;//i控制空循环的外循环次数,共循环i*255次//返回值:无voiddelay(unsigned char i) //延时函数,无符号字符型变量i为形式参数{unsigned char j, k;//定义无符号字符型变量j和kfor(k = 0; k < i; k++)//双重for循环语句实现软件延时for(j = 0; j < 255; j++);}#include<reg52."h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charvoid delay(uint z){uint x, y;for(x = z; x > 0; x--)for(y = 110; y > 0; y--);}void main(){uchar a, i, j;(1){for(j = 0; j<2; j++){a = 0xfe; for(i = 0; i<8; i++){P2 = a;delay(200);a = _crol_(a, 1); //11110}a = 0x7f; for(i = 0; i < 8; i++){P2 = a;delay(200);a = _cror_(a, 1);}}P2 = 0xff;for(j = 0; j < 10; j++)}}{}delay(300);P2 = ~P2;。

流水灯仿真 原理图与程序(汇编+C语言)

流水灯仿真 原理图与程序(汇编+C语言)

简单流水灯仿真(入门级实验)实验介绍:简单流水灯实验是通过单片机控制几个发光二极管(常见控制8个)的点亮状态,形成一个流动的效果,所以称为流水灯实验。

流水灯实验是闪烁灯实验的进阶,也属于入门级实验。

流水灯效果在普遍应用于路边的广告牌以及各式的霓虹灯。

实验目的:该实验的主要目的是通过流水灯效果的控制,熟悉单片机I/O接口的使用。

学习移位指令(汇编语言:RR、RL,C语言:_crol_、_cror_)的使用方法。

仿真原理图:在仿真软件Proteus中绘制仿真仿真原理图如上图所示。

(注意事项:在仿真过程中,电阻R2~R9的大小要合适,太大LED将无法点亮。

仿真时如果想使用P0口,则需要添加上拉电阻。

注意发光二极管的极性,如果发光二极管接反了,则无法点亮。

)程序HEX代码如下::03000000020832C1:0C083200787FE4F6D8FD75810702081DF0:10080000E4FFFEE4FDFC0DBD00010CBC03F8BDE8F7:0C081000F50FBF00010EEF64644E70E7AE:01081C0022B9:10081D0075A0FEAFA07801EF08800123D8FDF5A0EB:05082D0012080080EE3E:00000001FF程序HEX使用方法:1)新建txt文档2)将HEX代码复制到txt文档中,保存3)将该txt文档另存为“程序名.hex”,例如:pro.hex 4)在仿真软件中打开即可实现仿真。

汇编语言代码以及C语言代码如下:汇编语言代码1(移位方法):ORG 0HJMP MAINORG 30HMAIN:MOV A,#0FEHX1:MOV P2,ACALL DELAYRL AJMP X1DELAY:MOV R2,#20X3:MOV R3,#40X2:MOV R4,#250DJNZ R4,$DJNZ R3,X2DJNZ R2,X3RETEND汇编语言代码2(直接赋值方法):ORG 0HJMP MAINORG 30HMAIN:MOV P2,#0FEHCALL DELAYMOV P2,#0FDHCALL DELAYMOV P2,#0FBHCALL DELAYMOV P2,#0F7HCALL DELAYMOV P2,#0EFHCALL DELAYMOV P2,#0DFHCALL DELAYMOV P2,#0BFHCALL DELAYMOV P2,#7FHCALL DELAYJMP MAINDELAY:MOV R2,#20X3:MOV R3,#40X2:MOV R4,#250DJNZ R4,$DJNZ R3,X2DJNZ R2,X3RETEND注意:对于指令“MOV A,#0FEH”中,“#”后面的数字“0”不可以省略。

流水灯电路设计及程序代码

流水灯电路设计及程序代码

流水灯电路设计及程序代码
#include <reg52.h>
#include<instrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code led[]={0xfe,0xfb,0xfd ,0xf7,0xef,0xbf,0xdf,0x7f};
delayuint z
{
uint x,y;
forx=z;x>0;x--
fory=110;y>0;y--;
}
main
{
uint i;
while1
{
P2=led[];
delay500;
_crol_led,1;
}
}
就是一组灯,然后在控制系统的控制下按照设定的顺序和时间来发亮和熄灭,这样就能形成一定的视觉效果,很多街上的店面和招牌上面就安了流水灯,看上去更美观。

这个原理其实很简单,三极管在电路中充当开关的作用,当电路导通,最左边的LED 首先点亮。

基极串出一电容连接下一个三极管的集电极。

当电容充分充电后,下一个三极管导通使得第二个LED点亮,以此类推。

可以通过调节电容的容量值,来控制流水灯点亮的时间。

感谢您的阅读,祝您生活愉快。

多路流水灯的控制程序设计

多路流水灯的控制程序设计

多路流水灯控制程序的设计1、设计目的1.1 了解各种各种小灯循环点亮和渐变效果的产生原理。

1.2 掌握并行接口芯片8255A逻辑功能及使用方法。

1.3 掌握一定的汇编语言知识,培养自己的动手操作能力。

1.4 学习程序设计的基本思路和方法。

2、设计要求2.1 以8086CPU为核心、并行接口芯片8255A和3个逻辑电平开关设计——多路流水灯控制程序;2.2 该多路流水灯控制程序能实现模拟水滴下落、左向移动流水灯和右向移动流水灯三种不同的模拟流水形式;2.3 该多路流水灯控制程序在输入有效代码时才能产生所需的流水形式,否则,小灯全灭。

3、设计思路总体方案设计分析在本实验中要求用8255A的B口做为输出,接8个发光二极管,从而实现8位流水灯的显示效果,故基本的接线可以如下面图2所示。

在C口的低三位接3个开关,实现3个扩展功能的控制,在PC0-PC7口分别对应的接八个发光二极管。

3.1模拟水滴下落(1) 现象模拟水滴下落分为两个过程:其一,水滴形成(渐变效果),即最左位的小灯的亮度逐渐增强;其二,水滴掉下(加速与拖尾效果),即小灯移动的速度逐渐加快以及渐隐效果。

(2) 原理水滴形成是在一个周期内,我们可以调节亮和灭的时间,达到调节亮度的目的。

因为一次亮灭为一个周期,由于人眼对时间的分辨率有限,变化较快的的闪烁频率无法识别,只要周期够短,人眼就看不出闪烁了。

因此利用此原理,亮的时间长一点,灭的时间短一点,看起来就亮一些,否则就暗一些从而实现渐变的效果及水滴的形成,给人的感觉是D0位小灯的亮度逐渐增大。

水滴掉下过程是首先定义一些时间数组,然后通过数组所定义的时间的逐渐变化来使硬件产生小灯的加速移动的效果。

拖尾效果是首先定义一些时间数组,然后通过数组所定义的时间的逐渐变化来使硬件产生小灯的渐隐的效果。

3.2左向移动流水灯(1) 现象左向移动流水灯的实验现象是首先最左边的灯亮,然后是最左边的灯灭,此时左起第二个灯亮,依次轮流亮,直到第八个灯亮。

  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) {
相关文档
最新文档