歡迎來到優發表網

購物車(0)

期刊大全 雜志訂閱 SCI期刊 期刊投稿 出版社 公文范文 精品范文

單片機原理與應用范文

時間:2023-02-28 15:54:52

序論:在您撰寫單片機原理與應用時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。

單片機原理與應用

第1篇

【關鍵詞】單片機;教學;改革

當今世界,單片機在工業過程控制、智能儀表、計算機集成控制、人工智能、通信設備的智能化方面應用非常廣泛,而且隨著電子和計算機技術的發展,以單片機和各種微處理器為核心必然是實現智能化技術的主流方向。同時,《單片機原理應用》是高職院校電子、電氣等相關專業最重要的核心課程之一,是一門實踐性、應用性很強的學科,該方向對學生進行畢業設計和就業都起著重要的作用。

《單片機原理與應用》傳統教學一般包括理論課和實踐課。理論課學生普通反應知識抽象、難學、難懂,學了后面又忘了前面,學生學得吃力,老師教得辛苦。實踐課主要采用驗證性實驗,學生只要連線正確、程序輸入無誤就能看到結果,這樣往往造成學生只關注實驗結果,而忽略了思考過程。學生無法從中提高分析問題、思考問題、解決問題能力,甚至到最后還是無法獨立設計一個簡單的單片機系統,實踐動手能力非常差。這樣的教學方法不能體現單片機實踐性和應用性強的特點,也與社會發展脫軌,因此,《單片機原理與運用》教學改革迫在眉睫。我們總結了以往教學過程中的一些經驗和教訓,提出以下幾點《單片機原理與運用》教學改革的思路和方法。

1.教學內容選取

以培養學生具備從事單片機系統設計崗位能力和相關職業群為目標,增強學生實踐動手能力和工程實際運用能力為導向,來選取教學內容。在本課程的開始的時候,介紹單片機的發展現狀,例舉日常生活中單片機控制的設備,把科研項目或往屆畢業設計中的一些應用板帶進課堂,通過圖片、實物展示使學生對單片機有一定的感性認識,激發他們的學習興趣和熱情。

選取以單片機C語言貫穿各章節,并且是項目化教學形式的教材。C語言可讀性、可維護性和可移植性都比匯編語言好,在實際單片機設計中,基本上都采用C語言。項目教學改變了傳統教材內容安排強調只是系統性為主的思路;把課程教學內容劃分為若干個項目形式來完成,項目又以任務的方式出現,突出體現高職生理論知識“必需、夠用”的原則。

多增加日常生活常見案例為項目,每個項目又包括幾個任務,通過每個任務的完成過程,使學生學習相應的理論知識。通過常見案例的剖析,引起學生的注意,激發他們的興趣,每個任務完成后,教師進行知識點得總結,這樣學生在實踐動手中不知不覺就掌握的理論知識。比如交通燈控制系統,這一項目可以分成單片機控制單燈亮滅、流水燈控制、定時器控制流水燈、帶時間顯示系統等,其中通過單片機控制單燈亮滅這一任務的設計,學生可以學習單片機結構、I/O口、單片機最小系統等基本知識。通過流水燈控制這一任務,學生可以學習單片機C語言的各種語句等。

2.教學方法使用

我們以項目為教學單元,以任務驅動進行教學。我們的教學是在一體化教室實施,只要在一體化教室中通過仿企業的工作環境進行項目化教學,教學過程才能實現真正的教、學、做融為一體,并充分調用學生學習的主動性和創造性。

每個任務包括任務目標要求、學生知識與能力準備、計劃、實施過程、評估。教師先布置任務,說明這個任務要到達的功能及要求。教師可根據教學內容,制作多媒體課件,將理論知識通過多媒體手段以聲音、圖像、文字等方面表現出來,使枯燥抽象的理論知識變得生動直觀,學生更容易理解。也可以通過Flas演示或Proteus仿真軟件展示任務的運行結果,使學生對任務要求更加清楚。學生分組后,每個小組進行任務設計的討論,并確定設計方案。學生任務實施過程中,教師對學生操作過程中存在的問題進行實時點評,實施后,教師對每組的實施結果進行驗收和評估,最后總結任務實現過程中碰到的普遍問題、知識運用的難點關鍵點。這樣的教學方法能提高學生分析問題、思考問題、解決問題能力,而且通過每個任務的制作,學生積極性提高、自主學習能力和動手能力增強。

另外,教師可以把多媒體課件、儀器設備電路圖、設備的使用方法、任務要求、本課程相關的學習資料等掛在網上,進行資源共享,供學生查閱學習,通過網絡來提高學生的學習興趣。

3.加強實踐環節

實踐環節是《單片機原理與運用》課程的重要環節,通過實踐環節,可以提高學生動手操作能力。我們把實踐環節分成基礎性實踐、開放性實踐、綜合設計實踐三個部分。

基礎性實踐主要是實現指令練習、基本程序結構編寫,或是一些驗證理論知識準確性的實驗,通過這一環節,學生所學的理論知識得以鞏固。開發性實踐要求學生具有扎實的理論基礎,具有分析問題解決問題的能力,培養學生對常見接口的硬件設計、軟件編程及仿真器下載調試的能力。在綜合設計實踐過程中,教師只提出實驗目的和要求,學生要自主確定設計方案,并設計硬件電路圖、制作電路PCB圖,并在自己做的PCB板上焊接元器件。硬件調試成功后,再把編寫好的程序利用仿真器下載到電路板上,進行調試。這樣,學生熟悉了單片機系統設計的整個過程,他們的實踐動手能力也得到很好的提高。

除了上面三個實踐環節外,我們還要鼓勵學生參加全國電子設計大賽和大學生創新科技項目,使學生在實踐過程中不斷的學習新知識,提高設計創新能力。

4.考核方式確定

傳統的教學模式中,課程考核是由期末閉卷考核占70%,平時表現占30%組成,這樣的考核方式只能一定程度上反應學生理論知識的掌握情況,很難體現學生的分析能力和實踐動手能力,也與單片機課程實踐性強的特點不相符合。

一個好的考核方法對于學習一門課程至關重要??己瞬粌H是對教師教學效果的檢驗和學生水平的測試,同時也是學生學習習慣和學習方法的導向。筆者提出的考核方式包括期末考核30%、項目考核50%、平時表現20%。其中平時表現包括出勤表現、作業完成情況。期末考核是對課程基礎知識進行閉卷測試。項目考核是每個項目成績的平均分,每完成一個項目,教師根據學生的工作態度、完成情況、回答問題情況進行評分。每個項目完成后,學生都能看到自己的成果,這樣也調動了學生的學習興趣和學習熱情。這樣的課程考核方式不僅包括基礎知識掌握程度考核,還包括學生的分析、學習、動手、應用等方面能力的考核,能比較客觀的反應學生的學習情況。

5.總結

教學改革實施后,課堂氣氛變的更加活躍,學生學習興趣更加濃厚。實踐表明,我們的教學改革方案不僅提高了學生學習積極性、應用能力和動手能力,而且對學生的獨立思考和分析問題、解決問題的能力的提高也起到了很好效果。當然,教學改革是一個無止境的過程,我們還要不斷更新教學觀念,不斷的探索和實踐,來提高教學質量和效果。

參考文獻

[1]莫莉,趙悅等.“單片機原理”課程教改探析[J].教育與教學研究,2010(1).

[2]張培仁,孫占輝等.基于C語言編程MCS-51單片機及應用[M].北京:清華大學出版社,2003.

[3]歐陽慧平,王茜等.系統化的“單片機應用技術”課程建設與改革[J].教育與職業,2011(2).

[4]牛分中,宋風娟.高校單片機課程實踐教學的改革與探討[J].教育與職業,2008(21).

第2篇

關鍵詞: 《單片機原理及應用》 課程改革 教學實踐

《單片機原理及應用》課程是一門面向應用的、具有很強的實踐性與綜合性的課程,在通信類專業整個課程體系中,單片機知識處于承上啟下的核心地位,一般通信系統和智能儀器儀表的實現都離不開單片機。隨著計算機相關技術的快速發展,以單片機為最小系統開發的產品層出不窮,為了適應新世紀對電子信息類人才的培養需要[1],《單片機原理及應用》課程教學需不斷更新。

本課程是一門綜合性、實踐性很強的課程,通常分為理論教學與實踐教學兩部分[2]。從理論教學來說,基本以教師課堂講授為主,由于該課程接口芯片多、內容抽象、編程難度大,對初學者來說入門較難,學生無法深入理解芯片的原理和指令與程序的運行。從實踐教學來說,實驗內容多為驗證性實驗,學生只需要觀察和分析實驗結果,沒有充分發揮自主學習能力,教學效果有限。

現依據多年來的教學實踐過程,摸索出一套基于“理論講授、實驗練習、課程設計、電子實習”四階段的教學新模式,現談談此模式下的改革措施。

一、改革課程內容

以知識為基礎,以能力為核心,構建“基于應用對象的單片機硬件設計及編程”課堂教學新方法,確保教學內容的合理性、實用性和先進性。打破傳統的循序漸進式的教學方法,以典型項目實例分解模塊,以各個模塊構建知識,前后連貫,層層遞進。最后,將前述內容以應用實例進行綜合,達到以“應用”為主線連接所學知識內容的目的,加深學生對教學內容的理解和運用。

對教材內容進行選擇與結構優化,體現新知識、新技術、新方法,力求“適用、通用、實用、易用”。在突破傳統教材框架的方面進行了一些嘗試與探索,考慮了教材內容編排的基礎性、系統性,引入了反映最新科技發展的知識。內容選材上,選用了STC89C52RC系列單片機作為介紹微處理器的重點,加深對單片機組成與工作原理的理解;在內容上淡化芯片內部組成,從編程所需角度介紹功能,強化其接口連線、應用及總線連接技術,為應用單片機硬件開發奠定基礎;從實用的角度著重介紹了串行A/D、TLC2543、SED1330系列大屏幕LCD、全雙工單片MODEM、高速并行USB接口芯片與單片機接口電路的設計和使用方法。

編寫“單片機應用案例”講義,將整個單片機工程開發的過程以案例形式進行講解,從硬件電路的設計到開發工具、環境的使用方法,再到具體的應用案例,同時運用匯編語言和C語言的編程方法,系統培養了學生的單片機產品開發工程應用能力。

二、注重實驗環節,培養創新能力

為了建立面向21世紀的通信專業教學新體系[3],必須重新認識課堂教學與實驗教學的關系。我們認為,課堂教學和實驗教學是相輔相成的,二者都是學生學習與掌握知識的重要手段,其先后順序也不是固定的。在課程設置上,我們不求按部就班,而求高效率地向學生傳輸知識,充分調動學生的積極性和主動性,變被動學習為主動學習。以課程內容中的案例為基礎,開發“單片機教學、實驗、設計系統板”,將理論知識的講述和硬件電路的現場調試相結合,使學生對單片機的整個開發有了直觀的認識,加強了對理論知識的理解。

實驗過程[4]從軟件和硬件兩方面入手,軟件實驗通過編寫程序,上機調試并運行,提高學生編程的能力;硬件實驗能夠實現學生設計硬件,編寫接口程序,完成控制任務的目的。以單片機實習項目的開發和調試代替理論考試,系統考查學生的應用能力和解決實際問題的能力。

實驗內容既要滿足基本教學實驗的要求,又要為課程設計和實習實訓所用,通過這3個環節從基礎到簡單再到復雜的實踐過程,從驗證性實驗向設計性實驗過渡,提高學生獨立思考解決問題的能力。

三、教學與科研相結合

要求教師能力雙向發展。《單片機原理及應用》是一門面向實際應用的課程,要突出學生的工程應用能力。因此,要求教師盡可能做到雙向發展,充實理論知識、發展教學能力;多動手實踐,提高工程應用能力。

鼓勵學生參與電子競賽。通過這個創新性平臺,使學生靈活運用所學知識,并了解設計開發項目的過程,為以后的學習和工作奠定良好基礎。

鼓勵學生參與科研[5]。在培養學生基本技能的基礎上,鼓勵學生參與老師的科研項目,在承擔力所能及的工作的基礎上,積極嘗試難度更大的工作,鍛煉學生的學習能力和解決問題的能力。

參考文獻:

[1]謝斌,沈慧芳,李民生.電子信息工程專業應用型人才培養的幾點思考[J].科技廣場,2011(7):254-256.

[2]艾德才.大學計算機硬件教學內容改革勢在必行[J].計算機教育,2005(3).

[3]樊楊祖.高職通信服務類專業定位及建設路徑探究[J].職業與教育,2009,5:120-121.

[4]鄒逢興.創新教學是提升教學質量的永恒動力[J].中國高等教育,2004(22):34-36.

第3篇

關鍵詞:單片機;Proteus仿真;C51語言;虛擬實驗室;創新培養

中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2015)30-0123-02

An Exploration on the Teaching of the SCM Course

YU Lei, LIU Huai-yu

(Huaibei Normal University, Huaibei 235000, China)

Abstract: For the existing problems in teaching of SCM(single chip microcomputer) course and the need for innovative personnel training, some ideas and plans in Theory Teaching and Experiment Teaching are given. To establish teaching system of SCM, it takes the interest as the guide and the design as the main line, with the combination of theory and experiment for the purpose, it also takes the training of innovative ability and practical ability as the target.The result shows that it improves the students' professional ability and innovation ability with the new teaching system.

Key words: SCM; Proteus simulation; C51 language; virtual lab; innovative training

《單片機原理與應用》是高等院校電子信息工程、通信工程、自動化、電氣控制等專業所開設的一門必修課。該課程綜合性、實踐性以及應用性都很強,不僅要求學生掌握單片機及其相關知識,還要求學生具有單片機應用系統設計的能力,對培養學生的實踐動手能力和創新能力具有重要的意義。然而,既讓學生掌握基礎知識,又讓學生盡快地掌握設計技巧,這無疑是對學生能力和耐心的一個挑戰,在實際的教學過程中,一些學生反映該課程比較抽象難懂,從而導致部分學生“遇難而止”,失去了學習單片機的激情和興趣。

針對這個問題,我們從單片機理論教學和單片機實驗教學兩個方面進行了一些探索,這對學生的學習興趣和實踐動手能力有了很大的提高。

1 單片機理論教學

理論教學是獲取專業知識的基礎和主要途徑,良好的教學氛圍不僅能使同學們輕松地掌握理論知識,還能提高同學們的學習興趣。

1.1 抓住學生的好奇心

好奇心往往是興趣培養的動力源泉,抓住學生的好奇心在提高學習興趣方面至關重要。如我在上第一節課時,沒有去過分地強調什么是單片機,學好單片機有什么好處等,而是告訴同學們今天給他們帶來一個非常有趣的玩具,然后直接拿了我們自己設計的一款循跡小車,并讓某位同學在地上隨意畫出的一條路徑,通過觀察一下小車的運行情況,讓同學們發揮想象力,猜想一下小車怎么知道行駛路線、怎么進行方向控制等,最后告訴他們“這都是由我們將要學習的單片機進行控制的”。這樣就一下子吸引了學生的眼光,也激發了學習和探索單片機的興趣。

1.2 “虛擬實驗室”式的課堂教學

《單片機原理與應用》不僅需要熟悉硬件電路的設計和結構,還要掌握軟件編程方法和技巧,一段程序對不對,到底在控制方面起不起作用,那要結合軟硬件一起來進行調試,為此,我們將“虛擬實驗室”搬進了課堂。“虛擬實驗室”由Proteus和Keil C51軟件組成,其中,Proteus提供了豐富的模擬和數字器件模型,可以完整地仿真51系列單片機及其相連的模擬和數字電路,充當了實驗室里開發板的角色;而Keil C51軟件是一個51系列單片機軟件開發平臺,采用C51語言進行編程,在調試程序和仿真等方面有很強的功能。采用Proteus和Keil C51軟件相結合,能將抽象、生澀、陌生的知識直觀化、形象化、具體化,更容易讓人接受。

1.3 “找茬”互動教學

通過Proteus畫出硬件電路圖,將Keil C51軟件編寫程序寫進去,演示一下正確的結果,如果僅僅如此,那么久而久之學生也會感到乏味,因此一定要在教學的過程中制造一點“麻煩”,讓同學們來“找茬”。如在講到單片機P0-P3口時,為了強調“P0口做I/O時必須外加上拉電阻”這個知識點,在Proteus畫P0控制LED電路圖時,故意不加上拉電阻,結果發現P0引腳變灰色,LED不亮,然后再試一試其他端口,LED卻可以點亮,讓學生找出哪地方出現了問題,怎么去修改,P0口和其他端口有什么區別等。這樣就會加深學生的印象,無形中牢牢掌握了該知識點,這要比“強調-強調-再強調”有效地多。同樣的方法也可以用在Keil C51軟件編程中。

2 單片機實驗教學

理論教學和實驗教學是緊密結合的,單片機實驗教學對于培養學生的動手能力和創新意識有著十分重要的作用。

2.1 驗證與設計相結合

驗證型實驗并不是簡簡單單地驗證一下結果正確與否,而是通過實驗來發現問題并尋求解決問題的方法,從而鞏固和提高所學的知識。然而,目前的單片機實驗大多數以驗證為主,實驗內容比較單一,實驗本身沒有太大的創造性,對學生的設計能力要求不高,學生只需在實驗箱上連接幾條線,編寫或修改一段簡單的實驗程序就可以完成,這樣學生只知道怎么做,根本不知道自己為什么要這么做,嚴重束縛了學生的想象力和創造力。因此,必須通過設計型實驗來彌補其中的不足。實驗課上由被動轉為主動, 不再是依葫蘆畫瓢。

如在講到“中斷”時,除了讓同學們驗證一下單片機5個中斷源的設置和工作原理外,可以讓他們設計一款簡單的頻率計或是數字鐘,這樣就可以將中斷、數碼管動態掃描、按鍵掃描等綜合應用到一起,為單片機系統的設計打下了良好的基礎。

2.2 命題和自命題相結合

在設計型實驗中,也要采用命題和自命題相結合的方式。先以命題形式出現,由老師出題,這樣題目涵蓋面比較廣,可以全面考查到各個知識點,如上面提到的數字鐘的設計。自命題型實驗是讓一組學生根據自己的興趣和愛好,自己出題目,一般只注重開發的過程,而不重視最終的結果,因為有可能部分學生出的題目過難而最終無法實現。對于無法完成的小組,要找出原因,是硬件本身的缺陷,還是軟件設計方面的不足,自己在命題時,忽略掉哪些因素等等。自命題型實驗關鍵就是激發學生的創新思維,培養學生的團隊意識,提高組織協調能力、發現問題和解決問題的能力。

從命題到自命題,從“讓我做什么”到“我要做什么”,讓學生體味一下兩者的不同之處,在經過實戰演習后,熟練掌握工程項目的開發流程,

3 結語

《單片機原理與應用》是一門軟硬件綜合、應用性比較強的課程,在整個的教學過程中,建立以興趣為引導,以單片機系統的設計為主線,以理論和實驗相結合為宗旨,以培養創新能力和實踐能力為目標的單片機課程教學體系,運用多媒體技術和“虛擬實驗室”軟件等多種手段,由整體到具體、由簡單到復雜、由模塊到系統,循序漸進,加強學生動手操作能力和單片機系統開發能力的培養。經過教學改革,我校學生在全國大學生電子設計大賽、全國信息技術應用水平大賽等各項比賽中所取得了良好的成績,對提高學生的專業知識水平和創新能力方面具有明顯的優勢。

參考文獻:

[1] 胡敬朋, 王聰. 單片機項目教學研究及實踐[J]. 電氣電子教學學報, 2009, 31(5): 82-84.

[2] 唐煒. 基于“項目驅動”的單片機類課程實踐教學改革[J]. 實驗室研究與探索, 2010,29(5) :130-132.

第4篇

關鍵詞:教學改革;實驗教學;實踐教學

【中國分類法】:G420

0引言

傳統的單片機教學采取先基礎后應用的模式,即先講授單片機的硬件結構,再講指令、編程、系統擴展和各種器件的應用,最后講一些實例,按照這種教學結構,往往使學員感覺枯燥無味,學習興趣不濃,有的學員甚者認為單片機用處不大,體會不到單片機在實際應用中的重要作用。怎樣才能激發學員對單片機課程的興趣和積極性呢?我認為單片機理論知識教學中應緊密聯系實際,使抽象知識形象化,同時在教學手段上也要進行改革,如在實踐教學中采用在實驗室上課的方式,通過課程設計和畢業設計的教學實施來提高學員對單片機的應用能力。

1 教學方法的改進

在課堂教學中,利用多媒體作為教學的輔助手段,與傳統的教學手段相結合。對于需了解的內容,采用多媒體教學可以提供更多的教學內容,對于需要理解和掌握的內容,則采用傳統教學和多媒體教學相結合的方式。因多媒體教學只能在形象上方便學員的認識與理解,不能代替課堂上理論和概念上的訓練過程,所以教學中采用兩種方法相結合的教學方式,通過發揮其各自的優勢,是提高教學質量的好方法。

在理論知識教學中緊密聯系實際,使抽象知識形象化。如可以這樣介紹單片機中的“堆?!保喝缭趥}庫里存放貨物時,最先存放進去的貨物總是最后才能取出,反之最后存進去的貨物總是最先取出,這種存取貨物的規則就是“先進后出,后進先出”,在單片機中把這種存放數據的操作為“堆?!?。為什么要這樣存放數據呢?當存放一批數據時,通過堆棧定義可知用戶只需知道第一個數據的地址單元即可,簡化了數據存放操作。那么堆棧位于單片中的哪個區域?在單片機中采取用戶根據需要自己確定堆棧區域,即通過設定堆棧指針sp的值來實現,如sp的值等于66H,即堆棧指針指向66H單元?在51單片機中,sp所指位置并非就是數據存放位置,而是數據存放的前一個位置,如指針指向66H單元,那么第一數據的位置是67H單元,而不是66H單元,為什么會這樣?教員可在講堆棧命令時再詳細的將其原因。介紹單片機理論知識時引入生活中的實例,可使學員把難想象、難理解的內容變得易于理解。

2 在實驗室現場教學

實驗課是強化鍛煉學員實際動手能力的重要手段,可鞏固對理論知識的理解,讓學員在實驗中體會到單片機應用的重要性。如在講解單片機的結構和應用時,可選擇在實驗室講課,通過單片機實物和各種實際單片機系統,加深學員對單片機的內部結構、外部結構及其應用的感性認識;講解繁多的指令時,可以利用多媒體講述指令及相關的編程技巧,讓學員熟悉指令的功能與基本用法;指令的執行情況和執行結果不好理解,到實驗室可以熟悉編程軟件,另一方面可以初步了解指令的運行方式且能夠對自己編寫的程序進行初步驗證;可以激發學員的興趣、增強感性認識、開闊學員的想象力,有利于對知識的理解。在實驗教學中,教員的指導作用主要體現在工作方法和思維方法的引導上,通過實驗使學員對單片機有較為深入的認識,讓學員充分體會到單片機應用領域是十分廣闊的,拓寬學員視野。

實驗室現場教學法可以彌補多媒體教學的不足,兩種方法相互結合,發揮各自的優勢,能最大的提高教學效果。

3 增大實踐教學環節

學員在教員的指導下進行課程設計,通過學員獨立完成課題達到對學員的綜合性訓練。在設計中既涉及到許多設計原理與方法,還涉及到許多實際知識與技能,在設計中可以使學員對所學的內容的掌握逐層遞進、逐漸深入,最終達到融會貫通,有利于培養學員運用課程中所學的理論知識獨立分析、解決實際問題的能力。

在課程設計中,教員的指導作用也是主要體現在工作方法和思維方法的引導上,應以學員為主體,充分發揮其自主性和創造性,達到培養學員創新能力的目的。

4 結語

在教學中把一些典型的例子引入課堂,使學員更容易理解所學的知識,增強學員的學習興趣,促進學員學習的自覺性和主動性,使學員能夠感受到主體地位,就能更好的發揮學員的主觀能動性并激發他們強烈的求知欲;此外加強實踐環節的教學,比如實驗、課程設計和畢業設計,這種將靈活的授課方式融于教學之中,有利于培養學員發現問題、分析問題和解決問題的能力和獨立思考能力。

參考文獻:

第5篇

[關鍵詞]單片機原理及應用 課程改革 教學方法 校―企合作 項目

一、引言

《單片機原理及應用》課程是一門實用性強、應用面廣,將計算機技術與電子技術緊密結合、硬件與軟件相聯系的計算機應用專業核心課程,是一門理論與實踐并重的計算機技術應用課程?!秵纹瑱C原理及應用》課程以C語言、數電、模電課程為基礎,融合了計算機控制技術、軟件編程等知識與技能,在培養學生的邏輯思維、編程思想、軟硬件結合、模塊化設計思想以及任務分析、方案確定、任務分解、綜合技術應用能力方面起著重要的作用。

為適應高職教育培養“高素質技能型專門人才”的宗旨,本課程的體系、內容、方法等均面向實踐、面向應用、面向就業。課程定位在“以培養生產第一線的高技能人才為主,盡可能多的培養出具有一定開發能力的設計人才”上,強調突出實踐、突出實用和能力培養。

二、課程改革思路

《單片機原理及應用》課程改革的基本思路是:“以職業和就業為導向,構建新的工程實踐化課程體系,確保教學內容的合理性、實用性和先進性?!痹撜n程比傳統課程的主要特點是:教材結構體系嚴謹,教學內容全面,工程應用實例豐富。

通過到企業的調研,與企業工程師一起討論研究,收集和分析計算機應用職業崗位(群)的工作任務以及完成這些工作需要的知識與技能,進行了單片機課程開發,開發過程如圖1所示。構建新的工程實踐化課程體系,確保教學內容的合理性、實用性和先進性。課程開發改革后比傳統課程的主要特點是:增加技能項目減少理論知識。技能項目內容是“校―企”合作共同完成確定的,教學體系按照“理實一體化”的教學方式安排,在課程內容安排上,采用“項目―知識點”的形式,可采用邊解講、邊思考、邊訓練的教學模式,便于激發學生的學習興趣,使課程做到“教、做、學、思”的統一協調,刪除了部分理論知識。

圖1:《單片機原理及應用》課程開發過程

三、教材的建設

在課程建設過程中,我們與企業工程師們一起編寫了《單片機原理及應用(基于C語言)》項目教程,2014年2月清華大學出版社出版。本書重點放在“基礎+項目(任務)實訓+項目開發過程”上(基礎指的是課程的基礎知識和重點知識,以及在項目(任務)中會應用到的知識,基礎為項目(任務)服務,項目(任務)是基礎的綜合應用,項目(任務)開發過程指的是從接受到項目,如何去組織、如何去讀項目要求、如何去分工、如何去開發、如何去管理、如何去考核、如何去配合等等,基于工作過程的全新的教學模式)。根據高職院校單片機課程標準和教學大綱要求。教學內容分為7模塊,著重講授了解單片微型計算機、認識80C51單片機的結構、認識C51程序設計、認識單片機定時器/計數器、認識單片機中斷系統、認識80C51單片機串行通信技術和認識80C51單片機接口技術等知識。

課程內容是“校―企”合作共同完成的,教學中的45個項目提供了PROTEUS ISIS軟件仿真,有助于學生動手能力的培養和鍛煉。課程體系按照“理論實踐一體化”的教學方式編寫,可將班級分組教學,采用邊解講、邊思考、邊小組討論、角色扮演、邊訓練、邊考核的基于工作過程的全新教學模式,便于激發學生的學習興趣和素質提高,使教材做到“教、做、學、思”的統一協調。單片機原理及應用課程總體架構如圖2所以。

四、教學方法改革

(1)靈活運用啟發式教學方法,引導學生自覺學習的主動性和積極性,保證教學過程良好有序地進行。針對單片機原理及應用課程的授課對象具有量大面廣的特點,首先給學生介紹本課程與相關專業的關系和與學生專業知識整體性的關系,強調理論學習的重要性和實際動手操作的必要性。鼓勵學生自主學習,培養主動學習的積極性,保證了整個教學過程在自覺學習中進行。

(2)樹立以學生為中心的教育思想,在課堂教學中,以教師為主導,學生為主體,互動和諧。教師主導,體現為“引”和“導”,教師變“主宰”為“循循善誘”。同時,靈活應用多種教學方法,在講授課程中,采用回憶提問、理解提問和應用提問等多種提問方式,引導、激發學生的學習興趣、動機和思路,進而深化理解、正確應用,變教師中心角色為引導性,完全改變了原來“填鴨式”的教學方法。

(3)推廣邊學邊做的教學模式,單片機原理及應用技術是一門實戰性很強的學科,結合理論和實踐,一邊學一邊做是最好和最快捷的學習方法。將理論學習、實踐應用、產品制作有機地結合為一體,以理論教學為基礎,以實踐訓練為重點,以掌握知識和技能為教學。課程的理論教學與實踐教學融合在一起,在實訓教室借助于單片機自身軟、硬件環境來仿真其工作過程,教學形式獨特,貼近技術應用實際,激發學生學習積極性,讓學生真正感覺到在“學中做、做中學、邊學邊做、邊做邊學”。

五、因材施教做法及效果

結合高職院校學生的特點,本著“能力為主、理論夠用”的原則,重新組織教學內容,因材施教取得了良好的教學效果。

(1)根據崗位要求調整教學內容

及時跟蹤產業發展趨勢和行業動態,制定科學的專業發展規劃和實施方案;分析職業崗位(群)任職要求和變化,根據自己多年從事企業工作的經驗,結合IT行業企業的特點,刪減部分理論內容,減少相關模塊的課時,增加技能訓練的授課學時。

(2)根據學生特點調整教學方法

針對高職學生“怕理論,愛動手”的特點,在課堂上注重學生動手能力的培訓,增加學生課堂實訓的時間,采用多種教學手段來調動學生的學習興趣,如小組競賽問答、上黑板做題、設置錯誤答案讓學生解決、角色扮演、實訓競賽、學生作品演示講解等,這些做法的使用,極大的提高了學生的學習積極性,課堂氣氛空前活躍。針對部分學生動手能力差的特點,在利用課余時間組織學生到網上查資料,同時邀請幾名成績好的同學和老師一起輔導,這種做法能達到兩個效果:一是動手能力差學生增加了被輔導的機會,二是成績好學生鞏固了所學知識,一舉兩得。

(3)針對不同群體,提出不同要求

對于基礎好的同學,在布置作業和實訓時,對他們提出更高的要求,選擇難度較大的實訓供他們練習;對基礎較差的同學,注重基本知識和基本技能的培訓;對于技能較差的女同學,采用課后輔導或網上輔導的方式,樹立她們的自信心。這種分層次的教學要求,滿足了不同層次學生的學習要求,達到了很好的教學效果。

(4)根據課程特點,鍛煉創新能力

“單片機原理及應用”課程,由于是一門實踐性很強的課程,需要借鑒的資源豐富,完全是自主開發。在授課過程中,特別注重學生創新能力和創新意識的培養。每當分析完一個項目,都會讓學生進行項目分析,提出改進和完善方案,并在此基礎上,創新設計。經過多次訓練,學生的創新意識和創新能力都有所提高,很受學生歡迎。

(5)改革作業形式,提高學習興趣

