手動(dòng)可調(diào)變速的流水燈程序
$ 程序作用:手動(dòng)可調(diào)變速的流水燈的效果
本文引用地址:http://butianyuan.cn/article/201612/324576.htm$ 程序作者: JQ(QQ:489555226 Email:489555226@qq.com)
$ 程序版本: JQ--V0.1
$ 編制日期: 2011-07-01
$ 編譯器:Keil C uVision2
$ 所用芯片:STC89C52,11.0592M晶振
$ 程序開(kāi)發(fā)板:JQ--V0.1版本
$ 程序通俗易懂 注釋詳細(xì) 結(jié)構(gòu)化模塊是51單片機(jī)初學(xué)愛(ài)好者的理想選擇
******************** JQ--V0.1 宏晶公司STC單片機(jī)開(kāi)發(fā)板 **********************/
#include
#define uchar unsigned char //數(shù)據(jù)類(lèi)型uchar的宏定義
#define uint unsigned int //數(shù)據(jù)類(lèi)型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}; //花樣跑馬燈數(shù)組定義 隨便改變數(shù)組里面的值就可以改變花樣(該數(shù)組有27個(gè)數(shù)值)
void main(void) //主函數(shù)
{
uchar i;
init();
while(1) //while死循環(huán)
{
for(i=0;i<8;i++) //0-26共27次循環(huán)依次取出數(shù)組中的數(shù)(i小于多少由數(shù)組中的數(shù)決定)
{
led=huayang[i]; //把取出的數(shù)以總線(xiàn)的方式賦給led即P0口
}
}
}
void init() //初始化
{
speed=0;
TMOD=0x01; //定時(shí)器T0的應(yīng)用 后面會(huì)詳細(xì)講
TH0=(65536-speed)/256;
TL0=(65536-speed)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1 //定時(shí)器T0中斷 后面會(huì)詳細(xì)講
{
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); //松手檢測(cè) 只要當(dāng)key==1時(shí)才會(huì)退出這個(gè)while循環(huán)!
if(num==1)
{
speed=50; //速度調(diào)節(jié)(也就是改變定時(shí)器的初值?。?br /> }
if(num==2)
{
speed=100;
}
if(num==3)
{
speed=150;
}
if(num==4)
{
speed=200;
}
}
}
if(num==5) num=0;
}
void delay(uint k) //延時(shí)子函數(shù)
{
while(--k);
}
//這過(guò)程序用到了定時(shí)器 后面會(huì)跟大家詳細(xì)講解的! 謝謝大家?。?!
//對(duì)于調(diào)速函數(shù)可以進(jìn)行修改,使其變得更加的簡(jiǎn)潔,speed=num*50;if(num==6) num=0;//防止程序出錯(cuò),所以進(jìn)行了限制!
評(píng)論