單片機子程序_第1頁
單片機子程序_第2頁
單片機子程序_第3頁
單片機子程序_第4頁
單片機子程序_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電路設計說明電路設計說明: 要說明各部分電路由哪些元器件組成、被控對象由要說明各部分電路由哪些元器件組成、被控對象由哪些信號通過了什么轉(zhuǎn)換或器件來驅(qū)動的,并簡要哪些信號通過了什么轉(zhuǎn)換或器件來驅(qū)動的,并簡要說明電路中各元件的作用、各部分電路的工作原理。說明電路中各元件的作用、各部分電路的工作原理。 還要對電路使用功能做簡要說明。還要對電路使用功能做簡要說明。 要掌握輸入、輸出通道接口中常用器件及相關驅(qū)動要掌握輸入、輸出通道接口中常用器件及相關驅(qū)動器件或集成電路芯片,例如:開關、按鍵、繼電器、器件或集成電路芯片,例如:開關、按鍵、繼電器、led及數(shù)碼管、蜂鳴器、光耦器件、驅(qū)動器(注意及數(shù)碼管、蜂鳴

2、器、光耦器件、驅(qū)動器(注意有普通的和高壓輸出的)、晶體管、移位寄存器等有普通的和高壓輸出的)、晶體管、移位寄存器等的原理、控制方法和應用。的原理、控制方法和應用。 三款課堂實驗接觸過的單片機要掌握。其中三款課堂實驗接觸過的單片機要掌握。其中at89c2051見課件見課件三極管極性 9011 npn (低頻小功率晶體管 ) 9012 pnp 9013 npn 9014 npn (低頻、低噪聲小功率晶體管 ) 9015 pnp 9018 npn (高頻小功率晶體管 )走馬燈 display_led:mov p2,#10h mov a,#11111110b mov r4,#8 display_led

3、1:mov p0,a lcall delay30ms lcall delay30ms rl a djnz r4,display_led1 mov p2,#00h ret數(shù)碼管顯示部分(靜態(tài)) display:mov p2,#0fh mov r4,#10 mov dptr,#table1 display1:mov a,#0 movc a,a+dptr mov p0,a lcall delay1s inc dptr djnz r4,display1 mov p2,#00h rettable1:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h動態(tài)顯示數(shù)碼

4、管(顯示5秒) 顯示數(shù)存于30h33hmov a,33hmovc a,a+dptrsetbp2.3 ;選通第四位mov p0,alcall delay5msclr p2.3 ;關閉選通位djnz r7,displayrettable:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hdb 86h,0afh,0ffh ;0,1,2,3,4,5,6,7,8,9,e,r,全滅display:mov r7,#250display1:mov a,30h movc a,a+dptrsetb p2.0 ;選通第一位mov p0,alcall delay5msclr

5、p2.0 ;關閉選通位mov a,31hmovc a,a+dptrsetb p2.1 ;選通第二位mov p0,alcall delay5msclr p2.1 ;關閉選通位mov a,32hmovc a,a+dptrsetb p2.2 ;選通第三位mov p0,alcall delay5msclr p2.2 ;關閉選通位延時子程序(11.0592mhz) delay1s:mov 55h,#20 ;延時1秒 delay1s1:mov 54h,#100 delay1s2:mov 48h,#250 djnz 48h,$ djnz 54h,delay1s2 djnz 55h,delay1s1 ret

6、delay500ms:mov 51h,#10 ;延時500毫秒 delay500ms1:mov 52h,#100 delay500ms2:mov 49h,#250 djnz 49h,$ djnz 52h,delay500ms2 djnz 51h,delay500ms1 ret延時子程序(11.0592mhz) delay30ms:mov 56h,#55 ;延時30ms子程序 delay30ms1:mov 57h,#250 djnz 57h,$ djnz 56h,delay30ms1 ret delay5ms:mov 58h,#10 ;延時5ms子程序 delay10ms1:mov 59h,#2

7、49 djnz 59h,$ djnz 58h,delay10ms1 ret存鍵值單元清存鍵值單元清0行線置行線置1鍵盤鍵盤流程圖鍵盤程序鍵盤程序(通用版)(通用版)key_test:mov p3,#01111111bjnb p3.3,s4 ;k4按下jnb p3.2,s8 ;k8按下mov p3,#10111111bjnb p3.3,s3 ;k3按下jnb p3.2,s7 ;k7按下mov p3,#11011111bjnb p3.3,s2 ;k2按下jnb p3.2,s6 ;k6按下mov p3,#11101111bjnb p3.3,s1 ;k1按下jnb p3.2,s5 ;k5按下mov 2

8、0h,#0 ;無鍵按下則送無鍵按下則送0到到20hljmp key_test_stops8:mov 20h,#8 ;鍵值8送20hljmp key_test_stops7:mov 20h,#7 ;鍵值7送20hljmp key_test_stops6:mov 20h,#6 ;鍵值6送20hljmp key_test_stops5:mov 20h,#5 ;鍵值5送20hljmp key_test_stops4:mov 20h,#4 ;鍵值4送20hljmp key_test_stops3:mov 20h,#3 ;鍵值3送20hljmp key_test_stops2:mov 20h,#2 ;鍵值

