|
lcd顯示屏上顯示的轉(zhuǎn)速和電機(jī)下面顯示的數(shù)字不符,他們有什么關(guān)系
QQ截圖20190504182503.png (87.67 KB, 下載次數(shù): 24)
下載附件
2019-5-4 18:25 上傳
程序如下
- #include <AT89X52.h>
- #include <stdio.h>
- #include <string.h>
- #define uint unsigned int
- #define uchar unsigned char //宏定義
- sbit zheng=P1^0; //電機(jī)正轉(zhuǎn)控制鍵
- sbit fan=P1^1; //電機(jī)反轉(zhuǎn)控制鍵
- sbit add=P1^2; //電機(jī)加速
- sbit dec=P1^3; //電機(jī)減速
- sbit stop=P1^4; //電機(jī)停止
- sbit PWMZ=P2^0; //電機(jī)正轉(zhuǎn)PWM信號
- sbit PWMF=P2^7; //電機(jī)反轉(zhuǎn)PWM信號
- bit run=0; //電機(jī)運(yùn)行標(biāo)志位,=1時(shí)電機(jī)運(yùn)行,=0電機(jī)停止
- bit Z=0,F=0; //電機(jī)正反標(biāo)志位
- unsigned char PWM=0xAF; //開機(jī)時(shí)速度為中間值
- //unsigned char code suduzhi[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; //速度等級數(shù)值
- void delay(unsigned char n)
- {
- unsigned char i,j;
- for(j=0;j<n;j++)
- for(i=0;i<125;i++);
- }
- /*****主函數(shù)*****/
- void main(void)
- {
- TMOD=0x21;
- TH0=0xFF;
- TL0=0x00;
- TH1=PWM;
- TL1=PWM;
- EA=1;
- ET0=1;
- ET1=1;
- EX0=1;
- IT0=1;
- PT0=1; //定時(shí)中斷優(yōu)先
- PT1=1;
- PX0=0;
- PWMZ=0; //開機(jī)時(shí),電機(jī)不轉(zhuǎn)動
- PWMF=0;
- while(1)
- {
-
- }
- }
- void int0(void) interrupt 0
- {
- EX0=0; //關(guān)外部中斷0
- if(zheng==0)
- {
- TR0=1;
- Z=1;
- F=0;
- PWMF=0;
- }
- if(fan==0)
- {
- TR0=1;
- F=1;
- Z=0;
- PWMZ=0;
- }
- if(add==0)
- {
- delay(10);
- if(add==0)
- {
- if(PWM<0xFF) //定時(shí)初值加,脈寬加,速度加
- PWM=PWM+8;
- else
- PWM=0xFF;
- }
- while(add==0);
- }
- if(dec==0) //定時(shí)初值減,脈寬減,速度減
- {
- delay(10);
- if(dec==0)
- {
- if(PWM>0x1F)
- PWM=PWM-8;
- else
- PWM=0x1F;
- }
- while(dec==0);
- }
- if(stop==0)
- {
- TR0=0;
- TR1=0;
- PWMZ=0;
- PWMF=0;
- }
- EX0=1;
- }
- void time0(void) interrupt 1
- {
- TR0=0;
- TR1=1;
- TH0=0xFF;
- TL0=0x00;
- TH1=PWM;
- TL1=PWM;
- TR1=1;
- PWMZ=0;
- PWMF=0;
- TR0=1;
- }
復(fù)制代碼
|
|