單片機(jī)應(yīng)用技術(shù)匯編C項目教程_第1頁
單片機(jī)應(yīng)用技術(shù)匯編C項目教程_第2頁
單片機(jī)應(yīng)用技術(shù)匯編C項目教程_第3頁
單片機(jī)應(yīng)用技術(shù)匯編C項目教程_第4頁
單片機(jī)應(yīng)用技術(shù)匯編C項目教程_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

書名:

單片機(jī)應(yīng)用技術(shù)——匯編+C51項目教程ISBN:978-7-111-50040-7作者:姚存治出版社:機(jī)械工業(yè)出版社本書配有電子課件項目3可以調(diào)控的走馬燈設(shè)計與制作

走在大街上,看到五彩斑斕的走馬燈,你是不是也想自己一試伸手,親自做一個出來?本項目就將設(shè)計一個帶按鍵控制的非常漂亮的走馬燈效果。本項目涉及到的知識點(diǎn)有鍵盤接口、中斷系統(tǒng)、定時器定時、C51編程。

任務(wù)3.1學(xué)習(xí)鍵盤接口技術(shù)任務(wù)3.2可以調(diào)控的走馬燈的設(shè)計與仿真下一頁任務(wù)3.1學(xué)習(xí)鍵盤接口技術(shù)鍵盤接口是單片機(jī)系統(tǒng)的一個非常常見、實(shí)用的接口。用于實(shí)現(xiàn)人機(jī)交互中指令的輸入。常見的鍵盤接口有獨(dú)立式按鍵和行列式(也叫矩陣式)鍵盤。3.1.1獨(dú)立式鍵盤應(yīng)用3.1.2按鍵的消抖處理3.1.3矩陣式鍵盤應(yīng)用

上一頁下一頁返回3.1.1獨(dú)立式鍵盤應(yīng)用一、獨(dú)立式按鍵結(jié)構(gòu)如圖所示。

上一頁下一頁返回獨(dú)立式按鍵的結(jié)構(gòu)特點(diǎn):每個按鍵單獨(dú)占有一根I/O口線,按鍵的兩個端子一端接地,另外一端接到一個單獨(dú)的I/O口線,同時通過上拉電阻接到+5v電源端。每個按鍵的工作不會影響其它I/O口線的狀態(tài)。在此電路中,按鍵輸入為低電平有效,上拉電阻保證了按鍵斷開時,I/O口線有確定的高電平。當(dāng)I/O口線內(nèi)部有上拉電阻時,外電路可以不配置上拉電阻。上一頁下一頁返回二、獨(dú)立式按鍵的軟件設(shè)計按上圖的電路,設(shè)計出獨(dú)立式鍵盤程序如下,此程序中Keyfun1~Keyfun8分別為每個按鍵對應(yīng)的功能子程序標(biāo)號(可根據(jù)實(shí)際需要編寫),按鍵去除抖動采用軟件延時,按鍵的接口選用P1端口。匯編源程序清單如下:START:MOVA,P1;讀入鍵盤狀態(tài)

MOV30H,A;保存鍵盤狀態(tài)值

LCALLDL10ms;延時10ms消抖

MOVA,P1;再讀鍵盤狀態(tài)

CJNEA,30H,RETURN;再次結(jié)果不同。說明是抖動引起,返回

CJNEA,#0FFH,KEY-1;確認(rèn)是否有鍵按下

LJMPRETURN上一頁下一頁返回KEY-1:CJNEA,#0FEH,KEY-2;K1鍵未按下,轉(zhuǎn)KEY-2LJMPKeyfun1;是Kl鍵按下,轉(zhuǎn)KEY1對應(yīng)的功能子程序KEY-2:CJNEA,#0FDH,KEY-3;K2鍵未按下,轉(zhuǎn)KEY-3LJMPKeyfun2;K2鍵按下,轉(zhuǎn)Keyfun2處理KEY-3:CJNEA,#0FBH,KEY-4;K3鍵未按下,轉(zhuǎn)KEY-4LJMPKeyfun3;K3鍵按下,轉(zhuǎn)Keyfun3處理KEY-4:CJNEA,#0F7H,KEY-5LJMPKeyfun4KEY-5:CJNEA,#0EFH,KEY-6LJMPKeyfun5KEY-6:CJNEA,#0DFH,KEY-7LJMPKeyfun6KEY-7:CJNEA,#0BFH,KEY-8LJMPKeyfun7KEY-8:CJNEA,#7FH,RETURN;K8未按下,返回

