鎶€琛撻牷閬�

濞撳〒宸ユキ(y猫)
鎮ㄧ従鍦ㄧ殑浣嶇疆锛� 涓湅鍌冲嫊缍� > 鎶€琛撻牷閬� > 鎳夌敤鏂规 > 鐢ㄥ柈鐗囨鎸夐嵉鎺у埗姝ラ€查浕姗熻綁鍕曠殑绋嬪簭

鐢ㄥ柈鐗囨鎸夐嵉鎺у埗姝ラ€查浕姗熻綁鍕曠殑绋嬪簭

鏅傞枔锛�2018-01-02 10:46:39渚嗘簮锛氱恫绲¤綁杓�

灏庤獮锛�?绲愬悎鎸夐嵉绋嬪簭锛屾垜鍊戣ō瑷堥€欐ǎ涓€鍊嬪姛鑳界▼搴忥細鎸夋暩瀛楅嵉1锝�9锛屾帶鍒堕浕姗熻綁閬�1锝�9鍦�锛�

绲愬悎鎸夐嵉绋嬪簭锛屾垜鍊戣ō瑷堥€欐ǎ涓€鍊嬪姛鑳界▼搴忥細鎸夋暩瀛楅嵉1锝�9锛屾帶鍒�闆绘杞夐亷1锝�9鍦�锛涢厤鍚堜笂涓嬮嵉鏀硅畩杞夊嫊鏂瑰悜锛屾寜鍚戜笂閸靛悗姝e悜杞�1锝�9鍦�锛屽悜涓嬮嵉鍓囧弽鍚戣綁1锝�9鍦�锛涘乏閸靛浐瀹氭杞�90搴︼紝鍙抽嵉鍥哄畾鍙嶈綁90锛汦sc閸电祩姝㈣綁鍕�銆傞€氶亷閫欏€嬬▼搴忥紝鎴戝€戜篃鍙互閫蹭竴姝ラ珨鏈冨埌濡備綍鐢ㄦ寜閸典締鎺у埗绋嬪簭瀹屾垚寰╅洔鐨勫姛鑳�锛屼互鍙婃帶鍒跺拰鍩�(zh铆)琛屾ā濉婁箣闁撳浣曞崝瑾垮伐浣�锛岃€屼綘鐨勭法绋嬫按骞充篃鍙互鍦ㄩ€欐ǎ鐨勫韪愮反缈掍腑寰楀埌閸涚厜鍜屾彁鍗�銆�

#include

sbitKEY_IN_1=P2^4;

sbitKEY_IN_2=P2^5;

sbitKEY_IN_3=P2^6;

sbitKEY_IN_4=P2^7;

sbitKEY_OUT_1=P2^3;

sbitKEY_OUT_2=P2^2;

sbitKEY_OUT_3=P2^1;

sbitKEY_OUT_4=P2^0;

unsignedcharcodeKeyCodeMap[4][4]={//鐭╅櫍鎸夐嵉绶ㄨ櫉鍒版婧栭嵉鐩ら嵉纰肩殑鏄犲皠琛�

{0x31,0x32,0x33,0x26},//鏁稿瓧閸�1銆佹暩瀛楅嵉2銆佹暩瀛楅嵉3銆佸悜涓婇嵉

{0x34,0x35,0x36,0x25},//鏁稿瓧閸�4銆佹暩瀛楅嵉5銆佹暩瀛楅嵉6銆佸悜宸﹂嵉

{0x37,0x38,0x39,0x28},//鏁稿瓧閸�7銆佹暩瀛楅嵉8銆佹暩瀛楅嵉9銆佸悜涓嬮嵉

{0x30,0x1B,0x0D,0x27}//鏁稿瓧閸�0銆丒SC閸�銆佸洖杌婇嵉銆佸悜鍙抽嵉

};

unsignedcharKeySta[4][4]={//鍏ㄩ儴鐭╅櫍鎸夐嵉鐨勭暥鍓嶇媭鎱�(t脿i)

{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}

};

