資源描述:
《C語(yǔ)言程序源代碼.doc》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、C語(yǔ)言程序源代碼#include//51寄存器定義#include"intrins.h"#definecontrolP1//P1_0:A相,P1_1:B相,P1_2:C相,P1_3:D相#definediscodeP0//顯示代碼控制端口#defineucharunsignedchar//定義無(wú)符號(hào)型變量#defineuintunsignedintsbiten_dm=P3^0;//顯示代碼鎖存控制sbiten_wk=P3^1;//位控鎖存控制ucharcodecorotati
2、on[4]={0x03,0x06,0x0c,0x09};//電機(jī)正轉(zhuǎn)ucharcoderollback[4]={0x0c,0x06,0x03,0x09};//電機(jī)反轉(zhuǎn)ucharcodetab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示字段uintcodeLevspeed[5]={500,400,300,200,100};//電機(jī)速度等級(jí)ucharHscan,speedcount;//Hscan行掃描,speedcoun
3、t速度等級(jí)計(jì)數(shù)uintuu;//頻率計(jì)數(shù)uintstep,setstep;//step:電機(jī)步伐計(jì)數(shù),setstep:手動(dòng)設(shè)置電機(jī)步伐uintspeed=500;//電機(jī)初始速度ucharcount;ucharflag[5];ucharbutcount;//按鍵次數(shù)//****************************************//flag[0]正轉(zhuǎn)標(biāo)志//flag[1]反轉(zhuǎn)標(biāo)志//flag[2]加速標(biāo)志//flag[3]減速標(biāo)志//flag[4]設(shè)置標(biāo)志//********
4、********************************Delay1mS(unsignedinttt)//延時(shí)1ms“Delay1mS”延時(shí)子程序,用循環(huán)語(yǔ)句延時(shí)。{unsignedchari;while(tt--)for(i=113;i>0;i--);}keyscan()//鍵盤(pán)掃描“keyscan”鍵盤(pán)掃描子程序,用于尋找是否有按鍵按下。{P2=0xf0;//把oxfe賦值給P2口//將按鍵控制口置于未按鍵的狀態(tài).單片機(jī)輸出//口假設(shè)不是按鍵按下?tīng)顟B(tài).if(P2!=0xf0)//如果
5、P2口的值不等于0xfe//檢查是否有按鍵按下.如果有,處理{}內(nèi)的事{//有按鍵按下.Delay1mS(150);//調(diào)用延時(shí)函數(shù)//有按鍵按下,避開(kāi)無(wú)效讀碼值的時(shí)間.,或者是脈沖長(zhǎng)度Hscan=0xfe;//將Hscan賦值,初始遙控值是要置高電平的.P2=Hscan;//while((Hscan&0x10)!=0)//檢查X10口是否有鍵按下。未按下是1,//在這顯示出你的按鍵口是P2_4.即檢查P2_4是高電平,無(wú)//鍵按下,低電平有鍵按下。{P2=Hscan;if((P2&0xf0)!
6、=0xf0)//檢查按鍵脈沖是否是變化,returnP2;elseHscan=(Hscan<<1)
7、0x01;//這里在存碼值,應(yīng)該是遙控輸入。將碼值存入Hscan//這里是讀取碼值的關(guān)鍵,如果來(lái)的脈沖不管是高電平//還是低電平,靠左移一位保存脈沖的狀態(tài)值.}}elsereturn0;}key_val()//按鍵處理函數(shù)//這里是讀取將存好的碼值進(jìn)行處理.看是什么代碼值{ucharkey;key=keyscan();//這里是讀取碼值并存放在key里switch(key)//這里是對(duì)比讀取的碼值
8、{case0xee://按鍵‘7’//讀取的碼值=0xEE,則是按鍵“7”的代碼//while(P2==0xee);setstep=setstep*10+7;//步伐數(shù)//這里是輸入”setstep+7”步伐數(shù)對(duì)比讀取的碼值,//setstep原來(lái)可能是有數(shù)字的。step=setstep;butcount++;//計(jì)數(shù),看輸入拉幾個(gè)數(shù)字if(butcount>=5)//輸入的數(shù)字超過(guò)5個(gè)就置0,無(wú)效{butcount=0;setstep=0;}break;case0xde://按鍵‘8’//讀取
9、的碼值=0xdE,則是按鍵“8”的代碼//其他同”7”//while(P2==0xde);setstep=setstep*10+8;butcount++;step=setstep;if(butcount>=5){butcount=0;setstep=0;}break;case0xbe://按鍵‘9’//同上”7”//while(P2==0xbe);setstep=setstep*10+9;butcount++;step=setstep;if(butcount>=5){butcount=0;set