在課程講授過程中注重改革傳統的作業模式,以生活當中的單片機應用實例為題材,提高學生的學習興趣。如當學完“定時器、中斷”等教學單元時,就要求學生尋找生活當中的定時器、中斷實例,完成定時器、中斷實例分析作業,并分析設計的合理性。同時還舉行定時器、中斷設計比賽,大大提高了學生的學習積極性。鼓勵并輔導學生利用自己所學知識參加科技創新比賽。如計應122諸杰成、趙扎玉同學在四川省軟件大賽獲得一、二等獎。

六、小結

通過全方位、多角度組織教學,取得了很好的教學效果,表現為:

①學習積極性高:課堂上下學生的學習積極性空前高漲,改變了以往被動學習的局面,每學期學生評價為優秀;

②學習效果好:學生的專業能力、專業知識的應用能力、創新能力都明顯提高,動手能力明顯加強。如計應122諸杰成、趙扎玉同學在四川省軟件大賽獲得一、二等獎。

③就業評價優:近幾年計算機應用專業畢業生就業率都達到98%,用人單位對畢業生的滿意度逐年提升,學生還沒有畢業,就有許多IT企業前來“定購”學生,多數畢業生已經成為企業的技術骨干,部分學生已經擔任企業領導職位。

基金項目:四川省教育廳2013年度研究課題(項目編號:13SB0476)

[參考文獻]

[1]楊居義編著.單片機原理及應用(基于C語言)項目教程[M]. 北京:清華大學出版社,2014.2

[2]許景輝、張成鳳、李宗利.《單片機原理及應用課程改革探索》[J].中國電力教育.2013年第35期.

第6篇

一、考核知識點:

1、計算機的數據表示和數據運算

2、計算機的各種編碼

3、計算機的組成及工作過程

二、考核要求:

1、識記計算機的各種編碼

2、領會計算機的組成及工作過程

3、簡明應用計算機的數據表示和數據運算

第二章51單片機的硬件結構和原理

一、考核知識點:

1、單片機的發展史及各方面的應用

2、51單片機的分類和內部結構

3、單片機的引腳和功能

4、單片機工作的時序

二、考核要求:

1、識記單片機的發展史及各方面的應用

2、識記單片機的引腳和功能

3、領會單片機工作的時序

4、簡明應用51單片機的分類和內部結構

第三章51單片機指令系統

一、考核知識點:

1、單片機的尋址方式

2、單片機的指令系統

3、助記符指令和二進制代碼指令的異同

二、考核要求:

1、領會助記符指令和二進制代碼指令的異同

2、綜合應用單片機的尋址方式

3、綜合應用單片機的指令系統

第四章匯編語言程序設計

一、考核知識點:

1、偽指令

2、匯編語言設計技巧

3、匯編語言到機器語言的編譯過程

二、考核要求:

1、領會偽指令

2、簡明應用匯編語言設計技巧

3、綜合應用匯編語言到機器語言的編譯過程

第五章51單片機的中斷系統

一、考核知識點:

1、中斷基本概念

2、中斷系統的程序編制

3、中斷系統的初步應用

二、考核要求:

1、領會中斷基本概念

2、簡明應用中斷系統解決工程問題

3、綜合簡明應用中斷系統的程序編制

第六章51單片機的內部定時器/計數器及串行接口

一、考核知識點:

1、單片機內部定時器/計數器的結構及工作原理

2、定時器/計數器的程序編制

3、定時器/計數器的初步應用

4、串行口的基本概念

5、串行口的程序編制

6、串行口的初步應用

二、考核要求:

1、識記串行口的基本概念

2、領會單片機內部定時器/計數器的結構及工作原理

3、簡明應用定時器/計數器解決工程問題

4、簡明應用串行口的程序編制

5、簡明應用串行口解決工程問題

6、綜合應用定時器/計數器的程序編制

第七章單片機的系統擴展與接口技術

一、考核知識點:

1、單片機外部總線的擴展

2、外部存儲器的擴展

3、I/O接口的擴展

4、管理功能部件的擴展

5、A/D和D/A接口功能的擴展

二、考核要求:

1、識記單片機外部總線的擴展

2、識記管理功能部件的擴展

3、簡明應用A/D和D/A接口功能的擴展

4、綜合應用外部存儲器的擴展

5、綜合應用I/O接口的擴展

第八章單片機應用系統設計

一、考核知識點:

1、單片機應用系統的開發過程

2、單片機開發工具的分類和使用

3、單片機應用系統的軟件和硬件調試過程

二、考核要求:

1、識記單片機應用系統的軟件和硬件調試過程

2、領會單片機應用系統的開發過程

3、領會單片機開發工具的分類和使用

第九章單片機系統的抗干擾技術

一、考核知識點:

1、單片機干擾源與分類

2、干擾對單片機系統的影響

3、硬件抗干擾技術

4、軟件抗干擾技術

5、數字濾波

二、考核要求:

1、識記單片機干擾源與分類

2、識記干擾對單片機系統的影響

3、識記數字濾波

4、簡明應用硬件抗干擾技術

5、簡明應用軟件抗干擾技術

第十章其它單片機簡介

一、考核知識點:

1、AT89C系列單片機的特點與性能

2、其它8位單片機的特點與性能

3、16位、32位單片機的特點與性能

二、考核要求:

1、識記其它8位單片機的特點與性能

2、識記16位、32位單片機的特點與性能

3、領會AT89C系列單片機的特點與性能

《單片機原理及應用技術》考試大綱

《單片機原理及應用技術》課程是一門面向應用的專業技術課。單片機原理與應用介紹了單片機的基本知識和單片機技術的應用,其內容與工程實際緊密聯系,實用性很強,是一門在理論指導下,偏重于實際應用的課程。本課程具有實用性強、理論和實踐結合、軟硬件結合等特點。本課程圍繞使用較為廣泛的MCS-51系列單片機進行學習。本課程已成為理、工科電子類專業的一門基礎課程,這是從電子系統設計角度考慮的,它體現了電子系統設計的方法和硬件結構的變化。通過該課程的學習,要求學生掌握80C51單片機的工作原理、編程技術,掌握單片機應用系統的擴展方法和實際應用。因此,以單片機為內核,分析和設計一個簡單的計算機應用系統是我們學習本課程要達到的目的。

第一部分考試大綱

1單片機概述

本章為單片機的基本概念。

1.掌握有關單片機的基本概念、單片機的特點、單片機的應用。

2.理解單片機的總體組成。

3.了解單片微型計算機的產生、發展歷史、主要品種及系列。

2單片機結構和原理

本章以80C51單片機為例介紹了主要硬件結構和主要功能,著重掌握系統所提供的資源特性及其功能特性。

1.掌握80C51的內部結構。

2.掌握80C51單片機的存儲器組成。

3.掌握單片機并行輸入/輸出端口結構及功能。

4.了解單片機的時序概念和復位工作方式。

5.掌握單片機引腳功能

3指令系統

1.掌握指令與偽指令的正確格式。

2.掌握七種尋址方式的使用及尋址方式的含義。

3.掌握

五類指令的功能和使用,特別是傳送指令。

4.理解書中所列例題與習題。

4匯編語言程序設計舉例

本章為MCS-51的一些常用偽指令,介紹順序結構程序設計、分支結構程序設計、循環結構程序設計和子程序的設計。

1.程序設計的基本步驟、各種基本的結構化程序設計方法;讀懂較復雜的常用程序。

2.掌握數據傳送指令的編寫。

3.理解算術運算程序設計。

4.理解數碼轉換程序設計。

5.理解查表程序設計。

6.理解子程序設計和參數傳遞。

7.理解邏輯運算程序設計

5中斷系統

1.掌握有關中斷、中斷源、中斷優先級等概念。

2.掌握中斷響應過程。

3.掌握中斷優先級排列。

4.掌握中斷允許寄存器IE、中斷優先級寄存器IP各位的含義及設置。

5.掌握外部中斷的兩種觸發方式:電平觸發、邊沿觸發。

6定時/計數器

1.掌握定時器/計數器的四種工作方式及有何不同。

2.掌握TMOD和TCON中各位的含義、作用。

4.掌握不同工作方式計數初值與定時時間的關系,即能根據定時時間算出計數初值,完成定時器的初始化編程和簡單應用編程。

7串行通信

1.理解有關通信、協議的概念。

2.理解串行口的四種工作方式。

3.掌握SBUF的含義及作用。

4.了解串行口的工作原理。

5.了解SCON中每一位的含義及SMOD位的作用。

6.掌握串行通信總線RS-232C標準、RS-232C電平轉換。

7.了解RS-232C與MCS-51的接口。

8系統擴展技術

1.掌握總線、驅動、鎖存和譯碼、地址重疊的概念。

2.掌握程序存儲器的擴展:EPROM程序存儲器及其擴展方法。

3.掌握數據存儲器的擴展:靜態存儲器SRAM及其擴展方法。

4.掌握簡單I/O口的擴展。

5.掌握8255A可編程并行接口:結構、控制字、工作方式、與8255A的接口方法。

9A/D和D/A轉換器接口技術

1.掌握DAC0832與單片機的接口方法與編程。

2.掌握ADC0809與單片機的接口方法與編程。

10鍵盤/顯示接口技術

1.掌握LED顯示器結構、工作原理和顯示方式。

2.掌握鍵盤接口原理。

3.理解LED顯示器與80C51單片機接口。

4.理解鍵輸入程序設計方法。

5.了解行列式鍵盤與80C51單片機接口。

11、功率接口技術

1.掌握簡單開關量接口、光電耦合接口和繼電器接口。

2.晶閘管與故態繼電器的應用接口。

12、單片機系統設計技術

掌握單片機系統的設計、開發、調試的原則、步驟及方法。

13、實用舉例

了解一兩個典型的單片機開發應用系統的設計思想和實現方法。

14、新型單片機介紹

了解MCS-51常見8位單片機。

第二部分考試考核改革方案

一、考試考核要求

《單片機技術及應用》選擇具有代表性的、使用較為廣泛的MCS-51系列單片機進行學習(具體以80C51為例),介紹了80C51單片機的硬件組成、軟件編程及一般應用系統組成。通過本課程的學習,要求掌握80C51單片機的系統結構、指令系統、程序設計方法、系統擴展方法、單片機常用接口等應用技術。本課程的教學過程由面授輔導、自學、實驗及作業四個環節組成,因此本課程考試考核要求為:

1.作業、實驗成績與期末考試成績共同評定為課程總成績。

2.作業、實驗占課程總分的60,期末理論考試占總分的40。

為使學生不把注意力僅僅放在期末考試上,培養學生系統學習的能力,加強學生各方面能力的培養,平時、實驗課、作業、考試都納入本課程的成績評定。平時的成績包括出勤、課堂提問和隨堂測試。期末考試可以選擇筆試、口試和進行實際實驗、設計等多種形式。

二、平時成績考核要求及說明

1.每章作業按要求完成后交教師批改,完成作業80為12分(及格);所有作業均完成,且質量較好者,20分(滿分)。中間情況酌情給分。

2.每次實驗均能按照教師安排進行,實驗態度好,至少完成5個實驗且實驗報告完整,為18分(及格);能基本獨立完成6個或以上實驗,實驗報告完整、無誤,實驗質量高,30分(滿分)。中間情況酌情給分。如果實驗有創新的特點,酌情加分。

3.作業與實驗的平均分為平時成績,滿分50分。

4.課程設計單獨計算成績,考評方法見其大綱。

三、理論考試說明

1.單片機技術及應用理論考試,采用閉卷筆試形式,考試時間120分鐘。

2.期末考試試題根據教學大綱,其范圍和難度按照本方案中制訂的考試考核內容和要求確定。考試命題覆蓋考試大綱要求范圍。

3.期末考試試題類型有以下幾種:

①填空題;

②選擇題;

③判斷題;

④簡答題

⑤綜合應用題。

四、考試考核要求層次

按照教學大綱的要求,理論考試要求分為掌握、理解和了解三個層次。

掌握:

對于本課程的重點內容要求學生達到掌握的程度。即能夠全面、深入理解和熟練掌握所學內容,并能夠用其分析、初步設計和解答與應用相關的問題,能夠舉一反三。要求學生掌握的內容也就是考試的主要內容,在考試中所占比例約70。

理解:

對于本課程的一般內容要求學生能夠理解。即要求學生能夠較好地理解所學內容,并且對所涉及的內容能夠進行簡單分析和判斷。要求學生理解的內容也是考試的內容,在考試中所占比例約25。

了解:

對于本課程的次要內容要求學生能夠了解。要求學生了解的內容,一般是指在眼下不必進一步深入和擴展,有些也許需要學生自己今后在工作中進行深入研究。對要求了解的內容,在考試中占較小比例,不超過5。

實驗五:按鍵電路、顯示電路實驗

一、實驗目的:

1.掌握獨立式按鍵電路與矩陣式按鍵電路的設計方法。

2.掌握數碼管顯示電路的工作原理

3.掌握源程序編輯軟件UltraEdit,編譯軟件KeilC51、仿真軟件Proteus的使用方法

4.掌握硬件仿真器ME-52A的使用方法

二、實驗器材:

1.單片機實驗板

2.單片機硬件仿真器ME-51A

3.計算機

4.電源

三、實驗要求:

1.電路如圖5所示,用單片機的P3口所接的四個獨立式按鍵控制p1口流水燈花樣的方法;具體表現為:p3.0、P3.1、P3.2、P3.3四個小按鍵分別實現了四個控制:

(1)跑燈:即P1.0---1.7亮點流動:

(2)流水燈:即P1.0-1.7依次點

亮(3)交叉閃爍:即P0.0,P0.2,P0.4,P0.6和P0.1,P0.3,P0.5,P0.7輪流點亮

(4)停止;在任何狀態下按此鍵程序停止運行.

2.電路如圖6所示,用P2口所接的4×4矩陣式鍵盤作為輸入,在P1口所接的數碼管上顯示出每個按鍵的0~F序號,鍵盤的布局如下表所示:

F

E

D

C

B

A

9

8

7

6

5

4

3

2

1

四、實驗原理:

1.獨立式按鍵電路顯示如圖5所示,從圖中可看出,判斷有無鍵按下,只要檢測P3.0~P3.3相應端口的高低電平即可,若檢測有某一端口為低電平,表明該端口有按鍵按下,經延時消抖后轉去執行相應的功能子程序。若為高電平,表明無鍵按1.獨立式按鍵電路如圖5所示,下,繼續檢測。

示例程序如下:

ORG000H

LJMPSTAR1

ORG0030H

STAR1:MOVP3,#0FFH;置P3口為輸入態

JNBP3.0,FUN0;判別P3.0是否有鍵按下,是,則轉FUN0

JNBP3.1,FUN1;判別P3.1是否有鍵按下,是,則轉FUN1

JNBP3.2,FUN2;判別P3.2是否有鍵按下,是,則轉FUN2

JNBP3.3,FUN3;判別P3.3是否有鍵按下,是,則轉FUN3

JNBF0,STAR1;曾經有鍵按下F0置1

RET

圖5

FUN0:LCALLDL10MS;消岸抖動

JBP3.0,STAR1

WAITL0:JNBP3.0,WAITL0;等待鍵釋放

SETBF0

FUN01:LCALLFUN00

LCALLSTAR1

LJMPFUN01

FUN1:LCALLDL10MS;消岸抖動

JBP3.1,STAR1

WAITL1:JNBP3.1,WAITL1;等待鍵釋放

SETBF0

FUN10:LCALLFUN11

LCALLSTAR1

LJMPFUN10

FUN2:LCALLDL10MS;消岸抖動

JBP3.2,STAR1

WAITL2:JNBP3.2,WAITL2;等待鍵釋放

SETBF0

FUN20:LCALLFUN22

LCALLSTAR1

LJMPFUN20

FUN3:LCALLDL10MS;消岸抖動

JBP3.3,STAR1

WAITL3:JNBP3.3,WAITL3;等待鍵釋放

CLRF0

MOVP1,#0FFH;關顯示

LJMPSTAR1

FUN00:MOVA,#0FEH;跑燈子程序

FUN000:MOVP1,A

LCALLDL05S

JNBACC.7,OUT

RLA

AJMPFUN000

OUT:RET

FUN11:MOVA,#0FEH;流水燈子程序

FUN111:MOVP1,A

LCALLDL05S

JZOUT

RLA

ANLA,P1

AJMPFUN111

FUN22:MOVA,#0AAH;交叉點亮子程序

MOVP1,A

LCALLDL30S

CPLA

MOVP1,A

LCALLDL30S

RET

;____________;

;延時程序;

;____________;

DL512:MOVR2,#0FFH

LOOP1:DJNZR2,LOOP1

RET

DL10MS:MOVR3,#14H

LOOP2:LCALLDL512

DJNZR3,LOOP2

RET

DL05S:MOVR4,#0AH

LOOP3:LCALLDL10MS

DJNZR4,LOOP3

RET

DL30S:MOVR5,#03H

LOOP4:LCALLDL05S

DJNZR5,LOOP4

RET

END

2.矩陣式按鍵電路顯示如圖6所示。采用掃描方式進行按鍵的識別檢測,并將對應按鍵的鍵號用查表指令將對應的代碼顯示在數碼管上。

圖6

參考程序如下:

ORG0000H

LJMPSTART

ORG0030H

START:MOVSP,#60H;設置堆棧指針

SCAN:MOVR3,#0F7H;置行掃描初值

MOVR1,#00H;到TABLE表中取碼的指針

SCAN1:MOVA,R3

MOVP2,A;掃描輸出

MOVA,P2;重讀P2口狀態

MOVR4,A;暫存于R4呂中

SETBC;C=1

MOVR5,#03H;掃描4列初值

L1:RLCA;A中內容循環左移

JNCKEYIN;C=0,有鍵按下,轉消抖

INCR1;取碼指針加1

DJNZR5,L1;無鍵按下,繼續檢測

MOVA,R3;掃描下一行

SETBC

RRCA

MOVR3,A

JCSCAN1;4行是否掃描完,未完,繼續

LJMPSCAN

KEYIN:MOVR7,#10;削除抖動

D2:MOVR6,#248

DJNZR6,$

DJNZR7,D2

D3:MOVA,P2;按鍵放開否?

XRLA,R4

JZD3

MOVA,R1

MOVDPTR,#TABLE;到TABLE中取碼

MOVCA,@A DPTR

MOVP1,A

LJMPSCAN

TABLE:DB0C0H,0F9H,0A4H,0B0H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH

END

DB80H,90H,88H,83H

DB0C6H,0A1H,86H,8EH

END

五、實驗步驟:

1.運行UltraEdit-32源程序編輯軟件,輸入、編輯匯編語言源程序。

2.運行KeiluVision2源程序編譯軟件,對源程序進行編譯,得到目標代碼文件。

3.運行Proteus模擬仿真軟件,打開已繪制好的仿真電路原理圖,進行模擬仿真。

4.把硬件仿真器ME-52A與單片實驗板連接好,再用硬件仿真器進行仿真驗證。

六、實驗分析與總結

1.用仿真系統調試簡單程序結構、分支程序結構、循環程序結構、子程序結構和中斷結構的關鍵在于,如何將對程序的分析理解和開發系統提供的基本功能有機地結合起來,其前提條件是必須對源程序的作用、結構特點、運行過程與結果有較全面的認識,并能根據程序運行過程中出現的現象和結果分析并判斷產生各種故障現象的原因,再運用排除法逐一檢驗各種判斷是否準確。

2.掌握程序結構特點的基礎上,合理選擇觀測點,通過觀察在觀測點處參數及路徑的變化檢驗程序運行的結果。

3.高調試程序的效率,應對單片機開發系統所提供的幾種程序運行調試方式有

足夠的了解并能熟練地運用。例如,在調試過程中,若要觀察最終結果,則可選擇全速運行調試;若要觀察相關指令的運行結果或運行路徑的變化過程,則可選擇單步運行;若要檢查子程序的運行過程,則可選擇跟蹤運行調試;若要檢查循環程序或中斷服務程序,則可選擇斷點運行調試;若要定點檢查程序運行到某處的結果時,則可選擇快速運行到光標處調試。但實際中究竟選用哪種方法更適宜或哪幾種方法結合使用更快捷,將隨著分析能力與操作的熟練程度逐步提高。4.程序運行結果是否正確時,應運用單片機開發系統所提供的交互界面,將程序運行過程中程序計數器PC(地址)的變化、各單元(內部RAM和外部RAM)內容的變化、特殊功能寄存器內容的變化、堆棧指針SP內容的變化與程序的理論分析結果相對照。

5.程序和調試程序時,需要多次反復的過程,并非一次就能排除全部故障,特別是單片機應用系統的硬件電路和匯編程序相結合的綜合調試就更加復雜,因此,必須通過反復調試,不斷修改硬件和軟件,直到最終符合設計要求為止。如果在調試中能夠根據實驗現象預先對產生故障的原因加以判斷和分析,并制定出相應的調試方法和步驟,可縮小排除故障的范圍,提高調試效率。

七、思考與練習

填空題

1、設X=5AH,Y=36H,則X與Y“或”運算為__7EH_______,X與Y的“異或”運算為___6CH_____。

2、若機器的字長為8位,X=17,Y=35,則X+Y=__110100_____,X-Y=_11101110______(要求結果寫出二進制形式)。

3、單片機的復位操作是____高電平______(高電平/低電平),單片機復位后,堆棧指針SP的值是___07h_____。

4、單片機中,常用作地址鎖存器的芯片是__74HC373____________,常用作地址譯碼器芯片是_____74HC138____________。

5、若選擇內部程序存儲器,應該設置為_____高_______(高電平/低電平),那么,PSEN信號的處理方式為___不用__________________。

6、單片機程序的入口地址是____0000H__________,外部中斷1的入口地址是______0013H_________。

7、若采用6MHz的晶體振蕩器,則MCS-51單片機的振蕩周期為__0.5us_______,機器周期為_____2us__________。

8、擴展芯片的選擇方法有兩種,它們分別是___線選法_______________和_____譯碼法__________。

9、單片機的內部RAM區中,可以位尋址的地址范圍是____20H~2FH______________,特殊功能寄存器中,可位尋址的地址是___是能被8整除的地址_________________。

10、子程序返回指令是___ret______,中斷子程序返回指令是__reti。

11、8051單片機的存儲器的最大特點是內部RAM與外部RAM分開編址。

12、8051最多可以有32個并行輸入輸出口,最少也可以有8個并行口。

13、函數是C語言的基本單位。

14、串行口方式2接收到的第9位數據送SCON寄存器的RB8位中保存。

15、MCS-51內部提供3個可編程的16位定時/計數器,定時器有4種工作方式。

16、一個函數由兩部分組成,即說明部分和語句部分。

17、串行口方式3發送的第9位數據要事先寫入SCON寄存器的TB8位。

18、利用8155H可以擴展3個并行口,256個RAM單元。

19、C語言中輸入和輸出操作是由庫函數scanf和printf等函數來完成。

二、選擇題

1、C語言中最簡單的數據類型包括(B)。

A、整型、實型、邏輯型B、整型、實型、字符型

C、整型、字符型、邏輯型D、整型、實型、邏輯型、字符型

2、當MCS-51單片機接有外部存儲器,P2口可作為(C)。

A、數據輸入口B、數據的輸出口

C、準雙向輸入/輸出口D、輸出高8位地址

3、下列描述中正確的是(D)。

A、程序就是軟件B、軟件開發不受計算機系統的限制

C、軟件既是邏輯實體,又是物理實體D、軟件是程序、數據與相關文檔的集合

4、下列計算機語言中,CPU能直接識別的是(D)。

A、自然語言B、高級語言C、匯編語言D、機器語言

5、MCS-5l單片機的堆棧區是設置在(C)中。

A、片內ROM區B、片外ROM區C、片內RAM區D、片外RAM區

6、以下敘述中正確的是(C)。

A、用C語言實現的算法必須要有輸入和輸出操作

B、用C語言實現的算法可以沒有輸出但必須要有輸入

C、用C程序實現的算法可以沒有輸入但必須要有輸出

D、用C程序實現的算法可以既沒有輸入也沒有輸出

7、定時器/計數器工作方式1是(D)。

A、8位計數器結構B、2個8位計數器結構

C、13位計數結構D、16位計數結構

8、C語言提供的合法的數據類型關鍵字是(B)。

A、DoubleB、shortC、integerD、Char

9、片內RAM的20H~2FH為位尋址區,所包含的位地址是(B)。

A、00H~20HB、00H~7FHC、20H~2FHD、00H~FFH

10、以下能正確定義一維數組的選項是(B)。

A、inta[5]={0,1,2,3,4,5};B、chara[]={0,1,2,3,4,5};

C、chara={’A’,’B’,’C’};D、inta[5]="0123";

11、數據的存儲結構是指(D)。

A、存儲在外存中的數據B、數據所占的存儲空間量

C、數據在計算機中的順序存儲方式D、數據的邏輯結構在計算機中的表示

12、下列關于棧的描述中錯誤的是(C)。

A、棧是先進后出的先性表B、棧只能順序存儲

C、棧具有記憶作用D、對棧的插入和刪除操作中,不需要改變棧底指針

13、在寄存器間接尋址方式中,間址寄存器中存放的數據是(B)。

A、參與操作的數據B、操作數的地址值

C、程序的轉換地址D、指令的操作碼

14、MCS-51單片機的復位信號是(A)有效。

A、高電平B、低電平C、脈沖D、下降沿

15、為了使模塊盡可能獨立,要求(B)。

A、模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強

B、模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C、模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D、模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強

16、若MCS-51單片機使用晶振頻率為6MHz時,其復位持續時間應該超過(B)。

A、2μsB、4μsC、8μsD、1ms

17、以下選項中可作為C語言合法常量的是(A)

A、-80B、-080C、-8e1.0D、-80.0e

18、能夠用紫外光擦除ROM中程序的只讀存儲器稱為(C)。

A、掩膜ROMB、PROMC、EPROMD、EEPROM

19、以下不能定義為用戶標識符是(D)。

A、MainB、_0C、_intD、sizeof

20、下選項中,不能作為合法常量的是(B)。//冪不能為小數

A、1.234e04B、1.234e0.4C、1.234e 4D、1.234e0

21、以下敘述中錯誤的是(C)

A、對于double類型數組,不可以直接用數組名對數組進行整體輸入或輸出

B、數組名代表的是數組所占存儲區的首地址,其值不可改變

C、當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界”的出錯信息

D、可以通過賦初值的方式確定數組元素的個數

22、以下與函數fseek(fp,0L,SEEK_SET)有相同作用的是(D)

A、feof(f

p)B、ftell(fp)C、fgetc(fp)D、rewind(fp)

23、存儲16×16點陣的一個漢字信息,需要的字節數為(A)

A、32B、64C、128D、256

24、已知1只共陰極LED顯示器,其中a筆段為字形代碼的最低位,若需顯示數字1,則它的字形代碼應為(B)。

A、06HB、F9HC、30HD、CFH

25、在C語言中,合法的長整型常數是(A)

A、OLB、4962710C、324562&D、216D

26、以下選項中合法的字符常量是(B)

A、"B"B、’\010’C、68D、D

27、若PSW.4=0,PSW.3=1,要想把寄存器R0的內容入棧,應使用(D)指令。

A、PUSHR0B、PUSH@R0C、PUSH00HD、PUSH08H

28、在片外擴展一片2764程序存儲器芯片要(B)地址線。

A、8根B、13根C、16根D、20根

29、設MCS-51單片機晶振頻率為12MHz,定時器作計數器使用時,其最高的輸入計數頻率應為(C)

A、2MHzB、1MHzC、500kHzD、250kHz

30、下列數據字定義的數表中,(A)是錯誤的。

A、DW“AA”B、DW“A”C、DW“OABC”D、DWOABCH

三、判斷題

(√)1、在對某一函數進行多次調用時,系統會對相應的自動變量重新分配存儲單元。

(×)2、在C語言的復合語句中,只能包含可執行語句。

(√)3、自動變量屬于局部變量。

(×)4、Continue和break都可用來實現循環體的中止。

(√)5、字符常量的長度肯定為1。

(×)6、在MCS-51系統中,一個機器周期等于1.5μs。

(√)7、C語言允許在復合語句內定義自動變量。

(√)8、若一個函數的返回類型為void,則表示其沒有返回值。

(×)9、所有定義在主函數之前的函數無需進行聲明。

(×)10、定時器與計數器的工作原理均是對輸入脈沖進行計數。

(×)11、END表示指令執行到此結束。

(√)12、ADC0809是8位逐次逼近式模/數轉換接口。

(√)13、MCS-51的相對轉移指令最大負跳距是127B。

(×)14、MCS-51的程序存儲器只是用來存放程序的。

(√)15、TMOD中的GATE=1時,表示由兩個信號控制定時器的的啟停。

(×)16、MCS-51的特殊功能寄存器分布在60H~80H地址范圍內。

(×)17、MCS-51系統可以沒有復位電路。

(×)18、片內RAM與外部設備統一編址時,需要專門的輸入/輸出指令。

(√)19、鎖存器、三態緩沖寄存器等簡單芯片中沒有命令寄存和狀態寄存等功能。

(√)20、使用8751且=1時,仍可外擴64KB的程序存儲器。

四、簡答題

1、在使用8051的定時器/計數器前,應對它進行初始化,其步驟是什么?

答:(1)確定T/C的工作方式——編程TMOD寄存器;

(2)計算T/C中的計數初值,并裝載到TH和TL;

(3)T/C在中斷方式工作時,須開CPU中斷和源中斷——編程IE寄存器;

(4)啟動定時器/計數器——編程TCON中TR1或TR0位。

2、什么是重入函數?重入函數一般什么情況下使用,使用時有哪些需要注意的地方?答:多個函數可以同時使用的函數,稱為重入函數。

通常情況下,C51函數不能被遞歸調用,也不能應用導致遞歸調用的結構。有此限制是由于函數參數和局部變量是存儲在固定的地址單元中。重入函數特性允許你聲明一個重入函數。即可以被遞歸調用的函數。

重入函數可以被遞歸調用,也可以同時被兩個或更多的進程調用。重入函數在實時應用中及中斷服務程序代碼和非中斷程序代碼必須共用一個函數的場合中經常用到。

3、8051引腳有多少I/O線?他們和單片機對外的地址總線和數據總線有什么關系?地址總線和數據總線各是幾位?

答:8051引腳共有40個引腳,8051的地址總線由P2和P0口提供,P2口是地址總線的高8位,P0口是地址總線的低8位;數據總線由P0口提供;P0口的地址總線和數據總線是分時進行的,P0口的地址總線需要外接地址鎖存器完成地址鎖存。

地址總線共16位,數據總線是8位。

4、在有串行通信時,定時器/計數器1的作用是什么,怎樣確定串行口的波特率?

答:在有串行通信時,定時器/計數器1的作用是串行口發生器。

串行口的波特率根據串行口的工作方式具有不同的計算方式:

方式0的波特率固定為晶體振蕩器的十二分之一;

方式1的波特率=2SMOD.(定時器1的溢出率)/32;

方式2波特率=2SMOD.(fosc/64);

方式3波特率同方式1(定時器l作波特率發生器)。

5、如何消除鍵盤的抖動?怎樣設置鍵盤中的復合鍵?

答:由于按鍵是機械開關結構,所以當用手按下其中一個鍵時,往往會出現所按鍵在閉合位置和斷開位置之間發生跳幾下后才會穩定到閉合狀態的情況。在釋放一個鍵時,也會出現類似的情況,這就是鍵的抖動,抖動的持續時間不一,但通常不會大于10ms。

