資源描述:
《閃爍燈課程設計》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、目錄一、設計目的………………………………………………………………………2二、設計內(nèi)容與要求………………………………………………………………2三、設計原理與硬件電路…………………………………………………………2四、接線電路圖與實物電路圖……………………………………………………3五、程序流程圖……………………………………………………………………4六、程序代碼………………………………………………………………………5七、程序及硬件系統(tǒng)調(diào)試情況……………………………………………………9八、設計總結與體會…………………………………………
2、……………………9九、參考文獻………………………………………………………………………10-9-一、設計目的課程設計是培養(yǎng)和鍛煉學生在學習完本門課后綜合應用所學理論知識,解決實際工程設計和應用問題的能力的重要環(huán)節(jié)。通過課程設計,熟悉和掌握微機系統(tǒng)的硬件設計的方法、原理、設計步驟。熟練掌握微機系統(tǒng)與接口擴展電路的設計方法,熟練應用8086匯編語言編寫應用程序和實際設計中的硬軟件調(diào)試方法和步驟。不僅要培養(yǎng)學生事實求是和嚴肅認真的工作態(tài)度,培養(yǎng)學生的實際動手能力,檢驗學生對本門課學習的情況,更要培養(yǎng)學生在實際的工程設計中查閱資料,撰
3、寫設計報告表達設計思想和結果的能力。二、設計內(nèi)容與要求硬件設計題十一閃爍燈利用8253實現(xiàn)閃爍燈效果,并最終通過鍵盤輸入指定時間實現(xiàn)定時閃爍,同時利用七段數(shù)碼管倒計時輔助顯示閃爍時間,實現(xiàn)定時設定功能。比如:按下鍵盤9號鍵,則LED燈開始每秒閃爍一下,9秒后停止閃爍,實現(xiàn)定時閃爍;同時數(shù)碼管從9開始倒計時顯示輔助顯示閃爍時間。三、設計原理與硬件電路啟動后,通過8255的C口開始掃描鍵盤。當有鍵按下時,排除抖動的可能并且判斷釋放該鍵后,得到鍵碼。然后通過8255的A口送出倒計時的碼值,通過8255的PB0啟動8253的分頻電路
4、,得1s方波,驅(qū)動LED閃爍。鍵盤上按鍵的位置采用掃描法得到。行線接+5V,作為8255的C口低四位輸入,列線由8255高四位輸出,逐列輸出0。檢測C口高四位是否有0,若有則該列所在行的鍵即為按下的鍵。當然逐列掃描前要先判斷是否有鍵按下,并延時后,再次判斷有無鍵按下,以排除鍵盤抖動的可能性。鍵盤按鍵的鍵碼的確定。當然我們可以對每一種情況進行賦值,但考慮到只用到1~9鍵,為了精簡程序,采用以下特殊方法確定鍵碼。由下圖可以發(fā)現(xiàn),1~9鍵中,下一列都比前一列同一行的值多1。抓住這一特點,將每列的初值Y0~Y2依次設為0、1、2,則
5、X2行的該列的鍵碼就是在該列初值的基礎上加1合成;同理X1行加4與列初值合成,X0行加7與列的初值合成。在確定了鍵碼后,要等鍵釋放后才能執(zhí)行相應的操作。8253實現(xiàn)將1MHz的信號分頻成1Hz的方波的功能,然后用于驅(qū)動LED。分頻須使用兩個通道級聯(lián)實現(xiàn),而8253的啟動右8255的PB0來控制。-9-四、接線電路圖與實物電路圖-9-五、程序流程圖-9-六、程序代碼codesegment-9-assumecs:code,ds:codestart:movax,csmovds,axleadi,ledtabmoval,35h;通道0
6、初始化,00110101b,16位,方式2,BCDmovdx,20bhoutdx,almoval,00h;寫初值1000BCDmovdx,208houtdx,almoval,10houtdx,almoval,77h;通道1初始化,01110111b,16位,方式3,BCDmovdx,20bhoutdx,almoval,00h;寫初值1000BCDmovdx,209houtdx,almoval,10houtdx,almoval,81h;8255初始化,10000001b,c口低四位輸入,其余均為輸出movdx,203houtd
7、x,alwait2:movdx,201h;B口清零,PB0=0,無方波,LED暗moval,00h-9-outdx,almovdx,200h;A口清零,數(shù)碼管暗moval,00houtdx,alks1:callks;讀取按鍵cmpal,0fh;判斷有無鍵閉合(行有無低電平)jzks1;無鍵閉合movcx,0f0h;延時,去抖loop1:looploop1callkscmpal,0fh;再次判斷有無鍵閉合jzks1movbh,0efh;初始化列碼,11101111b,準備檢測第一列movbl,00h;初始化列值jzk1cmpa
8、l,0bh;第三行(4)?jzk4cmpal,07h;第四行(7)?jzk7next:rolbh,1;列碼左移一位incbl;列值加一cmpbh,0feh;判斷該鍵掃描是否結束jnzagainjmpks1k0:addbl,0;與列值合成鍵碼jmpwait1k1:addbl,1jmpwait