51单片机流水灯程序

51单片机流水灯程序,第1张

程序如下,仿真见附件。有问题请追问。

#include <AT89X51h>

#define uchar unsigned char

#define uint unsigned int

bit flag_1s=0;

uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]

//uchar code tab[8]={0x05,0,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小题用这个表]

void InitTimer1(void)

{

    TMOD = 0x10;

    TH1 = 0x3C;

    TL1 = 0x0B0;

    EA = 1;

    ET1 = 1;

    TR1 = 1;

}

void main(void)

{

    static uchar j;

    InitTimer1();

P0=0;

P1=0;

P2=0;

P3=0;

flag_1s=1;

while(1)

{

if(flag_1s==1)

{

flag_1s=0;

P2=tab[j];

j++;

if(j>=8) j=0;

}

}

}

void Timer1Interrupt(void) interrupt 3

{

    static uchar i;

    TH1 = 0x3C;

    TL1 = 0x0B0;

    //add your code here!

    i++;

    if(i>=20)//50ms20=1000ms

    {

    i=0;

    flag_1s=1;

    }

}

#include

#defineucharunsignedchar

#defineuintunsignedint

voidDelayms(uintx)

{

uinti,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

voidmain(){

uchari,j;

while(1)

{

j=0x01;//8个流水灯逐个闪动

for(i=0;i

{

P0=~j;

Delayms(300);

j

}

j=0x80;//8个流水灯反向逐个闪动

for(i=0;i

{

P0=~j;

Delayms(300);

j>>=1;

}

}

}

一、AVR系列单片机开发板

本开发板可使用于多种型号的AVR单片机,本板主配ATmega16单片机。除了丰富的硬件资源外,还配有仿真器,可以很方便的调试硬件,大大减小调试周期。所有IO口全部引出,用户可以任意扩展功能。

二、AVR_PQ1A开发板实例程序(演示程序)

( 1 ) LED LED灯驱动程序,两种演示方式

( 2 ) SMG 数码管驱动程序,循环滚动显示数字1-6

( 3 ) 1602 1602液晶驱动程序,除正常显示ASCII码外,还教如何显示中文

( 4 ) 12864 12864液晶驱动程序,显示汉字和图形。液晶为带字库的 ST7920控制器的液晶。

( 5 ) SKEY 4个独立按键驱动程序,采用查询方式驱动

( 6 ) SKEY_INT 利用按键产生外部中断,教你中断程序的编写

( 7 ) MKEY 4x4矩阵按键驱动程序,教你如何扫描矩阵按键

( 8 ) TIMER0INT 定时器0驱动程序,教你如何使用定时器

( 9 ) AD Mega16自带的AD的驱动程序

( 10 ) DA SPI接口的8位DA驱动程序,利用Mega16的硬SPI接口

( 11 ) DS18B20 数字温度传感器驱动程序,教你如何显示小数

( 12 ) TWI( IIC ) IIC接口数字电位器驱动程序,利用Mega16的硬件IIC接口

( 13 ) BEEP 蜂鸣器唱歌程序,教你如何唱出好听的歌曲

( 14 ) PWM Mega16的定时器1驱动程序,实现PWM输出功能

( 15 ) RELAY 继电器驱动程序,利用Mega16的I/O口直接驱动继电器

( 16 ) UART Mega16的异步串口驱动程序,教你如何实现串口通信

( 17 ) RTC 时钟芯片驱动程序,可以显示和利用按键设定时间

( 18 ) EEPROM Mega16的EEPROM驱动程序,读写内部EEPROM

( 19 ) PS2 标准PS2键盘驱动程序,教你如何读入扫描码并译成ASCII码

( 20 ) USB USBD12固件程序,教你实现枚举过程和数据传输

( 21 )uC/OS-II 移植好的 *** 作系统,执行两个任务,编译后,占用Mega16的26%资源。

//假设晶振12MHZ,P1控制8个LED低电平亮

#include "reg51h"

unsigned int YSJS=0;

signed char LED=0XFE;

void main(void)

{

TMOD |= 0X10; //定时器1工作于方式1,16位定时器

TH1 = 0XFF; //定时器1定时时间=500uS

TL1 = 0X06;

ET1 = 1; //使能定时器1中断

EA =1; //开总中断

P1 = LED;

while(1)

{

}

}

void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组

{

TH1 = 0XFF; //定时器1定时时间=500us

TL1 = 0X06;

YSJS++;

if(YSJS==1000) //500uS1000=500000us=05s,可调整

{

P1 = LED;

LED=LED<<1

LED=LED | 1

if(LED==0XFF)LED=0XFE;

YSJS = 0

}

}

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

void delay(uint z);

main()

{

uchar aa;

while(1)

{

aa=0xfe;

P1=aa;

delay(100);

while(1)

{

aa=_crol_(aa,1);

P1=aa;

delay(100);

}

}

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。

2、#include "reg51h"首先写出单片机的头函数。

3、#include "intrinsh"输入位移函数。

4、unsigned int count=0,led;定义函数。

5、输入主函数,定义单片机的端口,写入延时函数。

6、中断跳转,使流水灯运行起来。

以上就是关于51单片机流水灯程序全部的内容,包括:51单片机流水灯程序、设计一个LED流水灯电路并写出程序、流水灯的多种实现方式: 编写单片机C语言程序,在单片机实验板上实现流水灯效果,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10629707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存