若抖動問題不解決,就會引起對閉合鍵的多次讀入。對于鍵抖動最方便的解決方法就是當發現有鍵按下后,不是立即進行掃描,而是延時大約10ms后再進行。由于一個鍵按下的時間一般會持續上百毫秒,所以延遲10ms后再掃描處理并不遲。

復合鍵可以仿照計算機復合鍵的處理方法,通??梢约僭O一個鍵具有復合功能,再與其它減的鍵值組合成復合鍵。

1、矩陣式鍵盤的結構與工作原理

在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。

矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。具體的識別及編程方法如下所述。

2、矩陣式鍵盤的按鍵識別方法

確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。

行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。

1、判斷鍵盤中有無鍵按下將全部行線Y0-Y3置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。

2、判斷閉合鍵所在的位置在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。

下面給出一個具體的例子:

圖仍如上所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個上拉電阻到正電源 5V,并把列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。

1、檢測當前是否有鍵被按下。檢測的方法是P1.4-P

1.7輸出全“0”,讀取P1.0-P1.3的狀態,若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。

2、去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。

3、若有鍵被按下,應識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:

P1.71110

P1.61101

P1.51011

P1.40111

在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值

4、為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時的抖動。

鍵盤掃描程序:

從以上分析得到鍵盤掃描程序的流程圖如圖2所示。程序如下

SCAN:MOVP1,#0FH

MOVA,P1

ANLA,#0FH

CJNEA,#0FH,NEXT1

SJMPNEXT3

NEXT1:ACALLD20MS

MOVA,#0EFH

NEXT2:MOVR1,A

MOVP1,A

MOVA,P1

ANLA,#0FH

CJNEA,#0FH,KCODE;

MOVA,R1

SETBC

RLCA

JCNEXT2

NEXT3:MOVR0,#00H

RET

KCODE:MOVB,#0FBH

NEXT4:RRCA

INCB

JCNEXT4

MOVA,R1

SWAPA

NEXT5:RRCA

INCB

INCB

INCB

INCB

JCNEXT5

NEXT6:MOVA,P1

ANLA,#0FH

CJNEA,#0FH,NEXT6

MOVR0,#0FFH

RET

鍵盤處理程序就作這么一個簡單的介紹,實際上,鍵盤、顯示處理是很復雜的,它往往占到一個應用程序的大部份代碼,可見其重要性,但說到,這種復雜并不來自于單片機的本身,而是來自于操作者的習慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當的算法表示出來,最后再去寫代碼,這樣,才能快速有效地寫好代碼。

到本課為止,本站教程暫告一個段落!感謝大家的關心和支持!

矩陣按鍵部分由16個輕觸按鍵按照4行4列排列,連接到JP50端口。將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。確定矩陣式鍵盤上何鍵被按下,介紹一種“行掃描法”。行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法.判斷鍵盤中有無鍵按下:將全部行線置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。判斷閉合鍵所在的位置:在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。

下面給出一個具體的例子:

電路圖路徑:G:\圖片\電路圖片\xl100097.jpg

8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。

1.檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態,若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。

2.去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。

3.若有鍵被按下,應識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:

P1.71110

P1.61101

P1.51011

P1.40111

在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值。

4.為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時的抖動。

實驗目的:通過XL1000的16位矩陣按鍵,在數碼管上分別顯示0---9,A,B,C,D,E,F。

接線方法:1用一條8PIN數據排線,把矩陣按鍵部份的JP50,接到CPU部份的P1口JP44.

2接8位數碼管的數據線。將數碼管部份的數據口JP5接到CPU部份的P0口JP51.

3接8位數碼管的顯示位線。將數碼管部份的顯示位口JP8接到CPU部份的P2口JP52.

參考程序:

;本程序實現掃描按鍵顯示功能.

;分別按16個鍵盤顯示分別顯示數字123A456B789C*0#D

;鍵盤口P1,數碼管顯示第二位p21,數碼管段位p0口

org0000h

ajmpmain

org0030h

main:

movdptr,#tab;將表頭放入DPTR

lcallkey;調用鍵盤掃描程序

movca,@a dptr;查表后將鍵值送入ACC

movp0,a;將Acc值送入P0口

CLRP2.1;開顯示

ljmpmain;返回反復循環顯示

KEY:

LCALLKS;調用檢測按鍵子程序

JNZK1;有鍵按下繼續

LCALLDELAY2;無鍵按調用延時去抖

AJMPKEY;返回繼續檢測按鍵

K1:LCALLDELAY2

LCALLDELAY2;有鍵按下延時去抖動

LCALLKS;再調用檢測按鍵程序

JNZK2;確認有按下進行下一步

AJMPKEY;無鍵按下返回繼續檢測

K2:MOVR2,#0EFH;將掃描值送入R2暫存

MOVR4,#00H;將第一列值送入R4暫存

K3:MOVP1,R2;將R2的值送入P1口

L6:JBP1.0,L1;P1.0等于1跳轉到L1

MOVA,#00H;將第一行值送入ACC

AJMPLK;跳轉到鍵值處理程序

L1:JBP1.1,L2;P1.1等于1跳轉到L2

MOVA,#04H;將第二行的行值送入ACC

AJMPLK;跳轉到鍵值理程序進行鍵值處理

L2:JBP1.2,L3;P1.2等于1跳轉到L3

MOVA,#08H;將第三行的行值送入ACC

AJMPLK;跳轉到鍵值處理程序

L3:JBP1.3,NEXT;P1.3等于1跳轉到NEXT處

MOVA,#0cH;將第四行的行值送入ACC

LK:ADDA,R4;行值與列值相加后的鍵值送入A

PUSHACC;將A中的值送入堆棧暫存

K4:LCALLDELAY2;調用延時去抖動程序

LCALLKS;調用按鍵檢測程序

JNZK4;按鍵沒有松

開繼續返回檢測POPACC;將堆棧的值送入ACC

RET

NEXT:

INCR4;將列值加一

MOVA,R2;將R2的值送入A

JNBACC.7,KEY;掃描完至KEY處進行下一掃描

RLA;掃描未完將A中的值右移一位進行下一列的掃描

MOVR2,A;將ACC的值送入R2暫存

AJMPK3;跳轉到K3繼續

KS:MOVP1,#0FH;將P1口高四位置0低四位值1

MOVA,P1;讀P1口

XRLA,#0FH;將A中的值與A中的值相異或

RET;子程序返回

DELAY2:;40ms延時去抖動子程序

MOVR5,#08H

L7:MOVR6,#0FAH

L8:DJNZR6,L8

DJNZR5,L7

RET

tab:

db28h,34h,28h,34h,0a9h,60h,20h,7ah,

20h,21h,61h,74h,30h,62h,0a2h,7eh

;0h0hc9878654a321輪流顯示鍵盤因為無法表達*#就用H表示,B用8表示

end

這是我做成功的4X4鍵盤掃描源程序,P1.0-P1.3做四根列線,P1.4-P1.7做四根行線。

數碼管的字型表是按照標準接法做的,按對應的按鍵數碼管顯示對應的數字。

以下是源程序:

KEYBUFEQU30H

ORG00H

START:MOVKEYBUF,#2

MOVP2,#00001111B

WAIT:

MOVP1,#0FFH

CLRP1.4

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK1

MOVKEYBUF,#0

LJMPDK1

NK1:CJNEA,#0DH,NK2

MOVKEYBUF,#1

LJMPDK1

NK2:CJNEA,#0BH,NK3

MOVKEYBUF,#2

LJMPDK1

NK3:CJNEA,#07H,NK4

MOVKEYBUF,#3

LJMPDK1

NK4:NOP

DK1:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK1A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK1A

NOKEY1:

MOVP1,#0FFH

CLRP1.5

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK5

MOVKEYBUF,#4

LJMPDK2

NK5:CJNEA,#0DH,NK6

MOVKEYBUF,#5

LJMPDK2

NK6:CJNEA,#0BH,NK7

MOVKEYBUF,#6

LJMPDK2

NK7:CJNEA,#07H,NK8

MOVKEYBUF,#7

LJMPDK2

NK8:NOP

DK2:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK2A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK2A

NOKEY2:

MOVP1,#0FFH

CLRP1.6

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK9

MOVKEYBUF,#8

LJMPDK3

NK9:CJNEA,#0DH,NK10

MOVKEYBUF,#9

LJMPDK3

NK10:CJNEA,#0BH,NK11

MOVKEYBUF,#10

LJMPDK3

NK11:CJNEA,#07H,NK12

MOVKEYBUF,#11

LJMPDK3

NK12:NOP

DK3:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK3A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK3A

NOKEY3:

MOVP1,#0FFH

CLRP1.7

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK13

MOVKEYBUF,#12

LJMPDK4

NK13:CJNEA,#0DH,NK14

MOVKEYBUF,#13

LJMPDK4

NK14:CJNEA,#0BH,NK15

MOVKEYBUF,#14

LJMPDK4

NK15:CJNEA,#07H,NK16

MOVKEYBUF,#15

LJMPDK4

NK16:NOP

DK4:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK4A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK4A

NOKEY4:

LJMPWAIT

DELY10MS:

MOVR6,#10

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

TABLE:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H;0-9

DB088H,083H,0C6H,0A1H,086H,08EH,089H,0CFH,0C7H,0C8H;A,B,C,D,E,F,H,I,L,N,

END

;P3.1數據采集控制

;P2.6P2.7個位十位顯示轉換控制

;P1口接8個開關模擬數據

;P1.0-P1.3為個位開關量輸入

;P1.4-P1.7為十位開關量輸入

;此程序僅供參考

;功能P1口接8個開關輸入量4個一組,分別為個位,十位輸入

;P0口接一個數碼管,依次顯示輸入量。P3.1控制是否讀入

;開關量。P2.6P2.7控制是否顯示個位

或十位

ORG100h

LJMPSTAR

STAR:MOVP1,#0FFH

SETBP3.1數據讀入標志

MOVR0,#100,循環工作次數

LOOP:JBP3.1,$P3.1低電平時,采集P1口數據開關量處理顯示階段不再應答P3.1

MOVA,P1

PUSHACC

ANLA,#0FH取個位數值

MOVR1,A個位數值保存到R1

POPACC

ANLA,#0F0H

SWAPA高4位轉成字節信息

MOVR2,A十位數值保存到R2

MOVDPTR,#TABLED

MOVA,R1

MOVCA,@A DPTR

MOVP0,A

CLRP2.6個位顯示

ACALLDELAY500MS

SETBP2.6

MOVA,R2

MOVCA,@A DPTR

MOVP0,A

CLRP2.7十位顯示

ACALLDELAY500MS

SETBP2.7

DJNZR0,LOOP

DELAY500MS:延時500毫秒子程略

RET

TABLED:DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hDB80H,90H,88h,83h,0c6h,0a1h,86h,8eh

END

#include

typedefunsignedcharBYTE;

BYTEcodeTABLED[16]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0X0f8,0X80,0X90,0X88,0X83,0Xc6,0Xa1,0X86,0X8e};

BYTEDATled;

sbitP26=P2^6;

sbitP27=P2^7;

sbitP31=P3^1;

intTIME;

voidtimedelay(DTIME)

intDTIME;

{

intI;

for(I=0;I4;

P0=TABLED[TEMP];

P27=0;

timedelay(TIME);

P27=1;

}

}

}

1.實驗任務

在8X8 LED點陣上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環下去。

2.電路原理圖

圖4.24.1

3.硬件電路連線

(1).把“單片機系統”區域中的P1端口用8芯排芯連接到“點陣模塊”區域中的“DR1-DR8”端口上;

(2).把“單片機系統”區域中的P3端口用8芯排芯連接到“點陣模塊”區域中的“DC1-DC8”端口上;

4.程序設計內容

(1).8X8 點陣LED工作原理說明

8X8點陣LED結構如下圖所示

圖4.24.2

從圖4.24.2中可以看出,8X8點陣共需要64個發光二極管組成,且每個發光二極管是放置在行線和列線的交叉點上,當對應的某一列置1電平,某一行置0電平,則相應的二極管就亮;因此要實現一根柱形的亮法,如圖49所示,對應的一列為一根豎柱,或者對應的一行為一根橫柱,因此實現柱的亮的方法如下所述:

一根豎柱:對應的列置1,而行則采用掃描的方法來實現。

一根橫柱:對應的行置0,而列則采用掃描的方法來實現。

5.匯編源程序

ORG00H

START:NOP

MOVR3,#3

LOP2:MOVR4,#8

MOVR2,#0

LOP1:MOVP1,#0FFH

MOVDPTR,#TABA

MOVA,R2

MOVCA,@A DPTR

MOVP3,A

INCR2

LCALLDELAY

DJNZR4,LOP1

DJNZR3,LOP2

MOVR3,#3

LOP4:MOVR4,#8

MOVR2,#7

LOP3:MOVP1,#0FFH

MOVDPTR,#TABA

MOVA,R2

MOVCA,@A DPTR

MOVP3,A

DECR2

LCALLDELAY

DJNZR4,LOP3

DJNZR3,LOP4

MOVR3,#3

LOP6:MOVR4,#8

MOVR2,#0

LOP5:MOVP3,#00H

MOVDPTR,#TABB

MOVA,R2

MOVCA,@A DPTR

MOVP1,A

INCR2

LCALLDELAY

DJNZR4,LOP5

DJNZR3,LOP6

MOVR3,#3

LOP8:MOVR4,#8

MOVR2,#7

LOP7:MOVP3,#00H

MOVDPTR,#TABB

MOVA,R2

MOVCA,@A DPTR

MOVP1,A

DECR2

LCALLDELAY

DJNZR4,LOP7

DJNZR3,LOP8

LJMPSTART

DELAY:MOVR5,#10

D2:MOVR6,#20

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

DJNZR5,D2

RET

TABA:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH

TABB:DB01H,02H,04H,08H,10H,20H,40H,80H

END

6.C語言源程序

#include0;j--);

}

voidmain(void)

{

unsignedchari,j;

while(1)

{

for(j=0;j<3;j )

//fromlefttoright3time

{

for(i=0;i<8;i )

{

P3=taba[i];

P1=0xff;

delay1();

}

}

for(j=0;j<3;j )

//fromrighttoleft3time

{

for(i=0;i<8;i )

{

P3=taba[7-i];

P1=0xff;

delay1();

}

}

for(j=0;j<3;j )

//fromtoptobottom3time

{

for(i=0;i<8;i )

{

P3=0x00;

P1=tabb[7-i];

delay1();

}

}

for(j=0;j<3;j )

//frombottomtotop3time

{

for(i=0;i<8;i )

{

P3=0x00;

P1=tabb[i];

delay1();

}

}}

}

LED點陣顯示實驗

一.實驗要求

編程實現中英文字符的顯示。

二.實驗目的

1.了解LED點陣顯示的基本原理和實現方法。

2.掌握點陣漢字庫的編碼和從標準字庫中提取漢字編碼的方法。

三.實驗電路及連線

點陣顯示模塊WTD3088的(紅色)列輸入線接至內部LED的陰極端,行輸入線接至內部LED的陽極端(若陽極端輸入為高電平,陰極端輸入低電平,則該LED點亮)。發光點的分布如圖22-0所示。

Fig22-0WTD3088LED分布

如圖22-1示,本實驗模塊使用74LS374來控制列輸入線的電平值。將74LS374的某輸出置0,則對應的LED陰極端被置低。如圖22-2示,本實驗模塊使用74LS273來控制行輸入線,并通過9013提供電流驅動。將74LS273的某輸出置1,則對應的LED陽極端被置高。每次系統重新開啟或總清后,74LS273輸出為全0,LED顯示被關閉。

通過編程控制各顯示點對應LED陽極和陰極端的電平,就可以有效的控制各顯示點的亮滅。

Fig22-1LED模塊及列掃描電路

Fig22-2行掃描電路

Fig22-3地址譯碼電路

本實驗模塊使用4塊WTD3088組成16×16點陣,以滿足漢字顯示的要求。為了方便的控制四個單元,使用了一片74LS139譯碼,產生四個地址片選信號:CLKR1=CSLED,CLKR2=CSLED 1,用于行控制的兩片74LS273;CLKC1=CSLED 2,CLKC2=CSLED 3,用于列控制的兩片74LS374。

實驗接線:按示例程序,模塊的CSLED接51/96地址的8000H。

四.實驗說明

使用高亮度LED發光管構成點陣,通過編程控制可以顯示中英文字符、圖形及視頻動態圖形。LED顯示以其組構方式靈活、亮度高、技術成熟、成本低廉等特點在證券、運動場館及各種室內/外顯示場合得到廣泛的應用。

所顯示字符的點陣數據可以自行編寫(即直接點陣畫圖),也可從標準字庫(如ASC16、HZ16)中提取。后者需要正確掌握字庫的編碼方法和字符定位的計算。

實驗盤片中“字符轉換”子目錄下提供的Basc16.exe,BHz16.exe可方便的將單個字符的碼表從標準字庫Asc16,Hzk16中提取出來。具體使用方法是運行上述可執行程序,根據提示輸入所需字符(如是漢字還需要先啟動dos下的漢字環境,如ucdos,pdos95等)。程序將該字符的碼表提取出來,存放在該字符ASC或區位碼為文件名稱的.dat文件中。用戶只需將該文件中內容拷貝、粘貼到自己的程序中即可。但需要注意字節排列順序、字節中每一位與具體顯示點的一一對應關系,必要時還要對碼表稍作修改。同一目錄下還提供了上述可執行程序的源文件,使用BC3.1編寫,供用戶參考。

五.實驗程序框圖

用戶應留心其中行掃描的實現及碼表的處理。

六.實驗程序:

(一)提供LEDA51演示Asc16字符的簡單點陣顯示。

;________*LED點陣顯示示例程序______________________*

;__該程序顯示Asc16字符__

;__為了簡單起見,程序只顯示一個字符__

;__該程序針對T598實驗機的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQUCSLED 2H;列1374

CSC2EQUCSLED 3H;列2374

ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關閉行

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關閉列

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSC2

MOVX@DPTR,A

D:MOVR5,#00H

MOVR4,#01H;每次為單行掃描

DISP:

MOVA,R5

MOVDPTR,#ASCE;此處設定所要顯示的字符

MOVCA,@A DPTR

CPLACC;代碼取反,決定顯示的陰陽

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVDPTR,#CSR1

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#8H,DISP

MOVA,#0H

MOVX@DPTR,A

MOVR5,#08H

MOVR4,#01H

DISP2:

MOVA,R5

MOVDPTR,#ASCE

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#10H,DISP2

MOVA,#0H

MOVX@DPTR,A

SJMPD

;________延時子程序,協調字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點陣字庫______________*

;ASC16字符編碼排列

;0

;1

;|

;|

;14

;15

;高位D7--D0

;請注意編碼的排列次序和實際顯示點陣分布的關系

ASCA:DB00H,00H,10H,38H,6CH,0C6H,0C6H,0FEH

DB0C6H,0C6H,0C6H,0C6H,00H,00H,00H,00H

ASCE:DB00H,00H,0FEH,66H,62H,68H,78H,68H

DB60H,62H,66H,0FEH,00H,00H,00H,00H

ASCD:DB00H,00H,0F8H,6CH,66H,66H,66H,66H

DB66H,66H,6CH,0F8H,00H,00H,00H,00H

ASCK:DB00H,00H,0E6H,66H,66H,6CH,78H,78H

DB6CH,66H,66H,0E6H,00H,00H,00H,00H

;____________________________________________________

END

(二)LEDHZ51兩個示例程序。和Hz16字符的簡單點陣顯示。

;________*LED點陣顯示示例程序______________________*

;__該程序顯示hz16字符__

;__為了簡單起見,程序只顯示一個字符__

;__該程序針對T598實驗機的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQUCSLED 2H;列1374

CSC2EQUCSLED 3H;列2374ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關閉LED顯示

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關閉LED顯示

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSC2

MOVX@DPTR,A

D:MOVR5,#00H

MOVR4,#01H

DISP:

MOVA,R5

RLACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVA,R5

RLACC

INCACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSR1

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#8H,DISP

MOVA,#0H

MOVX@DPTR,A

MOVR5,#08H

MOVR4,#01H

DISP2:

MOVA,R5

RLACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVA,R5

RLACC

INCACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#10H,DISP2

MOVA,#0H

MOVX@DPTR,A

SJMPD

;________延時子程序,協調字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點陣字庫______________*

;HZ16字符編碼排列

;01

;23

;|

;|

;2829

;3031

;高位D7--D0

HZAI:DB00H,78H,3FH,80H,11H,10H,09H,20H

DB7FH,0FEH,42H,02H,82H,04H,7FH,0F8H

DB04H,00H,07H,0F0H,0AH,20H,09H,40H

DB10H,80H,11H,60H,22H,1CH,0CH,08H

HZDI:DB00H,80H,40H,80H,20H,88H,2FH,0FCH

DB08H,88H,08H,88H,0E8H,88H,2FH,0F8H

DB28H,88H,28H,88H,28H,88H,2FH,0F8H

DB28H,08H,50H,06H,8FH,0FCH,00H,00H

HZKE:DB01H,00H,01H,04H,0FFH,0FEH,01H,00H

DB01H,10H,1FH,0F8H,10H,10H,10H,10H

DB10H,10H,1FH,0F0H,14H,50H,04H,40H

DB04H,40H,08H,42H,10H,42H,60H,3EH

;____________________________________________________

END

基于89C51的計算機可鎖定加密鍵盤設計

摘要:介紹PC鍵盤和鍵盤接口的PS/2通信協議,以及用89C51實現可鎖定鍵盤的軟件和硬件設計方法。具有安全可靠、容錯能力強、可以直接采用標準鍵盤進行改裝、便于實現等優點,并保留標準鍵盤的全部功能。

關鍵詞:PS/289C51C51鍵盤

引言

在智能儀器、自動控制等領域,已大量使用嵌入式PC,如Advantech公司的PC/104、AMD公司的DIMM-PC等。為適應開放式、模塊化的要求,嵌入式PC具有標準的PC接口,如VGA顯示器控制接口、以太網接口、RS232接口、PC/AT鍵盤接口等。所以,可以用標準的PC鍵盤對嵌入式PC進行操作與控制。鍵盤在輸入指令之后,可能很長一段時間不用。為計算機安全和防止誤觸發,需要將鍵盤鎖定,還要對某些鍵采取屏蔽措施,但是PC標準鍵盤不能滿足這些要求。本文介紹一種用89C51設計實現的可鎖定加密PC/AT鍵盤。

1鍵盤功能及工作原理

PC鍵盤功能主要有按鍵識別、去抖、重鍵處理、發送掃描碼、自動重發、接收鍵盤命令、處理命令等。鍵盤有編碼鍵盤和非編碼鍵盤。編碼鍵盤程序設計簡單,但硬件電路復雜,價格較高;非編碼鍵盤用軟件來實現識別鍵、編碼轉換、去抖等功能,硬件電路簡單,價格便宜?,F代微機系統中廣泛采用非編碼鍵盤。PC鍵盤多采用18行×8列的二維矩陣行列結構。采用行掃描法識別按下的按鍵。

2PS/2協議

PS/2協議是外設與主機之間通信的一種同步雙向串行協議。在該協議中主機擁有較高的優先級,在一定條件下可以終止外設正在進行的發送過程。PS/2協議采用的傳送數據幀的格式為:1位起始位(0)、8位數據位、1位奇偶校驗位、1位停止位(1)。數據發送時低位在前,高位在后。外設每收到主機發來的1幀數據,都要緊隨該幀的停止位發送一個握手位ACK(0)應答主機。然后,外設還要發1幀應答數據(0xF0),表示外設已經完整地接收到了主機的命令;而主機則不需發送握手位,也不需要發送應答幀。

2.1鍵盤到PC鍵盤接口的通信

當時鐘線和數據線均為高電平時,允許鍵盤發送數據,系統將接收數據;當時鐘線被拉為低電平時,表明系統禁止數據傳輸。圖1給出了發送時序,包含1個低電平觸發的起始位、8位數據位、1個奇校驗位和1個高電平的結束位。

2.2PC系統到鍵盤的通信協議

若時鐘線出現高電平,數據線出現低電平,表明系統請求發送,鍵盤準備產生同步時鐘脈沖串,并接收數據。包含了1個低電平觸發的起始位、8位數據位、1個奇校驗位、1個應答位、1個高電平的結束位。圖2為時序圖。

(1)鍵盤命令及執行過程

①FFH:復位鍵盤。系統通過此軟件復位命令使鍵盤進入程序復位和內部自測試,稱為基本保證測試(BAT)。復位鍵盤的過程如下:

a.鍵盤收到FFH后立即回送ACK(FAH)作答;

b.鍵盤接口收到ACK后,將鍵盤時鐘和數據線置為高電平;

c.鍵盤檢測到此狀態后開始BAT操作;

d.如果BAT正確完成,鍵盤發送AAH以表示結束,

否則以FDH(或其它任何值)表示診斷有誤。

②FEH:重新發送。當系統檢測

到從鍵盤送來的任何傳輸錯誤時,它便向鍵盤發送FEH命令。鍵盤接收到此命令后,將重新送出原來的內容。③FDH~F7H:空操作(保留未用)。

④F6H:設置缺省值。此命令使鍵盤所有條件復位到電源接通時的缺省狀態,鍵盤繼續掃描。

⑤F5H:設置缺省值和停止鍵盤。此命令使鍵盤所有條件復位到電源接通時的缺省狀態,并停止鍵盤掃描,等待下一個鍵盤命令。

⑥F4H:啟動鍵盤。鍵盤接收到此命令后,用ACK(FAH)作答,清除輸出緩沖器,并啟動鍵盤開始掃描。

⑦F3H:設置拍發速率和延時參數。每當按下任一鍵時,鍵盤以拍發速率連續送出鍵的接通碼,直到鍵被釋放為止。延時參數是指按下一鍵后,鍵盤輸出的響應時間。

系統缺省設置:拍發速率=10個/s±20,延時=500ms±20。

當要改變設置時可以使用F3H命令,并后跟一個字節的參數。參數定義如表1所列。

表1

D7

D6D5

D4D3

D2D1D0

C

B

A

計算拍發速率和響應延時的公式如下:

拍發速率=1/[(8 A)×2B×0.00417](1/s)

響應延時=(1 C)×250(ms)

注:缺省的延時參數值為2CH。

此命令的執行過程如下:

a.鍵盤收到F3H命令后,用FAH予以響應,并停止

掃描和等待隨后的參數;

b.鍵盤若收到隨后的設置參數,用另一個ACK響

應,并按其參數設置新的拍發速率和響應延時,

之后重新開始掃描(若鍵盤原來是開放的);

c.鍵盤若收到FAH命令,但無隨后的設置參數,則

鍵盤結束命令設置,并保持原來的拍發速率和響

應延時,停止掃描。

⑧F2H,F1,EFH:保留未用。

⑨F0H:設置鍵盤掃描碼命令。此命令用于設置鍵盤的掃描碼,后跟參數指定三種掃描碼的哪一種。鍵盤復位時,默認掃描碼是第二種。

⑩EEH:回送命令。此命令用于輔助診斷,要求鍵盤接收到EEH時也要回送EEH予以響應。若鍵盤原來是開放的,則繼續掃描。

EDH:置位/復位LED指示器。鍵盤右上角有三個LED指示器,分別反映Caps、Num和Scroll三個鍵的鎖定情況。參數字節如表2所列。

表2

D7D3

D2

D1

D0

保留

1=激勵CapsLED

1=激勵NumLED

1=激勵ScrollLED

此命令執行過程與F3H相似。若命令后跟參數,則按參數設定LED狀態并繼續掃描。若僅有命令無參數,則不改變LED原狀態,并停止掃描。

(2)鍵盤響應

鍵盤在下列四種情況下都會向鍵盤接口發送數據。

①按下任一鍵,鍵盤以拍發速率向接口發送鍵盤接通掃描碼。

②釋放所按下的鍵,鍵盤發送斷開掃描碼。

③系統向鍵盤發送鍵盤命令后,鍵盤回送應答。

④當用戶按鍵速度超出鍵盤所能容納的最大鍵個數時,鍵盤做出響應。

后三種情況稱為鍵盤響應。響應字節有7個,定義如下。

①FEH:重新發送響應。當鍵盤收到一個無效的鍵盤命令,或者檢測到奇偶錯的鍵盤命令時,鍵盤回送響應字節為FEH,要求系統重發鍵盤命令。

②FAH:正常應答。對任何一個有效的鍵盤命令,鍵盤回送FAH予以響應。

③00H:超限應答。當用戶按鍵速度超出鍵盤所能容納的最大鍵符個數時(16個字節的緩沖器),鍵盤發送00H。

④FDH:診斷故障應答。鍵盤接受軟件復位命令,執行自測試過程中。若檢測到故障,則以FDH應答。此時,鍵盤停止掃描并等待下一個鍵盤命令。

⑤AAH:診斷正常應答。鍵盤在軟件復位過程中,正常完成BAT測試,以AAH應答。

⑥FEH:回響命令的應答,對鍵盤FEH命令的應答。

⑦F0H:斷開掃描碼前綴,鍵盤對鍵符按下后釋放的應答,第一個字節為F0H,第二個字節為接通掃描碼(有幾個鍵例外)。

3硬件設計

PC系列鍵盤采用18行×8列的矩陣行列結構。89C51單片機有4個8位I/O端口,因此可以采用P0、P2口再加上P3口的2個(P3.6和P3.7)作為行掃描線。P1口作為列輸入線(如果用P0口作列輸入線,必須加上拉電阻)。采用P3.0、P3.1作為數據線和時鐘線與PC系統進行通信,用P3.2、P3.4、P3.5控制鍵盤上的3個指示燈。硬件原理如圖3所示。

鍵盤與計算機通過一個五芯(PS/2接口為六芯)插座相接,4個有效引腳的定義分別是電源(VCC)、地(GND)、串行時鐘線(SCK)、串行數據線(SIO)。

4軟件設計

①消抖及重鍵處理:通過軟件上延時程序來消除抖動;采用后按鍵優先處理,即多鍵同時按下時,只重復發送最后按下鍵的掃描碼。

②程序包括鍵盤掃描子程序、發送鍵碼子程序、發送數據子程序、接收命令子程序、定時器1中斷服務程序、主程序等。鍵盤掃描子程序用于掃描鍵狀態,將被按鍵的位置號存入緩沖器中;發送鍵碼子程序用于將緩沖區鍵的接通碼或斷開碼發送給計算機鍵盤接口或者存在鍵盤密碼緩沖區中;發送數據子程序用于將數據發給計算機鍵盤接口;接收命令子程序用于接收計算機鍵盤接口發來的鍵盤命令;定時器1中斷服務子程序用于給程序中的延時提供標準時鐘,并具有軟件看門狗功能,防止軟件出現死機現象;主程序用于系統初始化,子程序調度,鎖定狀態的顯示等。

圖6發送緩沖區鍵碼子程序流程圖

圖4~6是主要軟件模塊的流程圖。單片機源程序見本刊網絡補充版(.com)。

5結論

本文介紹的PC/AT鍵盤具有結構簡單、設計靈活、安全可靠的特點,可用于標準PC和嵌入式PC。本鍵盤可以在標準的鍵盤基礎上進行改造,只需換掉原來的控制芯片即可,可節省設計成本。