signedlongbeats=0;//闆绘杞夊嫊绡€(ji茅)鎷嶇附鏁�

voidKeyDriver();

voidmain(){

EA=1;//浣胯兘绺戒腑鏂�

TMOD=0x01;//瑷疆T0鐐烘ā寮�1

TH0=0xFC;//鐐篢0璩﹀垵鍊�0xFC67锛屽畾鏅�1ms

TL0=0x67;

ET0=1;//浣胯兘T0涓柗

TR0=1;//鍟熷嫊T0

while(1){

KeyDriver();//瑾跨敤鎸夐嵉椹呭嫊鍑芥暩

}

}

/*姝ラ€查浕姗熷暉鍕曞嚱鏁�锛宎ngle-闇€杞夐亷鐨勮搴�*/

voidStartMotor(signedlongangle){

//鍦ㄨ▓绠楀墠闂滈枆涓柗锛屽畬鎴愬悗鍐嶆墦闁�锛屼互閬垮厤涓柗鎵撴柗瑷堢畻閬庣▼鑰岄€犳垚閷

EA=0;

beats=(angle*4076)/360;//瀵︽脯鐐�4076鎷嶈綁鍕曚竴鍦�

EA=1;

}

/*姝ラ€查浕姗熷仠姝㈠嚱鏁�*/

voidStopMotor(){

EA=0;

beats=0;

EA=1;

}

/*鎸夐嵉鍕曚綔鍑芥暩锛屾牴鎿氶嵉纰煎煼(zh铆)琛岀浉鎳夌殑鎿嶄綔锛宬eycode-鎸夐嵉閸电⒓*/

voidKeyAction(unsignedcharkeycode){

staticbitdirMotor=0;//闆绘杞夊嫊鏂瑰悜

//鎺у埗闆绘杞夊嫊1-9鍦�

if((keycode>=0x30)&&(keycode<=0x39)){

if(dirMotor==0){

StartMotor(360*(keycode-0x30));

}else{

StartMotor(-360*(keycode-0x30));

}

}elseif(keycode==0x26){//鍚戜笂閸�锛屾帶鍒惰綁鍕曟柟鍚戠偤姝h綁

dirMotor=0;

}elseif(keycode==0x28){//鍚戜笅閸�锛屾帶鍒惰綁鍕曟柟鍚戠偤鍙嶈綁

dirMotor=1;

}elseif(keycode==0x25){//鍚戝乏閸碉紝鍥哄畾姝h綁90搴�

StartMotor(90);

}elseif(keycode==0x27){//鍚戝彸閸�锛屽浐瀹氬弽杞�90搴�

StartMotor(-90);

}elseif(keycode==0x1B){//Esc閸�锛屽仠姝㈣綁鍕�

StopMotor();

}

}

/*鎸夐嵉椹呭嫊鍑芥暩锛屾娓寜閸靛嫊浣�锛岃搴︾浉鎳夊嫊浣滃嚱鏁�锛岄渶鍦ㄤ富寰挵(hu谩n)涓鐢�*/

voidKeyDriver(){

unsignedchari,j;

staticunsignedcharbackup[4][4]={//鎸夐嵉鍊煎倷浠�锛屼繚瀛樺墠涓€娆$殑鍊�

{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}

};

for(i=0;i<4;i++){//寰挵(hu谩n)妾㈡脯4*4鐨勭煩闄f寜閸�

for(j=0;j<4;j++){

if(backup[i][j]!=KeySta[i][j]){//妾㈡脯鎸夐嵉鍕曚綔

if(backup[i][j]!=0){//鎸夐嵉鎸変笅鏅傚煼(zh铆)琛屽嫊浣�

KeyAction(KeyCodeMap[i][j]);//瑾跨敤鎸夐嵉鍕曚綔鍑芥暩

}

backup[i][j]=KeySta[i][j];//鍒锋柊鍓嶄竴娆$殑鍌欎唤鍊�

}

}

}

}