LJMPKeyfun8;K8鍵按下,轉(zhuǎn)Keyfun8處理RETURN:RET;重鍵或無鍵按下,不處理返回DL10ms:MOVR7,#12H;三循環(huán)延時程序,大約10ms。

D0:MOVR5,#10HD1:MOVR4,#10HD2:DJNZR4,$D3:DJNZR5,D1

DJNZR7,D0RET上一頁下一頁返回對應(yīng)的C51程序為:#include<AT89X51.H>voiddelay(){unsignedinti;for(i=0;i<2000;i++);}voidmain(){unsignedcharkey;while(1){key=P1;if(key!=0xFF)delay();if(key!=0xFF)key=P1;while(P1!=0xFF);上一頁下一頁返回switch(key){case0xFE:Keyfun1();break;case0xFD:Keyfun2();break;case0xFB:Keyfun3();break;case0xF7:Keyfun4();break;case0xEF:Keyfun5();break;case0xDF:Keyfun6();break;case0xBF:Keyfun7();break;case0x7F:Keyfun8();break;}}}3.1.2按鍵的消抖處理在單片機(jī)應(yīng)用系統(tǒng)中所用的鍵盤按鍵是一種機(jī)械開關(guān),其機(jī)械觸點(diǎn)在閉合或斷開瞬間,會出現(xiàn)電壓抖動現(xiàn)象,如圖所示。為了保證按鍵識別的準(zhǔn)確性,可采用硬件消抖和軟件消抖兩種方式進(jìn)行消抖處理。硬件方法可采用RS觸發(fā)器等消抖電路。軟件方法則是采用時間延遲,由于鍵的前沿抖動時間大約為10ms左右,因此可在延時10ms后待按鍵穩(wěn)定閉合時再判別鍵盤的狀態(tài),若仍有按鍵閉合,則確認(rèn)有鍵按下,否則認(rèn)為是按鍵的抖動。上一頁下一頁返回例3-1:如圖所示,實(shí)現(xiàn)如下功能,按下某個鍵,在單個數(shù)碼管上顯示出鍵號。

上一頁下一頁返回本題中,按鍵全部為獨(dú)立式按鍵,讀取P1口的狀態(tài)即可判斷按下的是哪個鍵,讀取相應(yīng)的鍵的編碼送入P1口即可。C51源程序如下:#include<AT89X51.H>unsignedcharled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8};voiddelay(){unsignedinti;for(i=0;i<2000;i++);}voidmain(){unsignedcharkey;while(1){key=P2;if(key!=0xFF)delay();上一頁下一頁返回if(P2!=0xFF)key=P2;while(P2!=0xFF);switch(key){case0xFE:P1=led[0];break;case0xFD:P1=led[1];break;case0xFB:P1=led[2];break;case0xF7:P1=led[3];break;case0xEF:P1=led[4];break;case0xDF:P1=led[5];break;case0xBF:P1=led[6];break;case0x7F:P1=led[7];break;}}}上一頁下一頁返回3.1.3行列式鍵盤應(yīng)用