單片機C51編程幾個有用的模塊(1)

KeilC51常用功能模塊使用說明

說明

本文檔包括單片機系統中常用到的時鐘中斷、通訊及鍵盤掃描等模塊(見所附源程序)的說明。這些模塊使用前后臺系統模型。為達到最大的靈活性,需要在用戶工程中定義config.h文件,在其中定義各模塊可選參數的設置,而不是直接更改源代碼。

這些可選內容大部分為宏定義,如果不定義宏相應的功能在編譯時被屏蔽,不會增加代碼長度。具體可選內容見各模塊中的說明。

在Config.h文件中還要包含一個單片機硬件的資源頭文件。

各模塊使用了定義在Common.h中的一些數據類型。如:BIT(bit)BYTE(unsignedchar)等,具體請參見源程序。

時鐘模塊

在單片機軟件設計中,時鐘是重要資源,為了充分利用時鐘資源,故設計本時鐘模塊。本模塊使用定時器0,在完成用戶指定功能的同時,還能夠自動處理一些其它模塊中與時鐘相關的信息。

時鐘模塊由聲明文件Timer.h以及實現文件Timer.c組成。

用戶應該在Config.h中定義宏TIMER_RELOAD來設定定時器0的重裝載初值。推薦的定時器0的中斷時間大于1毫秒。

在程序的初始化階段調用時鐘模塊的初始化函數InitTimerModule()之后,就可以使用時鐘模塊所以支持的各種功能。具體描述如下:

延時:當用戶需要進行一定時間的延時時,可以通過調用Delay()來進行,參數為時鐘中斷的次數。如時鐘中斷周期為1ms,想進行100ms的延時,則可以調用Delay(100)。

注意:

如果延時的絕對時間小于時鐘中斷的周期,則不能夠用本方法做到延時。

定時:當程序中需要使用定時功能時,如等待某外部事件,如果在一定時間內發生則繼續執行,如果在這段時間內發生,則認為出現錯誤,轉向錯誤處理機制。

在此推薦一種編程模式,但用戶可以用自己認為更合理的方式處理此類問題。

這里簡單說明一下關于阻塞式函數及非阻塞式函數。簡單說,阻塞式函數就是當檢測完成條件,如

果不能夠完成則等待,如:

voidCheckSomething()

{

//gbitSuccessFlagisaglobalvariable

while(gbitSuccessFlag==FALSE)

{

//donothingbutwaiting

}

}

可以看到,當bitSuccessFlag沒有被設置為TRUE時,函數保持等待狀態不返回,這樣就是阻塞式的函數。

另外一種情況:

BITCheckSomething()

{

if(gbitSuccessFlag==TRUE)

{

//…

returnTRUE;

}

returnFALSE;

}

在這里,如果所檢測的事件有沒有完成,函數進行檢測之后,立刻返回,通過返回值報告完成情況,如果沒有完成,則等待調用者分配再次執行的機會。這樣的函數就是非阻塞函數。

在應用定時功能時,首先要將檢測函數定義成非阻塞函數。如上面的第二個版本的CheckSomething。

然后下面模式:

BITbitDone=FALSE;

ResetClock();//cleartimerinterrupttimescounter

while(GetClock()

{

if(CheckSomething()==TRUE)

{

bitDone=TRUE;

break;

}

}

if(bitDone==FALSE)

{

//processtimeout

}或者簡單寫成:

BITbitDone=FALSE;

ResetClock();

while(GetClock()=(z))

當然,用戶也可以將IsPackageHeader和IsPackageTailer定義成為函數,通過BIT類型的返回值來向調用者提供與相應宏相同的信息。

另一種辦法需要在Config.h文件中定義宏SCOMM_ComplexPackageFormat。(需要注意的是,不能夠同時定義SCOMM_SimplePackageFormat和SCOMM_ComplexPackageFormat宏,否則會造成嚴重的不可預見性錯誤。

這時需要提供回調函數QueryPackageFormat,原形如下:

BYTEQueryPackageFormat(BYTEbyData,BYTEbyCount,BYTEbyParam);

函數中三個參數的含義與使用簡單數據包格式時判斷數據包尾的宏的參數相同。

函數通過返回值來通知作為調用者的接收函數對接收到的數據如何處理,但目前這種方法僅為需要處理復雜數據包格式時的一種可選方法,但不推薦。用戶如果想使用這種方法可以自己更改接收函數中相應的

#ifdefSCOM_ComplexPackageFormat

#endif//SCOMM_ComplexPackageFormat

預編譯指令之間的內容。

例如指定QueryPackageFormat的返回值的含義:

0:繼續找數據包頭或繼續找數據包尾。

1:找到數據包頭。

2:找到數據包尾。

3:數據包出錯,需要拋棄。

然后更改源代碼來實現上面的協議。

注意:當用戶需要使用字符串的時候,可以利用簡單的包裝函數將字符串轉換為字節數組。所以沒有必要提供專用的字符串處理函數。

鍵盤掃描模塊

鍵盤掃描模塊有兩種工作方式,一種為自動的由時鐘模塊調用,另一種是由程序員自行調用。

1)由時鐘模塊自動調用的方式

將時鐘模塊實現文件(Timer.h)及鍵盤掃描模塊的實現文件(KBScan。c)包含進工程,在Config.h文件中添加TIMER_KBSCANDELAY宏。時鐘模塊自動對時鐘中斷進行計數,當達到TIMER_KBSCANDELAY宏所定義的值后,自動調用鍵盤掃描模塊中的函數KBScanProcess()進行鍵盤掃描,也就是說,這個宏的值可以決定按鍵消抖動的時間。

用戶應該提供兩個回調函數OnKBScan()及OnKeysPressed()。在函數OnKBScan中進行鍵盤掃描,并返回掃描碼。掃描碼的類型缺省為BYTE,當鍵盤規模較大時,BYTE不能夠完全包含鍵盤信息時,可在Config.h文件中重定義宏KBvalue,如下:

#defineKBvalueWORD

這樣,就可以使用16位的鍵盤掃描碼,如果此時還達不到要求,可以將鍵盤掃描碼定義成一個結構,但這樣做將會增加代碼量及消耗更多的RAM資源,故不推薦。

掃描模塊調用OnKBScan取得掃描碼,并調用用戶可以重定義的宏IsNoKeyPressed來判斷是否有鍵按下,缺省的IsNoKeyPressed實現如下:

#defineIsNoKeyPressed(x)((x)==0x00)

即認為OnKBScan返回0掃描碼時為沒有鍵按下,如果掃描函數返回其它非零掃描碼做為無鍵按下的掃描碼時,可以在Config.h文件中重定義IsNoKeyPressed宏的實現。

8位鍵盤掃描碼(缺省值)時,相應的掃描函數為:

BYTEOnKBScan()

當掃描模塊經過軟件消抖動之后,發現有鍵按下,就會調用另一個回調函數OnKeysPressed。函數的聲明應該如下:

voidOnKeyPressed(BYTEbyKBvalue,BYTEbyState)

其中中的參數byKBvalue的類型為BYTE,此為缺省值,如果使用其它類型的掃描碼,就將此參數變為相應類型。這個值由OnKBScan返回。另一個參數byState在通常情況下為零。但當用戶在Config.h中定義宏KBSCAN_BRUSTCOUNT,同時鍵盤上的某鍵被按住不放時,掃描模塊對它自己的調用(注意這里和TIMER_KBSCANDELAY宏不同,TIMER_KBSCANDELAY是時鐘中斷足夠的次數后調用掃描模塊,而KBSCAN_BRUSHCOUNT為掃描模塊自身的被調用次數)進行計數,當達到KBSCAN_BRUSTCOUNT時,掃描模塊調用OnKeysPressed,此時第一個參數的含義不變,而byState變成1,同時計數器復位,又經過一段時間后,用值為3的byState調用OnKeysPressed。這樣就可以很方便的實現多功能鍵或者檢測某鍵的長時間被按下。

2)由用戶自行調用

由用戶自行在程序中調用掃描模塊,而不是由時鐘中斷自行調用。其它與方式1相同。

注意:

1)函數KBScanProcess為非阻塞函數,它將在很快的時間內返回,等待再次分配給它執行的機會。

2)函數KBScanProcess是在時鐘中斷外部運行的,它的過程可以被任何中斷打斷,但不影響系統運行。

3)byState的最大值為250,之后被復位為零。

應用舉例

現在來舉例說明上述幾個模塊的使用方法。

硬件環境描述:

為了控制一盞燈,需要單片機提供一個做控制功能的開關量,這里不描述外部接口電路,只說明當單片機的P10腳為高電平時,燈滅,當P10腳為低電平時,燈亮。

可以通過計算機由串口發送命令來控制,或通過一個按鍵(pus

hbutton不是自鎖式的按鍵)來手動控制(按鍵接在P11腳上,當鍵沒有按下時,P11電平為高,鍵按下時,引腳電平被接低),當使用按鍵手動控制的時候,需要給計算機發送通知。

設定串口通訊指令如下:

數據包由0xff做包頭,4個字節長,第二個字節為命令代碼,第三個字節為數據,最后一個字節為校驗位。

命令和數據代碼有如下組合:

(計算機發給單片機)

0x100x01:計算機控制燈亮。(數據位是非零值即可)

0x100x00:計算機控制燈滅。

(單片機發給計算機)

0x110x01:單片機正常執行控制指令,返回。(數據位是非零值即可)

0x110x00:單片機不能夠正常執行控制指令,或控制指令錯(不明含義的數據包或校驗錯等)。

0x120x01:手動控制燈亮。(數據位是非零值即可)

0x120x00:手動控制燈滅。建立工程:

在硬盤上建立文件夾Projects,在Projects下建立Common文件夾及Example文件夾。將各模塊的頭文件及實現文件拷貝到Common文件夾下(推薦使用這樣的文件組織結構,其它工程也可以建立在Projects下,各工程共享Common文件夾中的代碼)。

啟動KeilC的IDE,在Example下建立新工程,將各模塊的實現文件包含進工程。

在Example文件夾下建立Output文件夾,更改工程設置,將Output作為輸出文件和List文件的輸出文件夾(推薦使用這樣的結構,當保存工程文件時,可以簡單的刪除Output文件夾中的內容而不會誤刪有用的工程文件)。

建立工程配置頭文件Config.h及工程主文件Example.c,并將Exmaple.c文件加入工程。

輸入代碼:

代碼的具體編寫過程略。下面是最后的Config.h文件及Example.c文件。

//

//file:onfig.h

//

#ifndef_CONFIG_H_

#define_CONFIG_H_

#include//使用AT89C52做控制

#include“../Common/Common.h”//使用自定義的數據類型

#defineTIMER_RELOAD922//11.0592MHz晶振,1ms中斷周期

#defineTIMER_KBSCANDELAY40//40ms重檢測按鍵狀態,即40ms消抖

#defineSCOMM_AsyncInterface//使用異步通訊服務

#defineIsPackageHeader(x)((x)==0xff)//判斷包頭是不是0xff

#defineIsPackageTailer(x,y,z)((y)<=(z))//判斷包的長度是不是足夠

#endif//_CONFIG_H_

//

//file:xample.c

//

#include

#include“../Common/Common.h”

#include“../Common/Timer.h”

#include“../Common/Scomm.h”

#include“../Common/KBScan.h”

BITgbitLampState=1;//燈的狀態,缺省為off

staticvoidInitialize()

{

InitTimerModule();//初始化時鐘模塊

InitSCommModule(0xfd,TRUE);//初始化通訊模塊,11.0592MHz晶振,

//波特率為19200

EA=1;//開中斷

}

voidmain()

{

Initialize();//初始化

while(TRUE)//主循環

{

ImpTimerService();//實現時鐘中斷服務,如鍵盤掃描

AsyncRecePackage(4);//接收4個字節長的數據包

}

}

//在中斷外部響應時鐘中斷事件

voidOnTimerEvent()

{

//donothing

}

//控制外部燈

staticvoidTriggerLamp(BITbEnable)

{

P10=~bEnable;//需要反相控制

}

//鍵掃描回調函數

BYTEKBScan()

{

BITb;

P11=1;//讀之前拉高引腳電平

b=P11;//讀入引腳狀態

return~b;//數據反相做掃描碼

}

//計算校驗和

staticBYTECalcCheckSum(BYTE*pbyBuf,BYTEbyLen)

{

BYTEby,bySum=0;

for(by=0;by

return0–bySum;

}

//接收到鍵盤消息回調函數

voidOnKeyPressed(BYTEbyvalue,BYTEbyState)

{

BYTEby[4];

if(byState==0)

{

switch(byvalue)

{

case0x01:

gbitLampState=~gbitLampState;//燈狀態取反

TriggerLamp(gbitLampState);//執行控制

by[0]=0xff;//構造數據包

by[1]=0x12;

by[2]=(BYTE)gbitLampState;

by[3]=CalcCheckSum(by,3);//求校驗和

SendPackage(by,4);//發送數據包

break;

//處理其它掃描碼

default:

break;

}

}

//接收到數據包回調函數

voidOnRecePackage(BYTE*pbyBuf,BYTEbyBufLen)

{

BYTEby[4];

by[0]=0xff;

by[1]=0x11;

if(byBufLen!=4||pbyBuf[3]!=CalcCheckSum(pbyBuf,3))

{

by[2]=0;

by[3]=CalcCheckSum(by,3);

SendPackage(by,4);//處理長度或校驗和不正確

}

switch(pbyBuf[1])

{

case0x10:

gbitLampState=(BIT)pbyBuf[2];

TriggerLamp(gbitLampState);

by[2]=1;

by[3]=CalcCheckSum(by,3);

SendPackage(by,4);//發送成功執行通知

break;

default://不知道的命令

by[2]=0;

by[3]=CalcCheckSum(by,3);

SendPackage(by,4);//發送沒有成功執行通知

break;

}

}

4.課程設計單獨計算成績,考評方法見其大綱。

三、理論考試說明

1.單片機技術及應用理論考試,采用閉卷筆試形式,考試時間120分鐘。

2.期末考試試題根據教學大綱,其范圍和難度按照本方案中制訂的考試考核內容和要求確定??荚嚸}覆蓋考試大綱要求范圍。

3.期末考試試題類型有以下幾種:

①填空題;

②選擇題;

③判斷題;

④簡答題⑤綜合應用題。

四、考試考核要求層次

按照教學大綱的要求,理論考試要求分為掌握、理解和了解三個層次。

掌握:

對于本課程的重點內容要求學生達到掌握的程度。即能夠全面、深入理解和熟練掌握所學內容,并能夠用其分析、初步設計和解答與應用相關的問題,能夠舉一反三。要求學生掌握的內容也就是考試的主要內容,在考試中所占比例約70。

理解:

對于本課程的一般內容要求學生能夠理解。即要求學生能夠較好地理解所學內容,并且對所涉及的內容能夠進行簡單分析和判斷。要求學生理解的內容也是考試的內容,在考試中所占比例約25。

了解:

對于本課程的次要內容要求學生能夠了解。要求學生了解的內容,一般是指在眼下不必進一步深入和擴展,有些也許需要學生自己今后在工作中進行深入研究。對要求了解的內容,在考試中占較小比例,不超過5。實驗五:按鍵電路、顯示電路實驗一、實驗目的:1.掌握獨立式按鍵電路與矩陣式按鍵電路的設計方法。2.掌握數碼管顯示電路的工作原理3.掌握源程序編輯軟件UltraEdit,編譯軟件KeilC51、仿真軟件Proteus的使用方法4.掌握硬件仿真器ME-52A的使用方法二、實驗器材:1.單片機實驗板2.單片機硬件仿真器ME-51A3.計算機4.電源三、實驗要求:1.電路如圖5所示,用單片機的P3口所接的四個獨立式按鍵控制p1口流水燈花樣的方法;具體表現為:p3.0、P3.1、P3.2、P3.3四個小按鍵分別實現了四個控制:(1)跑燈:即P1.0---1.7亮點流動:(2)流水燈:即P1.0-1.7依次點亮(3)交叉閃爍:即P0.0,P0.2,P0.4,P0.6和P0.1,P0.3,P0.5,P0.7輪流點亮(4)停止;在任何狀態下按此鍵程序停止運行.2.電路如圖6所示,用P2口所接的4×4矩陣式鍵盤作為輸入,在P1口所接的數碼管上顯示出每個按鍵的0~F序號,鍵盤的布局如下表所示:FEDCBA9876543210四、實驗原理:1.獨立式按鍵電路顯示如圖5所示,從圖中可看出,判斷有無鍵按下,只要檢測P3.0~P3.3相應端口的高低電平即可,若檢測有某一端口為低電平,表明該端口有按鍵按下,經延時消抖后轉去執行相應的功能子程序。若為高電平,表明無鍵按1.獨立式按鍵電路如圖5所示,下,繼續檢測。示例程序如下:ORG000HLJMPSTAR1ORG0030HSTAR1:MOVP3,#0FFH;置P3口為輸入態JNBP3.0,FUN0;判別P3.0是否有鍵按下,是,則轉FUN0JNBP3.1,FUN1;判別P3.1是否有鍵按下,是,則轉FUN1JNBP3.2,FUN2;判別P3.2是否有鍵按下,是,則轉FUN2JNBP3.3,FUN3;判別P3.3是否有鍵按下,是,則轉FUN3JNBF0,STAR1;曾經有鍵按下F0置1RET圖5FUN0:LCALLDL10MS;消岸抖動JBP3.0,STAR1WAITL0:JNBP3.0,WAITL0;等待鍵釋放SETBF0FUN01:LCALLFUN00LCALLSTAR1LJMPFUN01FUN1:LCALLDL10MS;消岸抖動JBP3.1,STAR1WAITL1:JNBP3.1,WAITL1;等待鍵釋放SETBF0FUN10:LCALLFUN11LCALLSTAR1LJMPFUN10FUN2:LCALLDL10MS;消岸抖動JBP3.2,STAR1WAITL2:JNBP3.2,WAITL2;等待鍵釋放SETBF0FUN20:LCALLFUN22LCALLSTAR1LJMPFUN20FUN3:LCALLDL10MS;消岸抖動JBP3.3,STAR1WAITL3:JNBP3.3,WAITL3;等待鍵釋放CLRF0MOVP1,#0FFH;關顯示LJMPSTAR1FUN00:MOVA,#0FEH;跑燈子程序FUN000:MOVP1,ALCALLDL05SJNBACC.7,OUTRLAAJMPFUN000OUT:RETFUN11:MOVA,#0FEH;流水燈子程序FUN111:MOVP1,ALCALLDL05SJZOUTRLAANLA,P1AJMPFUN111FUN22:MOVA,#0AAH;交叉點亮子程序MOVP1,ALCALLDL30SCPLAMOVP1,ALCALLDL30SRET;____________;;延時程序;;____________;DL512:MOVR2,#0FFHLOOP1:DJNZR2,LOOP1RETDL10MS:MOVR3,#14HLOOP2:LCALLDL512DJNZR3,LOOP2RETDL05S:MOVR4,#0AHLOOP3:LCALLDL10MSDJNZR4,LOOP3RETDL30S:MOVR5,#03HLOOP4:LCALLDL05SDJNZR5,LOOP4RETEND2.矩陣式按鍵電路顯示如圖6所示。采用掃描方式進行按鍵的識別檢測,并將對應按鍵的鍵號用查表指令將對應的代碼顯示在數碼管上。圖6參考程序如下:ORG0000HLJMPSTARTORG0030HSTART:MOVSP,#60H;設置堆棧指針SCAN:MOVR3,#0F7H;置行掃描初值MOVR1,#00H;到TABLE表中取碼的指針SCAN1:MOVA,R3MOVP2,A;掃描輸出MOVA,P2;重讀P2口狀態MOVR4,A;暫存于R4呂中SETBC;C=1MOVR5,#03H;掃描4列初值L1:RLCA;A中內容循環左移JNCKEYIN;C=0,有鍵按下,轉消抖INCR1;取碼指針加1DJNZR5,L1;無鍵按下,繼續檢測MOVA,R3;掃描下一行SETBCRRCAMOVR3,AJCSCAN1;4行是否掃描完,未完,繼續LJMPSCANKEYIN:MOVR7,#10;削除抖動D2:MOVR6,#248DJNZR6,$DJNZR7,D2D3:MOVA,P2;按鍵放開否?XRLA,R4JZD3MOVA,R1MOVDPTR,#TABLE;到TABLE中取碼MOVCA,@A DPTRMOVP1,ALJMPSCANTABLE:DB0C0H,0F9H,0A4H,0B0H,80H,90H,88H,83H,0C6H,0A1H,86H,8EHENDDB80H,90H,88H,83HDB0C6H,0A1H,86H,8EHEND五、實驗步驟:1.運行UltraEdit-32源程序編輯軟件,輸入、編輯匯編語言源程序。2.運行KeiluVision2源程序編譯軟件,對源程序進行編譯,得到目標代碼文件。3.運行Proteus模擬仿真軟件,打開已繪制好的仿真電路原理圖,進行模擬 仿真。4.把硬件仿真器ME-52A與單片實驗板連接好,再用硬件仿真器進行仿真驗證。六、實驗分析與總結1.用仿真系統調試簡單程序結構、分支程序結構、循環程序結構、子程序結構和中斷結構的關鍵在于,如何將對程序的分析理解和開發系統提供的基本功能有機地結合起來,其前提條件是必須對源程序的作用、結構特點、運行過程與結果有較全面的認識,并能根據程序運行過程中出現的現象和結果分析并判斷產生各種故障現象的原因,再運用排除法逐一檢驗各種判斷是否準確。2.掌握程序結構特點的基礎上,合理選擇觀測點,通過觀察在觀測點處參數及路徑的變化檢驗程序運行的結果。3.高調試程序的效率,應對單片機開發系統所提供的幾種程序運行調試方式有足夠的了解并能熟練地運用。例如,在調試過程中,若要觀察最終結果,則可選擇全速運行調試;若要觀察相關指令的運行結果或運行路徑的變化過程,則可選擇單步運行;若要檢查子程序的運行過程,則可選擇跟蹤運行調試;若要檢查循環程序或中斷服務程序,則可選擇斷點運行調試;若要定點檢查程序運行到某處的結果時,則可選擇快速運行到光標處調試。但實際中究竟選用哪種方法更適宜或哪幾種方法結合使用更快捷,將隨著分析能力與操作的熟練程度逐步提高。4.程序運行結果是否正確時,應運用單片機開發系統所提供的交互界面,將程序運行過程中程序計數器PC(地址)的變化、各單元(內部RAM和外部RAM)內容的變化、特殊功能寄存器內容的變化、堆棧指針SP內容的變化與程序的理論分析結果相對照。5.程序和調試程序時,需要多次反復的過程,并非一次就能排除全部故障,特別是單片機應用系統的硬件電路和匯編程序相結合的綜合調試就更加復雜,因此,必須通過反復調試,不斷修改硬件和軟件,直到最終符合設計要求為止。如果在調試中能夠根據實驗現象預先對產生故障的原因加以判斷和分析,并制定出相應的調試方法和步驟,可縮小排除故障的范圍,提高調試效率。七、思考與練習填空題

1、設X=5AH,Y=36H,則X與Y“或”運算為__7EH_______,X與Y的“異或”運算為___6CH_____。

2、若機器的字長為8位,X=17,Y=35,則X+Y=__110100_____,X-Y=_11101110______(要求結果寫出二進制形式)。

3、單片機的復位操作是____高電平______(高電平/低電平),單片機復位后,堆棧指針SP的值是___07h_____。

4、單片機中,常用作地址鎖存器的芯片是__74HC373____________,常用作地址譯碼器芯片是_____74HC138____________。

5、若選擇內部程序存儲器,應該設置為_____高_______(高電平/低電平),那么,PSEN信號的處理方式為___不用__________________。

6、單片機程序的入口地址是____0000H__________,外部中斷1的入口地址是______0013H_________。

7、若采用6MHz的晶體振蕩器,則MCS-51單片機的振蕩周期為__0.5us_______,機器周期為_____2us__________。

8、擴展芯片的選擇方法有兩種,它們分別是___線選法_______________和_____譯碼法__________。

9、單片機的內部RAM區中,可以位尋址的地址范圍是____20H~2FH______________,特殊功能寄存器中,可位尋址的地址是___是能被8整除的地址_________________。

10、子程序返回指令是___ret______,中斷子程序返回指令是__reti。

11、8051單片機的存儲器的最大特點是內部RAM與外部RAM分開編址。

12、8051最多可以有32個并行輸入輸出口,最少也可以有8個并行口。

13、函數是C語言的基本單位。

14、串行口方式2接收到的第9位數據送SCON寄存器的RB8位中保存。

15、MCS-51內部提供3個可編程的16位定時/計數器,定時器有4種工作方式。

16、一個函數由兩部分組成,即說明部分和語句部分。

17、串行口方式3發送的第9位數據要事先寫入SCON寄存器的TB8位。

18、利用8155H可以擴展3個并行口,256個RAM單元。

19、C語言中輸入和輸出操作是由庫函數scanf和printf等函數來完成。

二、選擇題

1、C語言中最簡單的數據類型包括(B)。

A、整型、實型、邏輯型B、整型、實型、字符型

C、整型、字符型、邏輯型D、整型、實型、邏輯型、字符型

2、當MCS-51單片機接有外部存儲器,P2口可作為(C)。

A、數據輸入口B、數據的輸出口

C、準雙向輸入/輸出口D、輸出高8位地址

3、下列描述中正確的是(D)。

A、程序就是軟件B、軟件開發不受計算機系統的限制

C、軟件既是邏輯實體,又是物理實體D、軟件是程序、數據與相關文檔的集合

4、下列計算機語言中,CPU能直接識別的是(D)。

A、自然語言B、高級語言C、匯編語言D、機器語言

5、MCS-5l單片機的堆棧區是設置在(C)中。

A、片內ROM區B、片外ROM區C、片內RAM區D、片外RAM區

6、以下敘述中正確的是(C)。

A、用C語言實現的算法必須要有輸入和輸出操作

B、用C語言實現的算法可以沒有輸出但必須要有輸入

C、用C程序實現的算法可以沒有輸入但必須要有輸出

D、用C程序實現的算法可以既沒有輸入也沒有輸出

7、定時器/計數器工作方式1是(D)。

A、8位計數器結構B、2個8位計數器結構

C、13位計數結構D、16位計數結構

8、C語言提供的合法的數據類型關鍵字是(B)。

A、DoubleB、shortC、integerD、Char

9、片內RAM的20H~2FH為位尋址區,所包含的位地址是(B)。

A、00H~20HB、00H~7FHC、20H~2FHD、00H~FFH

10、以下能正確定義一維數組的選項是(B)。

A、inta[5]={0,1,2,3,4,5};B、chara[]={0,1,2,3,4,5};

C、chara={’A’,’B’,’C’};D、inta[5]="0123";

11、數據的存儲結構是指(D)。

A、存儲在外存中的數據B、數據所占的存儲空間量

C、數據在計算機中的順序存儲方式D、數據的邏輯結構在計算機中的表示

12、下列關于棧的描述中錯誤的是(C)。

A、棧是先進后出的先性表B、棧只能順序存儲

C、棧具有記憶作用D、對棧的插入和刪除操作中,不需要改變棧底指針

13、在寄存器間接尋址方式中,間址寄存器中存放的數據是(B)。

A、參與操作的數據B、操作數的地址值

C、程序的轉換地址D、指令的操作碼

14、MCS-51單片機的復位信號是(A)有效。

A、高電平B、低電平C、脈沖D、下降沿

15、為了使模塊盡可能獨立,要求(B)。

A、模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強

B、模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C、模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D、模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強

16、若MCS-51單片機使用晶振頻率為6MHz時,其復位持續時間應該超過(B)。

A、2μsB、4μsC、8μsD、1ms

17、以下選項中可作為C語言合法常量的是(A)

A、-80B、-080C、-8e1.0D、-80.0e

18、能夠用紫外光擦除ROM中程序的只讀存儲器稱為(C)。

A、掩膜ROMB、PROMC、EPROMD、EEPROM

19、以下不能定義為用戶標識符是(D)。

A、MainB、_0C、_intD、sizeof

20、下選項中,不能作為合法常量的是(B)。//冪不能為小數

A、1.234e04B、1.234e0.4C、1.234e 4D、1.234e0

21、以下敘述中錯誤的是(C)

A、對于double類型數組,不可以直接用數組名對數組進行整體輸入或輸出

B、數組名代表的是數組所占存儲區的首地址,其值不可改變

C、當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界”的出錯信息

D、可以通過賦初值的方式確定數組元素的個數

22、以下與函數fseek(fp,0L,SEEK_SET)有相同作用的是(D)

A、feof(fp)B、ftell(fp)C、fgetc(fp)D、rewind(fp)

23、存儲16×16點陣的一個漢字信息,需要的字節數為(A)

A、32B、64C、128D、256

24、已知1只共陰極LED顯示器,其中a筆段為字形代碼的最低位,若需顯示數字1,則它的字形代碼應為(B)。

A、06HB、F9HC、30HD、CFH

25、在C語言中,合法的長整型常數是(A)

A、OLB、4962710C、324562&D、216D

26、以下選項中合法的字符常量是(B)

A、"B"B、’\010’C、68D、D

27、若PSW.4=0,PSW.3=1,要想把寄存器R0的內容入棧,應使用(D)指令。

A、PUSHR0B、PUSH@R0C、PUSH00HD、PUSH08H

28、在片外擴展一片2764程序存儲器芯片要(B)地址線。

A、8根B、13根C、16根D、20根

29、設MCS-51單片機晶振頻率為12MHz,定時器作計數器使用時,其最高的輸入計數頻率應為(C)

A、2MHzB、1MHzC、500kHzD、250kHz

30、下列數據字定義的數表中,(A)是錯誤的。

A、DW“AA”B、DW“A”C、DW“OABC”D、DWOABCH

三、判斷題

(√)1、在對某一函數進行多次調用時,系統會對相應的自動變量重新分配存儲單元。

(×)2、在C語言的復合語句中,只能包含可執行語句。

(√)3、自動變量屬于局部變量。

(×)4、Continue和break都可用來實現循環體的中止。

(√)5、字符常量的長度肯定為1。

(×)6、在MCS-51系統中,一個機器周期等于1.5μs。

(√)7、C語言允許在復合語句內定義自動變量。

(√)8、若一個函數的返回類型為void,則表示其沒有返回值。

(×)9、所有定義在主函數之前的函數無需進行聲明。

(×)10、定時器與計數器的工作原理均是對輸入脈沖進行計數。

(×)11、END表示指令執行到此結束。

(√)12、ADC0809是8位逐次逼近式模/數轉換接口。

(√)13、MCS-51的相對轉移指令最大負跳距是127B。

(×)14、MCS-51的程序存儲器只是用來存放程序的。

(√)15、TMOD中的GATE=1時,表示由兩個信號控制定時器的的啟停。

(×)16、MCS-51的特殊功能寄存器分布在60H~80H地址范圍內。

(×)17、MCS-51系統可以沒有復位電路。

(×)18、片內RAM與外部設備統一編址時,需要專門的輸入/輸出指令。

(√)19、鎖存器、三態緩沖寄存器等簡單芯片中沒有命令寄存和狀態寄存等功能。

(√)20、使用8751且=1時,仍可外擴64KB的程序存儲器。

四、簡答題

1、在使用8051的定時器/計數器前,應對它進行初始化,其步驟是什么?

答:(1)確定T/C的工作方式——編程TMOD寄存器;

(2)計算T/C中的計數初值,并裝載到TH和TL;

(3)T/C在中斷方式工作時,須開CPU中斷和源中斷——編程IE寄存器;

(4)啟動定時器/計數器——編程TCON中TR1或TR0位。

2、什么是重入函數?重入函數一般什么情況下使用,使用時有哪些需要注意的地方?

答:多個函數可以同時使用的函數,稱為重入函數。

通常情況下,C51函數不能被遞歸調用,也不能應用導致遞歸調用的結構。有此限制是由于函數參數和局部變量是存儲在固定的地址單元中。重入函數特性允許你聲明一個重入函數。即可以被遞歸調用的函數。

重入函數可以被遞歸調用,也可以同時被兩個或更多的進程調用。重入函數在實時應用中及中斷服務程序代碼和非中斷程序代碼必須共用一個函數的場合中經常用到。

3、8051引腳有多少I/O線?他們和單片機對外的地址總線和數據總線有什么關系?地址總線和數據總線各是幾位?

答:8051引腳共有40個引腳,8051的地址總線由P2和P0口提供,P2口是地址總線的高8位,P0口是地址總線的低8位;數據總線由P0口提供;P0口的地址總線和數據總線是分時進行的,P0口的地址總線需要外接地址鎖存器完成地址鎖存。

地址總線共16位,數據總線是8位。

4、在有串行通信時,定時器/計數器1的作用是什么,怎樣確定串行口的波特率?

答:在有串行通信時,定時器/計數器1的作用是串行口發生器。

串行口的波特率根據串行口的工作方式具有不同的計算方式:

方式0的波特率固定為晶體振蕩器的十二分之一;

方式1的波特率=2SMOD.(定時器1的溢出率)/32;

方式2波特率=2SMOD.(fosc/64);

方式3波特率同方式1(定時器l作波特率發生器)。

5、如何消除鍵盤的抖動?怎樣設置鍵盤中的復合鍵?

答:由于按鍵是機械開關結構,所以當用手按下其中一個鍵時,往往會出現所按鍵在閉合位置和斷開位置之間發生跳幾下后才會穩定到閉合狀態的情況。在釋放一個鍵時,也會出現類似的情況,這就是鍵的抖動,抖動的持續時間不一,但通常不會大于10ms。

若抖動問題不解決,就會引起對閉合鍵的多次讀入。對于鍵抖動最方便的解決方法就是當發現有鍵按下后,不是立即進行掃描,而是延時大約10ms后再進行。由于一個鍵按下的時間一般會持續上百毫秒,所以延遲10ms后再掃描處理并不遲。

復合鍵可以仿照計算機復合鍵的處理方法,通常可以假設一個鍵具有復合功能,再與其它減的鍵值組合成復合鍵。1、矩陣式鍵盤的結構與工作原理

在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。

矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。具體的識別及編程方法如下所述。

2、矩陣式鍵盤的按鍵識別方法

確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。

行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。

1、判斷鍵盤中有無鍵按下將全部行線Y0-Y3置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。

2、判斷閉合鍵所在的位置在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為 高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。

下面給出一個具體的例子:

圖仍如上所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個上拉電阻到正電源 5V,并把列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。

1、檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態,若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。

2、去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。

3、若有鍵被按下,應識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:

P1.71110

P1.61101

P1.51011

P1.40111

在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值

4、為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時的抖動。

鍵盤掃描程序:

從以上分析得到鍵盤掃描程序的流程圖如圖2所示。程序如下

SCAN:MOVP1,#0FH

MOVA,P1

ANLA,#0FH

CJNEA,#0FH,NEXT1

SJMPNEXT3

NEXT1:ACALLD20MS

MOVA,#0EFH

NEXT2:MOVR1,A

MOVP1,A

MOVA,P1

ANLA,#0FH

CJNEA,#0FH,KCODE;

MOVA,R1

SETBC

RLCA

JCNEXT2

NEXT3:MOVR0,#00H

RET

KCODE:MOVB,#0FBH

NEXT4:RRCA

INCB

JCNEXT4

MOVA,R1

SWAPA

NEXT5:RRCA

INCB

INCB

INCB

INCB

JCNEXT5

NEXT6:MOVA,P1

ANLA,#0FH

CJNEA,#0FH,NEXT6

MOVR0,#0FFH

RET

鍵盤處理程序就作這么一個簡單的介紹,實際上,鍵盤、顯示處理是很復雜的,它往往占到一個應用程序的大部份代碼,可見其重要性,但說到,這種復雜并不來自于單片機的本身,而是來自于操作者的習慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當的算法表示出來,最后再去寫代碼,這樣,才能快速有效地寫好代碼。

到本課為止,本站教程暫告一個段落!感謝大家的關心和支持!矩陣按鍵部分由16個輕觸按鍵按照4行4列排列,連接到JP50端口。將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。確定矩陣式鍵盤上何鍵被按下,介紹一種“行掃描法”。行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法.判斷鍵盤中有無鍵按下:將全部行線置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。判斷閉合鍵所在的位置:在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。下面給出一個具體的例子:電路圖路徑:G:\圖片\電路圖片\xl100097.jpg8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。1.檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態,若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。2.去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。3.若有鍵被按下,應識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:P1.71110P1.61101P1.51011P1.40111在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值。4.為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時的抖動。實驗目的:通過XL1000的16位矩陣按鍵,在數碼管上分別顯示0---9,A,B,C,D,E,F。接線方法:1用一條8PIN數據排線,把矩陣按鍵部份的JP50,接到CPU部份的P1口JP44.2接8位數碼管的數據線。將數碼管部份的數據口JP5接到CPU部份的P0口JP51.3接8位數碼管的顯示位線。將數碼管部份的顯示位口JP8接到CPU部份的P2口JP52.參考程序:;本程序實現掃描按鍵顯示功能.;分別按16個鍵盤顯示分別顯示數字123A456B789C*0#D;鍵盤口P1,數碼管顯示第二位p21,數碼管段位p0口org0000hajmpmainorg0030hmain:movdptr,#tab;將表頭放入DPTRlcallkey;調用鍵盤掃描程序movca,@a dptr;查表后將鍵值送入ACCmovp0,a;將Acc值送入P0口CLRP2.1;開顯示ljmpmain;返回反復循環顯示KEY:LCALLKS;調用檢測按鍵子程序JNZK1;有鍵按下繼續LCALLDELAY2;無鍵按調用延時去抖AJMPKEY;返回繼續檢測按鍵K1:LCALLDELAY2LCALLDELAY2;有鍵按下延時去抖動LCALLKS;再調用檢測按鍵程序JNZK2;確認有按下進行下一步AJMPKEY;無鍵按下返回繼續檢測K2:MOVR2,#0EFH;將掃描值送入R2暫存MOVR4,#00H;將第一列值送入R4暫存K3:MOVP1,R2;將R2的值送入P1口L6:JBP1.0,L1;P1.0等于1跳轉到L1MOVA,#00H;將第一行值送入ACCAJMPLK;跳轉到鍵值處理程序L1:JBP1.1,L2;P1.1等于1跳轉到L2MOVA,#04H;將第二行的行值送入ACCAJMPLK;跳轉到鍵值理程序進行鍵值處理L2:JBP1.2,L3;P1.2等于1跳轉到L3MOVA,#08H;將第三行的行值送入ACCAJMPLK;跳轉到鍵值處理程序L3:JBP1.3,NEXT;P1.3等于1跳轉到NEXT處MOVA,#0cH;將第四行的行值送入ACCLK:ADDA,R4;行值與列值相加后的鍵值送入APUSHACC;將A中的值送入堆棧暫存K4:LCALLDELAY2;調用延時去抖動程序LCALL KS;調用按鍵檢測程序JNZK4;按鍵沒有松開繼續返回檢測POPACC;將堆棧的值送入ACCRETNEXT:INCR4;將列值加一MOVA,R2;將R2的值送入AJNBACC.7,KEY;掃描完至KEY處進行下一掃描RLA;掃描未完將A中的值右移一位進行下一列的掃描MOVR2,A;將ACC的值送入R2暫存AJMPK3;跳轉到K3繼續KS:MOVP1,#0FH;將P1口高四位置0低四位值1MOVA,P1;讀P1口XRLA,#0FH;將A中的值與A中的值相異或RET;子程序返回DELAY2:;40ms延時去抖動子程序MOVR5,#08HL7:MOVR6,#0FAHL8:DJNZR6,L8DJNZR5,L7RETtab:db28h,34h,28h,34h,0a9h,60h,20h,7ah,20h,21h,61h,74h,30h,62h,0a2h,7eh;0h0hc9878654a321輪流顯示鍵盤因為無法表達*#就用H表示,B用8表示end這是我做成功的4X4鍵盤掃描源程序,P1.0-P1.3做四根列線,P1.4-P1.7做四根行線。

數碼管的字型表是按照標準接法做的,按對應的按鍵數碼管顯示對應的數字。

以下是源程序:

KEYBUFEQU30H

ORG00H

START:MOVKEYBUF,#2

MOVP2,#00001111B

WAIT:

MOVP1,#0FFH

CLRP1.4

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK1

MOVKEYBUF,#0

LJMPDK1

NK1:CJNEA,#0DH,NK2

MOVKEYBUF,#1

LJMPDK1

NK2:CJNEA,#0BH,NK3

MOVKEYBUF,#2

LJMPDK1

NK3:CJNEA,#07H,NK4

MOVKEYBUF,#3

LJMPDK1

NK4:NOP

DK1:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK1A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK1A

NOKEY1:

MOVP1,#0FFH

CLRP1.5

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK5

MOVKEYBUF,#4

LJMPDK2

NK5:CJNEA,#0DH,NK6

MOVKEYBUF,#5

LJMPDK2

NK6:CJNEA,#0BH,NK7

MOVKEYBUF,#6

LJMPDK2

NK7:CJNEA,#07H,NK8

MOVKEYBUF,#7

LJMPDK2

NK8:NOP

DK2:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK2A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK2A

NOKEY2:

MOVP1,#0FFH

CLRP1.6

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK9

MOVKEYBUF,#8

LJMPDK3

NK9:CJNEA,#0DH,NK10

MOVKEYBUF,#9

LJMPDK3

NK10:CJNEA,#0BH,NK11

MOVKEYBUF,#10

LJMPDK3

NK11:CJNEA,#07H,NK12

MOVKEYBUF,#11

LJMPDK3

NK12:NOP

DK3:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK3A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK3A

NOKEY3:

MOVP1,#0FFH

CLRP1.7

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

LCALLDELY10MS

MOVA,P1

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

MOVA,P1

ANLA,#0FH

CJNEA,#0EH,NK13

MOVKEYBUF,#12

LJMPDK4

NK13:CJNEA,#0DH,NK14

MOVKEYBUF,#13

LJMPDK4

NK14:CJNEA,#0BH,NK15

MOVKEYBUF,#14

LJMPDK4

NK15:CJNEA,#07H,NK16

MOVKEYBUF,#15

LJMPDK4

NK16:NOP

DK4:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A DPTR

MOVP0,A

DK4A:MOVA,P1

ANLA,#0FH

XRLA,#0FH

JNZDK4A

NOKEY4:

LJMPWAIT

DELY10MS:

MOVR6,#10

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

TABLE:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H;0-9

DB088H,083H,0C6H,0A1H,086H,08EH,089H,0CFH,0C7H,0C8H;A,B,C,D,E,F,H,I,L,N,

END;P3.1數據采集控制

;P2.6P2.7個位十位顯示轉換控制

;P1口接8個開關模擬數據

;P1.0-P1.3為個位開關量輸入

;P1.4-P1.7為十位開關量輸入

;此程序僅供參考

;功能P1口接8個開關輸入量4個一組,分別為個位,十位輸入

;P0口接一個數碼管,依次顯示輸入量。P3.1控制是否讀入

;開關量。P2.6P2.7控制是否顯示個位或十位

ORG100h

LJMPSTAR

STAR:MOVP1,#0FFH

SETBP3.1數據讀入標志

MOVR0,#100,循環工作次數

LOOP:JBP3.1,$P3.1低電平時,采集P1口數據開關量處理顯示階段不再應答P3.1

MOVA,P1

PUSHACC

ANLA,#0FH取個位數值

MOVR1,A個位數值保存到R1

POPACC

ANLA,#0F0H

SWAPA高4位轉成字節信息

MOVR2,A十位數值保存到R2

MOVDPTR,#TABLED

MOVA,R1

MOVCA,@A DPTR

MOVP0,A

CLRP2.6個位顯示

ACALLDELAY500MS

SETBP2.6

MOVA,R2

MOVCA,@A DPTR

MOVP0,A

CLRP2.7十位顯示

ACALLDELAY500MS

SETBP2.7

DJNZR0,LOOP

DELAY500MS:延時500毫秒子程略

RET

TABLED:DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

DB80H,90H,88h,83h,0c6h,0a1h,86h,8eh

END#include

typedefunsignedcharBYTE;

BYTEcodeTABLED[16]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0X0f8,0X80,0X90,0X88,0X83,0Xc6,0Xa1,0X86,0X8e};