/*鎸夐嵉鎺冩弿鍑芥暩锛岄渶鍦ㄥ畾鏅備腑鏂蜂腑瑾跨敤锛屾帹钖﹁鐢ㄩ枔闅�1ms*/

voidKeyScan(){

unsignedchari;

staticunsignedcharkeyout=0;//鐭╅櫍鎸夐嵉鎺冩弿杓稿嚭绱㈠紩

staticunsignedcharkeybuf[4][4]={//鐭╅櫍鎸夐嵉鎺冩弿绶╂矕鍗€(q奴)

{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF},

{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}

};

//灏囦竴琛岀殑4鍊嬫寜閸靛€肩Щ鍏ョ珐娌栧崁(q奴)

keybuf[keyout][0]=(keybuf[keyout][0]<<1)|KEY_IN_1;

keybuf[keyout][1]=(keybuf[keyout][1]<<1)|KEY_IN_2;

keybuf[keyout][2]=(keybuf[keyout][2]<<1)|KEY_IN_3;

keybuf[keyout][3]=(keybuf[keyout][3]<<1)|KEY_IN_4;

//娑堟姈鍚庢洿鏂版寜閸电媭鎱�(t脿i)

for(i=0;i<4;i++){//姣忚4鍊嬫寜閸�锛屾墍浠ュ惊鐠�(hu谩n)4娆�

if((keybuf[keyout][i]&0x0F)==0x00){

//閫g簩(x霉)4娆℃巸鎻忓€肩偤0锛屽嵆4*4ms鍏ч兘鏄寜涓嬬媭鎱�(t脿i)鏅傦紝鍙獚鐐烘寜閸靛凡绌�(w臎n)瀹氱殑鎸変笅

KeySta[keyout][i]=0;

}elseif((keybuf[keyout][i]&0x0F)==0x0F){

//閫g簩(x霉)4娆℃巸鎻忓€肩偤1锛屽嵆4*4ms鍏ч兘鏄綀璧风媭鎱�(t脿i)鏅�锛屽彲瑾嶇偤鎸夐嵉宸茬┅(w臎n)瀹氱殑褰堣捣

KeySta[keyout][i]=1;

}

}

//鍩�(zh铆)琛屼笅涓€娆$殑鎺冩弿杓稿嚭

keyout++;//杓稿嚭绱㈠紩閬炲

keyout=keyout&0x03;//绱㈠紩鍊煎姞鍒�4鍗虫闆�

//鏍规摎绱㈠紩锛岄噵鏀剧暥鍓嶈几鍑哄紩鑵�锛屾媺浣庝笅娆$殑杓稿嚭寮曡叧

switch(keyout){

case0:KEY_OUT_4=1;KEY_OUT_1=0;break;

case1:KEY_OUT_1=1;KEY_OUT_2=0;break;

case2:KEY_OUT_2=1;KEY_OUT_3=0;break;

case3:KEY_OUT_3=1;KEY_OUT_4=0;break;

default:break;

}

}

/*闆绘杞夊嫊鎺у埗鍑芥暩*/

