家用電風(fēng)扇程序設(shè)計(jì)_第1頁(yè)
家用電風(fēng)扇程序設(shè)計(jì)_第2頁(yè)
家用電風(fēng)扇程序設(shè)計(jì)_第3頁(yè)
家用電風(fēng)扇程序設(shè)計(jì)_第4頁(yè)
家用電風(fēng)扇程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)任務(wù)書 弱 中 強(qiáng)正常 自然 睡眠 30分 60分風(fēng)速風(fēng)種定時(shí)停止家用電風(fēng)扇程序設(shè)計(jì)一、設(shè)計(jì)要求設(shè)計(jì)一個(gè)操作面板如上圖所示的電風(fēng)扇,具有以下功能: 電風(fēng)扇處于停轉(zhuǎn)狀態(tài)時(shí),所有指示燈不亮,此時(shí)只有按“風(fēng)速”鍵電扇才會(huì)響應(yīng),其初始工作狀態(tài)為“風(fēng)速”弱,“風(fēng)種”正常,“定時(shí)”連續(xù)狀態(tài),且相應(yīng)指示燈亮。 電扇一經(jīng)啟動(dòng)后,再按動(dòng)“風(fēng)速”鍵可循環(huán)選擇弱、中或強(qiáng)三種狀態(tài)中的任意一種狀態(tài)。弱、中、強(qiáng)對(duì)應(yīng)電扇轉(zhuǎn)速由慢到快。 按動(dòng)風(fēng)種鍵可循環(huán)選擇正常、自然或睡眠三種狀態(tài)中的某一種狀態(tài)。“風(fēng)種”在正常位置是指電扇連續(xù)運(yùn)轉(zhuǎn),在“自然”位置,是表示電扇模擬產(chǎn)生自然風(fēng),即運(yùn)轉(zhuǎn)5秒,間斷5秒;在:“睡眠”位置,是產(chǎn)

2、生輕柔的微風(fēng),此時(shí)風(fēng)速被設(shè)為弱,電扇運(yùn)轉(zhuǎn)10秒,間斷10秒。 按動(dòng)定時(shí)鍵可循環(huán)選擇連續(xù)、30分鐘、60分鐘、90分鐘四種定時(shí)方式中的某一種。其兩指示燈全滅表示連續(xù)狀態(tài);全亮表示90分鐘定時(shí)。 在電扇任間工作狀態(tài)下,按停止鍵,電扇停止工作,所有指示燈熄滅。二、總體方案根據(jù)設(shè)計(jì)要求和內(nèi)容,用可編程并行接口芯片8255a 的pa口控制8個(gè)狀態(tài)指示燈(即8個(gè)發(fā)光二極管),分別表示強(qiáng)、中、弱、正常、自然、睡眠、30分鐘、60分鐘。pb口接收4個(gè)按鍵(分別表示風(fēng)速、風(fēng)種、定時(shí)、停止)的狀態(tài)以啟動(dòng)電扇或設(shè)置相應(yīng)的工作狀態(tài)。這樣就需要4個(gè)按鍵,因此可以用實(shí)驗(yàn)箱上的某一列的4個(gè)按鍵,可以將此列的列選擇線直接接為

3、低電平,4個(gè)行輸入線接到8255的口。這樣可以直接從8255的口讀取按鍵的狀態(tài),從而執(zhí)行相應(yīng)的操作。要通過(guò)一個(gè)按鍵來(lái)控制2個(gè)以上的狀態(tài),可以通過(guò)按鍵的次數(shù)來(lái)控制第幾種狀態(tài),比如風(fēng)速有三種狀態(tài)(弱、中、強(qiáng)),可以用按鍵1次控制弱,按鍵2次控制中,按鍵3次控制強(qiáng),這樣就可以實(shí)現(xiàn)一鍵控制多鐘狀態(tài)了。用實(shí)驗(yàn)箱上的直流電動(dòng)機(jī)作為電風(fēng)扇,其轉(zhuǎn)速可有d/a轉(zhuǎn)換芯片0832來(lái)產(chǎn)生不同的電壓來(lái)控制電風(fēng)扇。8位d/a轉(zhuǎn)換器的輸入數(shù)據(jù)與輸出電壓的關(guān)系為 u(-5v5v)=2uref/256*n-5v(uref為+5v)風(fēng)種及定時(shí)的時(shí)間控制可由可編程計(jì)數(shù)器/定時(shí)器 8253來(lái)實(shí)現(xiàn)??蛇x用由8253工作方式2,在這種方