BYTEDATled;

sbitP26=P2^6;

sbitP27=P2^7;

sbitP31=P3^1;

intTIME;

voidtimedelay(DTIME)

intDTIME;

{

intI;

for(I=0;I<=DTIME;I );

}

voidmain()

{

intTEMP;

P26=1;

P27=1;

P31=1;

P1=0xFF;

TIME=1000;

while(1){

while(P31==0){

DATled=P1;

TEMP=DATled&0x0f4;

P0=TABLED[TEMP];

P27=0;

timedelay(TIME);

P27=1;

}

}

}1.實驗任務在8X8 LED點陣上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環下去。2.電路原理圖圖4.24.13.硬件電路連線(1).把“單片機系統”區域中的P1端口用8芯排芯連接到“點陣模塊”區域中的“DR1-DR8”端口上;(2).把“單片機系統”區域中的P3端口用8芯排芯連接到“點陣模塊”區域中的“DC1-DC8”端口上;4.程序設計內容(1).8X8 點陣LED工作原理說明8X8點陣LED結構如下圖所示圖4.24.2從圖4.24.2中可以看出,8X8點陣共需要64個發光二極管組成,且每個發光二極管是放置在行線和列線的交叉點上,當對應的某一列置1電平,某一行置0電平,則相應的二極管就亮;因此要實現一根柱形的亮法,如圖49所示,對應的一列為一根豎柱,或者對應的一行為一根橫柱,因此實現柱的亮的方法如下所述:一根豎柱:對應的列置1,而行則采用掃描的方法來實現。一根橫柱:對應的行置0,而列則采用掃描的方法來實現。5.匯編源程序

ORG00H

START:NOP

MOVR3,#3

LOP2:MOVR4,#8

MOVR2,#0

LOP1:MOVP1,#0FFH

MOVDPTR,#TABA

MOVA,R2

MOVCA,@A DPTR

MOVP3,A

INCR2

LCALLDELAY

DJNZR4,LOP1

DJNZR3,LOP2

MOVR3,#3

LOP4:MOVR4,#8

MOVR2,#7

LOP3:MOVP1,#0FFH

MOVDPTR,#TABA

MOVA,R2

MOVCA,@A DPTR

MOVP3,A

DECR2

LCALLDELAY

DJNZR4,LOP3

DJNZR3,LOP4

MOVR3,#3

LOP6:MOVR4,#8

MOVR2,#0

LOP5:MOVP3,#00H

MOVDPTR,#TABB

MOVA,R2

MOVCA,@A DPTR

MOVP1,A

INCR2

LCALLDELAY

DJNZR4,LOP5

DJNZR3,LOP6

MOVR3,#3

LOP8:MOVR4,#8

MOVR2,#7

LOP7:MOVP3,#00H

MOVDPTR,#TABB

MOVA,R2

MOVCA,@A DPTR

MOVP1,A

DECR2

LCALLDELAY

DJNZR4,LOP7

DJNZR3,LOP8

LJMPSTART

DELAY:MOVR5,#10

D2:MOVR6,#20

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

DJNZR5,D2

RET

TABA:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH

TABB:DB01H,02H,04H,08H,10H,20H,40H,80H

END

6.C語言源程序

#include

unsignedcharcodetaba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f0;j--);

}

voidmain(void)

{

unsignedchari,j;

while(1)

{

for(j=0;j<3;j )

//fromlefttoright3time

{

for(i=0;i<8;i )

{

P3=taba[i];

P1=0xff;

delay1();

}

}

for(j=0;j<3;j )

//fromrighttoleft3time

{

for(i=0;i<8;i )

{

P3=taba[7-i];

P1=0xff;

delay1();

}

}

for(j=0;j<3;j )

//fromtoptobottom3time

{

for(i=0;i<8;i )

{

P3=0x00;

P1=tabb[7-i];

delay1();

}

}

for(j=0;j<3;j )

//frombottomtotop3time

{

for(i=0;i<8;i )

{

P3=0x00;

P1=tabb[i];

delay1();

}

}

}

}LED點陣顯示實驗一.實驗要求

編程實現中英文字符的顯示。

二.實驗目的

1.了解LED點陣顯示的基本原理和實現方法。

2.掌握點陣漢字庫的編碼和從標準字庫中提取漢字編碼的方法。

三.實驗電路及連線

點陣顯示模塊WTD3088的(紅色)列輸入線接至內部LED的陰極端,行輸入線接至內部LED的陽極端(若陽極端輸入為高電平,陰極端輸入低電平,則該LED點亮)。發光點的分布如圖22-0所示。

Fig22-0WTD3088LED分布

如圖22-1示,本實驗模塊使用74LS374來控制列輸入線的電平值。將74LS374的某輸出置0,則對應的LED陰極端被置低。如圖22-2示,本實驗模塊使用74LS273來控制行輸入線,并通過9013提供電流驅動。將74LS273的某輸出置1,則對應的LED陽極端被置高。每次系統重新開啟或總清后,74LS273輸出為全0,LED顯示被關閉。

通過編程控制各顯示點對應LED陽極和陰極端的電平,就可以有效的控制各顯示點的亮滅。

Fig22-1LED模塊及列掃描電路Fig22-2行掃描電路

Fig22-3地址譯碼電路

本實驗模塊使用4塊WTD3088組成16×16點陣,以滿足漢字顯示的要求。為了方便的控制四個單元,使用了一片74LS139譯碼,產生四個地址片選信號:CLKR1=CSLED,CLKR2=CSLED 1,用于行控制的兩片74LS273;CLKC1=CSLED 2,CLKC2=CSLED 3,用于列控制的兩片74LS374。

實驗接線:按示例程序,模塊的CSLED接51/96地址的8000H。

四.實驗說明

使用高亮度LED發光管構成點陣,通過編程控制可以顯示中英文字符、圖形及視頻動態圖形。LED顯示以其組構方式靈活、亮度高、技術成熟、成本低廉等特點在證券、運動場館及各種室內/外顯示場合得到廣泛的應用。

所顯示字符的點陣數據可以自行編寫(即直接點陣畫圖),也可從標準字庫(如ASC16、HZ16)中提取。后者需要正確掌握字庫的編碼方法和字符定位的計算。

實驗盤片中“字符轉換”子目錄下提供的Basc16.exe,BHz16.exe可方便的將單個字符的碼表從標準字庫Asc16,Hzk16中提取出來。具體使用方法是運行上述可執行程序,根據提示輸入所需字符(如是漢字還需要先啟動dos下的漢字環境,如ucdos,pdos95等)。程序將該字符的碼表提取出來,存放在該字符ASC或區位碼為文件名稱的.dat文件中。用戶只需將該文件中內容拷貝、粘貼到自己的程序中即可。但需要注意字節排列順序、字節中每一位與具體顯示點的一一對應關系,必要時還要對碼表稍作修改。同一目錄下還提供了上述可執行程序的源文件,使用BC3.1編寫,供用戶參考。

五.實驗程序框圖

用戶應留心其中行掃描的實現及碼表的處理。

六.實驗程序:(一)提供LEDA51演示Asc16字符的簡單點陣顯示。

;________*LED點陣顯示示例程序______________________*

;__該程序顯示Asc16字符__

;__為了簡單起見,程序只顯示一個字符__

;__該程序針對T598實驗機的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQUCSLED 2H;列1374

CSC2EQUCSLED 3H;列2374

ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關閉行

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關閉列

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSC2

MOVX@DPTR,A

D:MOVR5,#00H

MOVR4,#01H;每次為單行掃描

DISP:

MOVA,R5

MOVDPTR,#ASCE;此處設定所要顯示的字符

MOVCA,@A DPTR

CPLACC;代碼取反,決定顯示的陰陽

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVDPTR,#CSR1

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#8H,DISP

MOVA,#0H

MOVX@DPTR,A

MOVR5,#08H

MOVR4,#01H

DISP2:

MOVA,R5

MOVDPTR,#ASCE

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#10H,DISP2

MOVA,#0H

MOVX@DPTR,A

SJMPD

;________延時子程序,協調字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點陣字庫______________*

;ASC16字符編碼排列

;0

;1

;|

;|

;14

;15

;高位D7--D0

;請注意編碼的排列次序和實際顯示點陣分布的關系

ASCA:DB00H,00H,10H,38H,6CH,0C6H,0C6H,0FEH

DB0C6H,0C6H,0C6H,0C6H,00H,00H,00H,00H

ASCE:DB00H,00H,0FEH,66H,62H,68H,78H,68H

DB60H,62H,66H,0FEH,00H,00H,00H,00H

ASCD:DB00H,00H,0F8H,6CH,66H,66H,66H,66H

DB66H,66H,6CH,0F8H,00H,00H,00H,00H

ASCK:DB00H,00H,0E6H,66H,66H,6CH,78H,78H

DB6CH,66H,66H,0E6H,00H,00H,00H,00H

;____________________________________________________

END

(二)LEDHZ51兩個示例程序。和Hz16字符的簡單點陣顯示。

;________*LED點陣顯示示例程序______________________*

;__該程序顯示hz16字符__

;__為了簡單起見,程序只顯示一個字符__

;__該程序針對T598實驗機的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQU CSLED 2H;列1374

CSC2EQUCSLED 3H;列2374

ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關閉LED顯示

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關閉LED顯示

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSC2

MOVX@DPTR,A

D:MOVR5,#00H

MOVR4,#01H

DISP:

MOVA,R5

RLACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVA,R5

RLACC

INCACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSR1

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#8H,DISP

MOVA,#0H

MOVX@DPTR,A

MOVR5,#08H

MOVR4,#01H

DISP2:

MOVA,R5

RLACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC2

MOVX@DPTR,A

MOVA,R5

RLACC

INCACC

MOVDPTR,#HZAI

MOVCA,@A DPTR

CPLACC

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVA,R4

MOVX@DPTR,A

RLACC

MOVR4,ACC

INCR5

LCALLDELAY

CJNER5,#10H,DISP2

MOVA,#0H

MOVX@DPTR,A

SJMPD

;________延時子程序,協調字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點陣字庫______________*

;HZ16字符編碼排列

;01

;23

;|

;|

;2829

;3031

;高位D7--D0

HZAI:DB00H,78H,3FH,80H,11H,10H,09H,20H

DB7FH,0FEH,42H,02H,82H,04H,7FH,0F8H

DB04H,00H,07H,0F0H,0AH,20H,09H,40H

DB10H,80H,11H,60H,22H,1CH,0CH,08H

HZDI:DB00H,80H,40H,80H,20H,88H,2FH,0FCH

DB08H,88H,08H,88H,0E8H,88H,2FH,0F8H

DB28H,88H,28H,88H,28H,88H,2FH,0F8H

DB28H,08H,50H,06H,8FH,0FCH,00H,00H

HZKE:DB01H,00H,01H,04H,0FFH,0FEH,01H,00H

DB01H,10H,1FH,0F8H,10H,10H,10H,10H

DB10H,10H,1FH,0F0H,14H,50H,04H,40H

DB04H,40H,08H,42H,10H,42H,60H,3EH

;____________________________________________________

END基于89C51的計算機可鎖定加密鍵盤設計摘要:介紹PC鍵盤和鍵盤接口的PS/2通信協議,以及用89C51實現可鎖定鍵盤的軟件和硬件設計方法。具有安全可靠、容錯能力強、可以直接采用標準鍵盤進行改裝、便于實現等優點,并保留標準鍵盤的全部功能。關鍵詞:PS/289C51C51鍵盤引言

在智能儀器、自動控制等領域,已大量使用嵌入式PC,如Advantech公司的PC/104、AMD公司的DIMM-PC等。為適應開放式、模塊化的要求,嵌入式PC具有標準的PC接口,如VGA顯示器控制接口、以太網接口、RS232接口、PC/AT鍵盤接口等。所以,可以用標準的PC鍵盤對嵌入式PC進行操作與控制。鍵盤在輸入指令之后,可能很長一段時間不用。為計算機安全和防止誤觸發,需要將鍵盤鎖定,還要對某些鍵采取屏蔽措施,但是PC標準鍵盤不能滿足這些要求。本文介紹一種用89C51設計實現的可鎖定加密PC/AT鍵盤。

1鍵盤功能及工作原理

PC鍵盤功能主要有按鍵識別、去抖、重鍵處理、發送掃描碼、自動重發、接收鍵盤命令、處理命令等。鍵盤有編碼鍵盤和非編碼鍵盤。編碼鍵盤程序設計簡單,但硬件電路復雜,價格較高;非編碼鍵盤用軟件來實現識別鍵、編碼轉換、去抖等功能,硬件電路簡單,價格便宜?,F代微機系統中廣泛采用非編碼鍵盤。PC鍵盤多采用18行×8列的二維矩陣行列結構。采用行掃描法識別按下的按鍵。2PS/2協議

PS/2協議是外設與主機之間通信的一種同步雙向串行協議。在該協議中主機擁有較高的優先級,在一定條件下可以終止外設正在進行的發送過程。PS/2協議采用的傳送數據幀的格式為:1位起始位(0)、8位數據位、1位奇偶校驗位、1位停止位(1)。數據發送時低位在前,高位在后。外設每收到主機發來的1幀數據,都要緊隨該幀的停止位發送一個握手位ACK(0)應答主機。然后,外設還要發1幀應答數據(0xF0),表示外設已經完整地接收到了主機的命令;而主機則不需發送握手位,也不需要發送應答幀。

2.1鍵盤到PC鍵盤接口的通信

當時鐘線和數據線均為高電平時,允許鍵盤發送數據,系統將接收數據;當時鐘線被拉為低電平時,表明系統禁止數據傳輸。圖1給出了發送時序,包含1個低電平觸發的起始位、8位數據位、1個奇校驗位和1個高電平的結束位。2.2PC系統到鍵盤的通信協議

若時鐘線出現高電平,數據線出現低電平,表明系統請求發送,鍵盤準備產生同步時鐘脈沖串,并接收數據。包含了1個低電平觸發的起始位、8位數據位、1個奇校驗位、1個應答位、1個高電平的結束位。圖2為時序圖。(1)鍵盤命令及執行過程①FFH:復位鍵盤。系統通過此軟件復位命令使鍵盤進入程序復位和內部自測試,稱為基本保證測試(BAT)。復位鍵盤的過程如下:a.鍵盤收到FFH后立即回送ACK(FAH)作答;b.鍵盤接口收到ACK后,將鍵盤時鐘和數據線置為高電平;c.鍵盤檢測到此狀態后開始BAT操作;d.如果BAT正確完成,鍵盤發送AAH以表示結束,

否則以FDH(或其它任何值)表示診斷有誤。②FEH:重新發送。當系統檢測到從鍵盤送來的任何傳輸錯誤時,它便向鍵盤發送FEH命令。鍵盤接收到此命令后,將重新送出原來的內容。③FDH~F7H:空操作(保留未用)。④F6H:設置缺省值。此命令使鍵盤所有條件復位到電源接通時的缺省狀態,鍵盤繼續掃描。⑤F5H:設置缺省值和停止鍵盤。此命令使鍵盤所有條件復位到電源接通時的缺省狀態,并停止鍵盤掃描,等待下一個鍵盤命令。⑥F4H:啟動鍵盤。鍵盤接收到此命令后,用ACK(FAH)作答,清除輸出緩沖器,并啟動鍵盤開始掃描。⑦F3H:設置拍發速率和延時參數。每當按下任 一鍵時,鍵盤以拍發速率連續送出鍵的接通碼,直到鍵被釋放為止。延時參數是指按下一鍵后,鍵盤輸出的響應時間。

系統缺省設置:拍發速率=10個/s±20,延時=500ms±20。

當要改變設置時可以使用F3H命令,并后跟一個字節的參數。參數定義如表1所列。

表1D7D6D5D4D3D2D1D00CBA

計算拍發速率和響應延時的公式如下:

拍發速率=1/[(8 A)×2B×0.00417](1/s)

響應延時=(1 C)×250(ms)注:缺省的延時參數值為2CH。此命令的執行過程如下:a.鍵盤收到F3H命令后,用FAH予以響應,并停止掃描和等待隨后的參數;b.鍵盤若收到隨后的設置參數,用另一個ACK響應,并按其參數設置新的拍發速率和響應延時,之后重新開始掃描(若鍵盤原來是開放的);c.鍵盤若收到FAH命令,但無隨后的設置參數,則鍵盤結束命令設置,并保持原來的拍發速率和響應延時,停止掃描。⑧F2H,F1,EFH:保留未用。⑨F0H:設置鍵盤掃描碼命令。此命令用于設置鍵盤的掃描碼,后跟參數指定三種掃描碼的哪一種。鍵盤復位時,默認掃描碼是第二種。⑩EEH:回送命令。此命令用于輔助診斷,要求鍵盤接收到EEH時也要回送EEH予以響應。若鍵盤原來是開放的,則繼續掃描。EDH:置位/復位LED指示器。鍵盤右上角有三個LED指示器,分別反映Caps、Num和Scroll三個鍵的鎖定情況。參數字節如表2所列。

表2D7D3D2D1D0保留1=激勵CapsLED1=激勵NumLED1=激勵ScrollLED

此命令執行過程與F3H相似。若命令后跟參數,則按參數設定LED狀態并繼續掃描。若僅有命令無參數,則不改變LED原狀態,并停止掃描。(2)鍵盤響應鍵盤在下列四種情況下都會向鍵盤接口發送數據。①按下任一鍵,鍵盤以拍發速率向接口發送鍵盤接通掃描碼。②釋放所按下的鍵,鍵盤發送斷開掃描碼。③系統向鍵盤發送鍵盤命令后,鍵盤回送應答。④當用戶按鍵速度超出鍵盤所能容納的最大鍵個數時,鍵盤做出響應。后三種情況稱為鍵盤響應。響應字節有7個,定義如下。

