您的位置 首页 分销

手动可调变速的流水灯程序

***********20117JQ–V01宏晶公司STC单片机开发板************$程序作用:手动可调变速的流水灯的效果$程序作者:JQ(QQ:48

/*********** 2011.7 JQ–V0.1 宏晶公司STC单片机开发板 ************

$ 程序作用:手动可调变速流水灯的作用

$ 程序作者: JQ(QQ:489555226 Email:489555226@qq.com)

$ 程序版别: JQ–V0.1

$ 编制日期: 2011-07-01

$ 编译器:Keil C uVision2

$ 所用芯片:STC89C52,11.0592M晶振

$ 程序开发板:JQ–V0.1版别

$ 程序通俗易懂 注释具体 结构化模块是51单片机初学爱好者的抱负挑选

******************** JQ–V0.1 宏晶公司STC单片机开发板 **********************/

#include //52单片机头文件界说

#define uchar unsigned char //数据类型uchar的宏界说
#define uint unsigned int //数据类型uint的宏界说

#define led P0 //P0口宏界说
void init();
uchar count,speed,num; //全局变量界说

sbit key =P3^2;

void delay(uint k);

uchar code huayang[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};//0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0x55,0x55,0x00}; //把戏跑马灯数组界说 随意改动数组里边的值就能够改动把戏(该数组有27个数值)
void main(void) //主函数
{
uchar i;
init();
while(1) //while死循环
{
for(i=0;i<8;i++) //0-26共27次循环顺次取出数组中的数(i小于多少由数组中的数决议)
{
led=huayang[i]; //把取出的数以总线的方法赋给led即P0口
}
}
}

void init() //初始化
{
speed=0;
TMOD=0x01; //定时器T0的使用 后面会具体讲
TH0=(65536-speed)/256;
TL0=(65536-speed)%256;
EA=1;
ET0=1;
TR0=1;
}

void timer0() interrupt 1 //定时器T0中止 后面会具体讲
{
TH0=(65536-speed)/256;
TL0=(65536-speed)%256;
count++;
if(count==5000)
{
count=0;

if(key==0) //按键消抖
{ delay(5);
if(key==0)
num++;
while(!key); //松手检测 只需当key==1时才会退出这个while循环!

if(num==1)
{
speed=50; //速度调理(也便是改动定时器的初值!)
}

if(num==2)
{
speed=100;
}

if(num==3)
{
speed=150;
}

if(num==4)
{
speed=200;
}
}
}
if(num==5) num=0;

}

void delay(uint k) //延时子函数
{
while(–k);
}

//这过程序用到了定时器 后面会跟我们具体解说的! 谢谢我们!!!
//关于调速函数能够进行修正,使其变得愈加的简练,speed=num*50;if(num==6) num=0;//避免程序犯错,所以进行了约束!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/317834.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部