4、式下,當(dāng)cpu輸入控制字后,輸出將為高,在寫入計(jì)數(shù)值后計(jì)數(shù)器將立即自動(dòng)對(duì)輸入時(shí)鐘clk計(jì)數(shù),計(jì)數(shù)器減為1時(shí),輸出將變低,方式2時(shí)8253不可用重新設(shè)置計(jì)數(shù)值就能連續(xù)工作,保證了定時(shí)的精確??梢詫⒍〞r(shí)時(shí)間設(shè)為50ms??蓪?253定時(shí)器的輸出信號(hào)與8259中斷控制器的中斷請(qǐng)求信號(hào)相連,每個(gè)定時(shí)周期可產(chǎn)生一次中斷響應(yīng)作為風(fēng)種和定時(shí)的時(shí)間基準(zhǔn)。這樣可在中斷服務(wù)程序中設(shè)計(jì)計(jì)數(shù)單元,對(duì)此時(shí)間基準(zhǔn)作為計(jì)數(shù),以生成所需的定時(shí)時(shí)間。三、原理框圖 流程圖(二) 中斷服務(wù)程序開始初始化8255、8255、8259設(shè)置風(fēng)速為停止,風(fēng)種為正常,定時(shí)為連續(xù)狀態(tài),所有輸出清零風(fēng)速鍵嗎?設(shè)置8253的時(shí)間常數(shù)并啟動(dòng)定時(shí)器、

5、設(shè)置8259中斷矢量有鍵按下嗎?停止鍵嗎?風(fēng)扇運(yùn)行控制子程序風(fēng)種鍵嗎?定時(shí)鍵嗎?風(fēng)種狀態(tài)設(shè)置子程序定時(shí)狀態(tài)設(shè)置子程序風(fēng)速狀態(tài)設(shè)置子程序 流程圖(一) 主程序 流程圖(三) 風(fēng)扇運(yùn)行控制程序四、系統(tǒng)模塊詳細(xì)設(shè)計(jì)與調(diào)試1四個(gè)鍵分別控制風(fēng)速、風(fēng)種、定時(shí)、停止 采用實(shí)驗(yàn)箱上的鍵盤上的一列的4個(gè)按鍵(a,b,c,e)分別表示風(fēng)速、風(fēng)種、定時(shí)、停止,將此列的列選擇線直接接為低電平,4個(gè)行輸入線分別接到8255pb口的pb7、pb6、pb5、pb4。這樣在編程就可以實(shí)現(xiàn)用按鍵控制了。編寫的程序中可以用test指令來(lái)判斷,如果有某個(gè)鍵按下,就轉(zhuǎn)到相應(yīng)的狀態(tài)設(shè)置程序,否著則繼續(xù)執(zhí)行下面的指令,如風(fēng)速鍵的編程,用

6、test al,80h來(lái)判斷風(fēng)速鍵是否按下,如果檢測(cè)到風(fēng)速鍵按下,就轉(zhuǎn)到風(fēng)速狀態(tài)(即弱、中、強(qiáng)三種狀態(tài))設(shè)置子程序,以便能夠通過(guò)風(fēng)速鍵控制這三種狀態(tài)(用三個(gè)二極管來(lái)顯示)。如果沒有檢測(cè)到按下,則繼續(xù)進(jìn)行下面的風(fēng)種鍵的檢測(cè)。這樣就可以實(shí)現(xiàn)四個(gè)鍵分別控制風(fēng)速、風(fēng)種、定時(shí)、停止。2風(fēng)速、風(fēng)種、定時(shí)狀態(tài)設(shè)置 因?yàn)橐獙?shí)現(xiàn)風(fēng)速、風(fēng)種、定時(shí)3個(gè)按鍵對(duì)風(fēng)速(弱、中、強(qiáng))、風(fēng)種(正常、自然、睡眠)、定時(shí)(30min、60min、90min、連續(xù))共8個(gè)狀態(tài)的控制,就需要對(duì)這8個(gè)狀態(tài)進(jìn)行設(shè)置,因?yàn)橐粋€(gè)鍵所對(duì)應(yīng)的設(shè)置方法大同小異,可以以風(fēng)速狀態(tài)做代表來(lái)說(shuō)明設(shè)置方法,其設(shè)置方法如下:因?yàn)轱L(fēng)速的3狀態(tài)要保存,所以要在數(shù)