①FEH:重新發送響應。當鍵盤收到一個無效的鍵盤命令,或者檢測到奇偶錯的鍵盤命令時,鍵盤回送響應字節為FEH,要求系統重發鍵盤命令。②FAH:正常應答。對任何一個有效的鍵盤命令,鍵盤回送FAH予以響應。③00H:超限應答。當用戶按鍵速度超出鍵盤所能容納的最大鍵符個數時(16個字節的緩沖器),鍵盤發送00H。④FDH:診斷故障應答。鍵盤接受軟件復位命令,執行自測試過程中。若檢測到故障,則以FDH應答。此時,鍵盤停止掃描并等待下一個鍵盤命令。⑤AAH:診斷正常應答。鍵盤在軟件復位過程中,正常完成BAT測試,以AAH應答。⑥FEH:回響命令的應答,對鍵盤FEH命令的應答。⑦F0H:斷開掃描碼前綴,鍵盤對鍵符按下后釋放的應答,第一個字節為F0H,第二個字節為接通掃描碼(有幾個鍵例外)。3硬件設計

PC系列鍵盤采用18行×8列的矩陣行列結構。89C51單片機有4個8位I/O端口,因此可以采用P0、P2口再加上P3口的2個(P3.6和P3.7)作為行掃描線。P1口作為列輸入線(如果用P0口作列輸入線,必須加上拉電阻)。采用P3.0、P3.1作為數據線和時鐘線與PC系統進行通信,用P3.2、P3.4、P3.5控制鍵盤上的3個指示燈。硬件原理如圖3所示。

鍵盤與計算機通過一個五芯(PS/2接口為六芯)插座相接,4個有效引腳的定義分別是電源(VCC)、地(GND)、串行時鐘線(SCK)、串行數據線(SIO)。

4軟件設計①消抖及重鍵處理:通過軟件上延時程序來消除抖動;采用后按鍵優先處理,即多鍵同時按下時,只重復發送最后按下鍵的掃描碼。②程序包括鍵盤掃描子程序、發送鍵碼子程序、發送數據子程序、接收命令子程序、定時器1中斷服務程序、主程序等。鍵盤掃描子程序用于掃描鍵狀態,將被按鍵的位置號存入緩沖器中;發送鍵碼子程序用于將緩沖區鍵的接通碼或斷開碼發送給計算機鍵盤接口或者存在鍵盤密碼緩沖區中;發送數據子程序用于將數據發給計算機鍵盤接口;接收命令子程序用于接收計算機鍵盤接口發來的鍵盤命令;定時器1中斷服務子程序用于給程序中的延時提供標準時鐘,并具有軟件看門狗功能,防止軟件出現死機現象;主程序用于系統初始化,子程序調度,鎖定狀態的顯示等。

圖6發送緩沖區鍵碼子程序流程圖

圖4~6是主要軟件模塊的流程圖。單片機源程序見本刊網絡補充版(.com)。

5結論

本文介紹的PC/AT鍵盤具有結構簡單、設計靈活、安全可靠的特點,可用于標準PC和嵌入式PC。本鍵盤可以在標準的鍵盤基礎上進行改造,只需換掉原來的控制芯片即可,可節省設計成本。單片機C51編程幾個有用的模塊(1)KeilC51常用功能模塊使用說明

說明

本文檔包括單片機系統中常用到的時鐘中斷、通訊及鍵盤掃描等模塊(見所附源程序)的說明。這些模塊使用前后臺系統模型。為達到最大的靈活性,需要在用戶工程中定義config.h文件,在其中定義各模塊可選參數的設置,而不是直接更改源代碼。

這些可選內容大部分為宏定義,如果不定義宏相應的功能在編譯時被屏蔽,不會增加代碼長度。具體可選內容見各模塊中的說明。

在Config.h文件中還要包含一個單片機硬件的資源頭文件。

各模塊使用了定義在Common.h中的一些數據類型。如:BIT(bit)BYTE(unsignedchar)等,具體請參見源程序。

時鐘模塊

在單片機軟件設計中,時鐘是重要資源,為了充分利用時鐘資源,故設計本時鐘模塊。本模塊使用定時器0,在完成用戶指定功能的同時,還能夠自動處理一些其它模塊中與時鐘相關的信息。

時鐘模塊由聲明文件Timer.h以及實現文件Timer.c組成。

用戶應該在Config.h中定義宏TIMER_RELOAD來設定定時器0的重裝載初值。推薦的定時器0的中斷時間大于1毫秒。

在程序的初始化階段調用時鐘模塊的初始化函數InitTimerModule()之后,就可以使用時鐘模塊所以支持的各種功能。具體描述如下:

延時:當用戶需要進行一定時間的延時時,可以通過調用Delay()來進行,參數為時鐘中斷的次數。如時鐘中斷周期為1ms,想進行100ms的延時,則可以調用Delay(100)。

注意:

如果延時的絕對時間小于時鐘中斷的周期,則不能夠用本方法做到延時。

定時:當程序中需要使用定時功能時,如等待某外部事件,如果在一定時間內發生則繼續執行,如果在這段時間內發生,則認為出現錯誤,轉向錯誤處理機制。

在此推薦一種編程模式,但用戶可以用自己認為更合理的方式處理此類問題。

這里簡單說明一下關于阻塞式函數及非阻塞式函數。簡單說,阻塞式函數就是當檢測完成條件,如果不能夠完成則等待,如:

voidCheckSomething()

{

//gbitSuccessFlagisaglobalvariable

while(gbitSuccessFlag==FALSE)

{

//donothingbutwaiting

}

}

可以看到,當bitSuccessFlag沒有被設置為TRUE時,函數保持等待狀態不返回,這樣就是阻塞式的函數。

另外一種情況:

BITCheckSomething()

{

if(gbitSuccessFlag==TRUE)

{

//…

returnTRUE;

}

returnFALSE;

}

在這里,如果所檢測的事件有沒有完成,函數進行檢測之后,立刻返回, 通過返回值報告完成情況,如果沒有完成,則等待調用者分配再次執行的機會。這樣的函數就是非阻塞函數。

在應用定時功能時,首先要將檢測函數定義成非阻塞函數。如上面的第二個版本的CheckSomething。

然后下面模式:

BITbitDone=FALSE;

ResetClock();//cleartimerinterrupttimescounter

while(GetClock()

{

if(CheckSomething()==TRUE)

{

bitDone=TRUE;

break;

}

}

if(bitDone==FALSE)

{

//processtimeout

}

或者簡單寫成:

BITbitDone=FALSE;

ResetClock();

while(GetClock()=(z))

當然,用戶也可以將IsPackageHeader和IsPackageTailer定義成為函數,通過BIT類型的返回值來向調用者提供與相應宏相同的信息。

另一種辦法需要在Config.h文件中定義宏SCOMM_ComplexPackageFormat。(需要注意的是,不能夠同時定義SCOMM_SimplePackageFormat和SCOMM_ComplexPackageFormat宏,否則會造成嚴重的不可預見性錯誤。

這時需要提供回調函數QueryPackageFormat,原形如下:

BYTEQueryPackageFormat(BYTEbyData,BYTEbyCount,BYTEbyParam);

函數中三個參數的含義與使用簡單數據包格式時判斷數據包尾的宏的參數相同。

函數通過返回值來通知作為調用者的接收函數對接收到的數據如何處理,但目前這種方法僅為需要處理復雜數據包格式時的一種可選方法,但不推薦。用戶如果想使用這種方法可以自己更改接收函數中相應的

#ifdefSCOM_ComplexPackageFormat

#endif//SCOMM_ComplexPackageFormat

預編譯指令之間的內容。

例如指定QueryPackageFormat的返回值的含義:

0:繼續找數據包頭或繼續找數據包尾。

1:找到數據包頭。

2:找到數據包尾。

3:數據包出錯,需要拋棄。

然后更改源代碼來實現上面的協議。

注意:當用戶需要使用字符串的時候,可以利用簡單的包裝函數將字符串轉換為字節數組。所以沒有必要提供專用的字符串處理函數。

鍵盤掃描模塊

鍵盤掃描模塊有兩種工作方式,一種為自動的由時鐘模塊調用,另一種是由程序員自行調用。

1)由時鐘模塊自動調用的方式

將時鐘模塊實現文件(Timer.h)及鍵盤掃描模塊的實現文件(KBScan。c)包含進工程,在Config.h文件中添加TIMER_KBSCANDELAY宏。時鐘模塊自動對時鐘中斷進行計數,當達到TIMER_KBSCANDELAY宏所定義的值后,自動調用鍵盤掃描模塊中的函數KBScanProcess()進行鍵盤掃描,也就是說,這個宏的值可以決定按鍵消抖動的時間。

用戶應該提供兩個回調函數OnKBScan()及OnKeysPressed()。在函數OnKBScan中進行鍵盤掃描,并返回掃描碼。掃描碼的類型缺省為BYTE,當鍵盤規模較大時,BYTE不能夠完全包含鍵盤信息時,可在Config.h文件中重定義宏KBvalue,如下:

#defineKBvalueWORD

這樣,就可以使用16位的鍵盤掃描碼,如果此時還達不到要求,可以將鍵盤掃描碼定義成一個結構,但這樣做將會增加代碼量及消耗更多的RAM資源,故不推薦。

掃描模塊調用OnKBScan取得掃描碼,并調用用戶可以重定義的宏IsNoKeyPressed來判斷是否有鍵按下,缺省的IsNoKeyPressed實現如下:

#defineIsNoKeyPressed(x)((x)==0x00)

即認為OnKBScan返回0掃描碼時為沒有鍵按下,如果掃描函數返回其它非零掃描碼做為無鍵按下的掃描碼時,可以在Config.h文件中重定義IsNoKeyPressed宏的實現。

8位鍵盤掃描碼(缺省值)時,相應的掃描函數為:

BYTEOnKBScan()

當掃描模塊經過軟件消抖動之后,發現有鍵按下,就會調用另一個回調函數OnKeysPressed。函數的聲明應該如下:

voidOnKeyPressed(BYTEbyKBvalue,BYTEbyState)

其中中的參數byKBvalue的類型為BYTE,此為缺省值,如果使用其它類型的掃描碼,就將此參數變為相應類型。這個值由OnKBScan返回。另一個參數byState在通常情況下為零。但當用戶在Config.h中定義宏KBSCAN_BRUSTCOUNT,同時鍵盤上的某鍵被按住不放時,掃描模塊對它自己的調用(注意這里和TIMER_KBSCANDELAY宏不同,TIMER_KBSCANDELAY是時鐘中斷足夠的次數后調用掃描模塊,而KBSCAN_BRUSHCOUNT為掃描模塊自身的被調用次數)進行計數,當達到KBSCAN_BRUSTCOUNT時,掃描模塊調用OnKeysPressed,此時第一個參數的含義不變,而byState變成1,同時計數器復位,又經過一段時間后,用值為3的byState調用OnKeysPressed。這樣就可以很方便的實現多功能鍵或者檢測某鍵的長時間被按下。

2)由用戶自行調用

由用戶自行在程序中調用掃描模塊,而不是由時鐘中斷自行調用。其它與方式1相同。

注意:

1)函數KBScanProcess為非阻塞函數,它將在很快的時間內返回,等待再次分配給它執行的機會。

2)函數KBScanProcess是在時鐘中斷外部運行的,它的過程可以被任何中斷打斷,但不影響系統運行。

3)byState的最大值為250,之后被復位為零。應用舉例

現在來舉例說明上述幾個模塊的使用方法。

硬件環境描述:

為了控制一盞燈,需要單片機提供一個做控制功能的開關量,這里不描述外部接口電路,只說明當單片機的P10腳為高電平時,燈滅,當P10腳為低電平時,燈亮。

可以通過計算機由串口發送命令來控制,或通過一個按鍵(pushbutton不是自鎖式的按鍵)來手動控制(按鍵接在P11腳上,當鍵沒有按下時,P11電平為高,鍵按下時,引腳電平被接低),當使用按鍵手動控制的時候,需要給計算機發送通知。

設定串口通訊指令如下:

數據包由0xff做包頭,4個字節長,第二個字節為命令代碼,第三個字節為數據,最后一個字節為校驗位。

命令和數據代碼有如下組合:

(計算機發給單片機)

0x100x01:計算機控制燈亮。(數據位是非零值即可)

0x100x00:計算機控制燈滅。

(單片機發給計算機)

0x110x01:單片機正常執行控制指令,返回。(數據位是非零值即可)

0x110x00:單片機不能夠正常執行控制指令,或控制指令錯(不明含義的數據包或校驗錯等)。

0x120x01:手動控制燈亮。(數據位是非零值即可)

0x120x00:手動控制燈滅。

建立工程:

在硬盤上建立文件夾Projects,在Projects下建立Common文件夾及Example文件夾。將各模塊的頭文件及實現文件拷貝到Common文件夾下(推薦使用這樣的文件組織結構,其它工程也可以建立在Projects下,各工程共享Common文件夾中的代碼)。

啟動KeilC的IDE,在Example下建立新工程,將各模塊的實現文件包含進工程。

在Example文件夾下建立Output文件夾,更改工程設置,將Output作為輸出文件和List文件的輸出文件夾(推薦使用這樣的結構, 當保存工程文件時,可以簡單的刪除Output文件夾中的內容而不會誤刪有用的工程文件)。

建立工程配置頭文件Config.h及工程主文件Example.c,并將Exmaple.c文件加入工程。

輸入代碼:

代碼的具體編寫過程略。下面是最后的Config.h文件及Example.c文件。

//

//file:onfig.h

//

#ifndef_CONFIG_H_

#define_CONFIG_H_

#include//使用AT89C52做控制

#include“../Common/Common.h”//使用自定義的數據類型

#defineTIMER_RELOAD922//11.0592MHz晶振,1ms中斷周期

#defineTIMER_KBSCANDELAY40//40ms重檢測按鍵狀態,即40ms消抖

#defineSCOMM_AsyncInterface//使用異步通訊服務

#defineIsPackageHeader(x)((x)==0xff)//判斷包頭是不是0xff

#defineIsPackageTailer(x,y,z)((y)<=(z))//判斷包的長度是不是足夠

#endif//_CONFIG_H_

//

//file:xample.c

//

#include

#include“../Common/Common.h”

#include“../Common/Timer.h”

#include“../Common/Scomm.h”

#include“../Common/KBScan.h”

BITgbitLampState=1;//燈的狀態,缺省為off

staticvoidInitialize()

{

InitTimerModule();//初始化時鐘模塊

InitSCommModule(0xfd,TRUE);//初始化通訊模塊,11.0592MHz晶振,

//波特率為19200

EA=1;//開中斷

}

voidmain()

{

Initialize();//初始化

while(TRUE)//主循環

{

ImpTimerService();//實現時鐘中斷服務,如鍵盤掃描

AsyncRecePackage(4);//接收4個字節長的數據包

}

}

//在中斷外部響應時鐘中斷事件

voidOnTimerEvent()

{

//donothing

}

//控制外部燈

staticvoidTriggerLamp(BITbEnable)

{

P10=~bEnable;//需要反相控制

}

//鍵掃描回調函數

BYTEKBScan()

{

BITb;

P11=1;//讀之前拉高引腳電平

b=P11;//讀入引腳狀態

return~b;//數據反相做掃描碼

}

//計算校驗和

staticBYTECalcCheckSum(BYTE*pbyBuf,BYTEbyLen)

{

BYTEby,bySum=0;

for(by=0;by

return0–bySum;

}

//接收到鍵盤消息回調函數

voidOnKeyPressed(BYTEbyvalue,BYTEbyState)

{

BYTEby[4];

if(byState==0)

{

switch(byvalue)

{

case0x01:

gbitLampState=~gbitLampState;//燈狀態取反

TriggerLamp(gbitLampState);//執行控制

by[0]=0xff;//構造數據包

by[1]=0x12;

by[2]=(BYTE)gbitLampState;

by[3]=CalcCheckSum(by,3);//求校驗和

SendPackage(by,4);//發送數據包

break;

//處理其它掃描碼

default:

break;

}

}

//接收到數據包回調函數

voidOnRecePackage(BYTE*pbyBuf,BYTEbyBufLen)

{

BYTEby[4];

by[0]=0xff;

by[1]=0x11;

if(byBufLen!=4||pbyBuf[3]!=CalcCheckSum(pbyBuf,3))

{

by[2]=0;

by[3]=CalcCheckSum(by,3);

SendPackage(by,4);//處理長度或校驗和不正確

}

switch(pbyBuf[1])

{

case0x10:

gbitLampState=(BIT)pbyBuf[2];

TriggerLamp(gbitLampState);

by[2]=1;

by[3]=CalcCheckSum(by,3);

SendPackage(by,4);//發送成功執行通知

break;

default://不知道的命令

by[2]=0;

by[3]=CalcCheckSum(by,3);

SendPackage(by,4);//發送沒有成功執行通知

break;

第7篇

關鍵詞:單片機原理;考試改革;Proteus軟件

中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)22-0133-02

一、前言

單片機又稱為單片微型計算機,是計算機體系的一個重要分支,也是現今較為流行的嵌入式系統的一部分。由于其體積小、控制功能強、成本低等特點可方便地組裝成各種智能控制設備和儀器,做到機電一體化,因此廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程控制等領域,可以說單片機已經滲透到我們生活的方方面面。單片機原理及應用課程也是目前高校計算機、電子、電氣、自動化等專業均開設的一門專業課。由于該課程是一門理論性、實踐性都很強的課程,因此該課程對實驗教學有很高的要求,實驗教學在學生學習的過程中占了很重要的地位。但是,目前很多高校的單片機課程實踐教學環節及考核方式都存在著一些問題。學生在傳統的以理論考核為主的學習方式下很難激發學生的學習興趣,很難提高動手能力。通過考試改革,使學生在重視基礎知識學習的同時,更加注重實踐能力和動手能力的境況,促進創新精神的形成。

二、目前的教學考核形式及存在的問題

《單片機原理及應用》課程是一門專業課,其前續課程主要有《電路》、《數字電子技術》、《微機原理》等,課程理論教學的主要內容包括以下幾方面:(1)單片機的硬件系統結構。包括單片機的基本組成,CPU結構及時序,RAM、ROM的組織結構及擴展,并行I/O接口的基本原理等。(2)單片機指令系統。包括單片機尋址方式及指令,匯編語言程序設計等。(3)單片機接口技術及應用。包括單片機系統開發的基本方法和步驟,單片機系統擴展及外部的接口,單片機的綜合應用等內容??己酥饕蚤]卷的考試為主,學生的總評成績這樣劃分:平時作業、實驗成績和考勤各占10%,期末考試成績70%。這樣的教學及考核形式尚存在諸多問題。

1.教學方面問題。實驗課時少。根據學院制定的教學計劃,《單片機原理及應用》的總學時為32學時,其中實驗課程8學時。實驗課程的學時數太少,也是影響學生動手能力的一個方面。在實驗課程的分配中,軟件實驗、驗證性實驗至少占了6學時,所以綜合性設計性實驗開設率不高,學生對所學課程缺乏整體性了解和綜合運用的能力。實驗設備缺乏。由于學校擴大招生規模,實驗室現有的實驗設備臺套數太少,為滿足學生實驗,不得不增加每組實驗的學生人數。我國目前的文化教育,重視理論輕視實踐,這造成了學生們從小就重視理論知識的學習而輕視動手實踐。另外,在考核方式上,實驗課一般作為理論課考試分值的一部分,往往也只占很少的學分,并且只要寫過實驗報告就基本可以通過。久而久之,大部分學生也滋生了重視理論課程輕視實驗的思想。

2.考核方面問題??己朔绞讲缓侠?。學生的考核以閉卷的考試占主要部分,實驗環節所占成績比例低。這樣的考試形式使得大部分同學以理論學習及考試成績為主導,對于課程學習過程中的實踐動手環節只是消極地參與,并沒有真正起到動手動腦的作用??荚噧热莶缓侠怼S捎诳荚囆问揭蚤]卷考試為主,考試內容只能局限于教材,加上期末考試前劃范圍、勾重點等,使得一部分同學以考前重點突擊復習為主,造成了這些同學在平時學習及實踐環節的松懈??荚囶}型不合理??荚囍锌陀^性題型較多,分值比例較大,綜合設計性題型、論述性題型較少。這對于學生的思考能力及綜合分析問題能力的考查不全面,也不利于激發學生的學習興趣和主觀能動性。能過以上分析,目前《單片機原理及應用課程》的考核方法已經不能滿足學校提出的“培養創新性人才”的要求,不利于培養學生動手能力、創新能力,也不能激發學生的學習主動性。

三、教學考試改革的方式及具體措施

針對單片機教學考試存在的問題,可以從以下幾個方面進行改革。

1.為考試改革而進行的教學改革。首先,教學改革要進行教學方法的改革。采用從完成實際問題出發,激發學生的學習興趣和主觀能動性的目標教學方法。在課程的開始階段,設置一個簡單的綜合性實例,利用仿真軟件或實驗箱將實際工程問題解決方案演示給學生看,并要求學生下來查找一些與此相關的實際生活中的應用。以此提高學生的學習興趣。在接下來的教學過程中教師以教學目標為導向,整個教學過程圍繞教學目標展開。在教學目標的刺激下,學生為實現目標而努力學習。在完成目標的過程中,教師積極引導,并將教學內容滲透其中。這種教學方法不僅可以使學生清楚地認識到單片機的原理、概念在實際生活中的意義,而且對于激發學習熱情,培養理論聯系實際的能力極其有益。其次,教學內容的改革。注重接口技術和應用技術的學習,適當減少體系結構的理論學習。在目標教學法中,學生以實際目標引導其學習^程,那么在教學內容上就應增加能夠達成實際目標的應用技術的學習內容,理論體系結構的教學可以把框架性的知識傳授給學生,學生在應用中遇到的理論問題,他們會在框架的知識基礎上自己進一步細化豐富內容;從匯編語言轉向C語言的編程方式。傳統教學模式中,教師喜歡使用匯編語言編程,匯編語言雖然具有高效控制精確的優點,但其結構性差,語句復雜,調試難度大,學生接受也比較困難。C51高級語言具有程序結構清晰、可讀性好、易于維護等優點,一條C語言相當于幾條匯編指令,學生在有C語言的基礎上入門很快,這樣也提高了學生的學習興趣;使用Proteus仿真軟件。通過使用仿真軟件,學生只需要一臺電腦就可以完成實驗室里的基本實驗,方便學生自己動手,提高其動手能力。再次,實驗的改革。把實驗軟件實驗、驗證實驗、設計性實驗及綜合性實驗四個部分,通過驗證性實驗,學生們可以進一步了解單片機及芯片的作用,提高學生的學習興趣。設計性實驗,可以培養學生實踐動手能力及創新能力。綜合性實驗,可以提高學生綜合運用所學知識的能力,提高學生的實驗技能和和培養學生的創新能力。在原有的實驗課時的基礎上增加實驗課時,同時提高設計性及綜合性實驗的比例,真正讓學生把理論與實踐結合起來。

2.考試方法改革。根據《單片機原理及應用》課程的特點,考試可以采用筆試、做設計、寫論文、進行實際操作以及開卷、閉卷等多種方式相結合。我們不能因為筆試的一些缺點就否定筆試在成績評定中的作用,在筆試的過程中還可以增加開卷、閉卷等多種形式。在出卷時增加試卷的靈活性,適當增加設計、分析和綜合思考題型。題目的設計應能使每一位學生在解每道題時都有對知識的理解、分析、比較、融會貫通的過程,從而鍛煉學生的思維,多給學生提供探索的機會和可能性,鼓勵學生獨立思考、標新立異、強調智力開發、避免考試中的偶然性。同時在筆試的基礎上還應該增加反映學生平時學習情況的評價內容,比如平時作業,實驗報告成績等。還可以增加實際操作環節的評定,比如對每次實驗課程都ρ生的操作進行評分,增加實踐環節的考評,把學生綜合設計性實驗的操作調試及結果作為總評成績的一部分進行考核。或將實踐環節改為操作考試,由學生現場操作,教師根據操作內容正確性進行評分。最后在課程結束后,還可以鼓勵學生通過學習的知識內容進行創新設計,將其所做的設計或者通過網絡、圖書查閱到的資料通過分析總結后寫成論文的形式提交,以附加分的形式納入總評成績中。這種方法鍛煉了學生的分析、設計和對信息的處理能力。

3.考試效果的評估和對教學方法的反饋。淡化考試分數之間的微小差異,增大平時考試成績的比例,實行百分制、等級制及與評語相結合的綜合評分方法,對有獨立見解或創新的學生加分鼓勵。應獎勵有個性者,獎勵有主見、有獨立思維能力的學生。同時,建立考試結果分析制度,不斷總結教學經驗。發現問題及時糾正,拓寬、疏通教學質量的有效反饋渠道,建立健全溝通機制。改革后的總體效果還有待長時間的檢驗。在教學過程中可以明顯的發現,提問題的同學明顯增多,同學之間相互討論的次數明顯增加。希望此次考試改革能給《單片機原理及應用》課程的學習帶來新的氣象,增強學生學習的積極性、主動性,培養學生的創新精神和創新意識,實現人才的全面發展。

參考文獻:

[1]何宏.單片機原理與應用[M].北京:清華大學出版社,2012.

[2]李康林.單片機課程考試方法改革的實踐和探索[J].長沙大學學報,2007,(5):107-109.

[3]周曉雁.單片機實驗教學改革的嘗試[J].山東工業大學學報,1995,(2):63-65.

Single Chip Microcomputer Principle and Application of Examination Reform Exploration and Research

YANG Yan-xin,HUANG Zhao-bo,ZOU Huan,ZHANG Xue-ping,LI Yu

(Faculty of Mechanical & Electrical Engineering,Yunnan Agricultural University,Kunming,Yunnan 650201,China)