一、行列式鍵盤結(jié)構(gòu)上一頁下一頁返回二、行列式鍵盤按鍵識別如上圖所示AT89S51與4×4鍵盤的接口電路,按鍵識別時通過P1.0~P1.3(X0~X3)分別輸出低電平,檢測P1.4~P1.7(Y0~Y3)的狀態(tài)是否為低電平來確定是否有鍵按下,通常把X3~X0稱為行掃描輸出線,Y0~Y3稱為列檢測輸入線。具體識別過程如下:①判別鍵盤上有無鍵閉合。其方法為掃描口X0~X3輸出全“0”,讀Y0~Y3的狀態(tài),若為全“1”(鍵盤上列線全為高電平)則鍵盤上沒有閉合鍵,若Y0~Y3不為全“1”則有鍵處于閉合狀態(tài)。②去除鍵的機(jī)械抖動。其方法為判別到鍵盤上有鍵閉合后,可采用軟件延遲一段時間(一般為10ms)再判別鍵盤的狀態(tài),若仍為有鍵閉合狀態(tài),則認(rèn)為鍵盤上有一個確定的鍵被按下,否則認(rèn)為是鍵的抖動。上一頁下一頁返回③判別閉合鍵的鍵號。方法為對X0~X3每位依次分別輸出低電平,其它三位為高電平,對鍵盤的列線進(jìn)行檢測。即相應(yīng)的順次讀Y0~Y3的狀態(tài),若Y0~Y3為全“1”,則行線為0的這一行上沒有鍵閉合,否則這一行上有鍵閉合。閉合鍵的鍵號等于為低電平的列號加上為低電平行的首鍵號。例如:X0~X3輸出為1101時,讀出Y0~Y3為1101,則第2行與第2列相交的鍵處于閉合狀態(tài),第2行的首鍵號為8,列號為2,閉合鍵的鍵號為:N=為低電平的行首鍵號+為低電平的列號=8+2=10④使CPU對鍵的一次閉合僅作一次處理。閉合鍵一次僅進(jìn)行一次鍵功能操作,采用的方法為等待閉合鍵釋放以后再把鍵值送入A中,然后執(zhí)行鍵功能操作。上一頁下一頁返回三、蓄行列紅式鍵蔽盤軟佳件編芽程方校式單片包機(jī)應(yīng)遼用系懲統(tǒng)中絨鍵盤并掃描槍只是CP先U工作投的內(nèi)筒容之舉一。CP他U在忙扶于各糠項工杠作任箱務(wù)時鼓,如湖何兼絕顧鍵胡盤掃抹描,爭既保級證不涌失時嶄機(jī)的鎖響應(yīng)永鍵操數(shù)作,臥又不物過多噴占用CP支U時間盼。因娛此要蕩根據(jù)裁應(yīng)用術(shù)系統(tǒng)先中CP舒U的忙嘆、閑告情況茂選擇糠好鍵撐盤的銹工作喊方式唱。鍵律盤的盞工作翅方式珍有編伍程掃莊描方焦式、膜中斷牛掃描魚方式緩。①編洪程掃下描工掌作方允式筐編極程掃錯描工娃作方備式是撫利用CP少U在完茅成其撐他工勉作的噴空余珍時間腔,調(diào)妄用鍵傳盤掃脹描子銹程序訴來響賄應(yīng)鍵德輸入影要求賞。在闊執(zhí)行病鍵功凝能程醉序時墾,CP劑U不再企響應(yīng)憑鍵輸棗入要睬求。②中交斷掃鹽描方毒式瘦中傷斷掃休描方該式又絹分為浮兩種隙:定啊時器祖中斷嘉掃描室方式怠和鍵蓋盤按迫鍵中立斷掃截描方崖式。。上一疾頁下一瞇頁返回定時論器中布斷掃森描方姜式是釋利用鳳單片使機(jī)內(nèi)塞部定燒時器歉產(chǎn)生諸定時毀中斷(例如10旅0m話s),CP倚U響應(yīng)已中斷石請求斬時,態(tài)對鍵貸盤進(jìn)鎖行掃晃描和曲鍵值白識別冶。定哥時中計斷掃絞描方去式的翻鍵盤他接口羽電路例與程岔序掃枕描法霧的接弟口電稼路相姨同。些定時互器中煌斷鍵調(diào)盤掃饑描程納序,全實(shí)際沖上作躍為定結(jié)時器翁中斷壟服務(wù)側(cè)程序朗。這旋種方粒式雖賄然可冬以改害善程戶序結(jié)宜構(gòu),煤但是屢多數(shù)遙掃描徐仍然怎可能董為“空掃浮描”,CP引U效率勇提高世不大游。另外借一種艙中斷煌掃描可方式狂是鍵絨盤按纏鍵中耗斷掃衰描方貨式。包下圖貴是按肆鍵中叔斷掃咐描方來式的AT未89胸S5植1與鍵終盤的悲接口淺電路任務(wù)3.吵2可以青調(diào)控廢的走方馬燈摔的設(shè)掌計與儲仿真3.抵2.葛1硬件撐電路界設(shè)計3.笑2.服2程序炸編制3.潛2.墓3綜合懂仿真喬調(diào)試上一民頁下一犁頁返回3.狐2.眼1硬件五電路倚設(shè)計本項促目在P2和P0口連榨接16個共進(jìn)陽極定的發(fā)膽光二吹極管芬,在P1口在醉第0、1、2設(shè)置3個獨(dú)刷立式超按鍵頸,在P3口連益接一友只公薦陽極稀的7段數(shù)意碼管什。要池實(shí)現(xiàn)徐的功嘗能如望下:都模式留鍵K1設(shè)置曾走馬鍬燈的宴模式派,共親有8種模趙式可概設(shè)置股,每況種模置式對抱應(yīng)的16只二鑒極管心的走船動模砍式。濃選擇捎某種腿模式嚼后可咽在數(shù)氧碼管機(jī)上顯牢示出歲模式毅號。恰加速貧鍵K2用來惰實(shí)現(xiàn)富走馬好燈的尺速度餡加速漫。減尼速鍵根則用絡(luò)來實(shí)哈現(xiàn)走股馬燈憤的速偶度減茫速。上一傾頁下一恐頁返回上一督頁下一捧頁返回3.向2.約2程序此編制本項栗目對尤應(yīng)的C5丈1源程天序如綿下:#i攪nc牧lu勁de悄<A冷T8休9X列51移.h訪>#d溪ef端in完e嶼u8盼u野ns報ig壤ne座d熔ch秘ar#d賢ef梨in長e更u1董6濱un翼si蕩gn礦ed菌i足ntu8載M氣od盈eN住o;宏//模式聾編號u8回M脫ov俘in雷gB晝it撿=0趨;/橫/移動群位數(shù)u8培T群dx閘;供/響/速度餡索引u8日T吊Co根un我te倦r=義0;削//延時震計數(shù)序器u1謙6給Sp專ee端d;鏈//二極聯(lián)管移怨動速好度bi貧t泡Di血re曉ct屠io欠n=蝕1;秋//滾動軌方向u8頌c鞋od尋e簽Mo專de貨Di盒sp悅la皂y[馬]=槐{0銹xC齊0,板0x底F9熄,0耐xA謙4,月0x跪B0純,0瓜x9戚9,男0x閥92何,0四x8炭2,過0x斥F8墨};u1址6紡co師de上一組頁下一夾頁返回Sp貧ee牛dC硬om哲mo精n[侵]=饒{0異,2概,4坡,6穿,8差,1弱0,娃15粉,3恰0,晨45勉,8絲式0,肥12煌0,套16狐0,痰20當(dāng)0,劑24降0,備28玩0}辱;/遵/速度拌常數(shù)//延時字函數(shù)vo溫id簽D胳el憐ay辦(u猴16蟻x智){u8使i秋;wh狹il膠e(皂x-氏-)蔥fo派r(壞i=產(chǎn)0;齒i<丹12旗0;要i+伯+)殲;}//三按估鍵識淚別函陡數(shù)u8栽G吉et件Ke五y(烘){u8政K界;if強(qiáng)(P撿1=溉=0藥xF渣F)滿re冶tu誓rn莖0侄;/蛾/如果辟沒有捉鍵按替下,困則返越回0。De舊la乳y(勉10家);sw覆it衣ch鐘(P丸1)享//確認(rèn)跡有鍵和按下?lián)凶寯嗍钱?dāng)哪個泄鍵。{上一根頁下一旅頁返回ca閃se濕0首xF醋E:棵K=些1;羽br含ea雷k;ca咐se兇0閣xF堤D:悅K=還2;網(wǎng)br憑ea銳k;ca肝se根0牛xF沿B:僵K=妥3;傭br窗ea志k;de刮fa狐ul撿t:皮K=切0;}wh趙il頭e(團(tuán)P1珍!=拾0x釋FF騰);茫//等待拳按鍵喇釋放壞再返泡回鍵漫值。re葡tu失rn染K蕩;}//按鍵棵處理vo絲式id可K別ey模Pr蘭oc即es旋s(拳u8征K菜ey烏){sw橡it響ch吐(K例ey癢){ca飼se元1柄:D維ir孔ec圖ti鎖on拾=1搞;M往ov嶄in露gB源it精=0偉;Mo穩(wěn)de裳No券=(伶Mo寨de令No耐+1讓)%風(fēng)8;P3邁=M廣od瞞eD行is悟pl茅ay伯[M雁od敗eN藏o]屠;br西ea榮k;ca倚se犧2莖:i念f(摸Td窄x>樹1)建Sp娃ee迫d=浮Sp桐ee今dC軟om夫mo偶n[剪--第Td緣瑞x]碎;b勝re爹ak棋;ca臂se裝3飾:i慣f(塑Td練x<獸14畝)S暑pe葵ed猴=S懂pe亡ed鳴Co鉤mm圣on濟(jì)[+尤+T挽dx善];上一叛頁下一翠頁返回}}//點(diǎn)亮16位LE劈燕Dvo段id賓L曬ed穴Li開gh握t(呆u1卡6雁Le昆d1掩6b鉤it浸s){P2憂=L胃ed翼16退bi威ts酸&拆0朱x0競0F寇F;插//點(diǎn)亮免前8個P0遍=L延ed炊16品bi憐ts據(jù)>>肉8;恭//點(diǎn)亮痰后8個}//定時懇器中適斷函盼數(shù)vo倒id錢T夕1_孔IN宴T(矛)閃in艱te瀉rr購up階t芝3{if刊(+科+T濱Co燒un征te泡r<姜Sp乏ee易dC門om當(dāng)mo理n[責(zé)Td綿x]翅)r糕et壩ur友n;肢//控制晚延時TC辦ou漆nt嫂er啞=0貫;上一末頁下一吧頁返回sw徹it花ch搶(M乳od莖eN幫o){ca奮se乏0確:L麥ed迷Li木gh蘇t(傅0x棟00弦01遼<<繩Mo霜vi紛ng運(yùn)Bi引t)充;b痰re柏ak寸;ca兩se窄1卸:L剝ed喘Li窩gh胖t(尤0x搞80統(tǒng)00研>>巴Mo國vi彩ng熟Bi供t)貸;b浪re翻ak約;ca獸se胞2顛:i坊f(淹Di市re半ct扮io寶n)踐Le票dL鐘ig馬ht揚(yáng)(0貌x0墾00造1<片<M笑ov督in劃gB鋤it院);el辣se題L候ed欣Li軌gh抄t(見0x翠80盛00藥>>邪Mo錦vi撇ng箭Bi獨(dú)t)逃;if袍(M甚ov黃in皆gB蔥it袍==以15爹)D刑ir越ec售ti槽on維=!梨Di狀re說ct睬io階n;br捧ea靠k;ca黎se俯3俯:i抱f(獲Di中re仁ct們io鬧n)羅Le摸dL扒ig善ht烈(~遇(0深x0祝00銷1<綢<M濃ov磚in猾gB婦it痰))惠;el繭se侮L知ed骨Li嗽gh鹽t(凱~(振0x馳80飯00習(xí)>>口Mo正vi嘆ng谷Bi往t)定);if堵(M步ov條in厚gB笛it棗==喊15攻)D翅ir奧ec再ti餓on泊=!歌Di橫re傷ct蹄io框n;br縱ea禁k;ca棗se濾4石:i找f(鳴Di券re郵ct背io父n)噸Le馬dL握ig必ht卸(0縱x0慢00欲F<紹<M倆ov圾in討gB稍it醉);el炮se趟L鍵ed皆Li粱gh頓t(幼0x但F0帝00宿>>唱Mo劉vi槍ng奔Bi熔t)哄;if任(M添ov想in些gB催it暴==眉15收)D長ir蠟ec志ti暫on艦=!缸Di懶re犧ct謊io硬n;br孟ea亮k;ca攜se肆5抄:釋if堆(D網(wǎng)ir虜ec假ti四on毅)L黎ed衣Li軌gh膨t(魔~(澆0x攔00擇0F溜<<且Mo牽vi丙ng疫Bi衰t)用);el避se令L湖ed籍Li補(bǔ)gh呢t(切~(葵0x巨F0心00勸>>津Mo廈vi壩ng府Bi傘t)竹);if晴(M蹲o(hù)v野in遺gB胖it局==優(yōu)15淘)D六ir凱ec代ti代on靠=!毀Di使re度ct他io貴n;br敏ea爺k;上一集頁下一灘頁返回ca濃se膜6軍:i橋f(橡Di秩re絮ct盈io您n)悄Le秩dL柴ig校ht勻(0跌xF六FF位E<乘<M擠ov件in厘gB氣it擁);el儉se鈴L炎ed車Li掙gh慣t(交~(救0x樂7F團(tuán)FF艘>>炭Mo怒vi奴ng魯Bi信t)伍);if治(M均ov關(guān)in攪gB補(bǔ)it越==秋15坦)D顫ir妹ec資ti奏on熱=!褲Di跑re光ct妥io譯n;br須ea楚k;ca優(yōu)se臭7雞:i劣f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論