7、據(jù)段聲請(qǐng)一個(gè)地址來(lái)存放。這里用風(fēng)速鍵按下的次數(shù)來(lái)實(shí)現(xiàn)三種狀態(tài)的變換,初始狀態(tài)為按第一下表示弱狀態(tài),在按一次表示中狀態(tài)(即使表示中狀態(tài)的發(fā)光二極管亮),在按一次表示強(qiáng)狀態(tài),在按一次表示又返回到弱狀態(tài),這樣依次循環(huán)下去。用編程是這樣實(shí)現(xiàn)的,當(dāng)轉(zhuǎn)到風(fēng)速風(fēng)速狀態(tài)設(shè)置子程序時(shí),先把所聲請(qǐng)數(shù)據(jù)段的地址內(nèi)的內(nèi)容變?yōu)?1h并取出來(lái)放到al中,用左移指令rcl,左移的次數(shù)等于風(fēng)速鍵按下的次數(shù),并存儲(chǔ)到聲請(qǐng)數(shù)據(jù)段的地址內(nèi)。當(dāng)al中的內(nèi)容是04h時(shí),就要把它的內(nèi)容變?yōu)?1h。這樣就可以通過(guò)風(fēng)速鍵控制弱、中、強(qiáng)三中狀態(tài)了。這里因?yàn)橐胐/a轉(zhuǎn)換器 0832來(lái)改變電壓的大小來(lái)控制電動(dòng)機(jī)的轉(zhuǎn)速的快慢,所以還要在三種狀態(tài)下

8、分別要有一個(gè)子程序來(lái)控制d/a轉(zhuǎn)換器 0832。3時(shí)間的控制 風(fēng)種及定時(shí)的時(shí)間控制可由可編程計(jì)數(shù)器/定時(shí)器 8253來(lái)實(shí)現(xiàn)。因?yàn)閷?shí)驗(yàn)箱上的時(shí)鐘為1mhz,可以將定時(shí)時(shí)間設(shè)為50ms。用由8253的0計(jì)數(shù)器和1計(jì)數(shù)器,使0計(jì)數(shù)器為工作方式0,把1mhz的時(shí)鐘變?yōu)?khz,通過(guò)outo輸出到clk1,使1計(jì)數(shù)器為工作方式2,使1計(jì)數(shù)器的定時(shí)系數(shù)為32h,在這種方式下,當(dāng)cpu輸入控制字后,輸出將為高,在寫入計(jì)數(shù)值后計(jì)數(shù)器將立即自動(dòng)對(duì)輸入時(shí)鐘clk計(jì)數(shù),計(jì)數(shù)器減為1時(shí),輸出將變低,方式2時(shí)8253不可用重新設(shè)置計(jì)數(shù)值就能連續(xù)工作,保證了定時(shí)的精確。這樣就可以將定時(shí)時(shí)間設(shè)為50ms。由于要定時(shí)30mi

9、n、60min、90min、5s、10s ,所以需要多次調(diào)用延時(shí)子程序,所以可以寫成一個(gè)delay程序,每次調(diào)用的時(shí)候配合call和ret就能往返于子程序和主程序之間,之前把要記的數(shù)值放在si寄存器中,就可以很方便的實(shí)現(xiàn)定多個(gè)時(shí)間了。4中斷 中斷要用8259??蓪?253定時(shí)器的輸出信號(hào)與8259中斷控制器的中斷請(qǐng)求信號(hào)相連,每個(gè)定時(shí)周期可產(chǎn)生一次中斷響應(yīng)作為風(fēng)種和定時(shí)的時(shí)間基準(zhǔn)。這樣可在中斷服務(wù)程序中設(shè)計(jì)計(jì)數(shù)單元,對(duì)此時(shí)間基準(zhǔn)作為計(jì)數(shù),以生成所需的定時(shí)時(shí)間。5調(diào)試根據(jù)本課程設(shè)計(jì)的要求編寫程序,并在偉福6000實(shí)驗(yàn)系統(tǒng)上進(jìn)行編譯,待編譯通過(guò)、產(chǎn)生可執(zhí)行文件后,經(jīng)usb接口將其下載至實(shí)驗(yàn)系統(tǒng)。將

