|
- #include<reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar time;
- uint count=0; //定義占空比,并初始占空比為0%
- sbit PWM=P2^0; //P2^0口輸出PWM
- sbit key_add=P3^4; //電機(jī)加速的按鍵 的I/O口
- sbit key_dec=P3^5; //電機(jī)減速的按鍵 的I/O口
- sbit led0 = P2^1;
- sbit led1 = P2^2;
- unsigned char code table[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- uint i=0,j;
- /************函數(shù)聲明**************/
- void delayxms(uint z); //延時(shí)
- void Motor_add(); //電機(jī)加速,即增加占空比
- void Motor_dec(); //電機(jī)減速,即減少占空比
- void timer0_init(); //定時(shí)器0初始化
- void display(uint count);
- /*********主函數(shù)********************/
- void main()
- {
- timer0_init();
- delayxms(2);
- while(1)
- {
- Motor_add();
- Motor_dec();
- display(count);
- }
- }
- /****************延時(shí)處理**********************/
- void delayxms(uint z) //延時(shí)xms程序
- {
- uint x,y;
- for(y=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void Motor_add() //電機(jī)加速
- {
- if(key_add==0)
- {
- delayxms(2); //此處時(shí)間不能太長(zhǎng),否者會(huì)的中斷產(chǎn)生沖突
- if(key_add==0)
- {
- count+=1; //每按一次加速按鍵占空比加1
- if(count>=99) //限定占空比上限
- {
- count=99;
- }
- }
- while(!key_add);
- }
- }
- void Motor_dec()//電機(jī)減速
- {
- if(key_dec==0)
- {
- delayxms(2);//此處時(shí)間不能太長(zhǎng),否者會(huì)的中斷產(chǎn)生沖突
- if(key_dec==0)
- {
- count-=1; //每按一次減速按鍵占空比減1
- if(count<=0) //限定占空比下限
- {
- count=0;
- }
- }
- while(!key_dec);
- }
- }
- /***********定時(shí)器0初始化***********/
- void timer0_init()
- {
- TMOD=0x01; //定時(shí)器0工作于方式1
- TH0=(65536-10)/256;
- TL0=(65536-10)%256;
- TR0=1;
- ET0=1;
- EA=1;
- }
- /**************定時(shí)0中斷處理******************/
- void timer0_int() interrupt 1
- {
- TR0=0; //設(shè)置定時(shí)器初值期間,關(guān)閉定時(shí)器
- TH0=(65536-10)/256;
- TL0=(65536-10)%256;
- TR0=1;
- time++;
- if(time<count) //count為占空比
- {
- PWM=1; //輸出高電平
- }
- else
- PWM=0;
- if(time>=100)
- {
- time=0;
- }
- }
- void display(uint count) //顯示函數(shù)
- {
- i = count/10;
- j = count-i*10;
- led1=0;
- P0=table[i];
- led0=1;
- delayxms(5);
- led0=0;
- P0=table[j];
- led1=1;
- delayxms(5);
- }
復(fù)制代碼 |
|