国模一区二区三区四区视频,亚洲精品毛片久久久久久久,岛国永久av网站,久久九九99这里只有精品,国产av日韩aⅴ亚洲av,a级毛片三级全黄,超碰大香蕉99,亚洲综合激情久久久久,欧美精品一区二区三级理伦电影,伊人久久中文字幕,日韩欧美中文字幕不卡
中国熟女少妇| 日韩av毛片网站| 国产精选精品| 欧美日韩亚洲综合一区| 欧美日韩亚洲天堂久久| JAPANESE日本丰满少妇| 亚洲专区国产一区二区| 欧美最新二区三区色| 69精品少妇人妻视频| 亚洲欧美日韩精品国产天堂| 久久精品这里只有久久精品| 波多野精品一区二区三区色情| 国产精品伦人一区二区| 黑人激情一区,二区| 在线观看国产一区二区视频| 最新国产视频一区二区三区 | av自拍亚洲国产| 噜噜吧色噜噜| 青春草在线观看国产| 亚洲精品日韩欧美精品| 137肉体摄影日本裸交| 又黄又爽的视频免费99| 国产精品无毛一区二区三区| 国产精品免费区二区三区在线| 女生免费看毛片| 999小视频网站| 超短裙夹道具羞耻h| 51国产日韩欧美| 成人午夜看片久久久| 精品在线免费观看一区二区三区| 日韩中文字幕在线观看免费视频| 亚洲v欧美v国产v清高| 午夜看片久久久久久| 色午夜日本高端视频| 久久人人爽爽人人爽人人爽aⅴ| 又粗又长又大又黄少妇毛片| 九九在线精品视频免费| 好爽一区二区三区在线观看| 变态另类成人亚洲欧美熟女| 粗大的内捧猛烈的进出少妇视频| 国产乱理伦片在线观看一区| 日本激情免费视频| 亚洲精品在线99| 亚洲中文字幕人妻丝袜| 大量国产私密保健视频| 男女那个视频网站在线观看| 吃胸膜奶膜下刺激视频| 亚洲av和国产综合av | CHINESE粗口篮球体育生| 日日爽夜夜爽网站| 日韩精品在线久av观看| 亚洲一区二区三区国产日韩欧美| 亚洲龙腾小说视频图片一区| 午夜久久福利影院| 国产色窝在线| 欧美成人午夜免费看电影| 国产精品一一成熟老妇| 香港三级电影国产精品| 久久精品人人爽人人看| 国产精品乱码一区二区三区软件| 少妇一级内射精品黄片一| av色黄色在线| 日韩欧美国产精品一区二区三区| 亚洲高清av片在线观看| 中文字幕在线视频首页| 一天接了8个客人肿了照片| 亚洲精品美女久久久久| 手机亚洲av| 亚洲综合性AV私人影院| 精品国产乱码久久久久久免费看| 成年轻人网站免费视频| 岛国av一区二区三区久久精品| 免费日韩av影视网站| 超碰天天夜夜| 一区二区日韩免费视频| 国产精品人妻熟女av久久| 亚洲精品乱码b| 日本欧美视频人在线视频| 亚洲欧美洲成人1区二区| 欧美精品一区二区精油| 国产精品免费看久久久| 一区二区三区精品国产欧美1 | 熟妇人妻不卡中文字幕| 黄片天天在线视频| 天堂视频一区二区三区成人| 成人国产色综合| 国模生殖欣赏337METCN| 五月婷婷六月丁香色| 成熟熟女国产精品一区二区| 特级黄色视频全免费| 国产免费又色又爽又黄的网| 男女小视频免费网站| 国产成人av片在线| 久久九九热精品免费| 91中文字幕在线永久在线| chinese国产HD中国情侣| 日日搞日日撸夜夜搞夜夜干夜夜插 | 黑人巨大精品欧美欢迎你| 亚洲电影网站在线播放| 特级毛卡片普通话不收费| 亚洲成a人片在线观看视频| 日本三级香港三级人妇99| 日韩国产亚洲| 一本色道久久—综合亚洲| 国产日韩欧美高清一区精品| 老司机精品免费福利视频| 欧美亚洲精品视频| 国产福利一区二区三| 亚洲av综合色区av| 无遮挡无码无修3D纯肉动漫| 十八禁黄色无遮挡| 日韩欧美精品在线第一页| 国语刺激对白在线视频播放| 五月婷婷激情亚洲| 国色天香日本版| 免费看性xxxx高清视频| 毛片在线一区二区三区| 亚洲成av人在线视午夜片| 中文字幕最新亚洲高清| 成 人 免费观看网站| 亚洲欧美一区二区三区国产精| а√天堂最新网址| 免费精品国产自产拍观看| 一级二级三级国产| 欧美亚洲午夜影院| 黄岩帕菲克精品主题酒店| 国产女人喷水视频在线观看| 一级黄色免费不卡视频| 妺妺窝人体色WWW看美女| 亚洲欧洲日本综合| CHINESE激烈高潮HD| 午夜无遮挡在线免费观看| 狠狠色丁香婷婷综合影院| 精品国产欧美一区二区三区成人| 亚洲 欧美 另类 中文字幕| av大香蕉在线| 国产av一区二区精品久久| 丰满人妻熟妇乱又伦精| 国产在线观看成人av| 久久久久亚洲av成人免费电影 | 国产欧美日本亚洲精品一5区| 怡红院亚洲色图| 国产一级二级三级女| JIZZJIZZ老师学生视频| 欧美一级精品久久狠狠| 黄视频在线观看下载| 精品少妇人妻日韩欧美久久91| 极品午夜福利1000在线 | 87午夜福利在线观看| 日韩亚洲欧美国产中文| 娇喘潮喷抽搐高潮视频| 黑人精品无码视频一区二区三区| 亚洲国产一线视频| 肮脏女人一级毛片| 成片一区二区三区在线观看| 欧美黑人又粗又| 国产精品偷伦视频免费还看的| 用超薄丝袜套j好爽| 99亚洲av精品久| 国产高清一区二区老熟女| 九九在线免费精品视频| theporn国产精品久久| 国产成人欧美一区二区| 国产美女被遭强高潮动态视频| 亚洲精品国产av久久久久| 高潮JAPANESE喷潮| 欧美精品三级一区二区三区| 在线看女人毛片| 色播亚洲综合网| 91精品蜜桃| 国产第一黄色视频在线观看 | 色拍自拍亚洲综合图区| 欧美人与动牲猛交a欧美精品| 天天噜日日噜夜夜噜| 小香蕉av一区二区三区| 少妇人妻99久久| 精品99又大又爽又粗少妇毛片| 国产亚洲欧美网址 | 人人妻人人爽人人澡二区| 99久久精品国产亚洲精品| 丁香色狠狠色综合久久| 男人添女人下部视频| 国产精选精品| 午夜免费视频黄| 在线免费av网站观看| 黄片在线免费观看最新视频 | 精品人妻1区二区三区| 日本成年片在线观看| 久久人人爽人人爽爽久| 久久久久久久久99精只大国产| 亚洲一区二区三区在线播放_| 成人影院官网| 成人超级碰碰视频在线播放| 成年人午夜视频免费看 | 亚洲国产综合一区二区在线观看| 一区二区日韩免费视频| 美国成年女毛视频| 精品国产日韩欧美一区二区三区| 一级,二级,三级黄色视频| 人妻AV中文系列先锋影音| 一区二区欧美亚洲成人| 日夜夜透日夜夜操| av大av大片免费网站| 亚洲av麻豆| 高清乱码一卡二卡| 真人无码作爱免费视频网站| 美女搞黄在线观看a| 99热这里只有精品国产一区| 国产av日韩aⅴ亚洲av| 国产精品乱码一区二区三区软件| 天天看夜夜做| 天天躁夜夜躁狠狠久久av| 真实小泑女网站国外俄罗斯| 护士你夹真紧水又多| 岛国大片av在线| 国产国内久久精彩国语对白视频| 高清性妇爰片免强伦| 极品粉嫩国产免费观看| 国产精品国产三级a| 亚洲精品成人av一区二区| 亚欧洲精品在线视频免费观看| 一品道一卡二卡三卡手机在线| 国产精品一区福利在线观看| 在线观看一区二区三区日韩| 免费观看日本一区二区三区视频| 亚洲最大中文字幕精品| a级毛片免费进| 东京热av男人的天堂av| 韩美一区二区三区视频在线播放| 亚洲精品在线视频中文字幕| 成年女性看的免费视频| 日日摸夜夜添添出白浆| 中文字幕亚洲无线码区女同| 国产一区午夜福利在线观看| 美女鲜嫩bbbb| 精品久久亚洲中文| 国产日美女免费视频| 熟女人妻免费视频一区二区三区| 久久变态另类亚洲精品| 国产日韩欧美123| 国产精品久久久天天影视香蕉| 99国产精品久久久久久| 人人人妻人人澡美一区| 国产精品成人亚洲| 久久久中文综合成人影院| 日本乱码一区二区三区| 日韩欧美久久久免费精品| 国产日韩欧美一线二线精品| 天堂影院av不卡毛片| 精品v亚洲v欧美v高清v| 不卡av在线播放| 美日韩在线3区| 日本免费一区二区三区激情视频| 国产精品午夜福利视频网站| 中文字幕小明永久| 美女张开腿做爽爽| 国产三级av大全| 美女被插下体视频网站| 成人av电影一区二区三区四区 | 福利午夜久久| 黑人巨大欧美成人精品一区二区| 熟妇人妻久久系列中文字幕| 精品久久巨乳| 曰韩无码AV片免费播放| 日韩人妻无码一区二区三区久久 | 87午夜福利在线观看| 亚洲精品综合精品自拍麻豆| 国产性色强伦免费看视频| 久久亚洲这里都是精品| 日韩专区欧美精品| 成人熟女国产麻豆91精东| 金瓶玉梅2爱的性奴在国语| 国产精品国产三级大全| 欧美另类偷拍一区二区| 99久久综合狠狠| 嫩草久久久研究所| 久久婷婷国产精品综合| 青青草国产精品日韩欧美| 激情国产精品视频| 亚洲av午夜精品久久看一区| 对着岳的大白屁股就是猛| 啪到高潮动态图GIF你懂的| 极品美女999插插插| 悠悠久久av| 久久久久av亚洲精品| 秋霞电影网久久久| 蜜桃视频黄片!| 久久琪琪精品| 国产精品福利视频网址| 日本一卡二卡三卡四卡18岁| 鲁丝av影片| 午夜av专区| 久久国产精品成人免费电影| 成人久久18禁| 上了漂亮少妇视频在线观看| 制服丝袜av最新看片| av色中天堂| 久久精品爽人妻| 浓毛大屁股BBW| 亚洲av又爽av又色av| www色视频国产一| 婷婷97狠狠综合| 午夜网址观看| 亚洲成A人片在线观看网址| 麻豆大尺度激情视频在线观看| 国产精品美女特级片免费视频播放器 | 国产成人在线亚洲欧美| 免费视频爱爱太爽了网站| 成人在线免费观看一区二区三区| 看全色黄大色黄大片女爽一次| 免费毛片一区二区三区四区| 色亚洲噜噜噜噜| 国内在线精品2021| 国产aⅴ欧洲av| 欧美日韩精品一区二区中文字幕| 午夜鲁丝在线观看| 亚洲综合色激情五月| 久久www香蕉免费人成| 色婷婷性感视频| 精品无人乱码一区二区三区介绍| 91中文字幕在线观看nba| 日本苍井空大尺度啪啪| 国产国语对白精品毛片| 香港a级毛片在线播放| 国产高潮福利影片在线观看| 成人手机av| 久久久久精品国产电影| 亚洲国产系列久久精品99| 漂亮人妻当面被朋友玩弄| 成人在线免费观看一区二区三区 | 97短视频在线观看免费| 久久一区精品| 国产对白乱刺激| av在线播放亚洲精品| 精品国产欧美日韩视频| 亚洲综合久久精品国产高清| 熟女日韩欧美一区二区三区| 少妇丰满av| 国产欧美日韩精品一区二区三区视频| 亚洲天堂精品人妻| 亚洲va在线播放观看| 99电影成人久久影院| 校园欧美亚洲国产| 久久国产精品一二| 男女一边摸一边做爽爽的免费| :国产免费99精品视频:| 14萝自慰专用网站| 国产最新精品精品你懂的| 欧美激情自拍视频网址| 国产精品无大码| 亚洲av色婷婷精品久久| 好大好爽我要喷水了视频视频| 最近最新免费中文字幕3| 18av天堂网| 国产亚洲系列av高清| 亚洲熟妇熟女ⅹxxx高清| 久久精品国产亚洲7777| JIZZ全部免费看全片| 综合九色综合欧美狠狠|| 婷婷在线中文字幕| 自拍偷自拍亚洲精品老妇| 国产精品看片在线| 少妇毛茸茸的BBW| 天天做夜夜要| 国内精品一级毛片| 很猛一区二区激情视频| 精品一区二区三区蜜桃| 日韩av综合av一区导航| 精品无人区乱码一区二区三区| 成人激情在线小视频| 成人免费专区一区二区三区| 中文字幕一区二区三区亚洲精品| 日本熟妇色VIDEOS| 精品视频中文字幕在线观看| 亚洲午夜理论影院| 天堂网2021中文字幕公司| 玖草视频在线观看免费| jzjzjz日本人免费观看播放| 少妇太爽了在线观看视频| 欧美精品18videose×性欧美| 国产一区二区的免费在线播放| 老司机午夜免费网站| 日韩精品一区二区亚洲av不卡| 被男狂揉吃奶胸60分钟视频| 精品熟女人妻av国产在线| 97热视频在线观看| 亚洲成人免费片| 欧美成人免费一区二区三区四区| 国产乱码精品一区二区三区粉嫩| 成人综合网站欧美| 亚洲国产亚洲综合| 黄色av丝袜网站| 国产乱了真实在线观看| 免费无码又爽又刺激激情视频| 一本久久伊人热热| 欧美乱妇无乱码高清| 免费av片在线播放| 久久国产成人精品国产成人亚洲| 国产精品老熟女视频1区二区| 免费国产无遮挡黄的网站| 爆乳放荡的女教师BD| 久久久人妻中文字幕| 少妇群交换BD高清国语版| 久久精品国产亚洲av香蕉高| 很黄很黄的女同性A片| 精品亚洲成人av| 亚洲AV极品视觉盛宴| 中文字幕日本乱码电影| 视频三区视频二区视频一区| 久久综合伊人77777| 欧美精品亚洲一区二区三区| 女人18片毛60分视频| 韩国免费A级作爱片免费观看中国| 国产精品久久激情毛片 | 欧美成人啪啪噜一区二区三区| 黄床大全三级网| 午夜国产成人一区二区三区| 久久久久久久国产精品成人热| 国产三级成人不卡在线观看| 国产福利精品免费在线观看| 日韩中文字幕在线一区| 久久久久久久大尺度免费视频| 91在线国产日韩欧美| 日韩一区二区三区影片| 中文字幕aⅴ天堂在线| 亚洲欧美激情久久久| 亚洲av网址| 香港三级电影国产精品 | 一本色道久久—综合亚洲| 黄岩帕菲克精品主题酒店| 亚州精品永久免费视频 | av卡一久久| 在线观看91中文字幕| 亚洲中文精品乱码| 日韩中文人妻无码不卡| 尤物视频日本aa大片| 五月精品夜夜春夜夜爽久久| 日韩性视频激情在线一区 | 日本熟妇色VIDEOS| 91亚洲精品一区二区在线观看| 国产乱久久亚洲国产精品| 宝贝对着摄像头自己做| 免费99精品视频| 色婷婷性感视频| 中国XXXX真实自拍| 一区二区三区综合在线视频| 国产精品亚洲婷婷99久久精品 | 一级a做片免费久久| 欧美亚洲国产日韩一| 欧美熟妇精品另类91| 国产免费黄色视频一区二区三区| 被男子脱掉内裤的美女视频| 色天天综合色天天久久婷婷_| 一级a爱片免费观看的网站| 美女内射精品一级片tv| 视频亚洲av| 国内在线精品2021| 四十岁女人牲交片| 7777久久亚洲中文字幕密桃| 人妻少妇高清视频| 中文字幕亚洲乱码熟女丨区2区| 日韩视频一区三区| 欧美亚洲精品在线看| 亚洲专区av一区| 国产高清网站在线观看91| 国产精品人妻一区一区三区| 欧美日韩av视频一区| 日本少妇被高潮动态图| 中文字幕在线免费91| 丰满人妻一区二区三区免费视| 国产无线乱码一区二三区| 新欧美三级经典在线观看| 国产视频看看一区二区三区| 色婷婷视频精品| 亚洲乱码av中文| 日韩国产亚洲| 国产精品a人片在线观看| 91日韩精品码精品| 一级a一级a爰片免费视频| 日本av免费高清一区二区三区| 美女黄频免费能直接看| 男人裸体自慰免费看网站| 欧美精品中文字幕无线码一区| 粗大的内捧猛烈的进出少妇视频| xxoo啪啪动态图| 久久久久久人人人人人| 中文字幕av久久激情亚洲电影| 综合国产欧美一区二区三区| 韩国精品一区三区| 欧美亚洲成人一区二区三区| 国产理论精品在线观看| 91av看片在线| 各类熟女熟妇真实视频| 国产成人av大片大片在线播放| 亚洲毛片av| 国产在线第一区二区三区| 宝宝腿开大点就不疼了在线视频| 亚洲AV无码专区在线播放| 国产丨熟女丨国产熟女一区| 看黄色片日b| 欧美亚洲国产三级片子| 不卡的午夜av在线| 94人妻少妇偷人精品| 国产午夜免费啪观看| 欧美色倩网站大全免费| 你下面好湿夹得我好爽动态图| 国产亚洲欧美网址 | 丝袜美腿噜噜| 亚洲精品一区2区三区4区| 97国语自产视频在线免费观看| 久久亚洲av精品毛片二区| 欧美日韩亚洲高清精品| 在线99视频在线| 免费视频好湿好紧好大好爽| 天堂AV无码AV一区二区三区| 免费看啪啪啪av| 亚洲熟妇av一区二区三区软件| 色婷婷久久国产| 老熟妇乱又伦| 欧美精品一区在线观看视频| 少妇逼呻吟喷水视频网站| 欧美日韩亚洲二区| 人妻一区二区中文字幕在线| 亚洲毛深熟女射精精品hd| 午夜福利 老司机 在线视频 一区| 国产精品熟女熟妇视频| 国产麻豆精品传媒| 精品久久久久久久久视色限时免费| 日本网址免费中文| 免费观看美女视频的网站 | 欧美一区二区三黑人| 一级av一片久久免费观看| y88午夜久久国产精品麻豆| 亚洲av手机在线观看| 日韩免费av毛片| 少妇被粗大的猛烈进出动态图| 成年美女黄网站色奶头游戏| 超碰天天夜夜| 国产L精品国产亚洲区| 国产欧美一级二级三级| 精品亚洲一区二区三区一| 人妻少妇中文字幕久久| av亚洲熟女| 国产超碰人人爽人人做| 国产乱理伦片在线观看夜| 硕大黝黑粗大的噗嗤噗| xxx大片免费视频| 一级二级三级毛片免费看| 狂野欧美激情性bbbbbb| www.91久久中文字幕| 久久免费精品视频.| 亚洲精品久久久久无| 国产av中国| 精品国产aⅴ久久久久久久果冻 | 在线观看91中文字幕| 国产av熟女一区二区| 国产亚洲成人精品在线观看| 亚洲中文无码天堂一区二区三区 | 天堂va亚洲va欧美va| 国产欧美精品一区| 亚洲香蕉久久一区二区三区四区| 国产欧美精品一区电影在线| 国产精品一级大片在线观看| 人妻少妇视频在线二区| 顶级国内国模无码视频| 特级毛片免费视频播放| 99热这里只有是精品50| 扒开女人内裤猛烈进入的视频| 热久久精品推荐| 国内揄拍99国内精品人妻久久 | 天堂视频一区二区三区成人| 在线A级毛片无码免费真人| 含羞草实验室入口网站免费进| 亚洲综合色区中文字幕| 久久久久精品国产亚洲av无| 不卡av中文在线观看| 韩漫亚洲一区二区三区四区在线| 黄片搞女人的方法免费| 大屁股大乳丰满人妻HD| H|D专干日本老太婆| 亚洲国产av麻豆毛片超色| 永久免费av网站大全| 亚洲男人的天堂狠狠| 国产精品一区二区三区av.com| 久久久久高清中文字幕| 极品粉嫩国产免费观看| 国产精选在线观看视频| 日本XXXX| 亚洲码与欧洲码区别一二三四 | 久久播国产精品| 久久精品人妻少妇| 黄色片网站久久久久| 午夜一区精品国产亚洲av| 亚洲少妇精品在线| 91人妻人人妻| 成年男女免费视频网站无| 伊人 久久 中文字幕| 午夜网站一区二区三| 欧美性白人极品1819hd| 人妻无码AV中文系列久久免费| 国产日韩在线播放一区| 特级毛片a级毛片免费播视频| 成人高清在线观看视频| 成在线人免费视频一区二区 | 精品国产精品三级国产高清| 亚洲中文字幕乱码在线视频| 一级a做爰片就在线看| 好了AV四色综合无码久久| 国产精品美女特级片免费视频播放器| 久久久久久久久国产一区| 日少妇视频免费| 亚洲女无毛视频| 男男chinese男男资源| 欧美福利一区二区精品视频| 午夜爱爱视频免费| 色哟哟国产精品观看| 日韩无6码一区二区| 国产精品免费大片| 国产三级毛毛片| 日韩黄色免费av| 我解开岳内衣揉上去| 香蕉久久夜色| 一本久道中文字幕av| 亚州精品一区二区av| 少妇午夜性影院私人影院| 精品福利电影| 国产午夜精品美女福利视频| 我被五人伦好爽| 91av网一区二区| 性在线观看视频| 国产欧美日韩黄片| 伊人久久电影网站| 免费午夜福利不卡片在线| 在线蜜桃av| 亚洲一区二区三区在线观看电影| 成人深夜av亚洲一区二区| 99这里只要精品| 偷拍学生MM厕所系列| 日本高清一区三级欧美| 在线观看有码精品| 亚洲色偷偷综合亚洲av伊人| 国产视频在线观看一区二区| h高潮嗯啊娇喘抽搐高女女视频 | 免费看a级黄色片| 亚洲无人乱码| 欧美三级日韩三级亚洲三级| 黑人欧美特级aaaaaa片| 国产精品高清亚洲不卡| 在办公室被弄到了高潮视频| 国产毛毛片一区二区三区四区| 成人精品天堂一区二区三区视频| 亚洲激情熟女图片| 久久国产精品久久精品| 国产成人色在线视频| 午夜免费福利不卡顿视频| a级片免费观看毛片| 免费黄色视频永久观看| 国产亚洲精品欧美日韩在线三区| 日韩亚洲AV无码一区二区三区| 免费看成人国产一区二区三区| 久久精品国产熟女| 一区二区中文字幕久久| 日韩欧美久久综合| 女人高潮叫床喷水| 国产高潮福利影片在线观看 | 麻豆成人精品| 人妻18毛片a级毛片免费| 久久久久久久亚洲中文字幕| 久久精品国产亚洲av亚洲| 久操视频在线观看精品| 色婷婷av一区二区三区久久 | 国产日韩欧美精品另类一区二区| 欧美乱人伦中文字幕在线| 国产丰满大码老熟女| 青青草视频在线免费观看| 精品国精品国产尤物美女| 99re在线观看视频免费| 免费一区二区三区在在线视频| 欧美爆乳少妇A片| 日本一区黄色视频网站| 啦啦啦高清影视在线观看3| 国内天天精品线视频| 国产av亚洲av在线播放| 亚洲国产精华液| 久久—国产精品—爽—久久| 久久国产精品综合一区二区| 性欧美第一页| 国产精品视频视频一区| 很黄很黄的女同性A片| 中文免费女人观看在线毛片| 亚洲欧美日韩自偷自拍| wwwxx日本免费看| 亚洲欧美精品综合在线| 国产亚洲精品资源一区| 波多AV无码人妻水多760| 国产级作a爱片免费观看| 老妇人成熟顶级VIDEOS| 波多野结衣一二三区| 999久久久国产精品视频| 黄色的视频网站在线| 天码人妻一区二区三区| 99青青草原| 亚洲精品欧美精品一区二区| 国内精品伊人久久久久7777| 亚洲aⅴ精品一区二区三区小| 97久热在线观看精品| 亚洲av毛片第一| 在线香蕉精品视频了| 国产免费精品一区二区三区| 穿珍珠内裤上课高潮被同学看到 | 欧美亚洲美腿丝袜| 亚洲伊人88| 国产高清欧美情侣视频| 国产综合亚洲精品一区二区三区| 国产美女福利视频午夜| 日本护士XXWW| 亚洲中文字幕久久乱码| 在线观看av天堂| 18禁羞羞视频无遮挡免费| 琪琪国产内射激情| 免费观看男女午夜视频| 中国老熟妇MATURESEX| 伊人精品成人一区二区三区四区| 国产精品三级播放| 久久综合狠狠综合久久综合| 三级av日韩在线| 中文人妻久久| 中文字幕在线亚洲二区| 麻豆亚洲av熟女| 男女那个视频网站在线观看| 日本XXXXX片免费播放| av一区二区三区蜜桃| 亚洲av免费看.| 美女很黄在线观看| 亚洲a∨中文字字幕乱码| 人妻中文字幕免费av| 曰曰摸夜夜添夜夜添高潮出水| 亚洲最大成人影院| 18禁无遮挡黄网站免费观看| 久久久久久有精品国产24| 免费AV一区二区三区3ATV| 欧美性极品少妇精品网站| 亚洲国产欧美av| 她稚嫩哭喊撕裂第一次| 欧美日韩亚州在线| 欧美日韩免费做爰大片人| 国产成人精品婷婷| 日本JAPANESE丰满挤奶| 国产91人妻一区二区三区麻豆 | 国产成人AV在线播放不卡| 午夜福利av线上网站| 国产自线观看视频.| 欧美综合在线激情专区| 欧美激情精品免费观看| 亚洲日本不卡| 国产情久久久久久一区二区三| 桃花社区视频在线| av毛片在线免费播放| 96久久精品人人妻人人爽| 侵犯人妻中文字幕一二三四区| 91久久亚洲综合精品成人| 欧美亚洲精品免费在线| 国产伦精品区二区三区免费| 无码爆乳护士让我爽| 在线视频精品999| 免费午夜福利在线观看| 日本精品久久久久久久一区二区 | 18禁在线欧美| 欧美一区二区激情电影| 丁香六月七月| 久久综合综合久久äV在钱| 久久精品网色| 免费观看午夜av福利| 三级精品国产| 日韩免费黄色在线| 系列精华液| 人妻边接电话边出轨| 亚洲人成网站在小说| 黑人巨大欧美一区二区视频| 亚洲字幕欧美三区| 国产又色又爽又黄的视频免| 国产精品一区二区三区免费观看| 日韩精品中文字幕看吧| 激情av在线一区| CAOPROM国产在线视频| 中文字幕三级永久在线| 午夜黄色视频在线观看免费不卡| 欧洲亚洲国产免费| 国产精品高清在线看| 亚洲伊人精品网| 看a级毛片在线观看| a级片免费观看毛片| 成人影院官网| av天堂亚洲一区久久极品| 国产精品你懂的免费在线观看| 欧美成人精品免费| 欧美videosex初次| 99精品欧美一区二区三区四区 | 深夜福利一区二区在线观看| 在线播放av的网址| 久久国产精品麻豆久久| 亚洲麻豆视频在线观看| 一区二区三区午夜视频在线观看| 高清毛片视频网站| 国产精品午夜性视频入口| 欧美乱大交3| 亚洲欧美日韩v视频| 国内揄拍精品人妻| 国产精品亚洲一级av第二区| 国产日产成人精品一区二区三区| 中文AV网址在线观看| 扒开未发育完全的小缝视频| 噗嗤噗嗤好涨好爽太深了| av激情在线观看不卡| 黑高跟丝袜一级毛片| 国产av麻豆精选| 秋霞影院国产一区二区三区| 日本欧美在线视频观看97| 男女18禁无遮挡网站| 中文字幕熟女人妻偷伦天美| 国产一区二区三区播放视频| 免费看在线黄色a级毛片| 熟女超碰熟女久久熟女伊人 | 亚洲国产成人无码影片在线播放| 在线看片免费人成视频网| 老子影院午夜伦手机不卡国产 | 日日搞日日撸夜夜搞夜夜干夜夜插 | 人妻熟女av麻豆| 成人免费av高清在线观看| 在线影院一区二区三区| 99久久精品久精品| 日韩午夜大片在线| 国产原创精品麻豆| 美女裸体黄网站18禁免费看| 人妻2乱3伦| 男女视频网址免费| 欧美xxxx性猛交bbbb| 国产精彩视频一区二区三区| 丁香六月欧美| 永久黄软件免费观看| av毛片精品99久久av| 夜夜看夜夜摸夜夜添视频 | 亚洲国产欧美精品视频| 国产成人免费v片| 中文字幕狠操人妻| 熟女一区二区三区国产| 69免费毛片看| 国产精品白丝喷水视频| 老色鬼在线精品视频| 免费看国产成年无码av片 | 黄色片无遮挡在线免费看| 成人区人妻精品一区二区18| 琪琪中文久久字幕| 免费操人妻一区二区| 欧美电影国产精品久久| 天堂а√在线中文在线新版| 午夜国产成人一区二区三区| 国模生殖欣赏人体337| 亚洲中文字幕无码爆乳| 国产999精品黄片| 内谢国产内射夫妻免费视频| 免费一级做a爰片久久毛片无遮挡| 两个人的www免费视频观看| 久久精品国产99久久久香蕉| 欧美日韩视频一区二| 久久av中文1区| a级毛片1一级毛片免费看| 国产高潮福利影片在线观看 | 国产精品免费在线观| 日产一区一区三区不卡| 日韩一区二区三区免费精品视频| 日韩高清免费在线观看一区| 亚洲欧美日本视频一区| 十三以下岁女子毛片| 亚洲欧美日韩中文字幕综合| 22中文网久久字幕| 夜夜操夜夜爽高清视频| 国产精品福利一区二区91| 久久大香香蕉国产| 无遮挡3D黄肉动漫午夜| 99国内精品99久久久久久| 被黑人猛躁10次高潮视频| 黄色色禁免费看| 色婷婷久久麻豆| 成人激情亚洲一区二区| 国内精品美女久久久久久| 亚洲色图av一区二区三区| 国产精品~色哟哟| 国产高潮冒白浆| 国产aⅴ精品一区二区四区| 成人国产亚洲精品av天堂涩爱| 亚洲深深色噜噜狠狠爱网站| 亚洲综合精品二区| 人妻少妇久久中文字幕大全| 国产免费又色又爽又黄无遮挡| 26uuu亚洲国产第一精品| 亚洲美女最特别黄色片| 日韩毛片av天码| 中文乱码字幕午夜无限观看| 日产国产亚洲精品| 一本色道久久| 国产成人精品久久二区二区免费| 欧美日韩色一区二区三区| 久草福利在线精品| 天堂久久亚洲精品| 久久精品一区二区三区四区五区| 国产乱码免费一区| 久久婷婷国产亚洲精品综合| 98国产成人啪精色妇人视频| 人妻精品久久久久中文字幕↙| 99视频在线黑人欧美| 男人天堂激情网| CHINASEXSEX高潮对白| 亚洲国产精品久久| 国外男人添女人下部高潮全视频| 亚洲精品视频色| 毛片免费网站有哪些| 久久精品国语对白| 97人妻精品一区二区三区麻豆| 少妇一区二区三区,| 亚洲精品色婷婷一区二区| 扒开腿狂躁女人爽出白浆h| 国产又粗又头又长又爽| 亚洲精品乱码久久久久久app| 一区中文字幕人妻| 亚洲福利大片在线观看| 日日摸碰夜夜爽| 全部免费黄片在线播放| 国产精品久久自在自线不卡| 联通卡可以在网上补卡吗| 欧美成人四级中文字幕| 又爽又色的视频网站| 国产乱人偷精品视频| 亚洲国产成人av人片久久网站| 亚洲成av人在线视午夜片| 少妇富婆高级按摩出水高潮| 亚洲欧美电影| 成人激情亚洲一区二区| 久久久久久久久精品中文字幕二区| 中文字幕人妻有码av一区| 黄色的视频免费在线观看| 欧美a级毛片免费观看| h视频免费在线观看播放| 在线观看色一区| 老湿机69福利区无码| 精品国产日韩欧美一区二区三区| 中文字幕人妻一区二区三区人妻| 中文字幕一区二区三区日韩欧美| 663个4点半| 国产精品午夜宅男| 二区三区午夜| 亚洲欧美变态另类丝袜美腿| 91精品国产综合久久消防器材| 亚洲国产视频一线| 亚洲欧美色电影| 欧美亚洲二区三区| 国产精品成人三区| 精品有码一区二区| 亚洲av日韩av观看| 一级生活片九九视频免费看| 久久—国产精品—爽—久久| 成熟少妇高潮喷水视频| 亚洲国产精品影视| 秋霞免费鲁丝片无码84| 亚洲av宅男天堂| 国产乱理伦片在线观看夜| h视频免费在线观看播放| 免费av在线观看不卡| 国产又色又爽无遮挡免| 免费久久99精品国产婷婷| 亚洲AV性色在线观看| 毛片av免费| av日韩在线不卡| 人人妻人人爽人人黑| 美女黄网站免费福利视频| 国产一级特黄高清在线大片| 性色视频大全| 亚洲av最新国产| 羞羞午夜福利在线| 久久精品夜夜夜夜久久| 日韩欧美国产精品一区二区| 久久9精品影院| 国产91在线精品福利 | 久久精品夜夜夜夜久久| 台湾佬中文娱乐网| 中文精品一卡2卡3卡4卡| 国产老熟女伦老| 久久国产视频一区二区三区| 黄色av丝袜网站| 男女18禁无遮挡网站| 香蕉久久AV一区二区三区| 久久人人爽人人| CHINESE熟女熟妇2乱| 色多网站免费视频| 久久看电影久久久久国产| 黑人后入高潮 | 欧美日本一本线播放三区| 男人和女人日批视频在线观看| 欧美人与性动交a欧美| 美女水多一级毛片| 欧美黑人xxxx又粗又长| 桃花视频在线观看高清播放| 日韩激情免费成人影院| 亚洲欧美日韩欧美在线| 国产成人欧美精品在线播放| 免费看小黄鸭av片成人| 欧美成人精品三级在线观看播放| 国产亚洲欧洲一区二区| 精品少妇人妻日韩欧美久久91| 久久精品视频看久久| 99久久精品国产亚洲精品| 无遮挡边吃奶边做刺激视频呻| 欧美午夜精品福利一区二区三区| 亚洲熟女综合一区二区三区| 美女高潮流白浆在线免费观看| 亚洲天堂日韩欧美在线| 久久精品国产乱子伦免费| 波霸人妻久久综合网| 男女真人后进式猛烈动态图无打吗| 一级无遮挡毛片免费视频| 小SAO货夹得好紧太爽了视频| 免费不卡黄色视频在线观看| 久久一区二区大香蕉| chinese少妇饥渴难耐videoshd| 欧美老熟妇乱人伦人妻| 人人妻人人爽人人添夜夜欢视频| 成人免费av高清在线观看| 激情视频网站成人| 天天操一操电影| 欧美一级精品久久狠狠| 国产色在线导航| 午夜最新福利视频| 91精品蜜桃| 久久免费精品,| 亚洲欧美综合首页一区| 国产午夜电影在线电影| 国产激烈床震18在线观看| 成熟熟女视频| 国产学生处被破的视频| 亚洲国产另类日韩| 欧美日韩精品电影一区二区三区| 欧美人与性动交α欧美软件 | 亚洲AV午夜福利精品一区| 午夜福利免费试看| 亚洲一区二区三区最新网址| 一本精品99久久精品77| 黄色成人动漫视频在线观看| 亚洲黄色视频美女特黄一级| 成人精品一区二区三区免费视频| 国产第|页日本草草影院一| 中文字幕亚洲天码| 亚洲另类国产欧美一区二区| 别捏我奶头视频大全| 欧美精品乱一区二区三区| 色94色在线观看| 欧美天堂成人av视频| 日韩欧美一区二区三区在线| 成人又黄又爽又刺激视频| 18毛片免费女人视频| 欧美日韩亚洲中文字幕三| 人妻少妇精品久久| 欧美亚洲国产大片| 国产老妇女一区二区| 亚洲国产日韩欧美综合另类| 免费无码AV片在线观看| 亚洲人成在线观看网站播放| 久久av亚洲一区二区三| 三级毛片的视频播放的| 国产乱人视频| 免费一级做a爱片| 攵女乱H边做边打电话| 日韩高清av影片| 亚洲av日韩av在线| 国产1区2区3区精品| 性XXXX视频播放免费| 国产又大又黄视频免费| 成人影院亚洲高清| 亚洲精品第10页| 欧美国产日韩资源精品| 一本色道久久综合无码| 免费无码国产精品久| 精品国产一区二区三区香蕉哭了 | 亚洲欧美日韩久久中文字幕| 亚洲欧美日韩综合精品| 精品久久久久久久毛片微露脸| 亚洲午夜福利院在线观看| 欧美亚洲日本视频在线| 人妻少妇精品偷人视频| 国产免费精品高清| 色花堂国产精品第二页| 欧美日韩视频精品一区| 亚洲欧美综合区自拍另类| 国产裸体舞在线播放| 亚洲怡红院综合影院| 国产快色在线| 国产老熟女激情露脸| 国产精品欧美1区| 4438x8成人网亚洲av| 国产在线主播野战视频| 亚洲AV无码专区国产乱码| 美女搞黄在线观看a| 国产精品视频在线一区二区| 日韩亚洲欧美乱码| 中文字幕一区二区三区亚洲精品| 在线看免费不卡的av| 亚洲欧美专区精品伊人久久| 另类欧美亚洲区| 91老司机精品| 边吃奶边摸下面的免费视频| 日韩欧美国产视频一区| 八个少妇沟厕小便漂亮各种大屁股| 一边摸一边添下面动态图| 亚洲熟妇人妻任你操| 9热在线视频播放99| 亚洲精品人妻在线视频观看| 久久激情影院久久| 国产av麻豆精选| 亚洲人成色777777国产| 亚洲大胆视频在线观看| 一级毛a级片| 亚洲av嫩草av极品在线| 日韩一区中文字幕久久| 十八无遮挡免费看网站1| 亚洲精品日韩伦理电影在线观看| av亚洲aⅴ久久精品| 一区二区三区毛片免费| 亚洲熟妇自偷自拍| 国产av激情一区二区三区四区| 亚洲美女久久 久| 超碰97大香蕉15| 亚洲一区二区av成人| 女国产精品视频一区| 久久久久了精品久久久18| 欧美日韩在线精品一区二区三区激情 | 国产福利一区二| 最新国产精品久久精品99| 天天干夜夜夜| 色呦呦网站入口| 三级视频在线播放不卡| 中国黄色a级毛片| 看又色又爽成年女人毛片| 欧美午夜精一区二区三区| 在线观看91中文字幕| 国产精品果冻传媒在线| 久久夜色视频网| 天天躁日日躁狠狠躁欧美老妇| 国产偷窥熟女高潮精品视频| FREEXXXXHD国语对白| 久久中文字幕123| H无码精品动漫在线观看免费| 大量国产私密保健视频| 一区二区三区国产精品乱码| 国产精品久久久久久久久久久免费| 亚洲在久久综合| 黄色床上电影| 国产日韩精品欧美| 色伊人亚洲乱码| 97视频在线免费观看国产视频| 91麻豆天美精东密桃传媒| 国产三级精品在线不卡秒播| 草草影院一区二区| 香蕉鱼观看在线视频| 亚洲久久av在线| 午夜福利视频精品| 超碰成人人人在做人人爽| 日本在线高清在线视频h看片| 国产精品香蕉在线免费看| 亚洲人成色777777国产| 国产成人精品熟女77免费| 草蜢社区在线观看免费观看| 欧美熟妇丰满XXXXX| 精品久久久久久久毛片微露脸 | 一区二区三区欧美激情视频| 国产乱人伦在线观看66| 亚洲午夜福利院在线观看| 久久婷婷成人综合色麻豆| 两个人怎么一起看视频| 中文字幕av蜜桃| 色偷偷亚洲男人天堂网| A片在线观看免费视频不卡| 偷拍初高中女奶头AV| 亚洲大尺度av在线| 国产99视频精品免费专区| 午夜ww在线观看| 免费观看精品国产| 欧美一区二区尤物黑人| 亚欧洲精品在线视频免费观看 | 99精品一区二区三区在线观看| 亚洲AV综合AVAV中文| 日本高清乱理伦片中文字幕| 国产精品99久久久久久擦边| 最近中文字幕视频大全4| 粉嫩极品国产在在线播| 久久婷婷国产综合精品| 欧美成人午夜伦理| 电影午夜精品一区二区三区| 国产日韩亚洲欧美精品专区| 一区二区三区国内精品视频| 嘿咻男女动态图| 欧美精品啪啪一区二区三区| 亚洲综合性AV私人影院| 国产高清啪免费视频| 在线午夜福利| 日韩高清不卡av在线| 穿珍珠内裤上课高潮被同学看到| 99久久99这里只有精品免费视频| av毛片在线观看地址| 国产av夜间一本精品| 50岁丰满女人裸体毛茸茸| 精品无人区乱码1区二区| 国产一区二区三区ww视频| 亚洲国产嫩草一区影院| 日韩欧精品无码视频无删节| 国产精品二区激情视频| 亚洲人人夜夜操人人爽| 熟女人妻の波多野结衣在线| 穿珍珠内裤上课高潮被同学看到| 可以免费看黄片的视频| 国产午夜视频在线免费观看| 成年美女黄网站色奶头游戏| 国产麻豆精品一二区| 午夜精品福利久久乐| 挺进朋友人妻的身体里| 男女视频福利网| 美女黄是视频免费看| 国产一区二区三区波多野结衣| 成年男女网站视频播放| 色婷婷av一区二区三区久久| 九阳真经18视频九阳真经免费| 92午夜福利1000大合集| 一级国产黄色视频在线观看| 成人免费A级毛片无码网站| 人妻精品久久久久中文字幕↙| 国产一区二区在线观看精品| 又粗又长又硬又大又爽视频| 国产精品嫩草影院123| 日韩精品在线播放你懂的| 好黄好硬好爽免费视频| 日韩亚洲专区在线| 苍井空免费AV片在线观看GVA| 一本综合久久| 99精品电影一区二区免费看| 一区二区亚洲av在线观看| 欧美一二三四区精品中文字幕| 综合av爱爱| 国产午夜精品论理片| 免费av片在线播放| 野花社区观看免费观看视频| 国产精品熟女一区二区三区四区 | 久久成年精品视频| 中文字幕无码日韩专区免费| 国产精品久久国产精麻豆99| 亚洲性色av| 高清不卡的av网站| 麻豆人妻精品一区二区| 免费a级毛片:| 日日摸日日碰夜夜爽免费视频| 超大乳抖乳露双乳呻吟| 亚洲欧美一区二区激情| 日本韩国综合在线| 欧美日韩亚洲国产二区| 亚洲欧美另类成人综合| 吃奶头视频高潮女| 精品一区二区三区久久综合| 搡女人真爽免费视频火全软件| a欧美日韩高清在线播放| CHINESE国产高清AV| 国产国语对白精品毛片| 2020年国产精品午夜福利在线 | 国产av香港| 脱了护士的奶罩吃奶免费观看| 欧美精品亚洲精品日韩已满十八| 精品视频一区二区三区免费观看| 美女扒开腿真人视频| 久久看片在线精品| 国产精品久久久久一区a区| 69精品人人人妻人人玩嘿嘿| 欧美日韩国产91| 又粗又硬又黄又刺激视频| 国产乱人视频| 成人免费一区二区视频| 欧美最新二区三区色| 日本三级高清| 国产午夜一区二区三区影院| 欧美VIDEOS粗暴高清| av在线国产色| 所有免费永久岛国av网址| 国产亚洲成av片在线尤物| 国产肥熟在线高清观看| 亚洲精品第一页在线播放| 91精品国产综合久久消防器材| 亚洲av2019| 亚洲欧美国产日韩免费电影一区二区三区 | 美女黄频视频大全免费的视频| 亚洲精品中字中出无| 国产一区二区三区ww视频| 日本级在线视频| 亚洲二区欧美精品| 日本欧美韩国女人插b黄色大片 | 十八禁免费网站入口| 丰满少妇人妻久久久久久| 日韩色av网在线| 国产性猛交xxxx乱大| 硕大黝黑粗大的噗嗤噗| 一出一进一爽又粗视频| www第一精品久久久| 欧美日韩中文在线播放| 欧美日韩国产a v| 国产欧美成人一区二区网站| 日本视频一级在线| 欧美日韩国产aⅴ一区二区三区| 色婷婷久久久swag精品| 成人国产色综合| 久久热视频这里只有精品99| 国产熟女一区=区| 国产精品一区乱码| 美女啪啪在线观看视频| 又爽又黄又高潮又粗又长的视频| 亚洲人在线观看| 免费吃奶摸下激烈视频青青网| 97精品久久人人爽人人爽下载| 国产精品久久久久成人av| 黄片av免费亚洲| 国产黄色免费观看视频| 免费观看GV入口网站| 粉嫩精品国产尤物在线观看| 午夜小视频一区二区三区| 天堂男人av| 黄色特a级毛片| 成人av 网站在线观看| 日韩精品国产欧美| 亚洲熟女图片另类| 午夜久久精品av| 久久看电影久久久久国产| 舔到高潮喷水视频| 2021国产精品一区二区22| 精品无人区乱码1区二区| 日韩亚洲欧美在线一区| 色综合夜夜躁很很躁日日躁2| 天堂av日韩高清| 3D动漫H在线观看网站蜜芽| 黄色视频免费不卡网站高清| 人妻少妇无,一区二区| 97啪啪自拍视频| 人妻一区二区三区精品无吗| 极品粉嫩国产免费观看| 人妻中文字幕麻豆| 适合女士自慰时看的黄文| 午夜免费爱爱视频| 久久精品一卡二卡三卡四卡| 黄床大全三级网| 无码AV片AV片AV无码| 韩国一区二区三区免费| 黄色a级毛片| 美女黄网站免费福利视频| 国产亚洲一区二区三区av| 国产一线二线视频在线观看| 黄色毛片一级的| 《熟妇的荡欲》在线观看| 亚洲av午夜精品久久看一区| 国产三级国产精品国产普通话| 免费毛片一区二区三区四区| 毛片黄色片一级| 最新国产成人AV网站网址| 亚洲av网站| 久久精品合集欧美| 久久99久久99精品免费看小说| 亚洲综合色网址| 日本免费一区二区三区伊甸园| 黄频免费观看视频| 欧美精品激情免费在线| 边吃奶亚洲一区二区| 国产日韩欧美一二三级| 黑人欧美特级aaaaaa片| 日本AAAAA级特黄大片| 秋霞网站黄色一级国产毛片| 男女无遮挡羞羞视频| 美腿丝袜亚洲欧美综合| 亚洲免费中文字幕一区| av黄色一级毛片| av亚洲综合av天堂| 无码H动漫精品免费播放| 国产免费午夜福利片在线| 精品久久成人网| 亚洲一区av电影免费| 亚洲无在线播放| 女人十六女人十六毛片| 91久久久国产精华亚洲精华精华液| 久久精品国产影片| 丰满女老板BD高清| 亚洲中文字幕在线无码一区二区| 91av午夜在线| 国产亚洲精品ⅴa在线观看| 国产成人亚洲综合色影视大| 熟女人妻免费视频一区二区三区| 欧美精品一区三区中文字幕| 日韩伦理电影一区二区三区| 不卡视频黄色| 国产一级a一级a爰片免费| 久久国产亚洲av麻豆专区| 精品人人爱人人做| 小妖精太湿太紧了拔不出| 国产人与动牲交| 福利在线观看一区| 免费黄色在线视频网站| 日韩av电影在线看一区二区| 免费高清日韩av| 亚洲精品毛片一级av玫瑰| 久久人人爽人| 亚洲午夜精品aa| 国产做永久视频在线观看地址| 最近2019中文字幕第一页| 啪啪啪亚洲综合色美利坚合众国| 一区日韩二区人妻精品av| xxx日本一二三区不卡| 精品v亚洲v欧美v高清v| 亚洲av精品久久99| 午夜福利视频亚洲| 91精品亚洲成人一区二区三区| 国产一级特黄高清在线大片| 午夜福利午夜福利a| 99国产国语对白视频| 亚洲精品91久久久久久| 欧美大香线蕉线伊人久久国产精品| 看全色黄大色黄大片女爽一次| 久久成人免费精品网站| 国内大量揄拍人妻精品2| 一级毛片久久久久久久| 亚洲av麻豆av一区二区三区| 欧美黄色第一页| 国产精品羞羞午夜福利视频| 97夜夜摸夜夜爽夜夜喊| 亚洲精品国产20p| 狠狠拍av哪里有| 中文子幕无线码一区tr| 欧美成人一级片在线播放| 久久精品亚洲一本| 久久精品中文一区二区三区| 欧美人与动人物XXXX| 亚洲中文字幕无码爆乳| 亚洲成熟丰满熟妇高潮XXXXX| 波多野结衣作品一区二在线观看| 亚洲精品国产成人久久av | 精品伊人久久大香线蕉| 成人精品国产| 亚洲高清成人一区二区三区| 亚洲欧美日韩精品久久一区| 亚洲熟女电影一区二区三区| 男人天堂精品视频| 成人毛片15女人毛片免费看| 新搬来的四个爆乳邻居| 少妇极品熟妇人妻| 免费看日本二区| 精品成人av大片| 国产精品毛片一区二区排| 波多野结衣高清中文aⅴ| 亚洲av人人爽人人爽人人爽| 神马中文字幕久久| 欧美国产亚洲浪潮| 99午夜福利视频| 亚洲一区二区三区色噜噜| 欧美va亚洲va天堂va| 国产精品久久久天天影视香蕉| 3344成人在线免费视频| 国产黑色丝袜高跟鞋在线网站| 欧美成人看片a免费| 亚洲AV熟妇高潮30P| 国产综合色产在线精品| 日本妇女买淫| 免费av在线网站| 色哟哟黄色的在线观看| 人妻在线中文字幕av| 精品人妻少妇一区二区三区| 高清午夜精品一区二区三区| 99久久伊人精品影院| 日韩人妻精品一区二区三区视| a级毛片免费看久| 最新国产精品极品自在线观看| 在线免费观看av网站不卡| 成年女人毛片免费观看观看9| 亚洲国产日韩欧美综合另类| 日韩一区二区三区影院| 人妻3p精品视频| 成人免费A级毛片无码网站| 国产欧美日韩91在线| 超碰97免费大香蕉| 在线看免费视频999| 9热在线视频播放99| 妓女院18禁止观看| 久久精品久久久久久噜噜老黄| 国产无套毛片野战视频| 秋霞在线观看日韩av| 亚洲高清av片在线观看| 中国GAY男男AV毛片免费看| 免费的av天码人妻天堂| 欧美日韩精品二区三区在线播放| 欧美亚洲国产激情| 精品亚洲一区二区三区一| 日本一本二本三区高清资源| 久久99国产探花| 免费在线观看色| 2021韩国三级午夜理论| 美女被强,射一奶子| 色男噜噜噜亚洲男人| 国产精品一区福利在线观看| av最新版在线| 波多野结衣高清heyzo| 成人国产色综合| 免费毛片在线观看网站| 中国av午夜一区二区在线观看| 亚洲高清国产一区| 国产又大又黄又爽的视频免费看| AV免费观看| 久久久国产精品综合影院| 国一区二区三区在线| 国产精品果冻传媒在线| 污无遮挡18禁免费| 人妻字幕久久| 性欧美性欧美猛交| 激情亚洲欧美网| 久久国产精品福利一区| 老鸭窝av手机在线| 亚洲国产日韩一区二区| 色婷婷久久国产| 叉开腿做爽爽视频| 久久久精品成人区二区三区免费| 99亚洲一区二区三区在线观看| 伊人色综合视频一区二区三区| 欧美一区国产一区激情| 亚洲男人天堂免费在线| 强奷漂亮饱满雪白少妇| 亚洲老司机深夜私人影院| 久久国产男人的天堂| 亚洲欧洲国产综合考虑| 欧美亚洲午夜影院| 黑人巨大两根一起挤进的视频 | 看18一级毛片| 国产爽视频在线免费| 美女被扒掉内裤让男人舔视频| 婷婷综合色五月久丁香| 国产午夜免费观看视频| 亚洲午夜精品中文字幕| 午夜福利视频3| 免费一级av高潮喷水| 99久久精品久久免费观看不卡 | 成人黄色免费在线网址| 人禽交 欧美 网站| 亚洲一区二区精品久久av女优| 欧美亚洲美腿丝袜| 国产精品久久久久久久久久久免费| 国产日韩+欧美| 国内精品视频自在欧美一区 | 欧美va日韩va亚洲va| 男女吃奶摸下视频| 精品国产福利久久| 中文字幕亚洲资源网久久| 99精品在线免费播放| 美女裸体黄网站18禁免费看| 久久99精品欠久久久久久| 色欲日日拍夜夜嗷嗷叫| 天堂av一区2区| 日韩亚洲高清一区二区三区| av喷水高潮喷水免费看| 黑高跟丝袜一级毛片| 欧美精品30videosex性| 日日摸夜夜看| 688午夜福利| 在线影院一区二区三区| 国产aⅴ精品一区二区三区波| 69亚洲精品久久| 国产在视频线精品| 欧美91激情亚洲| 91中文嫩草影院| 男女激情内射免费观看| 性xxxx精品国语对白| 天堂av最新在线| 电影朋友夫妇:交换| 亚洲欧美国产日韩动漫| 24小时日韩一区二区三区免费视频| 成人免费毛片在线| 久久免费精品视频99| 亚洲中文在线乱码| 在线日韩精品第一页| 学生的粉嫩小泬图片| 亚洲色图 自偷自拍| 欧美大尺度又粗又长真做禁片| av免费在线天堂网| 白嫩少妇私密保健按摩| 亚洲男人天堂免费在线| 久久66热人妻偷产精品| 亚洲av男人的天堂日韩| 国产黄片精品久久久| 高清免费毛片一区二区三区| 久久久久亚洲av成人网人人网站2 精品伊人久久大线蕉色首页 | 久久精品国产99久久72部| 久久精品国产亚洲av涩爱| 人妻少妇视频在线二区| 一区二区三区欧美| 97SE亚洲国产综合自在线| 国产精品羞羞午夜福利视频| 久久中文字幕123| 激情国产精品视频| 日韩精品国产专区| 亚洲精品狼友访问紧急通知| 18禁裸乳羞羞无遮挡在线视频| 免费久久人人]爽人人爽av| 亚洲中文字幕精品第一页| 波多野结衣网站一区二区| 最新亚洲一区中文字幕| 欧美午夜精品久久久久久蜜臀| 父亲干了我再去写作业| 99久久6热热| 熟女少妇亚洲综合色aaa.| 国产午夜福利久久精品app| 久久精品免视看国产成人| 熟女人妻无乱码中文字幕| 日韩一区视频不卡在线观看 | 大香蕉视频国产在线| 国产精品免费在线观看一区二区| 亚洲精品欧美国产入口| 2亚洲精品一区二区三区| 狠狠色噜噜狠狠狠狠97| 久久国产精品福利一区| 亚洲成人久久一二三区| 亚洲av午夜精品久久看一区| 丰满人妻一区二区三区52| 182tv午夜福利精品| 欧美激情亚洲在线| 一本久久精品| 久久天堂av在线| 中文字幕人妻丝袜制服| 国产精品影院99| 97国产精品久久久久久超粗| 特黄特大黄色片| 午夜影院精品免费| 故意短裙公车被强好爽在线播放| 久久精品国产亚洲av亚洲| 成人黄色aa毛片| 久久无码中文字幕久久无码| 精品国产福利久久| 一欧美一区二区三区四| 网禁国产YOU女网站| 又大又黄又爽视频免费看| 亚洲成人中文字幕电影网站| 亚洲色图男人天堂中文字幕| 男女真实无遮挡XX00动态图| 亚洲精品日韩欧美精品| 久久久www一区二区三区| 天天噜日日噜夜夜噜| 亚洲欧美激情综合在线| 国产一区二区观看视频| 亚洲午夜理论影院| 丰满女老板BD高清| 亚洲综合色在线播放| 亚洲av二区三区成人| 精品国产综合区久久久久久久久 | 宅男撸66国产精品| 97国产亚洲av高清y| 国产精品导航网站| 欧美成人国产在线视频| 在线免费视频999| 亚洲激情婷婷色| 久久精品亚洲精品无码| 人妻日韩影院 | 国产黄在线观看免费播放| 精品热久久中文字幕125| 公与熄BD日本中文字幕| 欧美a级噜噜片在线观看| 国产欧美精品一区二| 日韩欧美高清wwwcom…| 久久99一区二区三区| 影音先锋啪啪AV资源网站APP| 亚洲jvid在线| 国内熟女中文字幕人成乱码视频| 亚洲av国产一级毛片久久| 一万部小泑女视频...导航网站| 亚洲国产一区二区三区在线免费| 日本大片在线免费观看| 涩涩爱成人免费视频| 国产精品一区二区三区免费观看 | 欧美精品成人免费视频| 中国人妻在线视频| 北京退休老熟妇嗷嗷叫| 国产亚洲欧美网址 | 国产高清精品二区三区| 丰满人妻二区三区| 日韩精品电影一区亚洲| 久久久精品精选| 无遮挡3D黄肉动漫午夜| 人妻丰满熟妇AV无码区| 黑人精品无码视频一区二区三区| 日韩视频一区三区| 久久人人爽人人| 欧美午夜黑人激情免费观看| 顶级毛片视频| 久久人妻福利社区极品人妻图片| 亚洲国产电影在线观看一区二区 | av亚洲天堂电影| 国产黄色在线观看三级| 日韩欧美精品一区二区综合视频| 亚洲色图综合网激情五月| 免费人成网站在线观看不| 忘忧草在线观看免费| 神马我不卡尤物视频| 丝袜美腿噜噜| av一区二区三区电影| av免费亚洲电影| 欧美日韩亚洲综合一区| 熟女超碰熟女久久熟女伊人| 性做爰片免费毛片| 一区二区亚洲乱码| 一区二区三区欧美| 福利影院欧美第一页| 国产日韩欧美第一区第二区| 少妇无码AV无码去区钱| 国产一区二区三区在线观看av| 国产成人综合久久免费| 久久久久77777人人人人人| 精品久久巨乳| 国产日本欧美视频一区懂色| 精品在线免费观看一区二区三区| _区二区三区影院| 少妇一区2区三区| 日本高清视频色视频免费| 亚洲欧洲成人综合网| 国产美女久久久久av爽到佳| 愿我如星卿如月,夜夜流光相皎洁| 不卡能看的黄色视频| 美女丝袜av久久中文字幕| 久久热视频这里只有精品99| POPNHUB国产在线观看| 挺进朋友人妻的身体里| 上司部长出轨漂亮人妻| 娇喘潮喷抽搐高潮视频| 偷拍学生MM厕所系列| 男女真人后进式动态图| 老湿机免费体检三分钟十八岁| 高级会所人妻互换| 久久国产精品-国产精品| 闺蜜把我腿打开用黄瓜自慰| 狠狠综合亚洲综合亚洲色| 很黄很黄的女同性A片| 欧美福利第一页| 亚洲欧洲av高清| av网天堂在线| 亚洲少妇38p| 亚洲国产aⅴ精品一区99| 中文人妻久久| 亚洲欧美激情久久| 99精品只有精品九九| 国产精品亚洲婷婷99久久精品 | 欧美绝顶高潮抽搐喷水| 夫妇交换刺激做爰电影| 亚洲一区二区免费av| 如何把女人舔到高潮| 亚洲欧美一区精品国产| 亚洲欧美激情另类| 熟女av系列中文字幕| av亚洲伊人| 亚洲岛国av天堂| 亚洲美女搞黄在线观看| 天堂a√在线中文免费 | 日日尻夜夜操| 无码免费毛片手机在线无卡顿| 青柠在线观看免费高清完整版| 亚洲男人堂色偷偷一区| 午夜老司机福利片| 一本色道久久亚洲精品综合| 国产av午夜福利电影| 夜夜操夜夜超碰| 三年片观看免费视频| 久久免费视频精品99| 日韩美女色视频网站全部免费| av亚洲精品一区二区| 国产VA在线观看免费| 换人妻好紧三P| 久久影院123| 被多个黑人猛操| 亚洲伊人88| 日韩亚洲欧美乱码| 国产精品素人av| 一区二区三区欧美激情视频| 欧美人人妻人人| 污污汅18禁在线永久免费观看| va欧美va亚洲综合在线观看| 黄色毛片三级朝国网站| 免费看男女啪啪的视频网站 | 日韩一区二区免视| 国产精品亚洲美女久久久| 国产对白叫床清晰视频| 又粗又硬又猛又黄视频| 亚洲av成人在线影院| 亚洲精品中文字幕在线观看免费| 男女真实无遮挡XX00动态图| av天堂日韩av| 亚洲欧美日韩v视频| 欧美日韩精品一区二区性色| 秋霞在线观看的av| 青青国产视频在线观看播放| 亚洲伊人影院av| 欧美成人精品第一区二区三| 欧美黑人a区| 18禁深夜福利老司机视频| 在线麻豆国产传媒国产| 日本乱理伦片在线观看真人| 欧美日韩成人一区二区三区视频| 一级毛片免费不卡观看| 美女被插下体视频网站| 免费一区二区三区香蕉| 中文字幕亚洲乱码熟女丨区2区| 看黄色靠逼的| 日韩人妻精品av在线| 日本国产欧美在线观看| 国产欧美日韩精品A在线观看| 国产99女人精品| 亚洲av永久码av激情| 99久久6热热| 亚洲精品狼友访问紧急通知| 国内一级精品在线免费视频| 伊人 久久 中文字幕| 国产高清中文在线| 尻逼免费试看视频| 日韩欧美国产精品| 色即色94欧美setu| 色综合影院一区二区三区| 妓女影院永久免费| 亚洲婷婷精品久久久久| 热re99久久精品国产小说| 亚洲成人av中文字幕免费播放| 色偷偷人人爽| 久久精品国产大片| 蜜桃网亚洲av| 国产乱子伦60女人的皮视频| 久久精品国产清高在天天线 | 放荡的情欲护士2| 欧美另类偷拍一区二区| 日韩欧美不卡视频一区二区三区| 国产精品国产高清国产aⅴ| 麻豆国产精品va女在线观看 | 国产精品欧美日韩三区四区| 适合在在自慰时看的黄文| 亚洲国内久久精品| 99热这里只有精品国产一区| 色欧美视频免费看| 婷婷成人精品国产| 免费18禁免费网站| 精品国产av一区二区三区四区| 蜜臀久久99精品久久宅男| 美国成年女毛视频| 高清日本h视频在线观看| 美日韩视频一二区| 人妻少妇又紧又骚又爽| 国产一区二区的免费在线播放| 有码亚洲一区二区| 91精品国产自产拍在线观看| 亚洲av成人波多野一区二区| 91香蕉亚洲精品国产| 丝袜高跟国产一区| 国产成人精品免费一区二区| 正在播放国产对白刺激| 中文字幕乱码亚洲美女精品一区 | 第一次进不去怎么办| 动态图啪啪啪免费| 在线看色国产亚洲精品| 中国XXXXY | 国产在线精品人妻一区二区三区| 东北三级毛片| 午夜av观看不卡| 日日摸日日碰夜夜爽免费视频| 日韩欧美另类亚洲中文字幕| 欧美午夜精品福利一区二区三区 | 91久久精品国产一区二区成人| 国产午夜免费观看视频| 欧美成人精品高清在线观看| 国产伦精品一区二区三区色| 亚洲熟女人妻精品免费视频| 天天影视网色香欲综合网| 国产欧美性视频一区二区| 久久综合亚洲色HEZYO国产| 日本免费靠逼片| 成人欧美三区| 国产精品精品国产色婷婷| 最新国产精品久久精品99| 日韩国产欧美99| av有码在线| 亚洲欧美日韩影院网址观看| 国产又大又黄又粗又爽小说| 亚洲欧美综合成人网| 另类人妻在线视频| 国产高清黄色的视频在线播放| 6一12泑女WWW雏| 精品一线二线三线区va| 国产午夜精品理论片免费观看| 亚洲久久av在线| 国产精品另类亚洲精品女| 日本老师和学生做XXXX| 黄色视频网站在线免费看| 亚洲国产精品综合久久网络| 国产精品一级-区二级三级| 欧美日韩成人精品久久| 鲁丝av影片| 最新av网站网址在线观看| 黄色毛片一级的| 亚洲国产成人综合av| 日韩人妻一区二区三区久久| av网国产免费| 性网站视频免费观看一区二区三区| 欧美激情中文日韩蜜臀| 久久热这里只有精品99| 亚洲精品一区2区三区4区| 亚洲熟女毛片儿| 国产精品原创久久| 老熟女av专区| 99精品视频免费全部在线 | 亚洲va在线播放观看| 国产黄色片a区一区二区三区| 色吧精品久久| 免费不卡黄色视频在线观看| 国产成人精品婷婷| 久久精品porn| 日韩精品国产专区| 日本高清视频网站色| 日本免费在线ww| 真人XO无遮挡GIF动态图无码| 四虎熟女亚洲精品| av最新版在线| 99国产一区二区三精品乱码| xxxfree性欧美| 18禁黄网站禁片免费| 99久久嫩草影院| 亚洲多人在线播放| 丰满熟妇乱又乱精品| 中文字幕亚洲精品乱码在线观看| 欧美精品日韩精品国产精品.| 国产VA在线观看免费| 麻豆成人短视频在线观看| 免费高清特级毛片A片| 成年日本片黄网站| 精品久久久久久久末码| 扒开女人内裤猛进猛出免| 国产伦精品一区二区三区色| 国产幕精品无码亚洲字幕资不卡| 最近亚洲av| 免费观看日韩欧美黄片| 欧美激情精品免费观看| 国产精品久久久久久99| 妓女影院永久免费| 国产精品欧美日韩电影| m131午夜福利| 精品国偷自产在线不卡视频免费| www国内精品内射老熟女| 亚洲精品人人夜夜天天| 一二三四中文在线视频10| 少妇毛片视频| 一个在上面吃二个在下吃视频| 亚洲精品视频在线视频观看| 亚洲精品下载| 日日操日日爽av| 日韩欧美一精品| 99久久精品国产一区二区三区, | 最好看的中文字幕久久| 3D无码纯肉动漫在线观看| 国产精品成人1区二区免费| 99只要精品| 欧美性色欧美精品视频69| 老司机免费视频久久| 国产精品a一区二区三| 99精品视频免费全部在线| 免费观看深夜女人嗷嗷叫av| 亚洲专区av一区| 亚洲av丰满熟妇| 黄频视频大全免费的国产| 久久久久久大精品| 欧美一级特黄啪啪片免费 | 午夜岛国爱爱av| 岛国在线小视频| 国产最新精品精品你懂的| 欧美变态另类bdsm刘玥| 国产午夜亚洲精品AⅤ| 在线日韩成人| 看全色黄大色黄大片女爽一次 | 精品免费视频99| 永久免费福利网站| 一区二区三区欧美日韩电影| 70老太另类极品GRAND| 中文字幕人妻精品乱又码| 女人18毛片a级毛片一高清观看视频| 日日噜噜夜夜狠狠视频欧美人| 色婷婷亚洲欧洲图片| 亚洲黄片大全在线观看| 中国特级淫片久草视频| 八个少妇沟厕小便漂亮各种大屁股| 在线天堂资源中文| 日本在线高清在线视频h看片| 亚洲中文字幕一区二区三区在线| 天天狠天天透天干天天怕处| 桃色蜜桃视频| 能看18禁无遮挡的网站| 亚洲综合欧美日韩一区| 一本久道综合在线无码88| 国产精品欧美激情综合色|