9、2送20hljmp key_test_stops1:mov 20h,#1 ;鍵值1送20hkey_test_stop:ljmp key_dealkey_deal: mov a,p3 ;等鍵釋放(去抖)anl a,#0fhcjne a,#0fh, key_dealmov a,20h ;送鍵值到a處理部分(注意等鍵釋放)處理部分(注意等鍵釋放)鍵盤程序鍵盤程序(電子琴版)(電子琴版)begin:mov r7,#0 ;存放當前掃描列列號mov r0,#11101111b ;掃描0列的掃描碼key2:mov p3,r0mov r4,#1 ;第一行行首鍵值jnb p3.3,key1mov r4,#5 ;

10、第2行行首鍵值送r3jnb p3.2,key1mov a,r0 ;列掃描碼送arl a ;修改列掃描碼mov r0,ainc r7 ;得到下次待掃描列列號cjne r7,#4,key2 (clr tr0 clr p2.5) ;無鍵按下關無鍵按下關t0和聲音和聲音ljmp beginkey1:mov a,r7 ;當前掃描列列號送aadd a,r4 ;求鍵值(當前掃描列列號加當前掃描行首鍵鍵值)mov 20h,a ;鍵值暫存20hkey_wait: mov a,p3 ;等鍵釋放等鍵釋放anl a,#0fhcjne a,#0fh, key_dealmov a,20h ;送鍵值到送鍵值到abcd轉(zhuǎn)換送

11、數(shù)碼管動態(tài)顯示(r6存要轉(zhuǎn)換的16進制數(shù))bcd_display:mov a,r6 ;動態(tài)顯示當前頻率值mov b,#10 ;將a值轉(zhuǎn)換為10進制,r6=99div ab ;除后,十位在a,個位在bmov dptr,#tab_dis ;查數(shù)碼管顯示表(共陽)movc a,a+dptr ;十位要顯示的數(shù)mov r4,a ;十位暫存r4mov a,bmovc a,a+dptr ;個位要顯示的數(shù)mov r3,a ;各位暫存r3dis:mov p2,#00000100b ;動態(tài)顯示數(shù)碼管mov p0,r4 ;顯示十位1slcall delay1msmov p2,#00001000b mov p0,r3

12、 ;顯示個位1slcall delay1mstab_dis:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;顯示碼at24cxat24cx的接口電路及編程的接口電路及編程(設晶振為設晶振為6mhz,p1.6為為scl,p1.7為為sda)sda vccscl a0test a1vss a256748123p1.7p1.68051vccr=5.1kat24c02(1)(1)啟動啟動i i2 2c c子程序子程序: :要求在時鐘要求在時鐘為高電平期間數(shù)據(jù)線由高變低為高電平期間數(shù)據(jù)線由高變低。 sta: setbp1.7 ;sda=1 setbp1.

13、6 ;scl=1 nop nop clrp1.7 ;sda=0 nop nop clrp1.6 ;scl=0 ret(2)(2)停止停止i i2 2c c子程序子程序: :要求在時鐘為高電平期間數(shù)據(jù)線由低變高要求在時鐘為高電平期間數(shù)據(jù)線由低變高。 stop: clrp1.7 ;sda=0 setbp1.6 ;scl=1 nop nop setbp1.7 ;sda=1 nop nop clrp1.6 ;scl=0retsdasclsdascl(3)(3)發(fā)送應答位發(fā)送應答位”0 0”子程序子程序: :要求在要求在sclscl高電平期間主控器件向被控高電平期間主控器件向被控器件發(fā)送器件發(fā)送”0 0

14、”應答信號應答信號。sack: clr p1.7setb p1.6nopnopclrp1.6setb p1.7retsdascl(4)(4)發(fā)送非應答位發(fā)送非應答位”1 1”子程序子程序: :要求在要求在sclscl高電平期間主控器件向被高電平期間主控器件向被控控器件發(fā)送器件發(fā)送”1 1”應答信號。應答信號。sdasclsnack:setb p1.7 setb p1.6 nop nop clr p1.6 clr p1.7 ret (5) (5)應答位檢查子程序應答位檢查子程序: :用于檢查一字節(jié)數(shù)據(jù)傳送后用于檢查一字節(jié)數(shù)據(jù)傳送后, ,被控器件被控器件在第在第9 9位是否發(fā)回位是否發(fā)回”0 0”

15、的應答的應答, ,若是若是, ,程序置程序置f0f0標志為標志為0,0,否則置否則置f0f0標志為標志為1 1。ack_chk: setb p1.7 setb p1.7 ; ;將將p1.7p1.7拉高拉高, ,以便讓以便讓 接收端發(fā)應答信號接收端發(fā)應答信號 setbsetbp1.6p1.6 ; ;輸出時鐘輸出時鐘 clrclrf0 ;f0 ;預先設為會發(fā)應答預先設為會發(fā)應答 mov a, p1 mov a, p1 ;讀;讀p1p1口口 jnb acc.7,exit ;jnb acc.7,exit ;查接收端是否查接收端是否 發(fā)回了低電平發(fā)回了低電平? ? setb setbf0f0 ; ;不是