10、各項(xiàng)硬件電路連接。完畢后,經(jīng)老師檢查連線正確后,運(yùn)行可執(zhí)行文件,依次按四個(gè)控制鍵,觀察按每個(gè)鍵后的反映情況,應(yīng)該和設(shè)計(jì)方案預(yù)期的結(jié)果一致。如果不一致,找出不一只致的地方,并分析出現(xiàn)狀況的原因,然后檢查出錯(cuò)地方對(duì)應(yīng)的程序,找出錯(cuò)誤并改正,然后在運(yùn)行一遍,如果還不行,繼續(xù)檢查找錯(cuò)運(yùn)行,直到正確為止。有些錯(cuò)誤發(fā)現(xiàn)不出來(lái)的話,可以用單步執(zhí)行找錯(cuò)或問(wèn)老師。得到正確的結(jié)果后,應(yīng)與本課程設(shè)計(jì)的各項(xiàng)要求進(jìn)行對(duì)比,保證符合各項(xiàng)要求。五、設(shè)計(jì)總結(jié)1課程設(shè)計(jì)出現(xiàn)的問(wèn)題及解決方法 (1)編程由于編程水平不夠、對(duì)有些芯片(8259)的理解不夠以及想不出把流程圖用程序來(lái)實(shí)現(xiàn)等原因?qū)е戮幉怀龀虂?lái)。這時(shí)要看書本上的相關(guān)內(nèi)容,

11、并思考如何編程。在怎樣設(shè)計(jì)用風(fēng)速鍵控制三種狀態(tài)(弱、中、強(qiáng)),曾經(jīng)很長(zhǎng)時(shí)間不知道該怎么辦,怎樣編寫程序。直到后來(lái)想到用邏輯左移指令和聲請(qǐng)一個(gè)數(shù)據(jù)段用于保存。通過(guò)按下風(fēng)速鍵的次數(shù)依次表示各個(gè)狀態(tài),這樣就能用風(fēng)速鍵來(lái)控制三種狀態(tài)了。因?yàn)橐郧皼]有做過(guò)用芯片8259實(shí)現(xiàn)中斷的實(shí)驗(yàn),所以開始不會(huì)用8259。后來(lái)看完芯片8259實(shí)現(xiàn)中斷的實(shí)驗(yàn)才初步學(xué)會(huì)應(yīng)用芯片8259實(shí)現(xiàn)中斷。 (2)連接硬件電路出現(xiàn)漏線、接錯(cuò)線的情況,應(yīng)仔細(xì)檢查線路,找出漏線、接錯(cuò)的線,并重新連接。 (3)調(diào)試在把編好的程序進(jìn)行編譯的過(guò)程出現(xiàn)了很多錯(cuò)誤,要對(duì)顯示出的程序錯(cuò)誤進(jìn)行一條一條指令的改正。在運(yùn)行過(guò)程中,出現(xiàn)與預(yù)期效果不同的現(xiàn)象,

12、這是就要找出錯(cuò)誤所對(duì)應(yīng)的程序段進(jìn)行檢查改正。改正完在運(yùn)行,如果還錯(cuò),則繼續(xù)檢查改錯(cuò),一直到顯示與預(yù)期效果一致為止。程序完全正確,其他人已經(jīng)模擬正確符合設(shè)計(jì)要求,而在我的實(shí)驗(yàn)箱上卻模擬不出,換了好幾個(gè)芯片,最后才確定是8253壞了。2心得和體會(huì)六、參考文獻(xiàn)微機(jī)原理實(shí)驗(yàn)與課程設(shè)計(jì)指導(dǎo)書,陸紅偉編,中國(guó)電力出版社,2006年8086微型計(jì)算機(jī)組成、原理及接口,顧濱,機(jī)械工業(yè)出版社,2001微型計(jì)算機(jī)原理及應(yīng)用,呂淑萍等,哈爾濱工程大學(xué)出版社,2004年 微型計(jì)算機(jī)技術(shù)及應(yīng)用,戴梅萼,清華大學(xué)出版社,2005七、附件材料 1.元器件清單 cpu 8086,d/a轉(zhuǎn)換器 dac0832,可編程計(jì)數(shù)器/定

13、時(shí)器 8253,可編程并行接口芯片8255a,可編程中斷控制器8259a偉福6000實(shí)驗(yàn)箱直流電動(dòng)機(jī),鍵盤4mhz脈沖發(fā)生器,led燈若干,開關(guān)若干,導(dǎo)線若干。 2程序清單 本程序用于微機(jī)原理課程設(shè)計(jì)-電風(fēng)扇程序 程序如下:mode equ 082hporta equ 8000hportb equ 8001hportc equ 8002hcaddr equ 8003hcount0 equ 0a0hcount1 equ 0a2haddress equ 0a6hcs8259a equ 09000hcs8259b equ 09001hda0832 equ 07000hdata segment spe

