版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、/T0 產(chǎn)生雙路 PWM 信號, L298N 為直流電機調(diào)速,接 L298N 時相應的管腳上最好接上 10K 的上拉電/*晶振采用12M,產(chǎn)生的PWM的頻率約為100Hz */#include<reg51.h>#include<math.h>#define uchar unsigned char#define uint unsigned intsbit en仁P 34; /* L298sbit en 2=卩3人5; /* L298sbit s1= PWO;/* L298 sbit s2=PIF;/* L298 sbit s3=P 23;/* L298 sbit s4=P
2、1A2;/* L298 sbit R=P 29的 Enable A */ 的 Enable B */ 的 的 的 的Input 1 */Input 2 */Input 3 */Input 4 */sbit C=P 2人1;sbit L=P 2人2;sbit key=PIM;uchar t=0; /* 中斷計數(shù)器*/uchar m1=0; /* 電機 1 速度值 */ uchar m2=0; /* 電機 2 速度值 */ uchar tmp1,tmp2; /* 電機當前速度值/*電機控制函數(shù)index-電機號(1,2); speed-電機速度(0-100) */void motor(uchar
3、index, char speed)*/if(speed<=100)if(index=1) /* 電機 1 的處理 */ m1=abs(speed); /* 取速度的絕對值 */s1=1;s2=0;if(index=2) /* 電機 2的處理 */m2=abs(speed); /* 電機 2 的速度控制 */s3=1;s4=O;void Back(void) s1=0;s2=1;s3=1;s4=0;void GO(void)s1=1;s2=0;s3=1;s4=0;void TL(void)s1=1;s2=0;s3=0;s4=1;void TR(void)s1=0;s2=1;s3=1;s4
4、=0;void STOP(void)s1=1;s2=1;s3=1;s4=1;/* void delay(uint j) /* 簡易延時函數(shù) */ for(j;j>0;j-);*/void delay(uint z)uint x,y;for(x=z;x>0;x-)*/for(y=110;y>0;y-);void main()uchar i=0,j=0;TMOD=0x02; /* 設定 T0 的工作模式為 2 ,8位自動重置定時器,每過幾個機器周期,計數(shù)器加一TH0=0x9B; /* 裝入定時器的初值,計數(shù) 100 次溢出 */TL0=0x9B; /* 裝入時間常數(shù) */EA=1
5、; /* 開中斷 */ET0=1; /* 定時器 0 允許中斷 */TR0=1; /* 啟動定時器 0 */ while(1)if(key=1)/* 電機實際控制演示 */ if(i<=100) / 正轉(zhuǎn)加速 motor(1,i);motor(2,i); delay(5000);i+;else GO(); else EA=0;while(1) if(L|C|R)=0) STOP();if(L&R)GO();if(L=0)while(C) TL();if(R=0) while(C)TR();*/void timer0() interrupt 1 /* T0 中斷服務程序 */if(
6、t=0) /* 1 個 PWM 周期完成后才會接受新數(shù)值 tmp1=m1;tmp2=m2;if(t<tmp1) en1=1; else en1=0; /* 產(chǎn)生電機 1 的 if(t<tmp2) en2=1; else en2=0; /* 產(chǎn)生電機 2 的 t+;PWMPWM信號 */信號 */*/if(t>=100) t=0; /* 1 個 PWM 信號由 100 次中斷產(chǎn)生 #include<intrins.h> #include<AT89X52.h> /* * * 宏定義區(qū) * */*LCD 模塊*/#defineLCD_RW P2_6 /#de
7、fineLCD_RS P2_7 /讀寫控制端數(shù)據(jù)命令選擇端#defineLCD_E P2_5 / 執(zhí)行使能端#defineLCD_Data P1 /P1 口 #defineWrite 0x00 / 低電平寫入#defineRead 0x01 / 高電平讀出#defineData 0x01 / 高電平選擇數(shù)據(jù)#defineCmd 0x00 / 低電平選擇命令 #defineEnable 0x00 / 躍變到低電平時執(zhí)行命令#defineDisable 0x01 #defineTrue 0x01 #defineFalse 0x00 #defineLCD_Init 0x38 / 初始化模式#defi
8、neLCD_DispCtr 0x0C /開顯示及光標設置#defineLCD_CloseCtr 0x08 / 關顯示#defineLCD_CLS 0x01 / 清屏幕#defineLCD_EnterSet 0x06 / 顯示光標#defineBusy P1_7 / 忙信號/#defineP31 P0 5 /控制液晶背光 #defineP33 P3 3/* 菜單選擇模塊#defineLine 0x00 /0 代表直線模式#defineCurve 0x01 /1 代表 S 型模式#defi neNormal 0x00 /0 代表正常速度#defi neLow 0x01 /1 代表低速#defi n
9、eHigh 0x02 /2 代表高速/* * 測速/測距/測時模塊#defineCircleLength 0.132 / 小車轉(zhuǎn)一輪的長度為.132m/* 控速模塊#defineP03 P0_3 / 后電機#defineP04 P0_4 / 后電機 #defineP01 P0_1 / 前電機*/*/*/LCD 模塊一初始化設置寫命令模式 設置讀命令模式 設置寫數(shù)據(jù)模式*/*/#defineP02 P0 2 / 前電機voidSpeedlNT(void); / 測速中斷voidCo mp uteTime(void);*/voidCom puteS peedANDDista nce(void);
10、/ 計算速度和距離/* 控速模塊voidCtrSpeedlNT(void); / 控速中斷 voidTime0INT(void);voidTime1INT(void); / 控速單位時間中斷 voidClock0 _ln it(void); / 時鐘中斷初始化 voidClock1 _ln it(void); / 時鐘中斷初始化 voidCtrS peed(void);/* *全局變量區(qū)* */ float SpeedCount=0; / 測速計數(shù)脈沖float Sp eed=0.0;float Dista nce=0.0;char Time1INTCou nt=0; /T1 中斷時間計時fl
11、oat PassTime=0.00; /小車行走的時間 short IsT0INT=1;bit IsT1INT; /判斷T1是否已經(jīng)響應中斷 short lsT0INT2=1;char Thx5=0xf4,0xf4,0xc5,0xf4,0xff; /3ms,3ms,15ms,3mschar Tlx5=0x48,0x48,0x68,0x48,0xff;char Thx0=0xd8;char Tlx0=0xf0;char Thx1=0xb1; /20mschar Tlx1=0xe0;short Roun d=0;short Back=0;short Back0=0;bit Backid;bit S
12、top=0;char Area0=0;char Area1=0; / 區(qū)域變量char LowS peedArea1StartTime;char Lows peedArea1E ndTime;char HighS peedAreaE ndTime;char LowS peedArea2E ndTime;char LowSpeedArea1 PassTime=0; / 第一個低速區(qū)通過時間char HighSpeedAreaPassTime=0; / 高速區(qū)通過時間char LowSpeedArea2PassTime=0; / 第二個低速區(qū)通過時間 char ReadyToGo=4; / 倒計時
13、 char flag;bit Roundid=0;char Nocurve=0; char ChangeFlag;char Mode;bit Running;bit SelectedAll; / 模式和速度是否選擇完畢標志 bit IsSelectingMode; / 模式選擇標志 bit IsSelectingSpeed; / 速度選擇標志 bit ModeSelected; / 已經(jīng)被選擇的模式標志 char SelectedMode=10; / 模式選擇是否完畢標志 bit Next; /Next 鍵標志bit SpeedSelected; / 已經(jīng)被選中的速度方案標志 char Sel
14、ectedSpeed; /速度選擇是否完畢標志 bit ChoosingDisplay; / 人工選擇菜單開始標志 bit SelectedShow; / 顯示選擇標志 bit SelectedReturn; / 返回選擇標志 bit Selected; / 確定 /返回鍵選擇標志 bit ReturnSelection; / 返回鍵啟用標志 bit AVGSpeedShow; / 平均速度顯示標志 bit TotalDistanceShow; / 總路程顯示標志 bit ReturnMain; / 返回主菜單標志 bit AutoDisplay; / 自動顯示標志 bit GoToChoos
15、ingDisplay; / 人工選擇標志 bit AutoMode=0;char PassLineID=0;char PassLine=0;float PrepareDistance;float FirstDistance;float SecondDistance;float ThirdDistance;int FirstHigh;int SecondHigh;int ThirdHigh;float Rate=1.25; /5ms 時的速度float Count=4; / 時間的倍數(shù)/* * 全局函數(shù)實現(xiàn)區(qū) * */主函數(shù)*/*- voidmain()P01=0;P02=0;P03=0; P0
16、4=0;P31=1; / 單片機復位,背光開 Delay(40); / 延時等待 LCD 啟動 LCDInit(); / 初始化 LCD DisplayString(0x0,0," Starting. "); DisplayString(0x0,1,"DesignedBy202");Delay(300); WriteCmd(LCD_CLS);/*/EA=1; / 開總中斷 EX0=1; / 開 INT0 中斷 IT0=1; /INTO 邊沿觸發(fā) EX1=1; / 開 INT1 中斷 IT1=1; /INT1 邊沿觸發(fā) SelectedAll=False;
17、 / 開始模式和速度選擇 模式選擇 DisplayString(0x0,0,"ChooseTheMode"); DisplayString(0x0,1,"youwant. ");Delay(50); WriteCmd(LCD_CLS);IsSelectingMode=True; while(1)WriteCmd(LCD_CLS); DisplayString(0x0,0," LineMode ");DisplayString(0x0,1,"Next Yes"); Delay(300); / 延時消除抖動 while
18、(1) / 不斷檢測中斷,直到按確定鍵或是NEXT 鍵 if(Next=True) / 如果按 Next 鍵則直接跳出 break;if(ModeSelected=True) / 如果按確定鍵則設置模式為 Line 并跳出SelectedMode=Line;break; / 如果什么鍵都沒有按下,那么一直 顯示等待if(ModeSelected=True) / 按下了確定鍵,退出模式選擇IsSelectingMode=False;break;if(Next=True) / 按下了 Next 鍵,顯示下一個菜單項 Next=False;WriteCmd(LCD_CLS);DisplayStrin
19、g(0x0,0," CurveMode ");DisplayString(0x0,1,"Next Yes");Delay(300); / 延時消除抖動while(1) / 不斷檢測中斷,直到按確定鍵或是 Next 鍵 if(Next=True) / 如果再一次按下 Next 鍵,則跳出 break;if(ModeSelected=True) / 如果按下確定鍵,則設置模式為 Curve,并跳岀SelectedMode=Curve;break;if(ModeSelected=True) / 按下了確定鍵,退岀模式選擇 IsSelectingMode=Fal
20、se;break;if(Next=True) / 再一次按下了 Next 鍵,則循環(huán)模式 選擇Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," AutoMode ");DisplayString(0x0,1,"Next Yes");Delay(300); / 延時消除抖動 while(1)if(Next=True)break;if(ModeSelected=True)AutoMode=1;break;if(ModeSelected=True)IsSelectingMode=False;break;if(
21、Next=True)Next=False;continue;Delay(50);WriteCmd(LCD_CLS);速度選擇*/* if(SelectedMode=Line&&AutoMode=0)DisplayString(0x0,0," NowChoosea ");DisplayString(0x0,1," kindofSpeed");Delay(50);WriteCmd(LCD_CLS);IsSelectingSpeed=True;while(1)WriteCmd(LCD_CLS);DisplayString(0x0,0,"
22、;NormalSpeed ");DisplayString(0x0,1,"Next Yes");Delay(300); / 延時消除抖動 while(1) if(Next=True) / 如果按 Next 鍵則直接跳出 break;if(SpeedSelected=True) / 如果按確定鍵則設置速度為 Normal 并跳出Thx0=0xec;Tlx0=0x78; /5msThx1=0xf0;Tlx1=0x60; /4msThx2=0x8a;Tlx2=0xd0; /30msThx3=0xf4;Tlx3=0x48; /3msSelectedSpeed=Normal
23、;break; / 如果什么鍵都沒有按下,那么一 直顯示等待if(SpeedSelected=True) / 按下了確定鍵,退出速度選擇 IsSelectingSpeed=False; break; if(Next=True) Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," Low Speed "); DisplayString(0x0,1,"Next Yes"); Delay(300); / 延時消除抖動 while(1) if(Next=True) / 如果再一次按下 Next 鍵,則跳出 bre
24、ak;if(SpeedSelected=True) / 如果按下確定鍵,則設置速度為 Low ,并跳出SelectedSpeed=Low; / 這里沒有速度設置,因為默認 速度就是 Low break;if(SpeedSelected=True) / 按下了確定鍵,退出速度選擇 IsSelectingSpeed=False;break;if(Next=True) Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," High Speed "); DisplayString(0x0,1,"Next Yes")
25、;Delay(300); / 延時消除抖動 while(1) if(Next=True) / 如果再一次按下 Next 鍵,則跳出 break;if(SpeedSelected=True) / 如果按下確定鍵,則設置速度為High ,并跳出Thx0=0xe0;Tlx0=0xc0;/8msThx1=0xe0;Tlx1=0xc0; /8msThx2=0x63;Tlx2=0xc0; /40msThx3=0xec;Tlx3=0x78; /5ms SelectedSpeed=High;break;if(SpeedSelected=True) / 按下了確定鍵,退出速度選擇 IsSelectingSpee
26、d=False;break;if(Next=True) / 再一次按下了 Next 鍵,則循環(huán)速度 選擇Next=False;continue;SelectedAll=True; / 標志模式選擇和速度選擇完畢Running=True;Delay(50);WriteCmd(LCD_CLS);*/* 顯示所選擇的模式和速度方案if(SelectedMode=Line)DisplayString(0x0,0,"ChoosenModeis");DisplayString(0x0,1," Line ");Delay(50);WriteCmd(LCD_CLS);i
27、f(SelectedMode=Curve)DisplayString(0x0,0,"ChoosenModeis");DisplayString(0x0,1," Curve ");Delay(50);WriteCmd(LCD_CLS);if(AutoMode=1)DisplayString(0x0,0,"ChoosenModeis");DisplayString(0x0,1," AutoMode ");Delay(50);WriteCmd(LCD_CLS);if(SelectedMode=Line)if(Select
28、edSpeed=Normal)DisplayString(0x0,0,"ChoosenSpeedis");DisplayString(0x0,1," Normal ");Delay(50);WriteCmd(LCD_CLS);if(SelectedSpeed=Low)DisplayString(0x0,0,"ChoosenSpeedis");DisplayString(0x0,1," Low ");Delay(50);WriteCmd(LCD_CLS);if(SelectedSpeed=High)DisplaySt
29、ring(0x0,0,"ChoosenSpeedis");DisplayString(0x0,1," High ");Delay(50);WriteCmd(LCD_CLS);INTInit(); / 初始化所有中斷DisplayString(0x0,0,"LeftTimesToGo"); while(ReadyToGo-)DisplaySingleChar(0x7,1,ReadyToGo+0x30);DisplaySingleChar(0x09,1,'s');Delay(300);WriteCmd(LCD_CLS);D
30、isplayString(0x05,0,"Go!");Delay(100);WriteCmd(LCD_CLS);DisplayString(0x0,0," Living. ");DisplayString(0x0,1,"Designedby202"); if(SelectedMode=Line&&AutoMode=0) flag=Area0;else flag=1;while(flag<5)if(AutoMode=1) / 自動模式switch(PassLineID)case0 :if(IsT0INT=1)P01
31、=P02=P04=0;P03=1;else P01=P02=P03=P04=0;break;case1 :P01=P02=P03=0;P04=1;break;case2 :P01=P02=P04=0;P03=1;break;default:break;elseif(SelectedMode=Line) / 直線模式flag=Area0;if(IsT0INT=1)P03=1;P04=0;P01=P02=0; else P03=0;P04=0;P01=P02=0;else /S 型模式if(Nocurve<2)&&Round!=0&&(Back0>0)&
32、amp;&Back!=0)if(Backid=1)P01=1;P02=0;P03=0;P04=1; else P01=0;P02=1;P03=0;P04=1;Back=1; elseif(Round=0)if(IsT0INT2=1)P01=0;P02=0;P03=1;P04=0;else P01=0;P02=0;P03=0;P04=0;else if(P33=0)if(IsT0INT2=1) P01=0;P02=0;P03=1;P04=0;else P01=0;P02=0;P03=0;P04=0;elseEX1=1;if(Round%2)if(IsT0INT2=1) P01=1;P02
33、=0;P03=1;P04=0;Backid=1;else P01=1;P02=0;P03=0;P04=0;elseif(IsT0INT2=1)P01=0;P02=1;P03=1;P04=0;Backid=0; else P01=0;P02=1;P03=0;P04=0;if(IsT1INT=1)IsT1INT=0;ComputeTime();ComputeSpeedANDDistance();/補中斷路程,加上最后一次中斷缺失的路程ComputeSpeedANDDistance();P04=1;P03=0;P01=P02=0;Delay(90);P03=0;P04=0; / 行程結(jié)束,小車停止P
34、31=1; / 行程結(jié)束,背光開ET0=0x0; / 關 T0 中斷ET1=0x0; / 關 T1 中斷EX1=0x01; / 開 INT1 中斷Running=False;AutoDisplay=True; / 默認情況下直線模式會自動顯示各個區(qū)域 經(jīng)過的時間WriteCmd(LCD_CLS);if(SelectedMode=Line) / 直線模式才顯示 while(1)if(GoToChoosingDisplay=True)break;Delay(200);WriteCmd(LCD_CLS);Delay(200);DisplayString(0,0,"LowSpeedArea1
35、");DisplayString(0,1,"Costed");DisplaySingleChar(0x0C,1,'s');LowSpeedArea1PassTime=LowSpeedArea1EndTime-LowSpeedArea1StartTime;DisplaySingleChar(0x0A,1,LowSpeedArea1PassTime%10+0x30);if(LowSpeedArea1PassTime>9) / 通過第一個低速區(qū)的時間超過sDisplaySingleChar(0x0B,1,LowSpeedArea1PassTime/
36、10+0x30);if(GoToChoosingDisplay=True)break;Delay(200);WriteCmd(LCD_CLS);Delay(200);DisplayString(0,0,"HighSpeedArea");DisplayString(0,1,"Costed");DisplaySingleChar(0x0C,1,'s');HighSpeedAreaPassTime=HighSpeedAreaEndTime-LowSpeedArea1EndTime;DisplaySingleChar(0x0A,1,HighSpe
37、edAreaPassTime%10+0x30);if(HighSpeedAreaPassTime>9) / 通過高速區(qū)的時間超過 sDisplaySingleChar(0x0B,1,HighSpeedAreaPassTime/10+0x30); if(GoToChoosingDisplay=True)break;Delay(200);WriteCmd(LCD_CLS);Delay(200);DisplayString(0,0,"LowSpeedArea2");DisplayString(0,1,"Costed");DisplaySingleChar
38、(0x0C,1,'s');LowSpeedArea2PassTime=LowSpeedArea2EndTime-HighSpeedAreaEndTime;DisplaySingleChar(0x0A,1,LowSpeedArea2PassTime%10+0x30); if(LowSpeedArea2PassTime>9) / 通過第二個低速區(qū)的時間超過sDisplaySingleChar(0x0B,1,LowSpeedArea2PassTime/10+0x30); AutoDisplay=False;-總時間、總路程以及平均速度*/*/* 菜單選擇你想要看的內(nèi)容Choos
39、ingDisplay=True; WriteCmd(LCD_CLS);*/*首先顯示主菜單,然后顯示第一個選項DisplayString(0x0,0,"NowChoosewhat");DisplayString(0x0,1,"youwanttosee");Delay(100); while(1) WriteCmd(LCD_CLS);DisplayString(0x0,0," CostedTime ");DisplayString(0x0,1,"Next Show");Delay(250); / 延時消除抖動/* 第
40、一次按鍵/*不斷檢測確定鍵和Next 鍵 */ while(1)if(Next=True) break;if(SelectedShow=True) break;*/*按下了確定鍵,顯示第一個選項的內(nèi)容 if(SelectedShow=True)SelectedShow=False;SelectedReturn=False;Selected=False;WriteCmd(LCD_CLS);DisplayString(0,0,"CostedTimeis");DisplayTime();DisplayString(0x0A,1,"s");ReturnSelec
41、tion=True; / 按下了確定鍵,那么這個時候開啟返回 鍵的功能AVGSpeedShow=False; Delay(250); / 延時消除抖動 /* 按下了 Next 鍵,則顯示第二個選項 */ if(Next=True) / 按下 Next 鍵,顯示 AVGSpeed 菜單項 Next=False;WriteCmd(LCD_CLS); DisplayString(0x0,0," AVGSpeed ");DisplayString(0x0,1,"Next Show"); ReturnMain=False;那么這個時候關閉返選項已經(jīng)顯示過Retur
42、nSelection=False; / 按下了 Next 鍵, 回鍵的功能AVGSpeedShow=True; / 表明 AVGSpeed 了Delay(250); / 延時消除抖動 /*第二次按鍵 /*顯示第一個選項的內(nèi)容后又不斷檢測返回鍵(確定鍵)和 while(1) if(Next=True) break;*/Next 鍵 */if(Selected=True)break; if(Next=True)Next=False;ReturnMain=False;ReturnSelection=False; / 按下了 Next 鍵,那么這個時候關閉返 回鍵的功能if(AVGSpeedShow=
43、False) / 還沒有顯示 AVGSpeed 選項,顯示它 / 即第一次選擇了確定鍵WriteCmd(LCD_CLS);DisplayString(0x0,0," AVGSpeed ");DisplayString(0x0,1,"Next Show");TotalDistanceShow=False; / 顯示了 AVGSpeed ,則表明 TotalDistance 還 沒有顯示Delay(250); / 延時消除抖動if(AVGSpeedShow=True) / 已經(jīng)顯示過 AVGSpeed 選項了,則顯示 下一個選項 / 即第一次選擇了 Next
44、 鍵WriteCmd(LCD_CLS); DisplayString(0x0,0,"TotalDistance");DisplayString(0x0,1,"Next Show");TotalDistanceShow=True; / 表明顯示了 TotalDistance 選項Delay(250); / 延時消除抖動 if(Selected=True) / 按下了確定鍵或返回鍵SelectedShow=False;SelectedReturn=False;Selected=False;if(ReturnSelection=True) / 第一次選擇了確定
45、鍵,故這次按下 的是返回鍵ReturnMain=True; if(ReturnSelection=False) WriteCmd(LCD_CLS); DisplayString(0,0,"TheAVGSpeedis"); DisplayAVGSpeed(); DisplayString(0x0A,1,"m/s"); ReturnSelection=True; / 按下了確定鍵,那么這個時候開啟返回 鍵的功能Delay(250); / 延時消除抖動TotalDistanceShow=False; if(ReturnMain=True) / 按下了返回鍵,返
46、回主菜單 ReturnMain=False;continue;*/* 第三次按鍵 /* 如果沒有返回主菜單,則繼續(xù)檢測Next 鍵和確定鍵 */while(1) if(Next=True) break;if(SelectedShow=True)break;/* 按下 Next 鍵,顯示下一個選項 */if(Next=True)Next=False;ReturnMain=False;ReturnSelection=False; / 按下了 Next 鍵,那么這個時候關閉返 回鍵的功能if(TotalDistanceShow=True)ReturnMain=True;if(TotalDistanc
47、eShow=False) / 還沒有顯示 TotalDistance 選項,顯示它 WriteCmd(LCD_CLS); DisplayString(0x0,0,"TotalDistance");DisplayString(0x0,1,"Next Show");TotalDistanceShow=True;Delay(250); / 延時消除抖動if(Selected=True) / 按下了確定鍵或返回鍵SelectedShow=False;SelectedReturn=False;Selected=False;if(ReturnSelection=Tr
48、ue) / 按下的是返回鍵ReturnMain=True;if(ReturnSelection=False)if(TotalDistanceShow=False) / 表明 AVGSpeed 選項的內(nèi)容還沒有 顯示W(wǎng)riteCmd(LCD_CLS);DisplayString(0,0,"TheAVGSpeedis");DisplayAVGSpeed();DisplayString(0x0A,1,"m/s");ReturnSelection=True;Delay(250); / 延時消除抖動if(TotalDistanceShow=True)WriteCm
49、d(LCD_CLS);DisplayString(0,0,"TotalDistance");DisplayDistance();DisplayString(0x0A,1,"m");ReturnSelection=True; / 按下了確定鍵,那么這個時候開啟返回 鍵的功能Delay(250); / 延時消除抖動if(ReturnMain=True) / 按下了返回鍵,返回主菜單 ReturnMain=False; continue;第四次按鍵*/ /* while(1) if(Next=True) break;if(SelectedShow=True)b
50、reak;if(Next=True) / 所有菜單項已經(jīng)顯示完畢,返 回主菜單Next=False;ReturnMain=False;ReturnSelection=False; if(TotalDistanceShow=False) WriteCmd(LCD_CLS);DisplayString(0x0,0,"TotalDistance");DisplayString(0x0,1,"Next Show");TotalDistanceShow=True;Delay(250); / 延時消除抖動if(SelectedShow=True)SelectedSh
51、ow=False;SelectedReturn=False;Selected=False; if(ReturnSelection=True) / 按下的是返回鍵ReturnMain=True; if(ReturnSelection=False) if(TotalDistanceShow=True)WriteCmd(LCD_CLS);DisplayString(0,0,"TotalDistance");DisplayDistance();DisplayString(0x0A,1,"m");ReturnSelection=True;/ 按下了確定鍵,那么這個
52、時候開啟返回鍵的功 能Delay(250); / 延時消除抖動 if(ReturnMain=True) / 按下了返回鍵,返回主菜單ReturnMain=False;continue;第五次按鍵*/* while(1) if(Next=True) break;if(SelectedShow=True)break;if(Next=True) / 所有菜單項已經(jīng)顯示完畢,返回 主菜單Next=False;ReturnMain=False;ReturnSelection=False;if(TotalDistanceShow=True) / 最后一個選項已經(jīng)顯示完畢,返回 主菜單ReturnMain=True;if(SelectedShow=Tru
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年《背影》讀書心得例文(3篇)
- 2025年it人員年度工作總結(jié)樣本(2篇)
- 2025年《何以笙簫默》讀書心得個人書評(5篇)
- 2025年三年級下學期語文教學總結(jié)模版(2篇)
- 2025叉車轉(zhuǎn)讓合同
- 2025辦公家具、餐廳用具、會議系統(tǒng)采購安裝項目合同
- 《紀律處分條例》測試題及答案
- 2025年黑龍江職教高考《職業(yè)適應性測試》考前沖刺模擬試題庫(附答案)
- 《反洗錢法》知識考試題庫150題(含答案)
- 年產(chǎn)20萬噸超細重質(zhì)碳酸鈣、10萬噸母粒項目可行性研究報告寫作模板-申批備案
- 2024至2030年中國女裝行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 7.1.2 直觀圖的畫法-【中職專用】高一數(shù)學教材配套課件(高教版2021·基礎模塊下冊)
- 皮膚癬菌病的分子診斷工具
- SL+575-2012水利水電工程水土保持技術規(guī)范
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設計規(guī)范-PDF解密
- 人美版初中美術知識點匯總八年級全冊
- 迅雷網(wǎng)盤最最最全影視資源-持續(xù)更新7.26
- 普通話培訓班合作協(xié)議書
- 《西方思想經(jīng)典》課件
- 中醫(yī)診療設備種類目錄
- 如何構(gòu)建高效課堂課件
評論
0/150
提交評論