16、不是, ,則置則置f0=1f0=1exit:exit: clr clrp1.6p1.6 ; ;結(jié)束時鐘結(jié)束時鐘 nopnop nop ret retsdascl 9正常應答信號出口參數(shù)出口參數(shù) : f0 (反映是否收到應答的標識位反映是否收到應答的標識位)(6) 向向sda線上發(fā)送一個字節(jié)數(shù)據(jù)的子程序線上發(fā)送一個字節(jié)數(shù)據(jù)的子程序(待發(fā)數(shù)據(jù)在待發(fā)數(shù)據(jù)在a中中)入口參數(shù):入口參數(shù): a(存待發(fā)送數(shù))(存待發(fā)送數(shù))wrbyt: mov r0,#08h ;長度;長度wlp: rlc a ;待發(fā)送數(shù)據(jù)左移;待發(fā)送數(shù)據(jù)左移 jcwr1 ajmp wr0wlp1: djnzr0,wlp retwr1: se

17、tb p1.7;發(fā)送;發(fā)送“1”(scl=1時,時,sda保持保持“1”)setb p1.6nopnop clr p1.6 clr p1.7 ajmpwlp1wr0: clr p1.7 ;發(fā)送;發(fā)送“0” ”(scl=1時,時,sda保持保持“1”) setb p1.6 nop nop clr p1.6ajmp wlp1(7) 從從sda線上讀取一個字節(jié)數(shù)據(jù)的子程序線上讀取一個字節(jié)數(shù)據(jù)的子程序 出口參數(shù)出口參數(shù) : r2 (讀取的數(shù)據(jù)移放入讀取的數(shù)據(jù)移放入r2)rdbyt: mov r0,#08h;8位位rlp: setbp1.7;p1.7為輸入狀態(tài)為輸入狀態(tài)setb p1.6;使;使sda有

18、效有效mov a,p1jnbacc.7,rd0 ; 讀入的是讀入的是”0”則轉(zhuǎn)則轉(zhuǎn)rd0 ajmp rd1 ;否則跳轉(zhuǎn)到否則跳轉(zhuǎn)到 rd1rlp1: djnz r0, rlp ;8位未讀完則轉(zhuǎn)位未讀完則轉(zhuǎn)rlpretrd0: clrc;讀入;讀入“0” ,拼裝,拼裝 mova,r2rlcamov r2,a clr p1.6ajmp rlp1 rlc a mov r2,a clr p1.6 ;使;使scl為為0,可以繼續(xù)接收,可以繼續(xù)接收ajmp rlp1rd1: setb c;讀入;讀入“1” ,拼裝,拼裝 mov a,r2wrnbyt: push pswwrnbyt1: mov psw,#1

19、8h;換工作寄存器區(qū);換工作寄存器區(qū)wrnbyt2: lcall sta;啟動;啟動i2c總線總線mov a,sla;尋址字節(jié);尋址字節(jié)sla w/rlcall wrbyt ;調(diào)發(fā)調(diào)發(fā)1個字節(jié)子程序發(fā)尋址字節(jié)個字節(jié)子程序發(fā)尋址字節(jié)lcall ack_chk ;檢查應答位;檢查應答位 jb f0, wrnbyt2;非應答位,重發(fā);非應答位,重發(fā) mov a,# mts;數(shù)據(jù)存入起始地址(;數(shù)據(jù)存入起始地址( eerom片內(nèi)尋址)片內(nèi)尋址) lcall wbyte lcall ack_chk ;檢查應答位;檢查應答位啟動啟動slawslaw應答應答尋址尋址應答應答連續(xù)寫連續(xù)寫n n個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)停止停止(8) 模擬模擬i2c總線發(fā)送幾個字節(jié)數(shù)據(jù)總線發(fā)送幾個字節(jié)數(shù)據(jù)(以字節(jié)寫的形式以字節(jié)寫的形式); 入口參數(shù):入口參數(shù): numbyt(存發(fā)送字節(jié)數(shù)單元)(存發(fā)送字節(jié)數(shù)單元) mtd (待發(fā)數(shù)據(jù)所在緩沖區(qū)首地址)(待發(fā)數(shù)據(jù)所在緩沖區(qū)首地址) mts (寫入(寫入eerom中單元地址)中單元地址)jb f0, wrnbyt2 ;非應答則重發(fā)非應答則重發(fā)incr1 djnznumbyt,wrda;判發(fā)送完;判發(fā)送完?lcall stop;停止;停止poppswretwrda: mov a,r1 ;取一數(shù)取一數(shù) lcallwrbyt;發(fā)送;發(fā)送 lcall ac

溫馨提示

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

評論

0/150

提交評論