14、ed db 01h style db 01h time db 01h switch db 00hdata endscode segment assume cs:code, ds:datastart: mov al,082h; 8255初始化 mov dx,caddr out dx,al mov dx,address ; 計(jì)數(shù)器0初始化 mov al,34h out dx,al mov dx,count0 mov ax,0fa0h out dx,al mov al,ah out dx,al mov dx,address ; 計(jì)數(shù)器1初始化 mov al,70h out dx,al mov dx,

15、count1 mov al,32h out dx,aliinit proc near mov dx,cs8259a ; 8259初始化 mov al,13h out dx,al mov dx,cs8259b mov al,20h out dx,al mov al,01h out dx,al mov al, out dx,al retiinit endp mov dx,portb mov al,00hbutton: mov dx,portb ; 按鍵設(shè)置 in al,dx or al,00h jnz switch call controlswitch: test al,10h jz contro

16、l test al,80h jz speed test al,40h jz style test al,20h jz time call buttonspeed proc near ;風(fēng)速設(shè)置子程序 mov al,speed rol al,1 test al,08h jz next0 test al,01h jz ruo test al,02h jz zhong test al,04h jz qiang mov speed,al mov dx,porta out dx,al jmp buttonnext0: mov speed,01h ;弱狀態(tài)ruo: proc near mov speed,

17、al mov dx,porta out dx,al mov al,a0h mov dx,da0832 out dx,al retruo endp zhong proc near ;中狀態(tài) mov speed,al mov dx,porta out dx,al mov dx,d0h mov dx,da0832 out dx,al retzhong endpqiang proc near ;強(qiáng)狀態(tài) mov speed,al mov dx,porta out dx,al mov dx,ffh mov dx,da0832 out dx,al ret qiang endpstyle proc near

18、;風(fēng)種設(shè)置子程序 mov al,style rol al,1 test al,08h jz next1 test al,01h jz normal test al,02h jz nature test al,04h jz sleep mov style,al mov dx,porta out dx,alnext1: mov style,01hnature proc near ;自然begin: mov al,speed test al,01h mov bl,0a0h jnz next2 test al,02h mov al,0d0h jnz next mov bl,0ffhnext2: mov

19、 al,bl mov dx,da0832 out dx,al mov si,100 call delay mov al,80h mov dx,da0832 out dx,al mov si,100 call delay jmp begin ret endpdelay proc nearb: mov dx,portb jn al,dx test al,10h jz off mov dx,count mov al,40h out dx,al mov al,9ch out dx,alh: mov dx,portc in al,dx test al,10h jz hl: mov dx,portc in

20、 al,dx test al,10h jnz l dec si jnz b retdelay endp sleep proc near ;睡眠begin: mov al,speed test al,01h mov bl,0a0h jnz next3 test al,02h mov al,0d0h jnz next mov bl,0ffhnext3: mov al,bl mov dx,da0832 out dx,al mov si,2oo call delay mov al,80h mov dx,da0832 out dx,al mov si,200 call delay jmp begin r

21、et endpdelay proc nearb: mov dx,portb jn al,dx test al,10h jz off mov dx,count mov al,40h out dx,al mov al,9ch out dx,alh: mov dx,portc in al,dx test al,10h jz hl: mov dx,portc in al,dx test al,10h jnz l dec si jnz b retdelay endp time proc near ;定時(shí)設(shè)置子程序 mov al,time rol al,1 test al,10h jz next4 tes

22、t al,08h jz normal test al,04h jz sanshi test al,02h jz liushi test al,01h jz jiushi mov time,al mov dx,porta out dx,al jmp button next4: mov time,01hnormal proc near 正常 mov al,offh mov dx ,da0832 out dx,al mov si 1000000 call delay mov al,080h mov dx,da0832 out dx,asanshi proc near ;三十分鐘定時(shí) mov al,o

23、ffh mov dx ,da0832 out dx,al mov si 36000 call delay mov al,080h mov dx,da0832 out dx,alliushi proc near ;六十分鐘定時(shí) mov al,offh mov dx ,da0832 out dx,al mov si 72000 call delay mov al,080h mov dx,da0832 out dx,aljiushi proc near ;九十分鐘定時(shí) mov al,offh mov dx ,da0832 out dx,al mov si 108000 call delay mov al,080h mov dx,da0832 ou

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論