voidTurnMotor(){

unsignedchartmp;//鑷ㄦ檪璁婇噺

staticunsignedcharindex=0;//绡€(ji茅)鎷嶈几鍑虹储寮�

unsignedcharcodeBeatCode[8]={//姝ラ€查浕姗熺瘈(ji茅)鎷嶅皪鎳夌殑IO鎺у埗浠g⒓

0xE,0xC,0xD,0x9,0xB,0x3,0x7,0x6

};

if(beats!=0){//绡€(ji茅)鎷嶆暩涓嶇偤0鍓囩敘鐢熶竴鍊嬮﹨鍕曠瘈(ji茅)鎷�

if(beats>0){//绡€(ji茅)鎷嶆暩澶т簬0鏅傛杞�

index++;//姝h綁鏅傜瘈(ji茅)鎷嶈几鍑虹储寮曢仦澧�

index=index&0x07;//鐢�&鎿嶄綔瀵︾従鍒�8姝搁浂

beats--;//姝h綁鏅傜瘈(ji茅)鎷嶈▓鏁搁仦娓�

}else{//绡€(ji茅)鎷嶆暩灏忎簬0鏅傚弽杞�

index--;//鍙嶈綁鏅傜瘈(ji茅)鎷嶈几鍑虹储寮曢仦娓�

index=index&0x07;//鐢�&鎿嶄綔鍚屾ǎ鍙互瀵︾従鍒�-1鏅傛7

beats++;//鍙嶈綁鏅傜瘈(ji茅)鎷嶈▓鏁搁仦澧�

}

tmp=P1;//鐢╰mp鎶奝1鍙g暥鍓嶅€兼毇瀛�

tmp=tmp&0xF0;//鐢�&鎿嶄綔娓呴浂浣�4浣�

tmp=tmp|BeatCode[index];//鐢▅鎿嶄綔鎶婄瘈(ji茅)鎷嶄唬纰煎鍒颁綆4浣�

P1=tmp;//鎶婁綆4浣嶇殑绡€(ji茅)鎷嶄唬纰煎拰楂�4浣嶇殑鍘熷€奸€佸洖P1

}else{//绡€(ji茅)鎷嶆暩鐐�0鍓囬棞闁夐浕姗熸墍鏈夌殑鐩�

P1=P1|0x0F;

}

}

/*T0涓柗鏈嶅嫏鍑芥暩锛岀敤浜庢寜閸垫巸鎻忚垏闆绘杞夊嫊鎺у埗*/

voidInterruptTimer0()interrupt1{

staticbitp=0;

TH0=0xFC;//閲嶆柊鍔犺級鍒濆€�

TL0=0x67;

KeyScan();//鍩�(zh铆)琛屾寜閸垫巸鎻�

//鐢ㄤ竴鍊嬮潨鎱�(t脿i)bit璁婇噺瀵︾従浜屽垎闋�锛屽嵆2ms瀹氭檪锛岀敤浜庢帶鍒堕浕姗�

p=~p;

if(p==1){

TurnMotor();

}

}閫欏€嬬▼搴忔槸绗�8绔犲拰鏈珷鐭ヨ瓨鐨勪竴鍊嬬稖鍚堚€斺€旂敤鎸夐嵉鎺у埗姝ラ€查浕姗�杞夊嫊銆傜▼搴忎腑鏈夐€欎箞骞鹃粸鍊煎緱娉ㄦ剰锛屾垜鍊戝垎杩板涓嬶細

閲濆皪闆绘瑕佸畬鎴愭杞夊拰鍙嶈綁鍏╁€嬩笉鍚岀殑鎿嶄綔锛屾垜鍊戝苟娌掓湁浣跨敤姝h綁鍟熷嫊鍑芥暩鍜屽弽杞夊暉鍕曞嚱鏁搁€欎箞鍏╁€嬪嚱鏁镐締瀹屾垚锛屼篃娌掓湁鍦ㄥ暉鍕曞嚱鏁稿畾缇╃殑鏅傚€欏鍔犱竴鍊嬪舰寮忓弮鏁镐締鎸囨槑鍏舵柟鍚�銆傛垜鍊戦€欓噷鐨勫暉鍕曞嚱鏁竩oidStartMotor(signedlongangle)鑸囧柈鍚戞杞夋檪鐨勫暉鍕曞嚱鏁稿敮涓€鐨勫崁(q奴)鍒ュ氨鏄妸褰㈠紡鍙冩暩angle鐨勯鍨嬪緸unsignedlong鏀圭偤浜唖ignedlong锛屾垜鍊戠敤鏈夌铏熸暩鍥烘湁鐨勬璨犵壒鎬т締鍗€(q奴)鍒嗘杞夎垏鍙嶈綁锛屾鏁歌〃绀烘杞塧ngle搴�锛岃矤鏁稿氨琛ㄧず鍙嶈綁angle搴�锛岄€欐ǎ铏曠悊鏄笉鏄緢绨℃綌鍙堝緢鏄庝簡鍛紵鑰屼綘灏嶆湁绗﹁櫉鏁稿拰鐒$铏熸暩鐨勫崁(q奴)鍒ョ敤娉曟槸涓嶆槸涔熸洿鏈夐珨鏈冧簡锛�

閲濆皪绲傛闆绘杞夊嫊鐨勬搷浣�锛屾垜鍊戝畾缇╀簡涓€鍊嬪柈鐛ㄧ殑StopMotor鍑芥暩渚嗗畬鎴愶紝鐩$閫欏€嬪嚱鏁搁潪甯哥啊鍠�锛岀洝绠″畠涔熷彧鍦‥sc鎸夐嵉鍒嗘敮鍏ц瑾跨敤浜嗭紝浣嗘垜鍊戜粛鐒舵妸瀹冨柈鐛ㄦ彁鍑轰締浣滅偤浜嗕竴鍊嬪嚱鏁�銆傝€岄€欑ó鍋氭硶灏辨槸鍩轰簬閫欐ǎ涓€姊濈法绋嬪師鍓囷細鐩″彲鑳界敤鍠崹鐨勫嚱鏁镐締瀹屾垚纭欢鐨勬煇绋搷浣滐紝鐣朵竴鍊嬬‖浠跺寘鍚鍊嬫搷浣滄檪锛屾妸閫欎簺鎿嶄綔鍑芥暩绲勭箶鍦ㄤ竴璧凤紝褰㈡垚涓€鍊嬪皪涓婂堡鐨勭当涓€鎺ュ彛銆傞€欐ǎ鐨勫堡娆″寲铏曠悊锛屾渻浣垮緱鏁村€嬬▼搴忔鐞嗘竻鏅�锛屾棦鏈夊埄浜庣▼搴忕殑瑾胯│缍锛屽張鏈夊埄浜庡姛鑳界殑鎿村厖銆�

涓柗鍑芥暩涓铏曠悊鎸夐嵉鎺冩弿鍜岄浕姗熼﹨鍕曞叐浠朵簨鎯�锛岃€岀偤浜嗛伩鍏嶄腑鏂峰嚱鏁搁亷浜庡京闆滐紝鎴戝€戝氨鍙堝垎鍑轰簡鎸夐嵉鎺冩弿鍜岄浕姗熼﹨鍕曞叐鍊嬪嚱鏁革紙閫欎篃鍚屾ǎ绗﹀悎涓婅堪2鐨勭法绋嬪師鍓囷級锛岃€屼腑鏂峰嚱鏁哥殑閭忚集灏辫畩寰楃啊娼旇€屾竻鏅颁簡銆傞€欓噷閭勬湁鍊嬬煕鐩�锛屽氨鏄寜閸垫巸鎻忔垜鍊戦伕鎿囩殑瀹氭檪鏅傞枔鏄�1ms锛岃€屾湰绔犱箣鍓嶇殑瀵︿緥涓浕姗熺瘈(ji茅)鎷嶆寔绾�(x霉)鏅傞枔閮芥槸2ms锛涘緢椤劧锛岀敤1ms鐨勫畾鏅傚彲浠ュ畾鍑�2ms鐨勯枔闅�锛岃€岀敤2ms鐨勫畾鏅傚嵒寰椾笉鍒版簴纰虹殑1ms闁撻殧锛涙墍浠ユ垜鍊戠殑鍋氭硶灏辨槸锛屽畾鏅傚櫒渚濈劧瀹氭檪1ms锛岀劧鍚庣敤涓€鍊媌it璁婇噺鍋氭蹇�锛屾瘡1ms鏀硅畩涓€娆″畠鐨勫€硷紝鑰屾垜鍊戝彧閬告搰鍊肩偤1鐨勬檪鍊欏煼(zh铆)琛屼竴娆″嫊浣�锛岄€欐ǎ灏辨槸2ms鐨勯枔闅斾簡锛涘鏋滄垜瑕�3ms銆�4ms??鍛紝鎶奲it鏀圭偤char鎴杋nt鍨嬶紝鐒跺悗灏嶅畠鍊戦仦澧�锛屽垽鏂峰埌鍝€嬪€艰┎姝搁浂锛屽氨鍙互浜�銆傞€欏氨鏄湪纭欢瀹氭檪鍣ㄧ殑鍩虹涓婂鐝炬簴纰虹殑杌熶欢瀹氭檪锛屽叾瀵﹂浼肩殑鎿嶄綔鎴戝€戝湪璎涙暩纰肩鐨勬檪鍊欎篃鐢ㄩ亷浜�锛屽洖鎯充竴涓嬪惂銆�

妯欑敖锛�

榛炶磰

鍒嗕韩鍒帮細

涓婁竴绡囷細鐒$窔鍌虫劅鍣ㄧ恫绲$殑绲愭鍜屾妧琛�...

涓嬩竴绡囷細澶у瀷棰ㄥ姏鐧�(f膩)闆绘绲勯綊杓偝鍕曟妧...

涓湅鍌冲嫊缍茬増娆婅垏鍏嶈铂鑱叉槑锛氬嚒鏈恫娉ㄦ槑[渚嗘簮锛氫腑鍦嬪偝鍕曠恫]鐨勬墍鏈夋枃瀛�銆佸湒鐗�銆侀煶瑕栧拰瑕栭牷鏂囦欢锛岀増娆婂潎鐐轰腑鍦嬪偝鍕曠恫(www.wangxinlc.cn)鐛ㄥ鎵€鏈夈€傚闇€杞夎級璜嬭垏0755-82949061鑱郴銆備换浣曞獟楂�銆佺恫绔欐垨鍊嬩汉杞夎級浣跨敤鏅傞爤娉ㄦ槑渚嗘簮鈥滀腑鍦嬪偝鍕曠恫鈥�锛岄仌鍙嶈€呮湰缍插皣杩界┒鍏舵硶寰嬭铂浠�銆�

鏈恫杞夎級骞舵敞鏄庡叾浠栦締婧愮殑绋夸欢锛屽潎渚嗚嚜浜掕伅缍叉垨妤�(y猫)鍏ф姇绋夸汉澹紝鐗堟瑠灞簬鍘熺増娆婁汉銆傝綁杓夎珛淇濈暀绋夸欢渚嗘簮鍙婁綔鑰�锛岀姝㈡搮鑷鏀癸紝閬曡€呰嚜璨犵増娆婃硶寰嬭铂浠�銆�

缍茬珯绨′粙|鏈冨摗鏈嶅嫏|鑱郴鏂瑰紡|骞姪淇℃伅|鐗堟瑠淇℃伅|缍茬珯鍦板湒|鍙嬫儏閺堟帴|娉曞緥鏀寔|鎰忚鍙嶉|sitemap

鍌冲嫊缍�-宸ユキ(y猫)鑷嫊鍖栬垏鏅鸿兘鍒堕€犵殑鍏ㄥ獟楂斺€滀簰鑱恫+鈥濆壍(chu脿ng)鏂版湇鍕欏钩鑷�

缍茬珯瀹㈡湇鏈嶅嫏鍜ㄨ閲囪臣鍜ㄨ濯掗珨鍚堜綔

Chuandong.com Copyright ?2005 - 2025 锛孉ll Rights Reserved 娣卞湷甯傚ェ缇庡ぇ鍞愬唬鍛婃湁闄愬叕鍙� 鐗堟瑠鎵€鏈�
绮礗CP鍌� 14004826铏� | 鐕熸キ(y猫)鍩�(zh铆)鐓ц瓑鏇� | 涓嶈壇淇℃伅鑸夊牨涓績 | 绮靛叕缍插畨鍌� 44030402000946铏