|
- #include"reg52.h"//單片機(jī)頭文件
- #define uchar unsigned char//宏定義,用uchar表示unsigned char,叫無(wú)符號(hào)字符型數(shù)據(jù)類(lèi)型,取值范圍為:0到255。
- #define uint unsigned int//宏定義,用uint表示unsigned int,叫無(wú)符號(hào)整數(shù)型數(shù)據(jù)類(lèi)型,取值范圍為:0到65535。
- sbit qitingjian=P1^0;//位定義啟停鍵
- sbit zhengzhuan=P1^1;//位定義正轉(zhuǎn)鍵
- sbit fanzhuan=P1^2;//位定義反轉(zhuǎn)鍵
- sbit jiasujian=P1^3;//位定義加速鍵
- sbit jiansujian=P1^4;//位定義減速鍵
- sbit xuanze=P1^5;//位定義選擇鍵
- sbit IN1=P2^0;//位定義L298M芯片IN1端口
- sbit IN2=P2^1;//位定義L298M芯片IN2端口
- sbit IN3=P2^2;//位定義L298M芯片IN3端口
- sbit IN4=P2^3;//位定義L298M芯片IN4端口
- sbit ENA=P2^4;//位定義L298M芯片使能端ENA
- sbit ENB=P2^5;//位定義L298M芯片使能端ENB
- //sbit duan=P3^0;//位定義L298M芯片控制端IN1
- //sbit wei=P3^1;//位定義L298M芯片控制端IN2
- sbit qitingled=P3^4;//位定義啟停指示燈
- sbit zhengzhuanled=P3^5;//位定義正轉(zhuǎn)指示燈
- sbit fanzhuanled=P3^6;//位定義反轉(zhuǎn)指示燈
- sbit xuanzeled=P3^7;//位定義選擇指示燈
- uchar xuanzenum;//選擇次數(shù)變量
- uchar motor1flag;//電機(jī)1啟動(dòng)標(biāo)志位變量
- uchar motor2flag;//電機(jī)2啟動(dòng)標(biāo)志位變量
- uchar motor1_pwm_flag;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量
- uchar motor2_pwm_flag;//電機(jī)2脈沖寬度調(diào)制標(biāo)志位變量
- //sbit waibuzhongduanling=P3^2; //外部中斷0端口
- //uint qian,bai,shi,ge,zhuansu;//數(shù)碼管千位變量、百位變量、十位變量、個(gè)位變量以及轉(zhuǎn)速變量
- //uint maichongcount,Time0num,Time1num,pwm,qitingnum,zhengzhuanflag,fanzhuanflag;//脈沖計(jì)數(shù)變量、定時(shí)器0定時(shí)計(jì)數(shù)變量、定時(shí)器1定時(shí)計(jì)數(shù)變量、脈沖寬度調(diào)制變量、啟停鍵按下數(shù)次變量、正轉(zhuǎn)標(biāo)志位變量、反轉(zhuǎn)標(biāo)志位變量
- uint Time0num,pwm,qitingnum,zhengzhuanflag,fanzhuanflag;//定時(shí)器0定時(shí)計(jì)數(shù)變量、脈沖寬度調(diào)制變量、啟停鍵按下數(shù)次變量、正轉(zhuǎn)標(biāo)志位變量、反轉(zhuǎn)標(biāo)志位變量
- //uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x40,0x7c,0x39,0x5e,0x79,0x71,0x00};//共陰數(shù)碼管段碼,高電平點(diǎn)亮段碼,低電平熄滅段碼。
- //uchar code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};//共陰數(shù)碼管位碼,低電平點(diǎn)亮位碼,高電平熄滅位碼。
- //void delay(uint jishi);//毫秒延時(shí)函數(shù)
- //void TimerInit();//定時(shí)器初始化函數(shù)
- //void Time0();//定時(shí)器0定時(shí)函數(shù)
- //void Time1();//定時(shí)器1定時(shí)函數(shù)
- //void KeyScan();//按鍵掃描函數(shù)
- //void waibuzhongduanlingjishu();//外部中斷0計(jì)數(shù)函數(shù)
- //void shumaguandisplay(uint qian,uint bai,uint shi,uint ge);//數(shù)碼管顯示函數(shù)
- //void shumaguannodisplay(uint qian,uint bai,uint shi,uint ge);//數(shù)碼管無(wú)顯示函數(shù)
- void delay(uint jishi)//延時(shí)函數(shù)
- {
- uint i,j;
- for(i=jishi;i>0;i--)
- for(j=110;j>0;j--);
- }
- void TimerInit()//定時(shí)器初始化函數(shù)
- {
- TMOD=0x01;//設(shè)定定時(shí)器為定時(shí)器0和定時(shí)器1,工作模式都為1。
- TH0=(65536-1000)/256;//TH0裝初值為65536-1000=64536,即定時(shí)1000微妙,相當(dāng)于1毫秒。
- TL0=(65536-1000)%256;//TL0裝初值為65536-1000=64536
- // TH1=(65536-50000)/256;//TH1裝初值為65536-50000=15536,即定時(shí)50000微妙,相當(dāng)于50毫秒。
- // TL1=(65536-50000)%256;//TL1裝初值為65536-50000=15536
- EA=1;//全局中斷允許
- ET0=1;//打開(kāi)定時(shí)器0中斷允許
- TR0=0;//關(guān)定時(shí)器0
- // EX0=1;//開(kāi)外部中斷0允許
- // IT0=1;//設(shè)置外部中斷0下降觸發(fā)中斷
- // ET1=1;//打開(kāi)定時(shí)器1中斷允許
- // TR1=1;//開(kāi)定時(shí)器1
- }
- void Time0() interrupt 1//定時(shí)器0定時(shí)函數(shù),每1毫秒產(chǎn)生PWM波一次。
- {
- TH0=(65536-1000)/256;//TH0重裝初值為65536-1000=64536,即定時(shí)1000微妙,相當(dāng)于1毫秒。
- TL0=(65536-1000)%256;//TH0重裝初值為65536-1000=64536
- Time0num++;//定時(shí)器0定時(shí)計(jì)數(shù)變量先賦值再自加
- if(motor1_pwm_flag==1&&motor2_pwm_flag==0)
- {
- if(Time0num==20)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量是否大于等于20,PWM波完整周期為20ms,定時(shí)器0定時(shí)計(jì)數(shù)變量Time0num數(shù)值越大,電機(jī)運(yùn)轉(zhuǎn)越快。
- {
- Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量等于0
- }
- if(Time0num<pwm)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量還否小于脈沖寬度調(diào)制變量
- {
- ENA=1;//L298M芯片使能端ENA置高電平,電機(jī)運(yùn)轉(zhuǎn)。
- // zhuansuled=0;//開(kāi)轉(zhuǎn)速指示燈
- }
- else
- {
- ENA=0;//L298M芯片使能端ENA置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- // zhuansuled=1;//關(guān)轉(zhuǎn)速指示燈
- }
- }
- if(motor1_pwm_flag==0&&motor2_pwm_flag==1)
- {
- if(Time0num==20)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量是否大于等于20,PWM波完整周期為20ms,定時(shí)器0定時(shí)計(jì)數(shù)變量Time0num數(shù)值越大,電機(jī)運(yùn)轉(zhuǎn)越快。
- {
- Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量等于0
- }
- if(Time0num<pwm)//判斷定時(shí)器0定時(shí)計(jì)數(shù)變量還否小于脈沖寬度調(diào)制變量
- {
- ENB=1;//L298M芯片使能端ENA置高電平,電機(jī)運(yùn)轉(zhuǎn)。
- // zhuansuled=0;//開(kāi)轉(zhuǎn)速指示燈
- }
- else
- {
- ENB=0;//L298M芯片使能端ENA置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- // zhuansuled=1;//關(guān)轉(zhuǎn)速指示燈
- }
- }
- }
- // void Time1() interrupt 3//定時(shí)器1定時(shí)函數(shù),定時(shí)50ms,采集電機(jī)轉(zhuǎn)速。
- //{
- // TH1=(65536-50000)/256;//TH1裝初值為65536-50000=15536,即定時(shí)50000微妙,相當(dāng)于50毫秒。
- // TL1=(65536-50000)%256;//TH1裝初值為65536-50000=15536
- // Time1num++;//定時(shí)器1定時(shí)計(jì)數(shù)變量先賦值再自加
- // if(Time1num==20)//判斷定時(shí)器1定時(shí)計(jì)數(shù)變量是否等于20,即每1秒測(cè)速一次。
- // {
- // Time1num=0;//定時(shí)器1定時(shí)計(jì)數(shù)變量等于0
- // EX0=0;//關(guān)外部中斷0
- // zhuansu=55*maichongcount/24;//電機(jī)轉(zhuǎn)速=每分鐘X脈沖計(jì)數(shù)變量/每轉(zhuǎn)一圈需要的脈沖個(gè)數(shù),即55*maichongcount/24,其中的55表示55秒,為什么不是一分鐘60秒?由于Protues仿真電路圖中的MOTOR-ENCODER仿真件存在誤差,為了讓MOTOR-ENCODER仿真件顯示的轉(zhuǎn)速達(dá)到數(shù)碼管顯示轉(zhuǎn)速的效果,進(jìn)行了一定秒數(shù)的修改,不過(guò)實(shí)際運(yùn)用要以一分鐘60秒為準(zhǔn),maichongcount為單片機(jī)從外部中斷0端口處獲取MOTOR-ENCODER仿真件旋轉(zhuǎn)生產(chǎn)的脈沖計(jì)數(shù)變量,24為MOTOR-ENCODER仿真件每旋轉(zhuǎn)一圈產(chǎn)生的脈沖個(gè)數(shù)。
- // qian=zhuansu/1000;//數(shù)碼管千位顯示
- // bai=zhuansu%1000/100;//數(shù)碼管百位顯示
- // shi=zhuansu%100/10;//數(shù)碼管十位顯示
- // ge=zhuansu%10;//數(shù)碼管個(gè)位顯示
- // maichongcount=0;//脈沖計(jì)數(shù)變量歸零
- // EX0=1;//開(kāi)外部中斷0
- // }
- //}
- // void waibuzhongduanlingjishu() interrupt 0 using 1//外部中斷0計(jì)數(shù)函數(shù),外部脈沖計(jì)數(shù)。
- //{
- // maichongcount++ ;//脈沖計(jì)數(shù)變量先賦值再自加
- // }
- void KeyScan()//按鍵掃描函數(shù)
- {
- if(qitingjian==0)//判斷啟停鍵是否按下
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- delay(5);
- if(qitingjian==0)//再次判斷啟停鍵是否按下
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)
- qitingnum++;//啟停鍵按下數(shù)次變量先賦值再加加
- qitingled=0;//開(kāi)啟停指示燈
- while(!qitingjian);//啟停鍵釋放
- if(qitingnum==2)//判斷啟停鍵按下數(shù)次變量是否為2
- {
- TR0=0;
- qitingnum=0;//啟停鍵按下數(shù)次變量歸零
- xuanzenum=0;//選擇次數(shù)變量清0
- Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量清0
- pwm=0;//脈沖寬度調(diào)制變量清0
- qitingled=1;//關(guān)啟停指示燈
- zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
- fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
- xuanzeled=1;//關(guān)選擇指示燈
- zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
- fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
- motor1flag=0;//電機(jī)1啟動(dòng)標(biāo)志位變量置0
- motor2flag=0;//電機(jī)2啟動(dòng)標(biāo)志位變量置0
- motor1_pwm_flag=0;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量
- motor2_pwm_flag=0;//電機(jī)2脈沖寬度調(diào)制標(biāo)志位變量
- IN1=0;//L298M芯片控制端IN1置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN2=0;//L298M芯片控制端IN2置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN3=0;//L298M芯片控制端IN3置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN4=0;//L298M芯片控制端IN4置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- // shumaguannodisplay(qian,bai,shi,ge);//數(shù)碼管無(wú)顯示函數(shù)
- }
- }
- }
- if(qitingnum==1)//判斷啟停鍵是否第一次按下
- {
- if(xuanze==0)//判斷選擇鍵是否第一次按下
- {
- delay(5);
- if(xuanze==0)//再次判斷選擇鍵是否按下
- {
- TR0=1;
- xuanzeled=0;//選擇指示燈
- xuanzenum++;//選擇次數(shù)變量自加
- motor1flag=1;//電機(jī)1啟動(dòng)標(biāo)志位變量置1
- motor2flag=0;//電機(jī)2啟動(dòng)標(biāo)志位變量置0
- motor1_pwm_flag=1;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置1
- motor2_pwm_flag=0;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置0
- zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
- fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
- IN3=0;//L298M芯片控制端IN3置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN4=0;//L298M芯片控制端IN4置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- while(!xuanze);//選擇鍵釋放
- }
- }
- if(xuanzenum==2)//判斷選擇次數(shù)變量是否為2
- {
- // TR0=0;
- // Time0num=0;//定時(shí)器0定時(shí)計(jì)數(shù)變量清0
- // pwm=0;//脈沖寬度調(diào)制變量清0
- xuanzenum=0;//選擇次數(shù)變量清0
- motor1flag=0;//電機(jī)1啟動(dòng)標(biāo)志位變量置1
- motor2flag=1;//電機(jī)2啟動(dòng)標(biāo)志位變量置0
- motor1_pwm_flag=0;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置0
- motor2_pwm_flag=1;//電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置1
- xuanzeled=1;//關(guān)選擇指示燈
- zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
- fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
- zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
- fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
- IN1=0;//L298M芯片控制端IN1置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN2=0;//L298M芯片控制端IN2置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- }
- if(motor1flag==1&&motor2flag==0&&motor1_pwm_flag==1)//判斷電機(jī)1啟動(dòng)標(biāo)志位變量是否置1,電機(jī)2啟動(dòng)標(biāo)志位變量是否置0 ,電機(jī)1脈沖寬度調(diào)制標(biāo)志位變量置1,此處為電機(jī)1正反轉(zhuǎn)。
- {
- if(zhengzhuan==0)//判斷是否按下正轉(zhuǎn)鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- delay(5);
- if(zhengzhuan==0)//再次判斷是否按下正轉(zhuǎn)
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- zhengzhuanled=0;//開(kāi)正轉(zhuǎn)指示燈
- fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
- zhengzhuanflag=1;//正轉(zhuǎn)標(biāo)志位變量為1
- fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
- IN1=0;//L298N芯片控制端IN1置高電平
- IN2=1;//L298N芯片控制端IN2置低電平
- while(!zhengzhuan);//正轉(zhuǎn)鍵釋放
- }
- }
- if(fanzhuan==0)//判斷是否按下反轉(zhuǎn)鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- delay(5);
- if(fanzhuan==0)//再次判斷是否按下反轉(zhuǎn)鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
- fanzhuanled=0;//開(kāi)反轉(zhuǎn)指示燈
- zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
- fanzhuanflag=1;//反轉(zhuǎn)標(biāo)志位變量為1
- IN1=1;//L298N芯片控制端IN1置低電平
- IN2=0;//L298N芯片控制端IN2置高電平
- while(!fanzhuan);//反轉(zhuǎn)鍵釋放
- }
- }
- }
- if(motor1flag==0&&motor2flag==1&&motor2_pwm_flag==1)//判斷電機(jī)1啟動(dòng)標(biāo)志位變量是否置0,電機(jī)2啟動(dòng)標(biāo)志位變量是否置1 ,電機(jī)2脈沖寬度調(diào)制標(biāo)志位變量置1,此處為電機(jī)2正反轉(zhuǎn)。
- {
- if(zhengzhuan==0)//判斷是否按下正轉(zhuǎn)鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- delay(5);
- if(zhengzhuan==0)//再次判斷是否按下正轉(zhuǎn)
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- zhengzhuanled=0;//開(kāi)正轉(zhuǎn)指示燈
- fanzhuanled=1;//關(guān)反轉(zhuǎn)指示燈
- zhengzhuanflag=1;//正轉(zhuǎn)標(biāo)志位變量為1
- fanzhuanflag=0;//反轉(zhuǎn)標(biāo)志位變量為0
- IN3=0;//L298N芯片控制端IN3置高電平
- IN4=1;//L298N芯片控制端IN4置低電平
- while(!zhengzhuan);//正轉(zhuǎn)鍵釋放
- }
- }
- if(fanzhuan==0)//判斷是否按下反轉(zhuǎn)鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- delay(5);
- if(fanzhuan==0)//再次判斷是否按下反轉(zhuǎn)鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- zhengzhuanled=1;//關(guān)正轉(zhuǎn)指示燈
- fanzhuanled=0;//開(kāi)反轉(zhuǎn)指示燈
- zhengzhuanflag=0;//正轉(zhuǎn)標(biāo)志位變量為0
- fanzhuanflag=1;//反轉(zhuǎn)標(biāo)志位變量為1
- IN3=1;//L298N芯片控制端IN3置低電平
- IN4=0;//L298N芯片控制端IN4置高電平
- while(!fanzhuan);//反轉(zhuǎn)鍵釋放
- }
- }
- }
- if(zhengzhuanflag==1||fanzhuanflag==1)//判斷電機(jī)是否為正轉(zhuǎn)或反轉(zhuǎn)
- {
- if(jiasujian==0)//判斷是否按下加速鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- delay(5);
- if(jiasujian==0)//再次判斷是否按下加速鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- if(pwm < 20)//判斷脈沖寬度調(diào)制變量是否小于20
- pwm++;//脈沖寬度調(diào)制變量先賦值再加加
- if(pwm >= 20)//判斷脈沖寬度調(diào)制變量是否大于等于20
- pwm = 19;//脈沖寬度調(diào)制變量等于20
- while(!jiasujian);//加速鍵釋放
- }
- }
- if(jiansujian==0) //判斷是否按下減速鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- delay(5);
- if(jiansujian==0)//再次判斷是否按下減鍵
- {
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)做延時(shí)
- if(pwm > 0)//判斷脈沖寬度調(diào)制變量是否大于0
- pwm--;//脈沖寬度調(diào)制變量先賦值再減減
- if(pwm <= 0)//判斷脈沖寬度調(diào)制變量是否小于等于0
- pwm = 0;//脈沖寬度調(diào)制變量等于0
- while(!jiansujian);//減速鍵釋放
- }
- }
- }
- }
- }
- // void shumaguandisplay(uint qian,uint bai,uint shi,uint ge)//數(shù)碼管顯示函數(shù)
- //{
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[qian];//數(shù)碼千位顯示
- // duan=0;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[0];//第1位數(shù)碼管顯示
- // wei=0;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- //
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[bai];//數(shù)碼百位顯示
- // duan=0;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[1];//第2位數(shù)碼管顯示
- // wei=0;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- //
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[shi];//數(shù)碼管十位顯示
- // duan=0;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[2];//第3位數(shù)碼管顯示
- // wei=0;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- //
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[ge];//數(shù)碼管個(gè)位顯示
- // duan=0;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[3];//第4位數(shù)碼管顯示
- // wei=0;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- // }
- // void shumaguannodisplay(uint qian,uint bai,uint shi,uint ge)//數(shù)碼管顯示函數(shù)
- //{
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[qian];//數(shù)碼千位顯示
- // duan=1;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[0];//第1位數(shù)碼管顯示
- // wei=1;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- //
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[bai];//數(shù)碼百位顯示
- // duan=1;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[1];//第2位數(shù)碼管顯示
- // wei=1;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- //
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[shi];//數(shù)碼管十位顯示
- // duan=1;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[2];//第3位數(shù)碼管顯示
- // wei=1;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- //
- // duan=1;//開(kāi)數(shù)碼管段碼端口
- // P0=table[ge];//數(shù)碼管個(gè)位顯示
- // duan=1;//關(guān)數(shù)碼管段碼端口
- // P0=0x00;//關(guān)數(shù)碼管段碼顯示
- // wei=1;//開(kāi)數(shù)碼管位碼端口
- // P2=weima[3];//第4位數(shù)碼管顯示
- // wei=1;//關(guān)數(shù)碼管位碼端口
- // delay(1);//延時(shí)
- // }
- void main()//主函數(shù)
- {
- TimerInit();//定時(shí)器初始化函數(shù)
- ENA=0;
- ENB=0;
- IN1=0;//L298M芯片控制端IN1置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN2=0;//L298M芯片控制端IN2置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN3=0;//L298M芯片控制端IN3置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- IN4=0;//L298M芯片控制端IN4置低電平,電機(jī)不運(yùn)轉(zhuǎn)。
- while(1)//死循環(huán)
- {
- KeyScan();//按鍵掃描函數(shù)
- // if(qitingnum==1)//判斷啟停鍵是否第一次按下
- // shumaguandisplay(qian,bai,shi,ge);//數(shù)碼管顯示函數(shù)
- }
- }
復(fù)制代碼
圖片111.png (188.23 KB, 下載次數(shù): 47)
下載附件
2020-5-19 21:47 上傳
圖片112.png (185.7 KB, 下載次數(shù): 38)
下載附件
2020-5-19 21:47 上傳
|
評(píng)分
-
查看全部評(píng)分
|