国产无玛黄色大片|99最新极品蜜臀精品久久|久久精品成人av|精品久久久久久中文幕人妻日本|99热资源站人妻多P无码|韩日黄色的男女免费大全|av在线尤物精品国产|无码av免费精品一区二区三区影院|东京热一区二区三区|久久久久久国产成人a亚洲精品无码

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

單片機(jī)原理與應(yīng)用范文

時(shí)間:2023-02-28 15:54:52

序論:在您撰寫單片機(jī)原理與應(yīng)用時(shí),參考他人的優(yōu)秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導(dǎo)您走向新的創(chuàng)作高度。

單片機(jī)原理與應(yīng)用

第1篇

【關(guān)鍵詞】單片機(jī);教學(xué);改革

當(dāng)今世界,單片機(jī)在工業(yè)過(guò)程控制、智能儀表、計(jì)算機(jī)集成控制、人工智能、通信設(shè)備的智能化方面應(yīng)用非常廣泛,而且隨著電子和計(jì)算機(jī)技術(shù)的發(fā)展,以單片機(jī)和各種微處理器為核心必然是實(shí)現(xiàn)智能化技術(shù)的主流方向。同時(shí),《單片機(jī)原理應(yīng)用》是高職院校電子、電氣等相關(guān)專業(yè)最重要的核心課程之一,是一門實(shí)踐性、應(yīng)用性很強(qiáng)的學(xué)科,該方向?qū)W(xué)生進(jìn)行畢業(yè)設(shè)計(jì)和就業(yè)都起著重要的作用。

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

1.教學(xué)內(nèi)容選取

以培養(yǎng)學(xué)生具備從事單片機(jī)系統(tǒng)設(shè)計(jì)崗位能力和相關(guān)職業(yè)群為目標(biāo),增強(qiáng)學(xué)生實(shí)踐動(dòng)手能力和工程實(shí)際運(yùn)用能力為導(dǎo)向,來(lái)選取教學(xué)內(nèi)容。在本課程的開始的時(shí)候,介紹單片機(jī)的發(fā)展現(xiàn)狀,例舉日常生活中單片機(jī)控制的設(shè)備,把科研項(xiàng)目或往屆畢業(yè)設(shè)計(jì)中的一些應(yīng)用板帶進(jìn)課堂,通過(guò)圖片、實(shí)物展示使學(xué)生對(duì)單片機(jī)有一定的感性認(rèn)識(shí),激發(fā)他們的學(xué)習(xí)興趣和熱情。

選取以單片機(jī)C語(yǔ)言貫穿各章節(jié),并且是項(xiàng)目化教學(xué)形式的教材。C語(yǔ)言可讀性、可維護(hù)性和可移植性都比匯編語(yǔ)言好,在實(shí)際單片機(jī)設(shè)計(jì)中,基本上都采用C語(yǔ)言。項(xiàng)目教學(xué)改變了傳統(tǒng)教材內(nèi)容安排強(qiáng)調(diào)只是系統(tǒng)性為主的思路;把課程教學(xué)內(nèi)容劃分為若干個(gè)項(xiàng)目形式來(lái)完成,項(xiàng)目又以任務(wù)的方式出現(xiàn),突出體現(xiàn)高職生理論知識(shí)“必需、夠用”的原則。

多增加日常生活常見案例為項(xiàng)目,每個(gè)項(xiàng)目又包括幾個(gè)任務(wù),通過(guò)每個(gè)任務(wù)的完成過(guò)程,使學(xué)生學(xué)習(xí)相應(yīng)的理論知識(shí)。通過(guò)常見案例的剖析,引起學(xué)生的注意,激發(fā)他們的興趣,每個(gè)任務(wù)完成后,教師進(jìn)行知識(shí)點(diǎn)得總結(jié),這樣學(xué)生在實(shí)踐動(dòng)手中不知不覺(jué)就掌握的理論知識(shí)。比如交通燈控制系統(tǒng),這一項(xiàng)目可以分成單片機(jī)控制單燈亮滅、流水燈控制、定時(shí)器控制流水燈、帶時(shí)間顯示系統(tǒng)等,其中通過(guò)單片機(jī)控制單燈亮滅這一任務(wù)的設(shè)計(jì),學(xué)生可以學(xué)習(xí)單片機(jī)結(jié)構(gòu)、I/O口、單片機(jī)最小系統(tǒng)等基本知識(shí)。通過(guò)流水燈控制這一任務(wù),學(xué)生可以學(xué)習(xí)單片機(jī)C語(yǔ)言的各種語(yǔ)句等。

2.教學(xué)方法使用

我們以項(xiàng)目為教學(xué)單元,以任務(wù)驅(qū)動(dòng)進(jìn)行教學(xué)。我們的教學(xué)是在一體化教室實(shí)施,只要在一體化教室中通過(guò)仿企業(yè)的工作環(huán)境進(jìn)行項(xiàng)目化教學(xué),教學(xué)過(guò)程才能實(shí)現(xiàn)真正的教、學(xué)、做融為一體,并充分調(diào)用學(xué)生學(xué)習(xí)的主動(dòng)性和創(chuàng)造性。

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

另外,教師可以把多媒體課件、儀器設(shè)備電路圖、設(shè)備的使用方法、任務(wù)要求、本課程相關(guān)的學(xué)習(xí)資料等掛在網(wǎng)上,進(jìn)行資源共享,供學(xué)生查閱學(xué)習(xí),通過(guò)網(wǎng)絡(luò)來(lái)提高學(xué)生的學(xué)習(xí)興趣。

3.加強(qiáng)實(shí)踐環(huán)節(jié)

實(shí)踐環(huán)節(jié)是《單片機(jī)原理與運(yùn)用》課程的重要環(huán)節(jié),通過(guò)實(shí)踐環(huán)節(jié),可以提高學(xué)生動(dòng)手操作能力。我們把實(shí)踐環(huán)節(jié)分成基礎(chǔ)性實(shí)踐、開放性實(shí)踐、綜合設(shè)計(jì)實(shí)踐三個(gè)部分。

基礎(chǔ)性實(shí)踐主要是實(shí)現(xiàn)指令練習(xí)、基本程序結(jié)構(gòu)編寫,或是一些驗(yàn)證理論知識(shí)準(zhǔn)確性的實(shí)驗(yàn),通過(guò)這一環(huán)節(jié),學(xué)生所學(xué)的理論知識(shí)得以鞏固。開發(fā)性實(shí)踐要求學(xué)生具有扎實(shí)的理論基礎(chǔ),具有分析問(wèn)題解決問(wèn)題的能力,培養(yǎng)學(xué)生對(duì)常見接口的硬件設(shè)計(jì)、軟件編程及仿真器下載調(diào)試的能力。在綜合設(shè)計(jì)實(shí)踐過(guò)程中,教師只提出實(shí)驗(yàn)?zāi)康暮鸵?,學(xué)生要自主確定設(shè)計(jì)方案,并設(shè)計(jì)硬件電路圖、制作電路PCB圖,并在自己做的PCB板上焊接元器件。硬件調(diào)試成功后,再把編寫好的程序利用仿真器下載到電路板上,進(jìn)行調(diào)試。這樣,學(xué)生熟悉了單片機(jī)系統(tǒng)設(shè)計(jì)的整個(gè)過(guò)程,他們的實(shí)踐動(dòng)手能力也得到很好的提高。

除了上面三個(gè)實(shí)踐環(huán)節(jié)外,我們還要鼓勵(lì)學(xué)生參加全國(guó)電子設(shè)計(jì)大賽和大學(xué)生創(chuàng)新科技項(xiàng)目,使學(xué)生在實(shí)踐過(guò)程中不斷的學(xué)習(xí)新知識(shí),提高設(shè)計(jì)創(chuàng)新能力。

4.考核方式確定

傳統(tǒng)的教學(xué)模式中,課程考核是由期末閉卷考核占70%,平時(shí)表現(xiàn)占30%組成,這樣的考核方式只能一定程度上反應(yīng)學(xué)生理論知識(shí)的掌握情況,很難體現(xiàn)學(xué)生的分析能力和實(shí)踐動(dòng)手能力,也與單片機(jī)課程實(shí)踐性強(qiáng)的特點(diǎn)不相符合。

一個(gè)好的考核方法對(duì)于學(xué)習(xí)一門課程至關(guān)重要??己瞬粌H是對(duì)教師教學(xué)效果的檢驗(yàn)和學(xué)生水平的測(cè)試,同時(shí)也是學(xué)生學(xué)習(xí)習(xí)慣和學(xué)習(xí)方法的導(dǎo)向。筆者提出的考核方式包括期末考核30%、項(xiàng)目考核50%、平時(shí)表現(xiàn)20%。其中平時(shí)表現(xiàn)包括出勤表現(xiàn)、作業(yè)完成情況。期末考核是對(duì)課程基礎(chǔ)知識(shí)進(jìn)行閉卷測(cè)試。項(xiàng)目考核是每個(gè)項(xiàng)目成績(jī)的平均分,每完成一個(gè)項(xiàng)目,教師根據(jù)學(xué)生的工作態(tài)度、完成情況、回答問(wèn)題情況進(jìn)行評(píng)分。每個(gè)項(xiàng)目完成后,學(xué)生都能看到自己的成果,這樣也調(diào)動(dòng)了學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)熱情。這樣的課程考核方式不僅包括基礎(chǔ)知識(shí)掌握程度考核,還包括學(xué)生的分析、學(xué)習(xí)、動(dòng)手、應(yīng)用等方面能力的考核,能比較客觀的反應(yīng)學(xué)生的學(xué)習(xí)情況。

5.總結(jié)

教學(xué)改革實(shí)施后,課堂氣氛變的更加活躍,學(xué)生學(xué)習(xí)興趣更加濃厚。實(shí)踐表明,我們的教學(xué)改革方案不僅提高了學(xué)生學(xué)習(xí)積極性、應(yīng)用能力和動(dòng)手能力,而且對(duì)學(xué)生的獨(dú)立思考和分析問(wèn)題、解決問(wèn)題的能力的提高也起到了很好效果。當(dāng)然,教學(xué)改革是一個(gè)無(wú)止境的過(guò)程,我們還要不斷更新教學(xué)觀念,不斷的探索和實(shí)踐,來(lái)提高教學(xué)質(zhì)量和效果。

參考文獻(xiàn)

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

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

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

[4]牛分中,宋風(fēng)娟.高校單片機(jī)課程實(shí)踐教學(xué)的改革與探討[J].教育與職業(yè),2008(21).

第2篇

關(guān)鍵詞: 《單片機(jī)原理及應(yīng)用》 課程改革 教學(xué)實(shí)踐

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

本課程是一門綜合性、實(shí)踐性很強(qiáng)的課程,通常分為理論教學(xué)與實(shí)踐教學(xué)兩部分[2]。從理論教學(xué)來(lái)說(shuō),基本以教師課堂講授為主,由于該課程接口芯片多、內(nèi)容抽象、編程難度大,對(duì)初學(xué)者來(lái)說(shuō)入門較難,學(xué)生無(wú)法深入理解芯片的原理和指令與程序的運(yùn)行。從實(shí)踐教學(xué)來(lái)說(shuō),實(shí)驗(yàn)內(nèi)容多為驗(yàn)證性實(shí)驗(yàn),學(xué)生只需要觀察和分析實(shí)驗(yàn)結(jié)果,沒(méi)有充分發(fā)揮自主學(xué)習(xí)能力,教學(xué)效果有限。

現(xiàn)依據(jù)多年來(lái)的教學(xué)實(shí)踐過(guò)程,摸索出一套基于“理論講授、實(shí)驗(yàn)練習(xí)、課程設(shè)計(jì)、電子實(shí)習(xí)”四階段的教學(xué)新模式,現(xiàn)談?wù)劥四J较碌母母锎胧?/p>

一、改革課程內(nèi)容

以知識(shí)為基礎(chǔ),以能力為核心,構(gòu)建“基于應(yīng)用對(duì)象的單片機(jī)硬件設(shè)計(jì)及編程”課堂教學(xué)新方法,確保教學(xué)內(nèi)容的合理性、實(shí)用性和先進(jìn)性。打破傳統(tǒng)的循序漸進(jìn)式的教學(xué)方法,以典型項(xiàng)目實(shí)例分解模塊,以各個(gè)模塊構(gòu)建知識(shí),前后連貫,層層遞進(jìn)。最后,將前述內(nèi)容以應(yīng)用實(shí)例進(jìn)行綜合,達(dá)到以“應(yīng)用”為主線連接所學(xué)知識(shí)內(nèi)容的目的,加深學(xué)生對(duì)教學(xué)內(nèi)容的理解和運(yùn)用。

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

編寫“單片機(jī)應(yīng)用案例”講義,將整個(gè)單片機(jī)工程開發(fā)的過(guò)程以案例形式進(jìn)行講解,從硬件電路的設(shè)計(jì)到開發(fā)工具、環(huán)境的使用方法,再到具體的應(yīng)用案例,同時(shí)運(yùn)用匯編語(yǔ)言和C語(yǔ)言的編程方法,系統(tǒng)培養(yǎng)了學(xué)生的單片機(jī)產(chǎn)品開發(fā)工程應(yīng)用能力。

二、注重實(shí)驗(yàn)環(huán)節(jié),培養(yǎng)創(chuàng)新能力

為了建立面向21世紀(jì)的通信專業(yè)教學(xué)新體系[3],必須重新認(rèn)識(shí)課堂教學(xué)與實(shí)驗(yàn)教學(xué)的關(guān)系。我們認(rèn)為,課堂教學(xué)和實(shí)驗(yàn)教學(xué)是相輔相成的,二者都是學(xué)生學(xué)習(xí)與掌握知識(shí)的重要手段,其先后順序也不是固定的。在課程設(shè)置上,我們不求按部就班,而求高效率地向?qū)W生傳輸知識(shí),充分調(diào)動(dòng)學(xué)生的積極性和主動(dòng)性,變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí)。以課程內(nèi)容中的案例為基礎(chǔ),開發(fā)“單片機(jī)教學(xué)、實(shí)驗(yàn)、設(shè)計(jì)系統(tǒng)板”,將理論知識(shí)的講述和硬件電路的現(xiàn)場(chǎng)調(diào)試相結(jié)合,使學(xué)生對(duì)單片機(jī)的整個(gè)開發(fā)有了直觀的認(rèn)識(shí),加強(qiáng)了對(duì)理論知識(shí)的理解。

實(shí)驗(yàn)過(guò)程[4]從軟件和硬件兩方面入手,軟件實(shí)驗(yàn)通過(guò)編寫程序,上機(jī)調(diào)試并運(yùn)行,提高學(xué)生編程的能力;硬件實(shí)驗(yàn)?zāi)軌驅(qū)崿F(xiàn)學(xué)生設(shè)計(jì)硬件,編寫接口程序,完成控制任務(wù)的目的。以單片機(jī)實(shí)習(xí)項(xiàng)目的開發(fā)和調(diào)試代替理論考試,系統(tǒng)考查學(xué)生的應(yīng)用能力和解決實(shí)際問(wèn)題的能力。

實(shí)驗(yàn)內(nèi)容既要滿足基本教學(xué)實(shí)驗(yàn)的要求,又要為課程設(shè)計(jì)和實(shí)習(xí)實(shí)訓(xùn)所用,通過(guò)這3個(gè)環(huán)節(jié)從基礎(chǔ)到簡(jiǎn)單再到復(fù)雜的實(shí)踐過(guò)程,從驗(yàn)證性實(shí)驗(yàn)向設(shè)計(jì)性實(shí)驗(yàn)過(guò)渡,提高學(xué)生獨(dú)立思考解決問(wèn)題的能力。

三、教學(xué)與科研相結(jié)合

要求教師能力雙向發(fā)展。《單片機(jī)原理及應(yīng)用》是一門面向?qū)嶋H應(yīng)用的課程,要突出學(xué)生的工程應(yīng)用能力。因此,要求教師盡可能做到雙向發(fā)展,充實(shí)理論知識(shí)、發(fā)展教學(xué)能力;多動(dòng)手實(shí)踐,提高工程應(yīng)用能力。

鼓勵(lì)學(xué)生參與電子競(jìng)賽。通過(guò)這個(gè)創(chuàng)新性平臺(tái),使學(xué)生靈活運(yùn)用所學(xué)知識(shí),并了解設(shè)計(jì)開發(fā)項(xiàng)目的過(guò)程,為以后的學(xué)習(xí)和工作奠定良好基礎(chǔ)。

鼓勵(lì)學(xué)生參與科研[5]。在培養(yǎng)學(xué)生基本技能的基礎(chǔ)上,鼓勵(lì)學(xué)生參與老師的科研項(xiàng)目,在承擔(dān)力所能及的工作的基礎(chǔ)上,積極嘗試難度更大的工作,鍛煉學(xué)生的學(xué)習(xí)能力和解決問(wèn)題的能力。

參考文獻(xiàn):

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

[2]艾德才.大學(xué)計(jì)算機(jī)硬件教學(xué)內(nèi)容改革勢(shì)在必行[J].計(jì)算機(jī)教育,2005(3).

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

[4]鄒逢興.創(chuàng)新教學(xué)是提升教學(xué)質(zhì)量的永恒動(dòng)力[J].中國(guó)高等教育,2004(22):34-36.

第3篇

關(guān)鍵詞:?jiǎn)纹瑱C(jī);Proteus仿真;C51語(yǔ)言;虛擬實(shí)驗(yàn)室;創(chuàng)新培養(yǎng)

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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

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

針對(duì)這個(gè)問(wèn)題,我們從單片機(jī)理論教學(xué)和單片機(jī)實(shí)驗(yàn)教學(xué)兩個(gè)方面進(jìn)行了一些探索,這對(duì)學(xué)生的學(xué)習(xí)興趣和實(shí)踐動(dòng)手能力有了很大的提高。

1 單片機(jī)理論教學(xué)

理論教學(xué)是獲取專業(yè)知識(shí)的基礎(chǔ)和主要途徑,良好的教學(xué)氛圍不僅能使同學(xué)們輕松地掌握理論知識(shí),還能提高同學(xué)們的學(xué)習(xí)興趣。

1.1 抓住學(xué)生的好奇心

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

1.2 “虛擬實(shí)驗(yàn)室”式的課堂教學(xué)

《單片機(jī)原理與應(yīng)用》不僅需要熟悉硬件電路的設(shè)計(jì)和結(jié)構(gòu),還要掌握軟件編程方法和技巧,一段程序?qū)Σ粚?duì),到底在控制方面起不起作用,那要結(jié)合軟硬件一起來(lái)進(jìn)行調(diào)試,為此,我們將“虛擬實(shí)驗(yàn)室”搬進(jìn)了課堂?!疤摂M實(shí)驗(yàn)室”由Proteus和Keil C51軟件組成,其中,Proteus提供了豐富的模擬和數(shù)字器件模型,可以完整地仿真51系列單片機(jī)及其相連的模擬和數(shù)字電路,充當(dāng)了實(shí)驗(yàn)室里開發(fā)板的角色;而Keil C51軟件是一個(gè)51系列單片機(jī)軟件開發(fā)平臺(tái),采用C51語(yǔ)言進(jìn)行編程,在調(diào)試程序和仿真等方面有很強(qiáng)的功能。采用Proteus和Keil C51軟件相結(jié)合,能將抽象、生澀、陌生的知識(shí)直觀化、形象化、具體化,更容易讓人接受。

1.3 “找茬”互動(dòng)教學(xué)

通過(guò)Proteus畫出硬件電路圖,將Keil C51軟件編寫程序?qū)戇M(jìn)去,演示一下正確的結(jié)果,如果僅僅如此,那么久而久之學(xué)生也會(huì)感到乏味,因此一定要在教學(xué)的過(guò)程中制造一點(diǎn)“麻煩”,讓同學(xué)們來(lái)“找茬”。如在講到單片機(jī)P0-P3口時(shí),為了強(qiáng)調(diào)“P0口做I/O時(shí)必須外加上拉電阻”這個(gè)知識(shí)點(diǎn),在Proteus畫P0控制LED電路圖時(shí),故意不加上拉電阻,結(jié)果發(fā)現(xiàn)P0引腳變灰色,LED不亮,然后再試一試其他端口,LED卻可以點(diǎn)亮,讓學(xué)生找出哪地方出現(xiàn)了問(wèn)題,怎么去修改,P0口和其他端口有什么區(qū)別等。這樣就會(huì)加深學(xué)生的印象,無(wú)形中牢牢掌握了該知識(shí)點(diǎn),這要比“強(qiáng)調(diào)-強(qiáng)調(diào)-再?gòu)?qiáng)調(diào)”有效地多。同樣的方法也可以用在Keil C51軟件編程中。

2 單片機(jī)實(shí)驗(yàn)教學(xué)

理論教學(xué)和實(shí)驗(yàn)教學(xué)是緊密結(jié)合的,單片機(jī)實(shí)驗(yàn)教學(xué)對(duì)于培養(yǎng)學(xué)生的動(dòng)手能力和創(chuàng)新意識(shí)有著十分重要的作用。

2.1 驗(yàn)證與設(shè)計(jì)相結(jié)合

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

如在講到“中斷”時(shí),除了讓同學(xué)們驗(yàn)證一下單片機(jī)5個(gè)中斷源的設(shè)置和工作原理外,可以讓他們?cè)O(shè)計(jì)一款簡(jiǎn)單的頻率計(jì)或是數(shù)字鐘,這樣就可以將中斷、數(shù)碼管動(dòng)態(tài)掃描、按鍵掃描等綜合應(yīng)用到一起,為單片機(jī)系統(tǒng)的設(shè)計(jì)打下了良好的基礎(chǔ)。

2.2 命題和自命題相結(jié)合

在設(shè)計(jì)型實(shí)驗(yàn)中,也要采用命題和自命題相結(jié)合的方式。先以命題形式出現(xiàn),由老師出題,這樣題目涵蓋面比較廣,可以全面考查到各個(gè)知識(shí)點(diǎn),如上面提到的數(shù)字鐘的設(shè)計(jì)。自命題型實(shí)驗(yàn)是讓一組學(xué)生根據(jù)自己的興趣和愛好,自己出題目,一般只注重開發(fā)的過(guò)程,而不重視最終的結(jié)果,因?yàn)橛锌赡懿糠謱W(xué)生出的題目過(guò)難而最終無(wú)法實(shí)現(xiàn)。對(duì)于無(wú)法完成的小組,要找出原因,是硬件本身的缺陷,還是軟件設(shè)計(jì)方面的不足,自己在命題時(shí),忽略掉哪些因素等等。自命題型實(shí)驗(yàn)關(guān)鍵就是激發(fā)學(xué)生的創(chuàng)新思維,培養(yǎng)學(xué)生的團(tuán)隊(duì)意識(shí),提高組織協(xié)調(diào)能力、發(fā)現(xiàn)問(wèn)題和解決問(wèn)題的能力。

從命題到自命題,從“讓我做什么”到“我要做什么”,讓學(xué)生體味一下兩者的不同之處,在經(jīng)過(guò)實(shí)戰(zhàn)演習(xí)后,熟練掌握工程項(xiàng)目的開發(fā)流程,

3 結(jié)語(yǔ)

《單片機(jī)原理與應(yīng)用》是一門軟硬件綜合、應(yīng)用性比較強(qiáng)的課程,在整個(gè)的教學(xué)過(guò)程中,建立以興趣為引導(dǎo),以單片機(jī)系統(tǒng)的設(shè)計(jì)為主線,以理論和實(shí)驗(yàn)相結(jié)合為宗旨,以培養(yǎng)創(chuàng)新能力和實(shí)踐能力為目標(biāo)的單片機(jī)課程教學(xué)體系,運(yùn)用多媒體技術(shù)和“虛擬實(shí)驗(yàn)室”軟件等多種手段,由整體到具體、由簡(jiǎn)單到復(fù)雜、由模塊到系統(tǒng),循序漸進(jìn),加強(qiáng)學(xué)生動(dòng)手操作能力和單片機(jī)系統(tǒng)開發(fā)能力的培養(yǎng)。經(jīng)過(guò)教學(xué)改革,我校學(xué)生在全國(guó)大學(xué)生電子設(shè)計(jì)大賽、全國(guó)信息技術(shù)應(yīng)用水平大賽等各項(xiàng)比賽中所取得了良好的成績(jī),對(duì)提高學(xué)生的專業(yè)知識(shí)水平和創(chuàng)新能力方面具有明顯的優(yōu)勢(shì)。

參考文獻(xiàn):

[1] 胡敬朋, 王聰. 單片機(jī)項(xiàng)目教學(xué)研究及實(shí)踐[J]. 電氣電子教學(xué)學(xué)報(bào), 2009, 31(5): 82-84.

[2] 唐煒. 基于“項(xiàng)目驅(qū)動(dòng)”的單片機(jī)類課程實(shí)踐教學(xué)改革[J]. 實(shí)驗(yàn)室研究與探索, 2010,29(5) :130-132.

第4篇

關(guān)鍵詞:教學(xué)改革;實(shí)驗(yàn)教學(xué);實(shí)踐教學(xué)

【中國(guó)分類法】:G420

0引言

傳統(tǒng)的單片機(jī)教學(xué)采取先基礎(chǔ)后應(yīng)用的模式,即先講授單片機(jī)的硬件結(jié)構(gòu),再講指令、編程、系統(tǒng)擴(kuò)展和各種器件的應(yīng)用,最后講一些實(shí)例,按照這種教學(xué)結(jié)構(gòu),往往使學(xué)員感覺(jué)枯燥無(wú)味,學(xué)習(xí)興趣不濃,有的學(xué)員甚者認(rèn)為單片機(jī)用處不大,體會(huì)不到單片機(jī)在實(shí)際應(yīng)用中的重要作用。怎樣才能激發(fā)學(xué)員對(duì)單片機(jī)課程的興趣和積極性呢?我認(rèn)為單片機(jī)理論知識(shí)教學(xué)中應(yīng)緊密聯(lián)系實(shí)際,使抽象知識(shí)形象化,同時(shí)在教學(xué)手段上也要進(jìn)行改革,如在實(shí)踐教學(xué)中采用在實(shí)驗(yàn)室上課的方式,通過(guò)課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)的教學(xué)實(shí)施來(lái)提高學(xué)員對(duì)單片機(jī)的應(yīng)用能力。

1 教學(xué)方法的改進(jìn)

在課堂教學(xué)中,利用多媒體作為教學(xué)的輔助手段,與傳統(tǒng)的教學(xué)手段相結(jié)合。對(duì)于需了解的內(nèi)容,采用多媒體教學(xué)可以提供更多的教學(xué)內(nèi)容,對(duì)于需要理解和掌握的內(nèi)容,則采用傳統(tǒng)教學(xué)和多媒體教學(xué)相結(jié)合的方式。因多媒體教學(xué)只能在形象上方便學(xué)員的認(rèn)識(shí)與理解,不能代替課堂上理論和概念上的訓(xùn)練過(guò)程,所以教學(xué)中采用兩種方法相結(jié)合的教學(xué)方式,通過(guò)發(fā)揮其各自的優(yōu)勢(shì),是提高教學(xué)質(zhì)量的好方法。

在理論知識(shí)教學(xué)中緊密聯(lián)系實(shí)際,使抽象知識(shí)形象化。如可以這樣介紹單片機(jī)中的“堆棧”:如在倉(cāng)庫(kù)里存放貨物時(shí),最先存放進(jìn)去的貨物總是最后才能取出,反之最后存進(jìn)去的貨物總是最先取出,這種存取貨物的規(guī)則就是“先進(jìn)后出,后進(jìn)先出”,在單片機(jī)中把這種存放數(shù)據(jù)的操作為“堆棧”。為什么要這樣存放數(shù)據(jù)呢?當(dāng)存放一批數(shù)據(jù)時(shí),通過(guò)堆棧定義可知用戶只需知道第一個(gè)數(shù)據(jù)的地址單元即可,簡(jiǎn)化了數(shù)據(jù)存放操作。那么堆棧位于單片中的哪個(gè)區(qū)域?在單片機(jī)中采取用戶根據(jù)需要自己確定堆棧區(qū)域,即通過(guò)設(shè)定堆棧指針sp的值來(lái)實(shí)現(xiàn),如sp的值等于66H,即堆棧指針指向66H單元?在51單片機(jī)中,sp所指位置并非就是數(shù)據(jù)存放位置,而是數(shù)據(jù)存放的前一個(gè)位置,如指針指向66H單元,那么第一數(shù)據(jù)的位置是67H單元,而不是66H單元,為什么會(huì)這樣?教員可在講堆棧命令時(shí)再詳細(xì)的將其原因。介紹單片機(jī)理論知識(shí)時(shí)引入生活中的實(shí)例,可使學(xué)員把難想象、難理解的內(nèi)容變得易于理解。

2 在實(shí)驗(yàn)室現(xiàn)場(chǎng)教學(xué)

實(shí)驗(yàn)課是強(qiáng)化鍛煉學(xué)員實(shí)際動(dòng)手能力的重要手段,可鞏固對(duì)理論知識(shí)的理解,讓學(xué)員在實(shí)驗(yàn)中體會(huì)到單片機(jī)應(yīng)用的重要性。如在講解單片機(jī)的結(jié)構(gòu)和應(yīng)用時(shí),可選擇在實(shí)驗(yàn)室講課,通過(guò)單片機(jī)實(shí)物和各種實(shí)際單片機(jī)系統(tǒng),加深學(xué)員對(duì)單片機(jī)的內(nèi)部結(jié)構(gòu)、外部結(jié)構(gòu)及其應(yīng)用的感性認(rèn)識(shí);講解繁多的指令時(shí),可以利用多媒體講述指令及相關(guān)的編程技巧,讓學(xué)員熟悉指令的功能與基本用法;指令的執(zhí)行情況和執(zhí)行結(jié)果不好理解,到實(shí)驗(yàn)室可以熟悉編程軟件,另一方面可以初步了解指令的運(yùn)行方式且能夠?qū)ψ约壕帉懙某绦蜻M(jìn)行初步驗(yàn)證;可以激發(fā)學(xué)員的興趣、增強(qiáng)感性認(rèn)識(shí)、開闊學(xué)員的想象力,有利于對(duì)知識(shí)的理解。在實(shí)驗(yàn)教學(xué)中,教員的指導(dǎo)作用主要體現(xiàn)在工作方法和思維方法的引導(dǎo)上,通過(guò)實(shí)驗(yàn)使學(xué)員對(duì)單片機(jī)有較為深入的認(rèn)識(shí),讓學(xué)員充分體會(huì)到單片機(jī)應(yīng)用領(lǐng)域是十分廣闊的,拓寬學(xué)員視野。

實(shí)驗(yàn)室現(xiàn)場(chǎng)教學(xué)法可以彌補(bǔ)多媒體教學(xué)的不足,兩種方法相互結(jié)合,發(fā)揮各自的優(yōu)勢(shì),能最大的提高教學(xué)效果。

3 增大實(shí)踐教學(xué)環(huán)節(jié)

學(xué)員在教員的指導(dǎo)下進(jìn)行課程設(shè)計(jì),通過(guò)學(xué)員獨(dú)立完成課題達(dá)到對(duì)學(xué)員的綜合性訓(xùn)練。在設(shè)計(jì)中既涉及到許多設(shè)計(jì)原理與方法,還涉及到許多實(shí)際知識(shí)與技能,在設(shè)計(jì)中可以使學(xué)員對(duì)所學(xué)的內(nèi)容的掌握逐層遞進(jìn)、逐漸深入,最終達(dá)到融會(huì)貫通,有利于培養(yǎng)學(xué)員運(yùn)用課程中所學(xué)的理論知識(shí)獨(dú)立分析、解決實(shí)際問(wèn)題的能力。

在課程設(shè)計(jì)中,教員的指導(dǎo)作用也是主要體現(xiàn)在工作方法和思維方法的引導(dǎo)上,應(yīng)以學(xué)員為主體,充分發(fā)揮其自主性和創(chuàng)造性,達(dá)到培養(yǎng)學(xué)員創(chuàng)新能力的目的。

4 結(jié)語(yǔ)

在教學(xué)中把一些典型的例子引入課堂,使學(xué)員更容易理解所學(xué)的知識(shí),增強(qiáng)學(xué)員的學(xué)習(xí)興趣,促進(jìn)學(xué)員學(xué)習(xí)的自覺(jué)性和主動(dòng)性,使學(xué)員能夠感受到主體地位,就能更好的發(fā)揮學(xué)員的主觀能動(dòng)性并激發(fā)他們強(qiáng)烈的求知欲;此外加強(qiáng)實(shí)踐環(huán)節(jié)的教學(xué),比如實(shí)驗(yàn)、課程設(shè)計(jì)和畢業(yè)設(shè)計(jì),這種將靈活的授課方式融于教學(xué)之中,有利于培養(yǎng)學(xué)員發(fā)現(xiàn)問(wèn)題、分析問(wèn)題和解決問(wèn)題的能力和獨(dú)立思考能力。

參考文獻(xiàn):

第5篇

[關(guān)鍵詞]單片機(jī)原理及應(yīng)用 課程改革 教學(xué)方法 校―企合作 項(xiàng)目

一、引言

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

為適應(yīng)高職教育培養(yǎng)“高素質(zhì)技能型專門人才”的宗旨,本課程的體系、內(nèi)容、方法等均面向?qū)嵺`、面向應(yīng)用、面向就業(yè)。課程定位在“以培養(yǎng)生產(chǎn)第一線的高技能人才為主,盡可能多的培養(yǎng)出具有一定開發(fā)能力的設(shè)計(jì)人才”上,強(qiáng)調(diào)突出實(shí)踐、突出實(shí)用和能力培養(yǎng)。

二、課程改革思路

《單片機(jī)原理及應(yīng)用》課程改革的基本思路是:“以職業(yè)和就業(yè)為導(dǎo)向,構(gòu)建新的工程實(shí)踐化課程體系,確保教學(xué)內(nèi)容的合理性、實(shí)用性和先進(jìn)性?!痹撜n程比傳統(tǒng)課程的主要特點(diǎn)是:教材結(jié)構(gòu)體系嚴(yán)謹(jǐn),教學(xué)內(nèi)容全面,工程應(yīng)用實(shí)例豐富。

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

圖1:《單片機(jī)原理及應(yīng)用》課程開發(fā)過(guò)程

三、教材的建設(shè)

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

課程內(nèi)容是“校―企”合作共同完成的,教學(xué)中的45個(gè)項(xiàng)目提供了PROTEUS ISIS軟件仿真,有助于學(xué)生動(dòng)手能力的培養(yǎng)和鍛煉。課程體系按照“理論實(shí)踐一體化”的教學(xué)方式編寫,可將班級(jí)分組教學(xué),采用邊解講、邊思考、邊小組討論、角色扮演、邊訓(xùn)練、邊考核的基于工作過(guò)程的全新教學(xué)模式,便于激發(fā)學(xué)生的學(xué)習(xí)興趣和素質(zhì)提高,使教材做到“教、做、學(xué)、思”的統(tǒng)一協(xié)調(diào)。單片機(jī)原理及應(yīng)用課程總體架構(gòu)如圖2所以。

四、教學(xué)方法改革

(1)靈活運(yùn)用啟發(fā)式教學(xué)方法,引導(dǎo)學(xué)生自覺(jué)學(xué)習(xí)的主動(dòng)性和積極性,保證教學(xué)過(guò)程良好有序地進(jìn)行。針對(duì)單片機(jī)原理及應(yīng)用課程的授課對(duì)象具有量大面廣的特點(diǎn),首先給學(xué)生介紹本課程與相關(guān)專業(yè)的關(guān)系和與學(xué)生專業(yè)知識(shí)整體性的關(guān)系,強(qiáng)調(diào)理論學(xué)習(xí)的重要性和實(shí)際動(dòng)手操作的必要性。鼓勵(lì)學(xué)生自主學(xué)習(xí),培養(yǎng)主動(dòng)學(xué)習(xí)的積極性,保證了整個(gè)教學(xué)過(guò)程在自覺(jué)學(xué)習(xí)中進(jìn)行。

(2)樹立以學(xué)生為中心的教育思想,在課堂教學(xué)中,以教師為主導(dǎo),學(xué)生為主體,互動(dòng)和諧。教師主導(dǎo),體現(xiàn)為“引”和“導(dǎo)”,教師變“主宰”為“循循善誘”。同時(shí),靈活應(yīng)用多種教學(xué)方法,在講授課程中,采用回憶提問(wèn)、理解提問(wèn)和應(yīng)用提問(wèn)等多種提問(wèn)方式,引導(dǎo)、激發(fā)學(xué)生的學(xué)習(xí)興趣、動(dòng)機(jī)和思路,進(jìn)而深化理解、正確應(yīng)用,變教師中心角色為引導(dǎo)性,完全改變了原來(lái)“填鴨式”的教學(xué)方法。

(3)推廣邊學(xué)邊做的教學(xué)模式,單片機(jī)原理及應(yīng)用技術(shù)是一門實(shí)戰(zhàn)性很強(qiáng)的學(xué)科,結(jié)合理論和實(shí)踐,一邊學(xué)一邊做是最好和最快捷的學(xué)習(xí)方法。將理論學(xué)習(xí)、實(shí)踐應(yīng)用、產(chǎn)品制作有機(jī)地結(jié)合為一體,以理論教學(xué)為基礎(chǔ),以實(shí)踐訓(xùn)練為重點(diǎn),以掌握知識(shí)和技能為教學(xué)。課程的理論教學(xué)與實(shí)踐教學(xué)融合在一起,在實(shí)訓(xùn)教室借助于單片機(jī)自身軟、硬件環(huán)境來(lái)仿真其工作過(guò)程,教學(xué)形式獨(dú)特,貼近技術(shù)應(yīng)用實(shí)際,激發(fā)學(xué)生學(xué)習(xí)積極性,讓學(xué)生真正感覺(jué)到在“學(xué)中做、做中學(xué)、邊學(xué)邊做、邊做邊學(xué)”。

五、因材施教做法及效果

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

(1)根據(jù)崗位要求調(diào)整教學(xué)內(nèi)容

及時(shí)跟蹤產(chǎn)業(yè)發(fā)展趨勢(shì)和行業(yè)動(dòng)態(tài),制定科學(xué)的專業(yè)發(fā)展規(guī)劃和實(shí)施方案;分析職業(yè)崗位(群)任職要求和變化,根據(jù)自己多年從事企業(yè)工作的經(jīng)驗(yàn),結(jié)合IT行業(yè)企業(yè)的特點(diǎn),刪減部分理論內(nèi)容,減少相關(guān)模塊的課時(shí),增加技能訓(xùn)練的授課學(xué)時(shí)。

(2)根據(jù)學(xué)生特點(diǎn)調(diào)整教學(xué)方法

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

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

對(duì)于基礎(chǔ)好的同學(xué),在布置作業(yè)和實(shí)訓(xùn)時(shí),對(duì)他們提出更高的要求,選擇難度較大的實(shí)訓(xùn)供他們練習(xí);對(duì)基礎(chǔ)較差的同學(xué),注重基本知識(shí)和基本技能的培訓(xùn);對(duì)于技能較差的女同學(xué),采用課后輔導(dǎo)或網(wǎng)上輔導(dǎo)的方式,樹立她們的自信心。這種分層次的教學(xué)要求,滿足了不同層次學(xué)生的學(xué)習(xí)要求,達(dá)到了很好的教學(xué)效果。

(4)根據(jù)課程特點(diǎn),鍛煉創(chuàng)新能力

“單片機(jī)原理及應(yīng)用”課程,由于是一門實(shí)踐性很強(qiáng)的課程,需要借鑒的資源豐富,完全是自主開發(fā)。在授課過(guò)程中,特別注重學(xué)生創(chuàng)新能力和創(chuàng)新意識(shí)的培養(yǎng)。每當(dāng)分析完一個(gè)項(xiàng)目,都會(huì)讓學(xué)生進(jìn)行項(xiàng)目分析,提出改進(jìn)和完善方案,并在此基礎(chǔ)上,創(chuàng)新設(shè)計(jì)。經(jīng)過(guò)多次訓(xùn)練,學(xué)生的創(chuàng)新意識(shí)和創(chuàng)新能力都有所提高,很受學(xué)生歡迎。

(5)改革作業(yè)形式,提高學(xué)習(xí)興趣

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

六、小結(jié)

通過(guò)全方位、多角度組織教學(xué),取得了很好的教學(xué)效果,表現(xiàn)為:

①學(xué)習(xí)積極性高:課堂上下學(xué)生的學(xué)習(xí)積極性空前高漲,改變了以往被動(dòng)學(xué)習(xí)的局面,每學(xué)期學(xué)生評(píng)價(jià)為優(yōu)秀;

②學(xué)習(xí)效果好:學(xué)生的專業(yè)能力、專業(yè)知識(shí)的應(yīng)用能力、創(chuàng)新能力都明顯提高,動(dòng)手能力明顯加強(qiáng)。如計(jì)應(yīng)122諸杰成、趙扎玉同學(xué)在四川省軟件大賽獲得一、二等獎(jiǎng)。

③就業(yè)評(píng)價(jià)優(yōu):近幾年計(jì)算機(jī)應(yīng)用專業(yè)畢業(yè)生就業(yè)率都達(dá)到98%,用人單位對(duì)畢業(yè)生的滿意度逐年提升,學(xué)生還沒(méi)有畢業(yè),就有許多IT企業(yè)前來(lái)“定購(gòu)”學(xué)生,多數(shù)畢業(yè)生已經(jīng)成為企業(yè)的技術(shù)骨干,部分學(xué)生已經(jīng)擔(dān)任企業(yè)領(lǐng)導(dǎo)職位。

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

[參考文獻(xiàn)]

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

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

第6篇

一、考核知識(shí)點(diǎn):

1、計(jì)算機(jī)的數(shù)據(jù)表示和數(shù)據(jù)運(yùn)算

2、計(jì)算機(jī)的各種編碼

3、計(jì)算機(jī)的組成及工作過(guò)程

二、考核要求:

1、識(shí)記計(jì)算機(jī)的各種編碼

2、領(lǐng)會(huì)計(jì)算機(jī)的組成及工作過(guò)程

3、簡(jiǎn)明應(yīng)用計(jì)算機(jī)的數(shù)據(jù)表示和數(shù)據(jù)運(yùn)算

第二章51單片機(jī)的硬件結(jié)構(gòu)和原理

一、考核知識(shí)點(diǎn):

1、單片機(jī)的發(fā)展史及各方面的應(yīng)用

2、51單片機(jī)的分類和內(nèi)部結(jié)構(gòu)

3、單片機(jī)的引腳和功能

4、單片機(jī)工作的時(shí)序

二、考核要求:

1、識(shí)記單片機(jī)的發(fā)展史及各方面的應(yīng)用

2、識(shí)記單片機(jī)的引腳和功能

3、領(lǐng)會(huì)單片機(jī)工作的時(shí)序

4、簡(jiǎn)明應(yīng)用51單片機(jī)的分類和內(nèi)部結(jié)構(gòu)

第三章51單片機(jī)指令系統(tǒng)

一、考核知識(shí)點(diǎn):

1、單片機(jī)的尋址方式

2、單片機(jī)的指令系統(tǒng)

3、助記符指令和二進(jìn)制代碼指令的異同

二、考核要求:

1、領(lǐng)會(huì)助記符指令和二進(jìn)制代碼指令的異同

2、綜合應(yīng)用單片機(jī)的尋址方式

3、綜合應(yīng)用單片機(jī)的指令系統(tǒng)

第四章匯編語(yǔ)言程序設(shè)計(jì)

一、考核知識(shí)點(diǎn):

1、偽指令

2、匯編語(yǔ)言設(shè)計(jì)技巧

3、匯編語(yǔ)言到機(jī)器語(yǔ)言的編譯過(guò)程

二、考核要求:

1、領(lǐng)會(huì)偽指令

2、簡(jiǎn)明應(yīng)用匯編語(yǔ)言設(shè)計(jì)技巧

3、綜合應(yīng)用匯編語(yǔ)言到機(jī)器語(yǔ)言的編譯過(guò)程

第五章51單片機(jī)的中斷系統(tǒng)

一、考核知識(shí)點(diǎn):

1、中斷基本概念

2、中斷系統(tǒng)的程序編制

3、中斷系統(tǒng)的初步應(yīng)用

二、考核要求:

1、領(lǐng)會(huì)中斷基本概念

2、簡(jiǎn)明應(yīng)用中斷系統(tǒng)解決工程問(wèn)題

3、綜合簡(jiǎn)明應(yīng)用中斷系統(tǒng)的程序編制

第六章51單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器及串行接口

一、考核知識(shí)點(diǎn):

1、單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)及工作原理

2、定時(shí)器/計(jì)數(shù)器的程序編制

3、定時(shí)器/計(jì)數(shù)器的初步應(yīng)用

4、串行口的基本概念

5、串行口的程序編制

6、串行口的初步應(yīng)用

二、考核要求:

1、識(shí)記串行口的基本概念

2、領(lǐng)會(huì)單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)及工作原理

3、簡(jiǎn)明應(yīng)用定時(shí)器/計(jì)數(shù)器解決工程問(wèn)題

4、簡(jiǎn)明應(yīng)用串行口的程序編制

5、簡(jiǎn)明應(yīng)用串行口解決工程問(wèn)題

6、綜合應(yīng)用定時(shí)器/計(jì)數(shù)器的程序編制

第七章單片機(jī)的系統(tǒng)擴(kuò)展與接口技術(shù)

一、考核知識(shí)點(diǎn):

1、單片機(jī)外部總線的擴(kuò)展

2、外部存儲(chǔ)器的擴(kuò)展

3、I/O接口的擴(kuò)展

4、管理功能部件的擴(kuò)展

5、A/D和D/A接口功能的擴(kuò)展

二、考核要求:

1、識(shí)記單片機(jī)外部總線的擴(kuò)展

2、識(shí)記管理功能部件的擴(kuò)展

3、簡(jiǎn)明應(yīng)用A/D和D/A接口功能的擴(kuò)展

4、綜合應(yīng)用外部存儲(chǔ)器的擴(kuò)展

5、綜合應(yīng)用I/O接口的擴(kuò)展

第八章單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)

一、考核知識(shí)點(diǎn):

1、單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過(guò)程

2、單片機(jī)開發(fā)工具的分類和使用

3、單片機(jī)應(yīng)用系統(tǒng)的軟件和硬件調(diào)試過(guò)程

二、考核要求:

1、識(shí)記單片機(jī)應(yīng)用系統(tǒng)的軟件和硬件調(diào)試過(guò)程

2、領(lǐng)會(huì)單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過(guò)程

3、領(lǐng)會(huì)單片機(jī)開發(fā)工具的分類和使用

第九章單片機(jī)系統(tǒng)的抗干擾技術(shù)

一、考核知識(shí)點(diǎn):

1、單片機(jī)干擾源與分類

2、干擾對(duì)單片機(jī)系統(tǒng)的影響

3、硬件抗干擾技術(shù)

4、軟件抗干擾技術(shù)

5、數(shù)字濾波

二、考核要求:

1、識(shí)記單片機(jī)干擾源與分類

2、識(shí)記干擾對(duì)單片機(jī)系統(tǒng)的影響

3、識(shí)記數(shù)字濾波

4、簡(jiǎn)明應(yīng)用硬件抗干擾技術(shù)

5、簡(jiǎn)明應(yīng)用軟件抗干擾技術(shù)

第十章其它單片機(jī)簡(jiǎn)介

一、考核知識(shí)點(diǎn):

1、AT89C系列單片機(jī)的特點(diǎn)與性能

2、其它8位單片機(jī)的特點(diǎn)與性能

3、16位、32位單片機(jī)的特點(diǎn)與性能

二、考核要求:

1、識(shí)記其它8位單片機(jī)的特點(diǎn)與性能

2、識(shí)記16位、32位單片機(jī)的特點(diǎn)與性能

3、領(lǐng)會(huì)AT89C系列單片機(jī)的特點(diǎn)與性能

《單片機(jī)原理及應(yīng)用技術(shù)》考試大綱

《單片機(jī)原理及應(yīng)用技術(shù)》課程是一門面向應(yīng)用的專業(yè)技術(shù)課。單片機(jī)原理與應(yīng)用介紹了單片機(jī)的基本知識(shí)和單片機(jī)技術(shù)的應(yīng)用,其內(nèi)容與工程實(shí)際緊密聯(lián)系,實(shí)用性很強(qiáng),是一門在理論指導(dǎo)下,偏重于實(shí)際應(yīng)用的課程。本課程具有實(shí)用性強(qiáng)、理論和實(shí)踐結(jié)合、軟硬件結(jié)合等特點(diǎn)。本課程圍繞使用較為廣泛的MCS-51系列單片機(jī)進(jìn)行學(xué)習(xí)。本課程已成為理、工科電子類專業(yè)的一門基礎(chǔ)課程,這是從電子系統(tǒng)設(shè)計(jì)角度考慮的,它體現(xiàn)了電子系統(tǒng)設(shè)計(jì)的方法和硬件結(jié)構(gòu)的變化。通過(guò)該課程的學(xué)習(xí),要求學(xué)生掌握80C51單片機(jī)的工作原理、編程技術(shù),掌握單片機(jī)應(yīng)用系統(tǒng)的擴(kuò)展方法和實(shí)際應(yīng)用。因此,以單片機(jī)為內(nèi)核,分析和設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算機(jī)應(yīng)用系統(tǒng)是我們學(xué)習(xí)本課程要達(dá)到的目的。

第一部分考試大綱

1單片機(jī)概述

本章為單片機(jī)的基本概念。

1.掌握有關(guān)單片機(jī)的基本概念、單片機(jī)的特點(diǎn)、單片機(jī)的應(yīng)用。

2.理解單片機(jī)的總體組成。

3.了解單片微型計(jì)算機(jī)的產(chǎn)生、發(fā)展歷史、主要品種及系列。

2單片機(jī)結(jié)構(gòu)和原理

本章以80C51單片機(jī)為例介紹了主要硬件結(jié)構(gòu)和主要功能,著重掌握系統(tǒng)所提供的資源特性及其功能特性。

1.掌握80C51的內(nèi)部結(jié)構(gòu)。

2.掌握80C51單片機(jī)的存儲(chǔ)器組成。

3.掌握單片機(jī)并行輸入/輸出端口結(jié)構(gòu)及功能。

4.了解單片機(jī)的時(shí)序概念和復(fù)位工作方式。

5.掌握單片機(jī)引腳功能

3指令系統(tǒng)

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

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

3.掌握

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

4.理解書中所列例題與習(xí)題。

4匯編語(yǔ)言程序設(shè)計(jì)舉例

本章為MCS-51的一些常用偽指令,介紹順序結(jié)構(gòu)程序設(shè)計(jì)、分支結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)和子程序的設(shè)計(jì)。

1.程序設(shè)計(jì)的基本步驟、各種基本的結(jié)構(gòu)化程序設(shè)計(jì)方法;讀懂較復(fù)雜的常用程序。

2.掌握數(shù)據(jù)傳送指令的編寫。

3.理解算術(shù)運(yùn)算程序設(shè)計(jì)。

4.理解數(shù)碼轉(zhuǎn)換程序設(shè)計(jì)。

5.理解查表程序設(shè)計(jì)。

6.理解子程序設(shè)計(jì)和參數(shù)傳遞。

7.理解邏輯運(yùn)算程序設(shè)計(jì)

5中斷系統(tǒng)

1.掌握有關(guān)中斷、中斷源、中斷優(yōu)先級(jí)等概念。

2.掌握中斷響應(yīng)過(guò)程。

3.掌握中斷優(yōu)先級(jí)排列。

4.掌握中斷允許寄存器IE、中斷優(yōu)先級(jí)寄存器IP各位的含義及設(shè)置。

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

6定時(shí)/計(jì)數(shù)器

1.掌握定時(shí)器/計(jì)數(shù)器的四種工作方式及有何不同。

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

4.掌握不同工作方式計(jì)數(shù)初值與定時(shí)時(shí)間的關(guān)系,即能根據(jù)定時(shí)時(shí)間算出計(jì)數(shù)初值,完成定時(shí)器的初始化編程和簡(jiǎn)單應(yīng)用編程。

7串行通信

1.理解有關(guān)通信、協(xié)議的概念。

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

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

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

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

6.掌握串行通信總線RS-232C標(biāo)準(zhǔn)、RS-232C電平轉(zhuǎn)換。

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

8系統(tǒng)擴(kuò)展技術(shù)

1.掌握總線、驅(qū)動(dòng)、鎖存和譯碼、地址重疊的概念。

2.掌握程序存儲(chǔ)器的擴(kuò)展:EPROM程序存儲(chǔ)器及其擴(kuò)展方法。

3.掌握數(shù)據(jù)存儲(chǔ)器的擴(kuò)展:靜態(tài)存儲(chǔ)器SRAM及其擴(kuò)展方法。

4.掌握簡(jiǎn)單I/O口的擴(kuò)展。

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

9A/D和D/A轉(zhuǎn)換器接口技術(shù)

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

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

10鍵盤/顯示接口技術(shù)

1.掌握LED顯示器結(jié)構(gòu)、工作原理和顯示方式。

2.掌握鍵盤接口原理。

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

4.理解鍵輸入程序設(shè)計(jì)方法。

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

11、功率接口技術(shù)

1.掌握簡(jiǎn)單開關(guān)量接口、光電耦合接口和繼電器接口。

2.晶閘管與故態(tài)繼電器的應(yīng)用接口。

12、單片機(jī)系統(tǒng)設(shè)計(jì)技術(shù)

掌握單片機(jī)系統(tǒng)的設(shè)計(jì)、開發(fā)、調(diào)試的原則、步驟及方法。

13、實(shí)用舉例

了解一兩個(gè)典型的單片機(jī)開發(fā)應(yīng)用系統(tǒng)的設(shè)計(jì)思想和實(shí)現(xiàn)方法。

14、新型單片機(jī)介紹

了解MCS-51常見8位單片機(jī)。

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

一、考試考核要求

《單片機(jī)技術(shù)及應(yīng)用》選擇具有代表性的、使用較為廣泛的MCS-51系列單片機(jī)進(jìn)行學(xué)習(xí)(具體以80C51為例),介紹了80C51單片機(jī)的硬件組成、軟件編程及一般應(yīng)用系統(tǒng)組成。通過(guò)本課程的學(xué)習(xí),要求掌握80C51單片機(jī)的系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、程序設(shè)計(jì)方法、系統(tǒng)擴(kuò)展方法、單片機(jī)常用接口等應(yīng)用技術(shù)。本課程的教學(xué)過(guò)程由面授輔導(dǎo)、自學(xué)、實(shí)驗(yàn)及作業(yè)四個(gè)環(huán)節(jié)組成,因此本課程考試考核要求為:

1.作業(yè)、實(shí)驗(yàn)成績(jī)與期末考試成績(jī)共同評(píng)定為課程總成績(jī)。

2.作業(yè)、實(shí)驗(yàn)占課程總分的60,期末理論考試占總分的40。

為使學(xué)生不把注意力僅僅放在期末考試上,培養(yǎng)學(xué)生系統(tǒng)學(xué)習(xí)的能力,加強(qiáng)學(xué)生各方面能力的培養(yǎng),平時(shí)、實(shí)驗(yàn)課、作業(yè)、考試都納入本課程的成績(jī)?cè)u(píng)定。平時(shí)的成績(jī)包括出勤、課堂提問(wèn)和隨堂測(cè)試。期末考試可以選擇筆試、口試和進(jìn)行實(shí)際實(shí)驗(yàn)、設(shè)計(jì)等多種形式。

二、平時(shí)成績(jī)考核要求及說(shuō)明

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

2.每次實(shí)驗(yàn)均能按照教師安排進(jìn)行,實(shí)驗(yàn)態(tài)度好,至少完成5個(gè)實(shí)驗(yàn)且實(shí)驗(yàn)報(bào)告完整,為18分(及格);能基本獨(dú)立完成6個(gè)或以上實(shí)驗(yàn),實(shí)驗(yàn)報(bào)告完整、無(wú)誤,實(shí)驗(yàn)質(zhì)量高,30分(滿分)。中間情況酌情給分。如果實(shí)驗(yàn)有創(chuàng)新的特點(diǎn),酌情加分。

3.作業(yè)與實(shí)驗(yàn)的平均分為平時(shí)成績(jī),滿分50分。

4.課程設(shè)計(jì)單獨(dú)計(jì)算成績(jī),考評(píng)方法見其大綱。

三、理論考試說(shuō)明

1.單片機(jī)技術(shù)及應(yīng)用理論考試,采用閉卷筆試形式,考試時(shí)間120分鐘。

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

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

①填空題;

②選擇題;

③判斷題;

④簡(jiǎn)答題

⑤綜合應(yīng)用題。

四、考試考核要求層次

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

掌握:

對(duì)于本課程的重點(diǎn)內(nèi)容要求學(xué)生達(dá)到掌握的程度。即能夠全面、深入理解和熟練掌握所學(xué)內(nèi)容,并能夠用其分析、初步設(shè)計(jì)和解答與應(yīng)用相關(guān)的問(wèn)題,能夠舉一反三。要求學(xué)生掌握的內(nèi)容也就是考試的主要內(nèi)容,在考試中所占比例約70。

理解:

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

了解:

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

實(shí)驗(yàn)五:按鍵電路、顯示電路實(shí)驗(yàn)

一、實(shí)驗(yàn)?zāi)康模?/p>

1.掌握獨(dú)立式按鍵電路與矩陣式按鍵電路的設(shè)計(jì)方法。

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

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

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

二、實(shí)驗(yàn)器材:

1.單片機(jī)實(shí)驗(yàn)板

2.單片機(jī)硬件仿真器ME-51A

3.計(jì)算機(jī)

4.電源

三、實(shí)驗(yàn)要求:

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

(1)跑燈:即P1.0---1.7亮點(diǎn)流動(dòng):

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

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

(4)停止;在任何狀態(tài)下按此鍵程序停止運(yùn)行.

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

F

E

D

C

B

A

9

8

7

6

5

4

3

2

1

四、實(shí)驗(yàn)原理:

1.獨(dú)立式按鍵電路顯示如圖5所示,從圖中可看出,判斷有無(wú)鍵按下,只要檢測(cè)P3.0~P3.3相應(yīng)端口的高低電平即可,若檢測(cè)有某一端口為低電平,表明該端口有按鍵按下,經(jīng)延時(shí)消抖后轉(zhuǎn)去執(zhí)行相應(yīng)的功能子程序。若為高電平,表明無(wú)鍵按1.獨(dú)立式按鍵電路如圖5所示,下,繼續(xù)檢測(cè)。

示例程序如下:

ORG000H

LJMPSTAR1

ORG0030H

STAR1:MOVP3,#0FFH;置P3口為輸入態(tài)

JNBP3.0,FUN0;判別P3.0是否有鍵按下,是,則轉(zhuǎn)FUN0

JNBP3.1,FUN1;判別P3.1是否有鍵按下,是,則轉(zhuǎn)FUN1

JNBP3.2,FUN2;判別P3.2是否有鍵按下,是,則轉(zhuǎn)FUN2

JNBP3.3,FUN3;判別P3.3是否有鍵按下,是,則轉(zhuǎn)FUN3

JNBF0,STAR1;曾經(jīng)有鍵按下F0置1

RET

圖5

FUN0:LCALLDL10MS;消岸抖動(dòng)

JBP3.0,STAR1

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

SETBF0

FUN01:LCALLFUN00

LCALLSTAR1

LJMPFUN01

FUN1:LCALLDL10MS;消岸抖動(dòng)

JBP3.1,STAR1

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

SETBF0

FUN10:LCALLFUN11

LCALLSTAR1

LJMPFUN10

FUN2:LCALLDL10MS;消岸抖動(dòng)

JBP3.2,STAR1

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

SETBF0

FUN20:LCALLFUN22

LCALLSTAR1

LJMPFUN20

FUN3:LCALLDL10MS;消岸抖動(dòng)

JBP3.3,STAR1

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

CLRF0

MOVP1,#0FFH;關(guān)顯示

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;交叉點(diǎn)亮子程序

MOVP1,A

LCALLDL30S

CPLA

MOVP1,A

LCALLDL30S

RET

;____________;

;延時(shí)程序;

;____________;

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所示。采用掃描方式進(jìn)行按鍵的識(shí)別檢測(cè),并將對(duì)應(yīng)按鍵的鍵號(hào)用查表指令將對(duì)應(yīng)的代碼顯示在數(shù)碼管上。

圖6

參考程序如下:

ORG0000H

LJMPSTART

ORG0030H

START:MOVSP,#60H;設(shè)置堆棧指針

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

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

SCAN1:MOVA,R3

MOVP2,A;掃描輸出

MOVA,P2;重讀P2口狀態(tài)

MOVR4,A;暫存于R4呂中

SETBC;C=1

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

L1:RLCA;A中內(nèi)容循環(huán)左移

JNCKEYIN;C=0,有鍵按下,轉(zhuǎn)消抖

INCR1;取碼指針加1

DJNZR5,L1;無(wú)鍵按下,繼續(xù)檢測(cè)

MOVA,R3;掃描下一行

SETBC

RRCA

MOVR3,A

JCSCAN1;4行是否掃描完,未完,繼續(xù)

LJMPSCAN

KEYIN:MOVR7,#10;削除抖動(dòng)

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

五、實(shí)驗(yàn)步驟:

1.運(yùn)行UltraEdit-32源程序編輯軟件,輸入、編輯匯編語(yǔ)言源程序。

2.運(yùn)行KeiluVision2源程序編譯軟件,對(duì)源程序進(jìn)行編譯,得到目標(biāo)代碼文件。

3.運(yùn)行Proteus模擬仿真軟件,打開已繪制好的仿真電路原理圖,進(jìn)行模擬仿真。

4.把硬件仿真器ME-52A與單片實(shí)驗(yàn)板連接好,再用硬件仿真器進(jìn)行仿真驗(yàn)證。

六、實(shí)驗(yàn)分析與總結(jié)

1.用仿真系統(tǒng)調(diào)試簡(jiǎn)單程序結(jié)構(gòu)、分支程序結(jié)構(gòu)、循環(huán)程序結(jié)構(gòu)、子程序結(jié)構(gòu)和中斷結(jié)構(gòu)的關(guān)鍵在于,如何將對(duì)程序的分析理解和開發(fā)系統(tǒng)提供的基本功能有機(jī)地結(jié)合起來(lái),其前提條件是必須對(duì)源程序的作用、結(jié)構(gòu)特點(diǎn)、運(yùn)行過(guò)程與結(jié)果有較全面的認(rèn)識(shí),并能根據(jù)程序運(yùn)行過(guò)程中出現(xiàn)的現(xiàn)象和結(jié)果分析并判斷產(chǎn)生各種故障現(xiàn)象的原因,再運(yùn)用排除法逐一檢驗(yàn)各種判斷是否準(zhǔn)確。

2.掌握程序結(jié)構(gòu)特點(diǎn)的基礎(chǔ)上,合理選擇觀測(cè)點(diǎn),通過(guò)觀察在觀測(cè)點(diǎn)處參數(shù)及路徑的變化檢驗(yàn)程序運(yùn)行的結(jié)果。

3.高調(diào)試程序的效率,應(yīng)對(duì)單片機(jī)開發(fā)系統(tǒng)所提供的幾種程序運(yùn)行調(diào)試方式有

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

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

七、思考與練習(xí)

填空題

1、設(shè)X=5AH,Y=36H,則X與Y“或”運(yùn)算為__7EH_______,X與Y的“異或”運(yùn)算為___6CH_____。

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

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

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

5、若選擇內(nèi)部程序存儲(chǔ)器,應(yīng)該設(shè)置為_____高_(dá)______(高電平/低電平),那么,PSEN信號(hào)的處理方式為___不用__________________。

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

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

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

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

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

11、8051單片機(jī)的存儲(chǔ)器的最大特點(diǎn)是內(nèi)部RAM與外部RAM分開編址。

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

13、函數(shù)是C語(yǔ)言的基本單位。

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

15、MCS-51內(nèi)部提供3個(gè)可編程的16位定時(shí)/計(jì)數(shù)器,定時(shí)器有4種工作方式。

16、一個(gè)函數(shù)由兩部分組成,即說(shuō)明部分和語(yǔ)句部分。

17、串行口方式3發(fā)送的第9位數(shù)據(jù)要事先寫入SCON寄存器的TB8位。

18、利用8155H可以擴(kuò)展3個(gè)并行口,256個(gè)RAM單元。

19、C語(yǔ)言中輸入和輸出操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成。

二、選擇題

1、C語(yǔ)言中最簡(jiǎn)單的數(shù)據(jù)類型包括(B)。

A、整型、實(shí)型、邏輯型B、整型、實(shí)型、字符型

C、整型、字符型、邏輯型D、整型、實(shí)型、邏輯型、字符型

2、當(dāng)MCS-51單片機(jī)接有外部存儲(chǔ)器,P2口可作為(C)。

A、數(shù)據(jù)輸入口B、數(shù)據(jù)的輸出口

C、準(zhǔn)雙向輸入/輸出口D、輸出高8位地址

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

A、程序就是軟件B、軟件開發(fā)不受計(jì)算機(jī)系統(tǒng)的限制

C、軟件既是邏輯實(shí)體,又是物理實(shí)體D、軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

4、下列計(jì)算機(jī)語(yǔ)言中,CPU能直接識(shí)別的是(D)。

A、自然語(yǔ)言B、高級(jí)語(yǔ)言C、匯編語(yǔ)言D、機(jī)器語(yǔ)言

5、MCS-5l單片機(jī)的堆棧區(qū)是設(shè)置在(C)中。

A、片內(nèi)ROM區(qū)B、片外ROM區(qū)C、片內(nèi)RAM區(qū)D、片外RAM區(qū)

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

A、用C語(yǔ)言實(shí)現(xiàn)的算法必須要有輸入和輸出操作

B、用C語(yǔ)言實(shí)現(xiàn)的算法可以沒(méi)有輸出但必須要有輸入

C、用C程序?qū)崿F(xiàn)的算法可以沒(méi)有輸入但必須要有輸出

D、用C程序?qū)崿F(xiàn)的算法可以既沒(méi)有輸入也沒(méi)有輸出

7、定時(shí)器/計(jì)數(shù)器工作方式1是(D)。

A、8位計(jì)數(shù)器結(jié)構(gòu)B、2個(gè)8位計(jì)數(shù)器結(jié)構(gòu)

C、13位計(jì)數(shù)結(jié)構(gòu)D、16位計(jì)數(shù)結(jié)構(gòu)

8、C語(yǔ)言提供的合法的數(shù)據(jù)類型關(guān)鍵字是(B)。

A、DoubleB、shortC、integerD、Char

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

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

10、以下能正確定義一維數(shù)組的選項(xiàng)是(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、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指(D)。

A、存儲(chǔ)在外存中的數(shù)據(jù)B、數(shù)據(jù)所占的存儲(chǔ)空間量

C、數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式D、數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示

12、下列關(guān)于棧的描述中錯(cuò)誤的是(C)。

A、棧是先進(jìn)后出的先性表B、棧只能順序存儲(chǔ)

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

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

A、參與操作的數(shù)據(jù)B、操作數(shù)的地址值

C、程序的轉(zhuǎn)換地址D、指令的操作碼

14、MCS-51單片機(jī)的復(fù)位信號(hào)是(A)有效。

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

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

A、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

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

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

D、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

16、若MCS-51單片機(jī)使用晶振頻率為6MHz時(shí),其復(fù)位持續(xù)時(shí)間應(yīng)該超過(guò)(B)。

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

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

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

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

A、掩膜ROMB、PROMC、EPROMD、EEPROM

19、以下不能定義為用戶標(biāo)識(shí)符是(D)。

A、MainB、_0C、_intD、sizeof

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

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

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

A、對(duì)于double類型數(shù)組,不可以直接用數(shù)組名對(duì)數(shù)組進(jìn)行整體輸入或輸出

B、數(shù)組名代表的是數(shù)組所占存儲(chǔ)區(qū)的首地址,其值不可改變

C、當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時(shí),系統(tǒng)將給出“下標(biāo)越界”的出錯(cuò)信息

D、可以通過(guò)賦初值的方式確定數(shù)組元素的個(gè)數(shù)

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

A、feof(f

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

23、存儲(chǔ)16×16點(diǎn)陣的一個(gè)漢字信息,需要的字節(jié)數(shù)為(A)

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

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

A、06HB、F9HC、30HD、CFH

25、在C語(yǔ)言中,合法的長(zhǎng)整型常數(shù)是(A)

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

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

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

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

A、PUSHR0B、PUSH@R0C、PUSH00HD、PUSH08H

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

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

29、設(shè)MCS-51單片機(jī)晶振頻率為12MHz,定時(shí)器作計(jì)數(shù)器使用時(shí),其最高的輸入計(jì)數(shù)頻率應(yīng)為(C)

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

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

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

三、判斷題

(√)1、在對(duì)某一函數(shù)進(jìn)行多次調(diào)用時(shí),系統(tǒng)會(huì)對(duì)相應(yīng)的自動(dòng)變量重新分配存儲(chǔ)單元。

(×)2、在C語(yǔ)言的復(fù)合語(yǔ)句中,只能包含可執(zhí)行語(yǔ)句。

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

(×)4、Continue和break都可用來(lái)實(shí)現(xiàn)循環(huán)體的中止。

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

(×)6、在MCS-51系統(tǒng)中,一個(gè)機(jī)器周期等于1.5μs。

(√)7、C語(yǔ)言允許在復(fù)合語(yǔ)句內(nèi)定義自動(dòng)變量。

(√)8、若一個(gè)函數(shù)的返回類型為void,則表示其沒(méi)有返回值。

(×)9、所有定義在主函數(shù)之前的函數(shù)無(wú)需進(jìn)行聲明。

(×)10、定時(shí)器與計(jì)數(shù)器的工作原理均是對(duì)輸入脈沖進(jìn)行計(jì)數(shù)。

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

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

(√)13、MCS-51的相對(duì)轉(zhuǎn)移指令最大負(fù)跳距是127B。

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

(√)15、TMOD中的GATE=1時(shí),表示由兩個(gè)信號(hào)控制定時(shí)器的的啟停。

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

(×)17、MCS-51系統(tǒng)可以沒(méi)有復(fù)位電路。

(×)18、片內(nèi)RAM與外部設(shè)備統(tǒng)一編址時(shí),需要專門的輸入/輸出指令。

(√)19、鎖存器、三態(tài)緩沖寄存器等簡(jiǎn)單芯片中沒(méi)有命令寄存和狀態(tài)寄存等功能。

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

四、簡(jiǎn)答題

1、在使用8051的定時(shí)器/計(jì)數(shù)器前,應(yīng)對(duì)它進(jìn)行初始化,其步驟是什么?

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

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

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

(4)啟動(dòng)定時(shí)器/計(jì)數(shù)器——編程TCON中TR1或TR0位。

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

通常情況下,C51函數(shù)不能被遞歸調(diào)用,也不能應(yīng)用導(dǎo)致遞歸調(diào)用的結(jié)構(gòu)。有此限制是由于函數(shù)參數(shù)和局部變量是存儲(chǔ)在固定的地址單元中。重入函數(shù)特性允許你聲明一個(gè)重入函數(shù)。即可以被遞歸調(diào)用的函數(shù)。

重入函數(shù)可以被遞歸調(diào)用,也可以同時(shí)被兩個(gè)或更多的進(jìn)程調(diào)用。重入函數(shù)在實(shí)時(shí)應(yīng)用中及中斷服務(wù)程序代碼和非中斷程序代碼必須共用一個(gè)函數(shù)的場(chǎng)合中經(jīng)常用到。

3、8051引腳有多少I/O線?他們和單片機(jī)對(duì)外的地址總線和數(shù)據(jù)總線有什么關(guān)系?地址總線和數(shù)據(jù)總線各是幾位?

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

地址總線共16位,數(shù)據(jù)總線是8位。

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

答:在有串行通信時(shí),定時(shí)器/計(jì)數(shù)器1的作用是串行口發(fā)生器。

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

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

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

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

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

5、如何消除鍵盤的抖動(dòng)?怎樣設(shè)置鍵盤中的復(fù)合鍵?

答:由于按鍵是機(jī)械開關(guān)結(jié)構(gòu),所以當(dāng)用手按下其中一個(gè)鍵時(shí),往往會(huì)出現(xiàn)所按鍵在閉合位置和斷開位置之間發(fā)生跳幾下后才會(huì)穩(wěn)定到閉合狀態(tài)的情況。在釋放一個(gè)鍵時(shí),也會(huì)出現(xiàn)類似的情況,這就是鍵的抖動(dòng),抖動(dòng)的持續(xù)時(shí)間不一,但通常不會(huì)大于10ms。

若抖動(dòng)問(wèn)題不解決,就會(huì)引起對(duì)閉合鍵的多次讀入。對(duì)于鍵抖動(dòng)最方便的解決方法就是當(dāng)發(fā)現(xiàn)有鍵按下后,不是立即進(jìn)行掃描,而是延時(shí)大約10ms后再進(jìn)行。由于一個(gè)鍵按下的時(shí)間一般會(huì)持續(xù)上百毫秒,所以延遲10ms后再掃描處理并不遲。

復(fù)合鍵可以仿照計(jì)算機(jī)復(fù)合鍵的處理方法,通??梢约僭O(shè)一個(gè)鍵具有復(fù)合功能,再與其它減的鍵值組合成復(fù)合鍵。

1、矩陣式鍵盤的結(jié)構(gòu)與工作原理

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

矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程方法如下所述。

2、矩陣式鍵盤的按鍵識(shí)別方法

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

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

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

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

下面給出一個(gè)具體的例子:

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

1、檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P1.4-P

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

2、去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。

3、若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤的行線進(jìn)行掃描。P1.4-P1.7按下述4種組合依次輸出:

P1.71110

P1.61101

P1.51011

P1.40111

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

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

鍵盤掃描程序:

從以上分析得到鍵盤掃描程序的流程圖如圖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

鍵盤處理程序就作這么一個(gè)簡(jiǎn)單的介紹,實(shí)際上,鍵盤、顯示處理是很復(fù)雜的,它往往占到一個(gè)應(yīng)用程序的大部份代碼,可見其重要性,但說(shuō)到,這種復(fù)雜并不來(lái)自于單片機(jī)的本身,而是來(lái)自于操作者的習(xí)慣等等問(wèn)題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當(dāng)?shù)乃惴ū硎境鰜?lái),最后再去寫代碼,這樣,才能快速有效地寫好代碼。

到本課為止,本站教程暫告一個(gè)段落!感謝大家的關(guān)心和支持!

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

下面給出一個(gè)具體的例子:

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

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

1.檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無(wú)鍵閉合,否則有鍵閉合。

2.去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。

3.若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤的行線進(jìn)行掃描。P1.4-P1.7按下述4種組合依次輸出:

P1.71110

P1.61101

P1.51011

P1.40111

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

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

實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)XL1000的16位矩陣按鍵,在數(shù)碼管上分別顯示0---9,A,B,C,D,E,F。

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

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

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

參考程序:

;本程序?qū)崿F(xiàn)掃描按鍵顯示功能.

;分別按16個(gè)鍵盤顯示分別顯示數(shù)字123A456B789C*0#D

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

org0000h

ajmpmain

org0030h

main:

movdptr,#tab;將表頭放入DPTR

lcallkey;調(diào)用鍵盤掃描程序

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

movp0,a;將Acc值送入P0口

CLRP2.1;開顯示

ljmpmain;返回反復(fù)循環(huán)顯示

KEY:

LCALLKS;調(diào)用檢測(cè)按鍵子程序

JNZK1;有鍵按下繼續(xù)

LCALLDELAY2;無(wú)鍵按調(diào)用延時(shí)去抖

AJMPKEY;返回繼續(xù)檢測(cè)按鍵

K1:LCALLDELAY2

LCALLDELAY2;有鍵按下延時(shí)去抖動(dòng)

LCALLKS;再調(diào)用檢測(cè)按鍵程序

JNZK2;確認(rèn)有按下進(jìn)行下一步

AJMPKEY;無(wú)鍵按下返回繼續(xù)檢測(cè)

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

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

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

L6:JBP1.0,L1;P1.0等于1跳轉(zhuǎn)到L1

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

AJMPLK;跳轉(zhuǎn)到鍵值處理程序

L1:JBP1.1,L2;P1.1等于1跳轉(zhuǎn)到L2

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

AJMPLK;跳轉(zhuǎn)到鍵值理程序進(jìn)行鍵值處理

L2:JBP1.2,L3;P1.2等于1跳轉(zhuǎn)到L3

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

AJMPLK;跳轉(zhuǎn)到鍵值處理程序

L3:JBP1.3,NEXT;P1.3等于1跳轉(zhuǎn)到NEXT處

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

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

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

K4:LCALLDELAY2;調(diào)用延時(shí)去抖動(dòng)程序

LCALLKS;調(diào)用按鍵檢測(cè)程序

JNZK4;按鍵沒(méi)有松

開繼續(xù)返回檢測(cè)POPACC;將堆棧的值送入ACC

RET

NEXT:

INCR4;將列值加一

MOVA,R2;將R2的值送入A

JNBACC.7,KEY;掃描完至KEY處進(jìn)行下一掃描

RLA;掃描未完將A中的值右移一位進(jìn)行下一列的掃描

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

AJMPK3;跳轉(zhuǎn)到K3繼續(xù)

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

MOVA,P1;讀P1口

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

RET;子程序返回

DELAY2:;40ms延時(shí)去抖動(dòng)子程序

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輪流顯示鍵盤因?yàn)闊o(wú)法表達(dá)*#就用H表示,B用8表示

end

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

數(shù)碼管的字型表是按照標(biāo)準(zhǔn)接法做的,按對(duì)應(yīng)的按鍵數(shù)碼管顯示對(duì)應(yīng)的數(shù)字。

以下是源程序:

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數(shù)據(jù)采集控制

;P2.6P2.7個(gè)位十位顯示轉(zhuǎn)換控制

;P1口接8個(gè)開關(guān)模擬數(shù)據(jù)

;P1.0-P1.3為個(gè)位開關(guān)量輸入

;P1.4-P1.7為十位開關(guān)量輸入

;此程序僅供參考

;功能P1口接8個(gè)開關(guān)輸入量4個(gè)一組,分別為個(gè)位,十位輸入

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

;開關(guān)量。P2.6P2.7控制是否顯示個(gè)位

或十位

ORG100h

LJMPSTAR

STAR:MOVP1,#0FFH

SETBP3.1數(shù)據(jù)讀入標(biāo)志

MOVR0,#100,循環(huán)工作次數(shù)

LOOP:JBP3.1,$P3.1低電平時(shí),采集P1口數(shù)據(jù)開關(guān)量處理顯示階段不再應(yīng)答P3.1

MOVA,P1

PUSHACC

ANLA,#0FH取個(gè)位數(shù)值

MOVR1,A個(gè)位數(shù)值保存到R1

POPACC

ANLA,#0F0H

SWAPA高4位轉(zhuǎn)成字節(jié)信息

MOVR2,A十位數(shù)值保存到R2

MOVDPTR,#TABLED

MOVA,R1

MOVCA,@A DPTR

MOVP0,A

CLRP2.6個(gè)位顯示

ACALLDELAY500MS

SETBP2.6

MOVA,R2

MOVCA,@A DPTR

MOVP0,A

CLRP2.7十位顯示

ACALLDELAY500MS

SETBP2.7

DJNZR0,LOOP

DELAY500MS:延時(shí)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.實(shí)驗(yàn)任務(wù)

在8X8 LED點(diǎn)陣上顯示柱形,讓其先從左到右平滑移動(dòng)三次,其次從右到左平滑移動(dòng)三次,再次從上到下平滑移動(dòng)三次,最后從下到上平滑移動(dòng)三次,如此循環(huán)下去。

2.電路原理圖

圖4.24.1

3.硬件電路連線

(1).把“單片機(jī)系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DR1-DR8”端口上;

(2).把“單片機(jī)系統(tǒng)”區(qū)域中的P3端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DC1-DC8”端口上;

4.程序設(shè)計(jì)內(nèi)容

(1).8X8 點(diǎn)陣LED工作原理說(shuō)明

8X8點(diǎn)陣LED結(jié)構(gòu)如下圖所示

圖4.24.2

從圖4.24.2中可以看出,8X8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮;因此要實(shí)現(xiàn)一根柱形的亮法,如圖49所示,對(duì)應(yīng)的一列為一根豎柱,或者對(duì)應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮的方法如下所述:

一根豎柱:對(duì)應(yīng)的列置1,而行則采用掃描的方法來(lái)實(shí)現(xiàn)。

一根橫柱:對(duì)應(yīng)的行置0,而列則采用掃描的方法來(lái)實(shí)現(xiàn)。

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語(yǔ)言源程序

#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點(diǎn)陣顯示實(shí)驗(yàn)

一.實(shí)驗(yàn)要求

編程實(shí)現(xiàn)中英文字符的顯示。

二.實(shí)驗(yàn)?zāi)康?/p>

1.了解LED點(diǎn)陣顯示的基本原理和實(shí)現(xiàn)方法。

2.掌握點(diǎn)陣漢字庫(kù)的編碼和從標(biāo)準(zhǔn)字庫(kù)中提取漢字編碼的方法。

三.實(shí)驗(yàn)電路及連線

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

Fig22-0WTD3088LED分布

如圖22-1示,本實(shí)驗(yàn)?zāi)K使用74LS374來(lái)控制列輸入線的電平值。將74LS374的某輸出置0,則對(duì)應(yīng)的LED陰極端被置低。如圖22-2示,本實(shí)驗(yàn)?zāi)K使用74LS273來(lái)控制行輸入線,并通過(guò)9013提供電流驅(qū)動(dòng)。將74LS273的某輸出置1,則對(duì)應(yīng)的LED陽(yáng)極端被置高。每次系統(tǒng)重新開啟或總清后,74LS273輸出為全0,LED顯示被關(guān)閉。

通過(guò)編程控制各顯示點(diǎn)對(duì)應(yīng)LED陽(yáng)極和陰極端的電平,就可以有效的控制各顯示點(diǎn)的亮滅。

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

Fig22-2行掃描電路

Fig22-3地址譯碼電路

本實(shí)驗(yàn)?zāi)K使用4塊WTD3088組成16×16點(diǎn)陣,以滿足漢字顯示的要求。為了方便的控制四個(gè)單元,使用了一片74LS139譯碼,產(chǎn)生四個(gè)地址片選信號(hào):CLKR1=CSLED,CLKR2=CSLED 1,用于行控制的兩片74LS273;CLKC1=CSLED 2,CLKC2=CSLED 3,用于列控制的兩片74LS374。

實(shí)驗(yàn)接線:按示例程序,模塊的CSLED接51/96地址的8000H。

四.實(shí)驗(yàn)說(shuō)明

使用高亮度LED發(fā)光管構(gòu)成點(diǎn)陣,通過(guò)編程控制可以顯示中英文字符、圖形及視頻動(dòng)態(tài)圖形。LED顯示以其組構(gòu)方式靈活、亮度高、技術(shù)成熟、成本低廉等特點(diǎn)在證券、運(yùn)動(dòng)場(chǎng)館及各種室內(nèi)/外顯示場(chǎng)合得到廣泛的應(yīng)用。

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

實(shí)驗(yàn)盤片中“字符轉(zhuǎn)換”子目錄下提供的Basc16.exe,BHz16.exe可方便的將單個(gè)字符的碼表從標(biāo)準(zhǔn)字庫(kù)Asc16,Hzk16中提取出來(lái)。具體使用方法是運(yùn)行上述可執(zhí)行程序,根據(jù)提示輸入所需字符(如是漢字還需要先啟動(dòng)dos下的漢字環(huán)境,如ucdos,pdos95等)。程序?qū)⒃撟址拇a表提取出來(lái),存放在該字符ASC或區(qū)位碼為文件名稱的.dat文件中。用戶只需將該文件中內(nèi)容拷貝、粘貼到自己的程序中即可。但需要注意字節(jié)排列順序、字節(jié)中每一位與具體顯示點(diǎn)的一一對(duì)應(yīng)關(guān)系,必要時(shí)還要對(duì)碼表稍作修改。同一目錄下還提供了上述可執(zhí)行程序的源文件,使用BC3.1編寫,供用戶參考。

五.實(shí)驗(yàn)程序框圖

用戶應(yīng)留心其中行掃描的實(shí)現(xiàn)及碼表的處理。

六.實(shí)驗(yàn)程序:

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

;________*LED點(diǎn)陣顯示示例程序______________________*

;__該程序顯示Asc16字符__

;__為了簡(jiǎn)單起見,程序只顯示一個(gè)字符__

;__該程序針對(duì)T598實(shí)驗(yàn)機(jī)的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQUCSLED 2H;列1374

CSC2EQUCSLED 3H;列2374

ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關(guān)閉行

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關(guān)閉列

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSC2

MOVX@DPTR,A

D:MOVR5,#00H

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

DISP:

MOVA,R5

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

MOVCA,@A DPTR

CPLACC;代碼取反,決定顯示的陰陽(yáng)

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

;________延時(shí)子程序,協(xié)調(diào)字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點(diǎn)陣字庫(kù)______________*

;ASC16字符編碼排列

;0

;1

;|

;|

;14

;15

;高位D7--D0

;請(qǐng)注意編碼的排列次序和實(shí)際顯示點(diǎn)陣分布的關(guān)系

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兩個(gè)示例程序。和Hz16字符的簡(jiǎn)單點(diǎn)陣顯示。

;________*LED點(diǎn)陣顯示示例程序______________________*

;__該程序顯示hz16字符__

;__為了簡(jiǎn)單起見,程序只顯示一個(gè)字符__

;__該程序針對(duì)T598實(shí)驗(yàn)機(jī)的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQUCSLED 2H;列1374

CSC2EQUCSLED 3H;列2374ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關(guān)閉LED顯示

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關(guān)閉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

;________延時(shí)子程序,協(xié)調(diào)字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點(diǎn)陣字庫(kù)______________*

;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的計(jì)算機(jī)可鎖定加密鍵盤設(shè)計(jì)

摘要:介紹PC鍵盤和鍵盤接口的PS/2通信協(xié)議,以及用89C51實(shí)現(xiàn)可鎖定鍵盤的軟件和硬件設(shè)計(jì)方法。具有安全可靠、容錯(cuò)能力強(qiáng)、可以直接采用標(biāo)準(zhǔn)鍵盤進(jìn)行改裝、便于實(shí)現(xiàn)等優(yōu)點(diǎn),并保留標(biāo)準(zhǔn)鍵盤的全部功能。

關(guān)鍵詞:PS/289C51C51鍵盤

引言

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

1鍵盤功能及工作原理

PC鍵盤功能主要有按鍵識(shí)別、去抖、重鍵處理、發(fā)送掃描碼、自動(dòng)重發(fā)、接收鍵盤命令、處理命令等。鍵盤有編碼鍵盤和非編碼鍵盤。編碼鍵盤程序設(shè)計(jì)簡(jiǎn)單,但硬件電路復(fù)雜,價(jià)格較高;非編碼鍵盤用軟件來(lái)實(shí)現(xiàn)識(shí)別鍵、編碼轉(zhuǎn)換、去抖等功能,硬件電路簡(jiǎn)單,價(jià)格便宜?,F(xiàn)代微機(jī)系統(tǒng)中廣泛采用非編碼鍵盤。PC鍵盤多采用18行×8列的二維矩陣行列結(jié)構(gòu)。采用行掃描法識(shí)別按下的按鍵。

2PS/2協(xié)議

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

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

當(dāng)時(shí)鐘線和數(shù)據(jù)線均為高電平時(shí),允許鍵盤發(fā)送數(shù)據(jù),系統(tǒng)將接收數(shù)據(jù);當(dāng)時(shí)鐘線被拉為低電平時(shí),表明系統(tǒng)禁止數(shù)據(jù)傳輸。圖1給出了發(fā)送時(shí)序,包含1個(gè)低電平觸發(fā)的起始位、8位數(shù)據(jù)位、1個(gè)奇校驗(yàn)位和1個(gè)高電平的結(jié)束位。

2.2PC系統(tǒng)到鍵盤的通信協(xié)議

若時(shí)鐘線出現(xiàn)高電平,數(shù)據(jù)線出現(xiàn)低電平,表明系統(tǒng)請(qǐng)求發(fā)送,鍵盤準(zhǔn)備產(chǎn)生同步時(shí)鐘脈沖串,并接收數(shù)據(jù)。包含了1個(gè)低電平觸發(fā)的起始位、8位數(shù)據(jù)位、1個(gè)奇校驗(yàn)位、1個(gè)應(yīng)答位、1個(gè)高電平的結(jié)束位。圖2為時(shí)序圖。

(1)鍵盤命令及執(zhí)行過(guò)程

①FFH:復(fù)位鍵盤。系統(tǒng)通過(guò)此軟件復(fù)位命令使鍵盤進(jìn)入程序復(fù)位和內(nèi)部自測(cè)試,稱為基本保證測(cè)試(BAT)。復(fù)位鍵盤的過(guò)程如下:

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

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

c.鍵盤檢測(cè)到此狀態(tài)后開始BAT操作;

d.如果BAT正確完成,鍵盤發(fā)送AAH以表示結(jié)束,

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

②FEH:重新發(fā)送。當(dāng)系統(tǒng)檢測(cè)

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

④F6H:設(shè)置缺省值。此命令使鍵盤所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),鍵盤繼續(xù)掃描。

⑤F5H:設(shè)置缺省值和停止鍵盤。此命令使鍵盤所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),并停止鍵盤掃描,等待下一個(gè)鍵盤命令。

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

⑦F3H:設(shè)置拍發(fā)速率和延時(shí)參數(shù)。每當(dāng)按下任一鍵時(shí),鍵盤以拍發(fā)速率連續(xù)送出鍵的接通碼,直到鍵被釋放為止。延時(shí)參數(shù)是指按下一鍵后,鍵盤輸出的響應(yīng)時(shí)間。

系統(tǒng)缺省設(shè)置:拍發(fā)速率=10個(gè)/s±20,延時(shí)=500ms±20。

當(dāng)要改變?cè)O(shè)置時(shí)可以使用F3H命令,并后跟一個(gè)字節(jié)的參數(shù)。參數(shù)定義如表1所列。

表1

D7

D6D5

D4D3

D2D1D0

C

B

A

計(jì)算拍發(fā)速率和響應(yīng)延時(shí)的公式如下:

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

響應(yīng)延時(shí)=(1 C)×250(ms)

注:缺省的延時(shí)參數(shù)值為2CH。

此命令的執(zhí)行過(guò)程如下:

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

掃描和等待隨后的參數(shù);

b.鍵盤若收到隨后的設(shè)置參數(shù),用另一個(gè)ACK響

應(yīng),并按其參數(shù)設(shè)置新的拍發(fā)速率和響應(yīng)延時(shí),

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

c.鍵盤若收到FAH命令,但無(wú)隨后的設(shè)置參數(shù),則

鍵盤結(jié)束命令設(shè)置,并保持原來(lái)的拍發(fā)速率和響

應(yīng)延時(shí),停止掃描。

⑧F2H,F(xiàn)1,EFH:保留未用。

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

⑩EEH:回送命令。此命令用于輔助診斷,要求鍵盤接收到EEH時(shí)也要回送EEH予以響應(yīng)。若鍵盤原來(lái)是開放的,則繼續(xù)掃描。

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

表2

D7D3

D2

D1

D0

保留

1=激勵(lì)CapsLED

1=激勵(lì)NumLED

1=激勵(lì)ScrollLED

此命令執(zhí)行過(guò)程與F3H相似。若命令后跟參數(shù),則按參數(shù)設(shè)定LED狀態(tài)并繼續(xù)掃描。若僅有命令無(wú)參數(shù),則不改變LED原狀態(tài),并停止掃描。

(2)鍵盤響應(yīng)

鍵盤在下列四種情況下都會(huì)向鍵盤接口發(fā)送數(shù)據(jù)。

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

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

③系統(tǒng)向鍵盤發(fā)送鍵盤命令后,鍵盤回送應(yīng)答。

④當(dāng)用戶按鍵速度超出鍵盤所能容納的最大鍵個(gè)數(shù)時(shí),鍵盤做出響應(yīng)。

后三種情況稱為鍵盤響應(yīng)。響應(yīng)字節(jié)有7個(gè),定義如下。

①FEH:重新發(fā)送響應(yīng)。當(dāng)鍵盤收到一個(gè)無(wú)效的鍵盤命令,或者檢測(cè)到奇偶錯(cuò)的鍵盤命令時(shí),鍵盤回送響應(yīng)字節(jié)為FEH,要求系統(tǒng)重發(fā)鍵盤命令。

②FAH:正常應(yīng)答。對(duì)任何一個(gè)有效的鍵盤命令,鍵盤回送FAH予以響應(yīng)。

③00H:超限應(yīng)答。當(dāng)用戶按鍵速度超出鍵盤所能容納的最大鍵符個(gè)數(shù)時(shí)(16個(gè)字節(jié)的緩沖器),鍵盤發(fā)送00H。

④FDH:診斷故障應(yīng)答。鍵盤接受軟件復(fù)位命令,執(zhí)行自測(cè)試過(guò)程中。若檢測(cè)到故障,則以FDH應(yīng)答。此時(shí),鍵盤停止掃描并等待下一個(gè)鍵盤命令。

⑤AAH:診斷正常應(yīng)答。鍵盤在軟件復(fù)位過(guò)程中,正常完成BAT測(cè)試,以AAH應(yīng)答。

⑥FEH:回響命令的應(yīng)答,對(duì)鍵盤FEH命令的應(yīng)答。

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

3硬件設(shè)計(jì)

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

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

4軟件設(shè)計(jì)

①消抖及重鍵處理:通過(guò)軟件上延時(shí)程序來(lái)消除抖動(dòng);采用后按鍵優(yōu)先處理,即多鍵同時(shí)按下時(shí),只重復(fù)發(fā)送最后按下鍵的掃描碼。

②程序包括鍵盤掃描子程序、發(fā)送鍵碼子程序、發(fā)送數(shù)據(jù)子程序、接收命令子程序、定時(shí)器1中斷服務(wù)程序、主程序等。鍵盤掃描子程序用于掃描鍵狀態(tài),將被按鍵的位置號(hào)存入緩沖器中;發(fā)送鍵碼子程序用于將緩沖區(qū)鍵的接通碼或斷開碼發(fā)送給計(jì)算機(jī)鍵盤接口或者存在鍵盤密碼緩沖區(qū)中;發(fā)送數(shù)據(jù)子程序用于將數(shù)據(jù)發(fā)給計(jì)算機(jī)鍵盤接口;接收命令子程序用于接收計(jì)算機(jī)鍵盤接口發(fā)來(lái)的鍵盤命令;定時(shí)器1中斷服務(wù)子程序用于給程序中的延時(shí)提供標(biāo)準(zhǔn)時(shí)鐘,并具有軟件看門狗功能,防止軟件出現(xiàn)死機(jī)現(xiàn)象;主程序用于系統(tǒng)初始化,子程序調(diào)度,鎖定狀態(tài)的顯示等。

圖6發(fā)送緩沖區(qū)鍵碼子程序流程圖

圖4~6是主要軟件模塊的流程圖。單片機(jī)源程序見本刊網(wǎng)絡(luò)補(bǔ)充版(.com)。

5結(jié)論

本文介紹的PC/AT鍵盤具有結(jié)構(gòu)簡(jiǎn)單、設(shè)計(jì)靈活、安全可靠的特點(diǎn),可用于標(biāo)準(zhǔn)PC和嵌入式PC。本鍵盤可以在標(biāo)準(zhǔn)的鍵盤基礎(chǔ)上進(jìn)行改造,只需換掉原來(lái)的控制芯片即可,可節(jié)省設(shè)計(jì)成本。

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

KeilC51常用功能模塊使用說(shuō)明

說(shuō)明

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

這些可選內(nèi)容大部分為宏定義,如果不定義宏相應(yīng)的功能在編譯時(shí)被屏蔽,不會(huì)增加代碼長(zhǎng)度。具體可選內(nèi)容見各模塊中的說(shuō)明。

在Config.h文件中還要包含一個(gè)單片機(jī)硬件的資源頭文件。

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

時(shí)鐘模塊

在單片機(jī)軟件設(shè)計(jì)中,時(shí)鐘是重要資源,為了充分利用時(shí)鐘資源,故設(shè)計(jì)本時(shí)鐘模塊。本模塊使用定時(shí)器0,在完成用戶指定功能的同時(shí),還能夠自動(dòng)處理一些其它模塊中與時(shí)鐘相關(guān)的信息。

時(shí)鐘模塊由聲明文件Timer.h以及實(shí)現(xiàn)文件Timer.c組成。

用戶應(yīng)該在Config.h中定義宏TIMER_RELOAD來(lái)設(shè)定定時(shí)器0的重裝載初值。推薦的定時(shí)器0的中斷時(shí)間大于1毫秒。

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

延時(shí):當(dāng)用戶需要進(jìn)行一定時(shí)間的延時(shí)時(shí),可以通過(guò)調(diào)用Delay()來(lái)進(jìn)行,參數(shù)為時(shí)鐘中斷的次數(shù)。如時(shí)鐘中斷周期為1ms,想進(jìn)行100ms的延時(shí),則可以調(diào)用Delay(100)。

注意:

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

定時(shí):當(dāng)程序中需要使用定時(shí)功能時(shí),如等待某外部事件,如果在一定時(shí)間內(nèi)發(fā)生則繼續(xù)執(zhí)行,如果在這段時(shí)間內(nèi)發(fā)生,則認(rèn)為出現(xiàn)錯(cuò)誤,轉(zhuǎn)向錯(cuò)誤處理機(jī)制。

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

這里簡(jiǎn)單說(shuō)明一下關(guān)于阻塞式函數(shù)及非阻塞式函數(shù)。簡(jiǎn)單說(shuō),阻塞式函數(shù)就是當(dāng)檢測(cè)完成條件,如

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

voidCheckSomething()

{

//gbitSuccessFlagisaglobalvariable

while(gbitSuccessFlag==FALSE)

{

//donothingbutwaiting

}

}

可以看到,當(dāng)bitSuccessFlag沒(méi)有被設(shè)置為TRUE時(shí),函數(shù)保持等待狀態(tài)不返回,這樣就是阻塞式的函數(shù)。

另外一種情況:

BITCheckSomething()

{

if(gbitSuccessFlag==TRUE)

{

//…

returnTRUE;

}

returnFALSE;

}

在這里,如果所檢測(cè)的事件有沒(méi)有完成,函數(shù)進(jìn)行檢測(cè)之后,立刻返回,通過(guò)返回值報(bào)告完成情況,如果沒(méi)有完成,則等待調(diào)用者分配再次執(zhí)行的機(jī)會(huì)。這樣的函數(shù)就是非阻塞函數(shù)。

在應(yīng)用定時(shí)功能時(shí),首先要將檢測(cè)函數(shù)定義成非阻塞函數(shù)。如上面的第二個(gè)版本的CheckSomething。

然后下面模式:

BITbitDone=FALSE;

ResetClock();//cleartimerinterrupttimescounter

while(GetClock()

{

if(CheckSomething()==TRUE)

{

bitDone=TRUE;

break;

}

}

if(bitDone==FALSE)

{

//processtimeout

}或者簡(jiǎn)單寫成:

BITbitDone=FALSE;

ResetClock();

while(GetClock()=(z))

當(dāng)然,用戶也可以將IsPackageHeader和IsPackageTailer定義成為函數(shù),通過(guò)BIT類型的返回值來(lái)向調(diào)用者提供與相應(yīng)宏相同的信息。

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

這時(shí)需要提供回調(diào)函數(shù)QueryPackageFormat,原形如下:

BYTEQueryPackageFormat(BYTEbyData,BYTEbyCount,BYTEbyParam);

函數(shù)中三個(gè)參數(shù)的含義與使用簡(jiǎn)單數(shù)據(jù)包格式時(shí)判斷數(shù)據(jù)包尾的宏的參數(shù)相同。

函數(shù)通過(guò)返回值來(lái)通知作為調(diào)用者的接收函數(shù)對(duì)接收到的數(shù)據(jù)如何處理,但目前這種方法僅為需要處理復(fù)雜數(shù)據(jù)包格式時(shí)的一種可選方法,但不推薦。用戶如果想使用這種方法可以自己更改接收函數(shù)中相應(yīng)的

#ifdefSCOM_ComplexPackageFormat

#endif//SCOMM_ComplexPackageFormat

預(yù)編譯指令之間的內(nèi)容。

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

0:繼續(xù)找數(shù)據(jù)包頭或繼續(xù)找數(shù)據(jù)包尾。

1:找到數(shù)據(jù)包頭。

2:找到數(shù)據(jù)包尾。

3:數(shù)據(jù)包出錯(cuò),需要拋棄。

然后更改源代碼來(lái)實(shí)現(xiàn)上面的協(xié)議。

注意:當(dāng)用戶需要使用字符串的時(shí)候,可以利用簡(jiǎn)單的包裝函數(shù)將字符串轉(zhuǎn)換為字節(jié)數(shù)組。所以沒(méi)有必要提供專用的字符串處理函數(shù)。

鍵盤掃描模塊

鍵盤掃描模塊有兩種工作方式,一種為自動(dòng)的由時(shí)鐘模塊調(diào)用,另一種是由程序員自行調(diào)用。

1)由時(shí)鐘模塊自動(dòng)調(diào)用的方式

將時(shí)鐘模塊實(shí)現(xiàn)文件(Timer.h)及鍵盤掃描模塊的實(shí)現(xiàn)文件(KBScan。c)包含進(jìn)工程,在Config.h文件中添加TIMER_KBSCANDELAY宏。時(shí)鐘模塊自動(dòng)對(duì)時(shí)鐘中斷進(jìn)行計(jì)數(shù),當(dāng)達(dá)到TIMER_KBSCANDELAY宏所定義的值后,自動(dòng)調(diào)用鍵盤掃描模塊中的函數(shù)KBScanProcess()進(jìn)行鍵盤掃描,也就是說(shuō),這個(gè)宏的值可以決定按鍵消抖動(dòng)的時(shí)間。

用戶應(yīng)該提供兩個(gè)回調(diào)函數(shù)OnKBScan()及OnKeysPressed()。在函數(shù)OnKBScan中進(jìn)行鍵盤掃描,并返回掃描碼。掃描碼的類型缺省為BYTE,當(dāng)鍵盤規(guī)模較大時(shí),BYTE不能夠完全包含鍵盤信息時(shí),可在Config.h文件中重定義宏KBvalue,如下:

#defineKBvalueWORD

這樣,就可以使用16位的鍵盤掃描碼,如果此時(shí)還達(dá)不到要求,可以將鍵盤掃描碼定義成一個(gè)結(jié)構(gòu),但這樣做將會(huì)增加代碼量及消耗更多的RAM資源,故不推薦。

掃描模塊調(diào)用OnKBScan取得掃描碼,并調(diào)用用戶可以重定義的宏IsNoKeyPressed來(lái)判斷是否有鍵按下,缺省的IsNoKeyPressed實(shí)現(xiàn)如下:

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

即認(rèn)為OnKBScan返回0掃描碼時(shí)為沒(méi)有鍵按下,如果掃描函數(shù)返回其它非零掃描碼做為無(wú)鍵按下的掃描碼時(shí),可以在Config.h文件中重定義IsNoKeyPressed宏的實(shí)現(xiàn)。

8位鍵盤掃描碼(缺省值)時(shí),相應(yīng)的掃描函數(shù)為:

BYTEOnKBScan()

當(dāng)掃描模塊經(jīng)過(guò)軟件消抖動(dòng)之后,發(fā)現(xiàn)有鍵按下,就會(huì)調(diào)用另一個(gè)回調(diào)函數(shù)OnKeysPressed。函數(shù)的聲明應(yīng)該如下:

voidOnKeyPressed(BYTEbyKBvalue,BYTEbyState)

其中中的參數(shù)byKBvalue的類型為BYTE,此為缺省值,如果使用其它類型的掃描碼,就將此參數(shù)變?yōu)橄鄳?yīng)類型。這個(gè)值由OnKBScan返回。另一個(gè)參數(shù)byState在通常情況下為零。但當(dāng)用戶在Config.h中定義宏KBSCAN_BRUSTCOUNT,同時(shí)鍵盤上的某鍵被按住不放時(shí),掃描模塊對(duì)它自己的調(diào)用(注意這里和TIMER_KBSCANDELAY宏不同,TIMER_KBSCANDELAY是時(shí)鐘中斷足夠的次數(shù)后調(diào)用掃描模塊,而KBSCAN_BRUSHCOUNT為掃描模塊自身的被調(diào)用次數(shù))進(jìn)行計(jì)數(shù),當(dāng)達(dá)到KBSCAN_BRUSTCOUNT時(shí),掃描模塊調(diào)用OnKeysPressed,此時(shí)第一個(gè)參數(shù)的含義不變,而byState變成1,同時(shí)計(jì)數(shù)器復(fù)位,又經(jīng)過(guò)一段時(shí)間后,用值為3的byState調(diào)用OnKeysPressed。這樣就可以很方便的實(shí)現(xiàn)多功能鍵或者檢測(cè)某鍵的長(zhǎng)時(shí)間被按下。

2)由用戶自行調(diào)用

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

注意:

1)函數(shù)KBScanProcess為非阻塞函數(shù),它將在很快的時(shí)間內(nèi)返回,等待再次分配給它執(zhí)行的機(jī)會(huì)。

2)函數(shù)KBScanProcess是在時(shí)鐘中斷外部運(yùn)行的,它的過(guò)程可以被任何中斷打斷,但不影響系統(tǒng)運(yùn)行。

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

應(yīng)用舉例

現(xiàn)在來(lái)舉例說(shuō)明上述幾個(gè)模塊的使用方法。

硬件環(huán)境描述:

為了控制一盞燈,需要單片機(jī)提供一個(gè)做控制功能的開關(guān)量,這里不描述外部接口電路,只說(shuō)明當(dāng)單片機(jī)的P10腳為高電平時(shí),燈滅,當(dāng)P10腳為低電平時(shí),燈亮。

可以通過(guò)計(jì)算機(jī)由串口發(fā)送命令來(lái)控制,或通過(guò)一個(gè)按鍵(pus

hbutton不是自鎖式的按鍵)來(lái)手動(dòng)控制(按鍵接在P11腳上,當(dāng)鍵沒(méi)有按下時(shí),P11電平為高,鍵按下時(shí),引腳電平被接低),當(dāng)使用按鍵手動(dòng)控制的時(shí)候,需要給計(jì)算機(jī)發(fā)送通知。

設(shè)定串口通訊指令如下:

數(shù)據(jù)包由0xff做包頭,4個(gè)字節(jié)長(zhǎng),第二個(gè)字節(jié)為命令代碼,第三個(gè)字節(jié)為數(shù)據(jù),最后一個(gè)字節(jié)為校驗(yàn)位。

命令和數(shù)據(jù)代碼有如下組合:

(計(jì)算機(jī)發(fā)給單片機(jī))

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

0x100x00:計(jì)算機(jī)控制燈滅。

(單片機(jī)發(fā)給計(jì)算機(jī))

0x110x01:?jiǎn)纹瑱C(jī)正常執(zhí)行控制指令,返回。(數(shù)據(jù)位是非零值即可)

0x110x00:單片機(jī)不能夠正常執(zhí)行控制指令,或控制指令錯(cuò)(不明含義的數(shù)據(jù)包或校驗(yàn)錯(cuò)等)。

0x120x01:手動(dòng)控制燈亮。(數(shù)據(jù)位是非零值即可)

0x120x00:手動(dòng)控制燈滅。建立工程:

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

啟動(dòng)KeilC的IDE,在Example下建立新工程,將各模塊的實(shí)現(xiàn)文件包含進(jìn)工程。

在Example文件夾下建立Output文件夾,更改工程設(shè)置,將Output作為輸出文件和List文件的輸出文件夾(推薦使用這樣的結(jié)構(gòu),當(dāng)保存工程文件時(shí),可以簡(jiǎn)單的刪除Output文件夾中的內(nèi)容而不會(huì)誤刪有用的工程文件)。

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

輸入代碼:

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

//

//file:onfig.h

//

#ifndef_CONFIG_H_

#define_CONFIG_H_

#include//使用AT89C52做控制

#include“../Common/Common.h”//使用自定義的數(shù)據(jù)類型

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

#defineTIMER_KBSCANDELAY40//40ms重檢測(cè)按鍵狀態(tài),即40ms消抖

#defineSCOMM_AsyncInterface//使用異步通訊服務(wù)

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

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

#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;//燈的狀態(tài),缺省為off

staticvoidInitialize()

{

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

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

//波特率為19200

EA=1;//開中斷

}

voidmain()

{

Initialize();//初始化

while(TRUE)//主循環(huán)

{

ImpTimerService();//實(shí)現(xiàn)時(shí)鐘中斷服務(wù),如鍵盤掃描

AsyncRecePackage(4);//接收4個(gè)字節(jié)長(zhǎng)的數(shù)據(jù)包

}

}

//在中斷外部響應(yīng)時(shí)鐘中斷事件

voidOnTimerEvent()

{

//donothing

}

//控制外部燈

staticvoidTriggerLamp(BITbEnable)

{

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

}

//鍵掃描回調(diào)函數(shù)

BYTEKBScan()

{

BITb;

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

b=P11;//讀入引腳狀態(tài)

return~b;//數(shù)據(jù)反相做掃描碼

}

//計(jì)算校驗(yàn)和

staticBYTECalcCheckSum(BYTE*pbyBuf,BYTEbyLen)

{

BYTEby,bySum=0;

for(by=0;by

return0–bySum;

}

//接收到鍵盤消息回調(diào)函數(shù)

voidOnKeyPressed(BYTEbyvalue,BYTEbyState)

{

BYTEby[4];

if(byState==0)

{

switch(byvalue)

{

case0x01:

gbitLampState=~gbitLampState;//燈狀態(tài)取反

TriggerLamp(gbitLampState);//執(zhí)行控制

by[0]=0xff;//構(gòu)造數(shù)據(jù)包

by[1]=0x12;

by[2]=(BYTE)gbitLampState;

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

SendPackage(by,4);//發(fā)送數(shù)據(jù)包

break;

//處理其它掃描碼

default:

break;

}

}

//接收到數(shù)據(jù)包回調(diào)函數(shù)

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);//處理長(zhǎng)度或校驗(yàn)和不正確

}

switch(pbyBuf[1])

{

case0x10:

gbitLampState=(BIT)pbyBuf[2];

TriggerLamp(gbitLampState);

by[2]=1;

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

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

break;

default://不知道的命令

by[2]=0;

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

SendPackage(by,4);//發(fā)送沒(méi)有成功執(zhí)行通知

break;

}

}

4.課程設(shè)計(jì)單獨(dú)計(jì)算成績(jī),考評(píng)方法見其大綱。

三、理論考試說(shuō)明

1.單片機(jī)技術(shù)及應(yīng)用理論考試,采用閉卷筆試形式,考試時(shí)間120分鐘。

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

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

①填空題;

②選擇題;

③判斷題;

④簡(jiǎn)答題⑤綜合應(yīng)用題。

四、考試考核要求層次

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

掌握:

對(duì)于本課程的重點(diǎn)內(nèi)容要求學(xué)生達(dá)到掌握的程度。即能夠全面、深入理解和熟練掌握所學(xué)內(nèi)容,并能夠用其分析、初步設(shè)計(jì)和解答與應(yīng)用相關(guān)的問(wèn)題,能夠舉一反三。要求學(xué)生掌握的內(nèi)容也就是考試的主要內(nèi)容,在考試中所占比例約70。

理解:

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

了解:

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

1、設(shè)X=5AH,Y=36H,則X與Y“或”運(yùn)算為__7EH_______,X與Y的“異或”運(yùn)算為___6CH_____。

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

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

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

5、若選擇內(nèi)部程序存儲(chǔ)器,應(yīng)該設(shè)置為_____高_(dá)______(高電平/低電平),那么,PSEN信號(hào)的處理方式為___不用__________________。

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

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

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

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

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

11、8051單片機(jī)的存儲(chǔ)器的最大特點(diǎn)是內(nèi)部RAM與外部RAM分開編址。

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

13、函數(shù)是C語(yǔ)言的基本單位。

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

15、MCS-51內(nèi)部提供3個(gè)可編程的16位定時(shí)/計(jì)數(shù)器,定時(shí)器有4種工作方式。

16、一個(gè)函數(shù)由兩部分組成,即說(shuō)明部分和語(yǔ)句部分。

17、串行口方式3發(fā)送的第9位數(shù)據(jù)要事先寫入SCON寄存器的TB8位。

18、利用8155H可以擴(kuò)展3個(gè)并行口,256個(gè)RAM單元。

19、C語(yǔ)言中輸入和輸出操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成。

二、選擇題

1、C語(yǔ)言中最簡(jiǎn)單的數(shù)據(jù)類型包括(B)。

A、整型、實(shí)型、邏輯型B、整型、實(shí)型、字符型

C、整型、字符型、邏輯型D、整型、實(shí)型、邏輯型、字符型

2、當(dāng)MCS-51單片機(jī)接有外部存儲(chǔ)器,P2口可作為(C)。

A、數(shù)據(jù)輸入口B、數(shù)據(jù)的輸出口

C、準(zhǔn)雙向輸入/輸出口D、輸出高8位地址

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

A、程序就是軟件B、軟件開發(fā)不受計(jì)算機(jī)系統(tǒng)的限制

C、軟件既是邏輯實(shí)體,又是物理實(shí)體D、軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

4、下列計(jì)算機(jī)語(yǔ)言中,CPU能直接識(shí)別的是(D)。

A、自然語(yǔ)言B、高級(jí)語(yǔ)言C、匯編語(yǔ)言D、機(jī)器語(yǔ)言

5、MCS-5l單片機(jī)的堆棧區(qū)是設(shè)置在(C)中。

A、片內(nèi)ROM區(qū)B、片外ROM區(qū)C、片內(nèi)RAM區(qū)D、片外RAM區(qū)

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

A、用C語(yǔ)言實(shí)現(xiàn)的算法必須要有輸入和輸出操作

B、用C語(yǔ)言實(shí)現(xiàn)的算法可以沒(méi)有輸出但必須要有輸入

C、用C程序?qū)崿F(xiàn)的算法可以沒(méi)有輸入但必須要有輸出

D、用C程序?qū)崿F(xiàn)的算法可以既沒(méi)有輸入也沒(méi)有輸出

7、定時(shí)器/計(jì)數(shù)器工作方式1是(D)。

A、8位計(jì)數(shù)器結(jié)構(gòu)B、2個(gè)8位計(jì)數(shù)器結(jié)構(gòu)

C、13位計(jì)數(shù)結(jié)構(gòu)D、16位計(jì)數(shù)結(jié)構(gòu)

8、C語(yǔ)言提供的合法的數(shù)據(jù)類型關(guān)鍵字是(B)。

A、DoubleB、shortC、integerD、Char

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

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

10、以下能正確定義一維數(shù)組的選項(xiàng)是(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、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指(D)。

A、存儲(chǔ)在外存中的數(shù)據(jù)B、數(shù)據(jù)所占的存儲(chǔ)空間量

C、數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式D、數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示

12、下列關(guān)于棧的描述中錯(cuò)誤的是(C)。

A、棧是先進(jìn)后出的先性表B、棧只能順序存儲(chǔ)

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

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

A、參與操作的數(shù)據(jù)B、操作數(shù)的地址值

C、程序的轉(zhuǎn)換地址D、指令的操作碼

14、MCS-51單片機(jī)的復(fù)位信號(hào)是(A)有效。

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

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

A、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

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

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

D、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

16、若MCS-51單片機(jī)使用晶振頻率為6MHz時(shí),其復(fù)位持續(xù)時(shí)間應(yīng)該超過(guò)(B)。

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

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

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

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

A、掩膜ROMB、PROMC、EPROMD、EEPROM

19、以下不能定義為用戶標(biāo)識(shí)符是(D)。

A、MainB、_0C、_intD、sizeof

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

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

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

A、對(duì)于double類型數(shù)組,不可以直接用數(shù)組名對(duì)數(shù)組進(jìn)行整體輸入或輸出

B、數(shù)組名代表的是數(shù)組所占存儲(chǔ)區(qū)的首地址,其值不可改變

C、當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時(shí),系統(tǒng)將給出“下標(biāo)越界”的出錯(cuò)信息

D、可以通過(guò)賦初值的方式確定數(shù)組元素的個(gè)數(shù)

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

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

23、存儲(chǔ)16×16點(diǎn)陣的一個(gè)漢字信息,需要的字節(jié)數(shù)為(A)

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

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

A、06HB、F9HC、30HD、CFH

25、在C語(yǔ)言中,合法的長(zhǎng)整型常數(shù)是(A)

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

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

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

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

A、PUSHR0B、PUSH@R0C、PUSH00HD、PUSH08H

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

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

29、設(shè)MCS-51單片機(jī)晶振頻率為12MHz,定時(shí)器作計(jì)數(shù)器使用時(shí),其最高的輸入計(jì)數(shù)頻率應(yīng)為(C)

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

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

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

三、判斷題

(√)1、在對(duì)某一函數(shù)進(jìn)行多次調(diào)用時(shí),系統(tǒng)會(huì)對(duì)相應(yīng)的自動(dòng)變量重新分配存儲(chǔ)單元。

(×)2、在C語(yǔ)言的復(fù)合語(yǔ)句中,只能包含可執(zhí)行語(yǔ)句。

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

(×)4、Continue和break都可用來(lái)實(shí)現(xiàn)循環(huán)體的中止。

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

(×)6、在MCS-51系統(tǒng)中,一個(gè)機(jī)器周期等于1.5μs。

(√)7、C語(yǔ)言允許在復(fù)合語(yǔ)句內(nèi)定義自動(dòng)變量。

(√)8、若一個(gè)函數(shù)的返回類型為void,則表示其沒(méi)有返回值。

(×)9、所有定義在主函數(shù)之前的函數(shù)無(wú)需進(jìn)行聲明。

(×)10、定時(shí)器與計(jì)數(shù)器的工作原理均是對(duì)輸入脈沖進(jìn)行計(jì)數(shù)。

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

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

(√)13、MCS-51的相對(duì)轉(zhuǎn)移指令最大負(fù)跳距是127B。

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

(√)15、TMOD中的GATE=1時(shí),表示由兩個(gè)信號(hào)控制定時(shí)器的的啟停。

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

(×)17、MCS-51系統(tǒng)可以沒(méi)有復(fù)位電路。

(×)18、片內(nèi)RAM與外部設(shè)備統(tǒng)一編址時(shí),需要專門的輸入/輸出指令。

(√)19、鎖存器、三態(tài)緩沖寄存器等簡(jiǎn)單芯片中沒(méi)有命令寄存和狀態(tài)寄存等功能。

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

四、簡(jiǎn)答題

1、在使用8051的定時(shí)器/計(jì)數(shù)器前,應(yīng)對(duì)它進(jìn)行初始化,其步驟是什么?

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

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

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

(4)啟動(dòng)定時(shí)器/計(jì)數(shù)器——編程TCON中TR1或TR0位。

2、什么是重入函數(shù)?重入函數(shù)一般什么情況下使用,使用時(shí)有哪些需要注意的地方?

答:多個(gè)函數(shù)可以同時(shí)使用的函數(shù),稱為重入函數(shù)。

通常情況下,C51函數(shù)不能被遞歸調(diào)用,也不能應(yīng)用導(dǎo)致遞歸調(diào)用的結(jié)構(gòu)。有此限制是由于函數(shù)參數(shù)和局部變量是存儲(chǔ)在固定的地址單元中。重入函數(shù)特性允許你聲明一個(gè)重入函數(shù)。即可以被遞歸調(diào)用的函數(shù)。

重入函數(shù)可以被遞歸調(diào)用,也可以同時(shí)被兩個(gè)或更多的進(jìn)程調(diào)用。重入函數(shù)在實(shí)時(shí)應(yīng)用中及中斷服務(wù)程序代碼和非中斷程序代碼必須共用一個(gè)函數(shù)的場(chǎng)合中經(jīng)常用到。

3、8051引腳有多少I/O線?他們和單片機(jī)對(duì)外的地址總線和數(shù)據(jù)總線有什么關(guān)系?地址總線和數(shù)據(jù)總線各是幾位?

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

地址總線共16位,數(shù)據(jù)總線是8位。

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

答:在有串行通信時(shí),定時(shí)器/計(jì)數(shù)器1的作用是串行口發(fā)生器。

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

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

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

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

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

5、如何消除鍵盤的抖動(dòng)?怎樣設(shè)置鍵盤中的復(fù)合鍵?

答:由于按鍵是機(jī)械開關(guān)結(jié)構(gòu),所以當(dāng)用手按下其中一個(gè)鍵時(shí),往往會(huì)出現(xiàn)所按鍵在閉合位置和斷開位置之間發(fā)生跳幾下后才會(huì)穩(wěn)定到閉合狀態(tài)的情況。在釋放一個(gè)鍵時(shí),也會(huì)出現(xiàn)類似的情況,這就是鍵的抖動(dòng),抖動(dòng)的持續(xù)時(shí)間不一,但通常不會(huì)大于10ms。

若抖動(dòng)問(wèn)題不解決,就會(huì)引起對(duì)閉合鍵的多次讀入。對(duì)于鍵抖動(dòng)最方便的解決方法就是當(dāng)發(fā)現(xiàn)有鍵按下后,不是立即進(jìn)行掃描,而是延時(shí)大約10ms后再進(jìn)行。由于一個(gè)鍵按下的時(shí)間一般會(huì)持續(xù)上百毫秒,所以延遲10ms后再掃描處理并不遲。

復(fù)合鍵可以仿照計(jì)算機(jī)復(fù)合鍵的處理方法,通??梢约僭O(shè)一個(gè)鍵具有復(fù)合功能,再與其它減的鍵值組合成復(fù)合鍵。1、矩陣式鍵盤的結(jié)構(gòu)與工作原理

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

矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程方法如下所述。

2、矩陣式鍵盤的按鍵識(shí)別方法

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

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

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

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

下面給出一個(gè)具體的例子:

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

1、檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無(wú)鍵閉合,否則有鍵閉合。

2、去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。

3、若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤的行線進(jìn)行掃描。P1.4-P1.7按下述4種組合依次輸出:

P1.71110

P1.61101

P1.51011

P1.40111

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

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

鍵盤掃描程序:

從以上分析得到鍵盤掃描程序的流程圖如圖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

鍵盤處理程序就作這么一個(gè)簡(jiǎn)單的介紹,實(shí)際上,鍵盤、顯示處理是很復(fù)雜的,它往往占到一個(gè)應(yīng)用程序的大部份代碼,可見其重要性,但說(shuō)到,這種復(fù)雜并不來(lái)自于單片機(jī)的本身,而是來(lái)自于操作者的習(xí)慣等等問(wèn)題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當(dāng)?shù)乃惴ū硎境鰜?lái),最后再去寫代碼,這樣,才能快速有效地寫好代碼。

到本課為止,本站教程暫告一個(gè)段落!感謝大家的關(guān)心和支持!矩陣按鍵部分由16個(gè)輕觸按鍵按照4行4列排列,連接到JP50端口。將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。確定矩陣式鍵盤上何鍵被按下,介紹一種“行掃描法”。行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識(shí)別方法.判斷鍵盤中有無(wú)鍵按下:將全部行線置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中無(wú)鍵按下。判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。下面給出一個(gè)具體的例子:電路圖路徑:G:\圖片\電路圖片\xl100097.jpg8031單片機(jī)的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。1.檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無(wú)鍵閉合,否則有鍵閉合。2.去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。3.若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤的行線進(jìn)行掃描。P1.4-P1.7按下述4種組合依次輸出:P1.71110P1.61101P1.51011P1.40111在每組行輸出時(shí)讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒(méi)有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。4.為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時(shí)的抖動(dòng)。實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)XL1000的16位矩陣按鍵,在數(shù)碼管上分別顯示0---9,A,B,C,D,E,F。接線方法:1用一條8PIN數(shù)據(jù)排線,把矩陣按鍵部份的JP50,接到CPU部份的P1口JP44.2接8位數(shù)碼管的數(shù)據(jù)線。將數(shù)碼管部份的數(shù)據(jù)口JP5接到CPU部份的P0口JP51.3接8位數(shù)碼管的顯示位線。將數(shù)碼管部份的顯示位口JP8接到CPU部份的P2口JP52.參考程序:;本程序?qū)崿F(xiàn)掃描按鍵顯示功能.;分別按16個(gè)鍵盤顯示分別顯示數(shù)字123A456B789C*0#D;鍵盤口P1,數(shù)碼管顯示第二位p21,數(shù)碼管段位p0口org0000hajmpmainorg0030hmain:movdptr,#tab;將表頭放入DPTRlcallkey;調(diào)用鍵盤掃描程序movca,@a dptr;查表后將鍵值送入ACCmovp0,a;將Acc值送入P0口CLRP2.1;開顯示ljmpmain;返回反復(fù)循環(huán)顯示KEY:LCALLKS;調(diào)用檢測(cè)按鍵子程序JNZK1;有鍵按下繼續(xù)LCALLDELAY2;無(wú)鍵按調(diào)用延時(shí)去抖AJMPKEY;返回繼續(xù)檢測(cè)按鍵K1:LCALLDELAY2LCALLDELAY2;有鍵按下延時(shí)去抖動(dòng)LCALLKS;再調(diào)用檢測(cè)按鍵程序JNZK2;確認(rèn)有按下進(jìn)行下一步AJMPKEY;無(wú)鍵按下返回繼續(xù)檢測(cè)K2:MOVR2,#0EFH;將掃描值送入R2暫存MOVR4,#00H;將第一列值送入R4暫存K3:MOVP1,R2;將R2的值送入P1口L6:JBP1.0,L1;P1.0等于1跳轉(zhuǎn)到L1MOVA,#00H;將第一行值送入ACCAJMPLK;跳轉(zhuǎn)到鍵值處理程序L1:JBP1.1,L2;P1.1等于1跳轉(zhuǎn)到L2MOVA,#04H;將第二行的行值送入ACCAJMPLK;跳轉(zhuǎn)到鍵值理程序進(jìn)行鍵值處理L2:JBP1.2,L3;P1.2等于1跳轉(zhuǎn)到L3MOVA,#08H;將第三行的行值送入ACCAJMPLK;跳轉(zhuǎn)到鍵值處理程序L3:JBP1.3,NEXT;P1.3等于1跳轉(zhuǎn)到NEXT處MOVA,#0cH;將第四行的行值送入ACCLK:ADDA,R4;行值與列值相加后的鍵值送入APUSHACC;將A中的值送入堆棧暫存K4:LCALLDELAY2;調(diào)用延時(shí)去抖動(dòng)程序LCALL KS;調(diào)用按鍵檢測(cè)程序JNZK4;按鍵沒(méi)有松開繼續(xù)返回檢測(cè)POPACC;將堆棧的值送入ACCRETNEXT:INCR4;將列值加一MOVA,R2;將R2的值送入AJNBACC.7,KEY;掃描完至KEY處進(jìn)行下一掃描RLA;掃描未完將A中的值右移一位進(jìn)行下一列的掃描MOVR2,A;將ACC的值送入R2暫存AJMPK3;跳轉(zhuǎn)到K3繼續(xù)KS:MOVP1,#0FH;將P1口高四位置0低四位值1MOVA,P1;讀P1口XRLA,#0FH;將A中的值與A中的值相異或RET;子程序返回DELAY2:;40ms延時(shí)去抖動(dòng)子程序MOVR5,#08HL7:MOVR6,#0FAHL8:DJNZR6,L8DJNZR5,L7RETtab:db28h,34h,28h,34h,0a9h,60h,20h,7ah,20h,21h,61h,74h,30h,62h,0a2h,7eh;0h0hc9878654a321輪流顯示鍵盤因?yàn)闊o(wú)法表達(dá)*#就用H表示,B用8表示end這是我做成功的4X4鍵盤掃描源程序,P1.0-P1.3做四根列線,P1.4-P1.7做四根行線。

數(shù)碼管的字型表是按照標(biāo)準(zhǔn)接法做的,按對(duì)應(yīng)的按鍵數(shù)碼管顯示對(duì)應(yīng)的數(shù)字。

以下是源程序:

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數(shù)據(jù)采集控制

;P2.6P2.7個(gè)位十位顯示轉(zhuǎn)換控制

;P1口接8個(gè)開關(guān)模擬數(shù)據(jù)

;P1.0-P1.3為個(gè)位開關(guān)量輸入

;P1.4-P1.7為十位開關(guān)量輸入

;此程序僅供參考

;功能P1口接8個(gè)開關(guān)輸入量4個(gè)一組,分別為個(gè)位,十位輸入

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

;開關(guān)量。P2.6P2.7控制是否顯示個(gè)位或十位

ORG100h

LJMPSTAR

STAR:MOVP1,#0FFH

SETBP3.1數(shù)據(jù)讀入標(biāo)志

MOVR0,#100,循環(huán)工作次數(shù)

LOOP:JBP3.1,$P3.1低電平時(shí),采集P1口數(shù)據(jù)開關(guān)量處理顯示階段不再應(yīng)答P3.1

MOVA,P1

PUSHACC

ANLA,#0FH取個(gè)位數(shù)值

MOVR1,A個(gè)位數(shù)值保存到R1

POPACC

ANLA,#0F0H

SWAPA高4位轉(zhuǎn)成字節(jié)信息

MOVR2,A十位數(shù)值保存到R2

MOVDPTR,#TABLED

MOVA,R1

MOVCA,@A DPTR

MOVP0,A

CLRP2.6個(gè)位顯示

ACALLDELAY500MS

SETBP2.6

MOVA,R2

MOVCA,@A DPTR

MOVP0,A

CLRP2.7十位顯示

ACALLDELAY500MS

SETBP2.7

DJNZR0,LOOP

DELAY500MS:延時(shí)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.實(shí)驗(yàn)任務(wù)在8X8 LED點(diǎn)陣上顯示柱形,讓其先從左到右平滑移動(dòng)三次,其次從右到左平滑移動(dòng)三次,再次從上到下平滑移動(dòng)三次,最后從下到上平滑移動(dòng)三次,如此循環(huán)下去。2.電路原理圖圖4.24.13.硬件電路連線(1).把“單片機(jī)系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DR1-DR8”端口上;(2).把“單片機(jī)系統(tǒng)”區(qū)域中的P3端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DC1-DC8”端口上;4.程序設(shè)計(jì)內(nèi)容(1).8X8 點(diǎn)陣LED工作原理說(shuō)明8X8點(diǎn)陣LED結(jié)構(gòu)如下圖所示圖4.24.2從圖4.24.2中可以看出,8X8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮;因此要實(shí)現(xiàn)一根柱形的亮法,如圖49所示,對(duì)應(yīng)的一列為一根豎柱,或者對(duì)應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮的方法如下所述:一根豎柱:對(duì)應(yīng)的列置1,而行則采用掃描的方法來(lái)實(shí)現(xiàn)。一根橫柱:對(duì)應(yīng)的行置0,而列則采用掃描的方法來(lái)實(shí)現(xiàn)。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語(yǔ)言源程序

#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點(diǎn)陣顯示實(shí)驗(yàn)一.實(shí)驗(yàn)要求

編程實(shí)現(xiàn)中英文字符的顯示。

二.實(shí)驗(yàn)?zāi)康?/p>

1.了解LED點(diǎn)陣顯示的基本原理和實(shí)現(xiàn)方法。

2.掌握點(diǎn)陣漢字庫(kù)的編碼和從標(biāo)準(zhǔn)字庫(kù)中提取漢字編碼的方法。

三.實(shí)驗(yàn)電路及連線

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

Fig22-0WTD3088LED分布

如圖22-1示,本實(shí)驗(yàn)?zāi)K使用74LS374來(lái)控制列輸入線的電平值。將74LS374的某輸出置0,則對(duì)應(yīng)的LED陰極端被置低。如圖22-2示,本實(shí)驗(yàn)?zāi)K使用74LS273來(lái)控制行輸入線,并通過(guò)9013提供電流驅(qū)動(dòng)。將74LS273的某輸出置1,則對(duì)應(yīng)的LED陽(yáng)極端被置高。每次系統(tǒng)重新開啟或總清后,74LS273輸出為全0,LED顯示被關(guān)閉。

通過(guò)編程控制各顯示點(diǎn)對(duì)應(yīng)LED陽(yáng)極和陰極端的電平,就可以有效的控制各顯示點(diǎn)的亮滅。

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

Fig22-3地址譯碼電路

本實(shí)驗(yàn)?zāi)K使用4塊WTD3088組成16×16點(diǎn)陣,以滿足漢字顯示的要求。為了方便的控制四個(gè)單元,使用了一片74LS139譯碼,產(chǎn)生四個(gè)地址片選信號(hào):CLKR1=CSLED,CLKR2=CSLED 1,用于行控制的兩片74LS273;CLKC1=CSLED 2,CLKC2=CSLED 3,用于列控制的兩片74LS374。

實(shí)驗(yàn)接線:按示例程序,模塊的CSLED接51/96地址的8000H。

四.實(shí)驗(yàn)說(shuō)明

使用高亮度LED發(fā)光管構(gòu)成點(diǎn)陣,通過(guò)編程控制可以顯示中英文字符、圖形及視頻動(dòng)態(tài)圖形。LED顯示以其組構(gòu)方式靈活、亮度高、技術(shù)成熟、成本低廉等特點(diǎn)在證券、運(yùn)動(dòng)場(chǎng)館及各種室內(nèi)/外顯示場(chǎng)合得到廣泛的應(yīng)用。

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

實(shí)驗(yàn)盤片中“字符轉(zhuǎn)換”子目錄下提供的Basc16.exe,BHz16.exe可方便的將單個(gè)字符的碼表從標(biāo)準(zhǔn)字庫(kù)Asc16,Hzk16中提取出來(lái)。具體使用方法是運(yùn)行上述可執(zhí)行程序,根據(jù)提示輸入所需字符(如是漢字還需要先啟動(dòng)dos下的漢字環(huán)境,如ucdos,pdos95等)。程序?qū)⒃撟址拇a表提取出來(lái),存放在該字符ASC或區(qū)位碼為文件名稱的.dat文件中。用戶只需將該文件中內(nèi)容拷貝、粘貼到自己的程序中即可。但需要注意字節(jié)排列順序、字節(jié)中每一位與具體顯示點(diǎn)的一一對(duì)應(yīng)關(guān)系,必要時(shí)還要對(duì)碼表稍作修改。同一目錄下還提供了上述可執(zhí)行程序的源文件,使用BC3.1編寫,供用戶參考。

五.實(shí)驗(yàn)程序框圖

用戶應(yīng)留心其中行掃描的實(shí)現(xiàn)及碼表的處理。

六.實(shí)驗(yàn)程序:(一)提供LEDA51演示Asc16字符的簡(jiǎn)單點(diǎn)陣顯示。

;________*LED點(diǎn)陣顯示示例程序______________________*

;__該程序顯示Asc16字符__

;__為了簡(jiǎn)單起見,程序只顯示一個(gè)字符__

;__該程序針對(duì)T598實(shí)驗(yàn)機(jī)的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQUCSLED 2H;列1374

CSC2EQUCSLED 3H;列2374

ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關(guān)閉行

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關(guān)閉列

MOVDPTR,#CSC1

MOVX@DPTR,A

MOVDPTR,#CSC2

MOVX@DPTR,A

D:MOVR5,#00H

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

DISP:

MOVA,R5

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

MOVCA,@A DPTR

CPLACC;代碼取反,決定顯示的陰陽(yáng)

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

;________延時(shí)子程序,協(xié)調(diào)字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點(diǎn)陣字庫(kù)______________*

;ASC16字符編碼排列

;0

;1

;|

;|

;14

;15

;高位D7--D0

;請(qǐng)注意編碼的排列次序和實(shí)際顯示點(diǎn)陣分布的關(guān)系

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兩個(gè)示例程序。和Hz16字符的簡(jiǎn)單點(diǎn)陣顯示。

;________*LED點(diǎn)陣顯示示例程序______________________*

;__該程序顯示hz16字符__

;__為了簡(jiǎn)單起見,程序只顯示一個(gè)字符__

;__該程序針對(duì)T598實(shí)驗(yàn)機(jī)的模塊14__

;____________________________________________________

CSLEDEQU8000H

CSR1EQUCSLED;行1273

CSR2EQUCSLED 1H;行2273

CSC1EQU CSLED 2H;列1374

CSC2EQUCSLED 3H;列2374

ORG0000H

MOVSP,#60H

INIT:MOVA,#0H;關(guān)閉LED顯示

MOVDPTR,#CSR1

MOVX@DPTR,A

MOVDPTR,#CSR2

MOVX@DPTR,A

MOVA,#0FFH;關(guān)閉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

;________延時(shí)子程序,協(xié)調(diào)字符顯示速度____________*

DELAY:MOVR7,#1H

DL1:MOVR6,#00H

DL2:DJNZR6,DL2

DJNZR7,DL1

RET

;________字符點(diǎn)陣字庫(kù)______________*

;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的計(jì)算機(jī)可鎖定加密鍵盤設(shè)計(jì)摘要:介紹PC鍵盤和鍵盤接口的PS/2通信協(xié)議,以及用89C51實(shí)現(xiàn)可鎖定鍵盤的軟件和硬件設(shè)計(jì)方法。具有安全可靠、容錯(cuò)能力強(qiáng)、可以直接采用標(biāo)準(zhǔn)鍵盤進(jìn)行改裝、便于實(shí)現(xiàn)等優(yōu)點(diǎn),并保留標(biāo)準(zhǔn)鍵盤的全部功能。關(guān)鍵詞:PS/289C51C51鍵盤引言

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

1鍵盤功能及工作原理

PC鍵盤功能主要有按鍵識(shí)別、去抖、重鍵處理、發(fā)送掃描碼、自動(dòng)重發(fā)、接收鍵盤命令、處理命令等。鍵盤有編碼鍵盤和非編碼鍵盤。編碼鍵盤程序設(shè)計(jì)簡(jiǎn)單,但硬件電路復(fù)雜,價(jià)格較高;非編碼鍵盤用軟件來(lái)實(shí)現(xiàn)識(shí)別鍵、編碼轉(zhuǎn)換、去抖等功能,硬件電路簡(jiǎn)單,價(jià)格便宜?,F(xiàn)代微機(jī)系統(tǒng)中廣泛采用非編碼鍵盤。PC鍵盤多采用18行×8列的二維矩陣行列結(jié)構(gòu)。采用行掃描法識(shí)別按下的按鍵。2PS/2協(xié)議

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

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

當(dāng)時(shí)鐘線和數(shù)據(jù)線均為高電平時(shí),允許鍵盤發(fā)送數(shù)據(jù),系統(tǒng)將接收數(shù)據(jù);當(dāng)時(shí)鐘線被拉為低電平時(shí),表明系統(tǒng)禁止數(shù)據(jù)傳輸。圖1給出了發(fā)送時(shí)序,包含1個(gè)低電平觸發(fā)的起始位、8位數(shù)據(jù)位、1個(gè)奇校驗(yàn)位和1個(gè)高電平的結(jié)束位。2.2PC系統(tǒng)到鍵盤的通信協(xié)議

若時(shí)鐘線出現(xiàn)高電平,數(shù)據(jù)線出現(xiàn)低電平,表明系統(tǒng)請(qǐng)求發(fā)送,鍵盤準(zhǔn)備產(chǎn)生同步時(shí)鐘脈沖串,并接收數(shù)據(jù)。包含了1個(gè)低電平觸發(fā)的起始位、8位數(shù)據(jù)位、1個(gè)奇校驗(yàn)位、1個(gè)應(yīng)答位、1個(gè)高電平的結(jié)束位。圖2為時(shí)序圖。(1)鍵盤命令及執(zhí)行過(guò)程①FFH:復(fù)位鍵盤。系統(tǒng)通過(guò)此軟件復(fù)位命令使鍵盤進(jìn)入程序復(fù)位和內(nèi)部自測(cè)試,稱為基本保證測(cè)試(BAT)。復(fù)位鍵盤的過(guò)程如下:a.鍵盤收到FFH后立即回送ACK(FAH)作答;b.鍵盤接口收到ACK后,將鍵盤時(shí)鐘和數(shù)據(jù)線置為高電平;c.鍵盤檢測(cè)到此狀態(tài)后開始BAT操作;d.如果BAT正確完成,鍵盤發(fā)送AAH以表示結(jié)束,

否則以FDH(或其它任何值)表示診斷有誤。②FEH:重新發(fā)送。當(dāng)系統(tǒng)檢測(cè)到從鍵盤送來(lái)的任何傳輸錯(cuò)誤時(shí),它便向鍵盤發(fā)送FEH命令。鍵盤接收到此命令后,將重新送出原來(lái)的內(nèi)容。③FDH~F7H:空操作(保留未用)。④F6H:設(shè)置缺省值。此命令使鍵盤所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),鍵盤繼續(xù)掃描。⑤F5H:設(shè)置缺省值和停止鍵盤。此命令使鍵盤所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),并停止鍵盤掃描,等待下一個(gè)鍵盤命令。⑥F4H:?jiǎn)?dòng)鍵盤。鍵盤接收到此命令后,用ACK(FAH)作答,清除輸出緩沖器,并啟動(dòng)鍵盤開始掃描。⑦F3H:設(shè)置拍發(fā)速率和延時(shí)參數(shù)。每當(dāng)按下任 一鍵時(shí),鍵盤以拍發(fā)速率連續(xù)送出鍵的接通碼,直到鍵被釋放為止。延時(shí)參數(shù)是指按下一鍵后,鍵盤輸出的響應(yīng)時(shí)間。

系統(tǒng)缺省設(shè)置:拍發(fā)速率=10個(gè)/s±20,延時(shí)=500ms±20。

當(dāng)要改變?cè)O(shè)置時(shí)可以使用F3H命令,并后跟一個(gè)字節(jié)的參數(shù)。參數(shù)定義如表1所列。

表1D7D6D5D4D3D2D1D00CBA

計(jì)算拍發(fā)速率和響應(yīng)延時(shí)的公式如下:

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

響應(yīng)延時(shí)=(1 C)×250(ms)注:缺省的延時(shí)參數(shù)值為2CH。此命令的執(zhí)行過(guò)程如下:a.鍵盤收到F3H命令后,用FAH予以響應(yīng),并停止掃描和等待隨后的參數(shù);b.鍵盤若收到隨后的設(shè)置參數(shù),用另一個(gè)ACK響應(yīng),并按其參數(shù)設(shè)置新的拍發(fā)速率和響應(yīng)延時(shí),之后重新開始掃描(若鍵盤原來(lái)是開放的);c.鍵盤若收到FAH命令,但無(wú)隨后的設(shè)置參數(shù),則鍵盤結(jié)束命令設(shè)置,并保持原來(lái)的拍發(fā)速率和響應(yīng)延時(shí),停止掃描。⑧F2H,F(xiàn)1,EFH:保留未用。⑨F0H:設(shè)置鍵盤掃描碼命令。此命令用于設(shè)置鍵盤的掃描碼,后跟參數(shù)指定三種掃描碼的哪一種。鍵盤復(fù)位時(shí),默認(rèn)掃描碼是第二種。⑩EEH:回送命令。此命令用于輔助診斷,要求鍵盤接收到EEH時(shí)也要回送EEH予以響應(yīng)。若鍵盤原來(lái)是開放的,則繼續(xù)掃描。EDH:置位/復(fù)位LED指示器。鍵盤右上角有三個(gè)LED指示器,分別反映Caps、Num和Scroll三個(gè)鍵的鎖定情況。參數(shù)字節(jié)如表2所列。

表2D7D3D2D1D0保留1=激勵(lì)CapsLED1=激勵(lì)NumLED1=激勵(lì)ScrollLED

此命令執(zhí)行過(guò)程與F3H相似。若命令后跟參數(shù),則按參數(shù)設(shè)定LED狀態(tài)并繼續(xù)掃描。若僅有命令無(wú)參數(shù),則不改變LED原狀態(tài),并停止掃描。(2)鍵盤響應(yīng)鍵盤在下列四種情況下都會(huì)向鍵盤接口發(fā)送數(shù)據(jù)。①按下任一鍵,鍵盤以拍發(fā)速率向接口發(fā)送鍵盤接通掃描碼。②釋放所按下的鍵,鍵盤發(fā)送斷開掃描碼。③系統(tǒng)向鍵盤發(fā)送鍵盤命令后,鍵盤回送應(yīng)答。④當(dāng)用戶按鍵速度超出鍵盤所能容納的最大鍵個(gè)數(shù)時(shí),鍵盤做出響應(yīng)。后三種情況稱為鍵盤響應(yīng)。響應(yīng)字節(jié)有7個(gè),定義如下。

①FEH:重新發(fā)送響應(yīng)。當(dāng)鍵盤收到一個(gè)無(wú)效的鍵盤命令,或者檢測(cè)到奇偶錯(cuò)的鍵盤命令時(shí),鍵盤回送響應(yīng)字節(jié)為FEH,要求系統(tǒng)重發(fā)鍵盤命令。②FAH:正常應(yīng)答。對(duì)任何一個(gè)有效的鍵盤命令,鍵盤回送FAH予以響應(yīng)。③00H:超限應(yīng)答。當(dāng)用戶按鍵速度超出鍵盤所能容納的最大鍵符個(gè)數(shù)時(shí)(16個(gè)字節(jié)的緩沖器),鍵盤發(fā)送00H。④FDH:診斷故障應(yīng)答。鍵盤接受軟件復(fù)位命令,執(zhí)行自測(cè)試過(guò)程中。若檢測(cè)到故障,則以FDH應(yīng)答。此時(shí),鍵盤停止掃描并等待下一個(gè)鍵盤命令。⑤AAH:診斷正常應(yīng)答。鍵盤在軟件復(fù)位過(guò)程中,正常完成BAT測(cè)試,以AAH應(yīng)答。⑥FEH:回響命令的應(yīng)答,對(duì)鍵盤FEH命令的應(yīng)答。⑦F0H:斷開掃描碼前綴,鍵盤對(duì)鍵符按下后釋放的應(yīng)答,第一個(gè)字節(jié)為F0H,第二個(gè)字節(jié)為接通掃描碼(有幾個(gè)鍵例外)。3硬件設(shè)計(jì)

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

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

4軟件設(shè)計(jì)①消抖及重鍵處理:通過(guò)軟件上延時(shí)程序來(lái)消除抖動(dòng);采用后按鍵優(yōu)先處理,即多鍵同時(shí)按下時(shí),只重復(fù)發(fā)送最后按下鍵的掃描碼。②程序包括鍵盤掃描子程序、發(fā)送鍵碼子程序、發(fā)送數(shù)據(jù)子程序、接收命令子程序、定時(shí)器1中斷服務(wù)程序、主程序等。鍵盤掃描子程序用于掃描鍵狀態(tài),將被按鍵的位置號(hào)存入緩沖器中;發(fā)送鍵碼子程序用于將緩沖區(qū)鍵的接通碼或斷開碼發(fā)送給計(jì)算機(jī)鍵盤接口或者存在鍵盤密碼緩沖區(qū)中;發(fā)送數(shù)據(jù)子程序用于將數(shù)據(jù)發(fā)給計(jì)算機(jī)鍵盤接口;接收命令子程序用于接收計(jì)算機(jī)鍵盤接口發(fā)來(lái)的鍵盤命令;定時(shí)器1中斷服務(wù)子程序用于給程序中的延時(shí)提供標(biāo)準(zhǔn)時(shí)鐘,并具有軟件看門狗功能,防止軟件出現(xiàn)死機(jī)現(xiàn)象;主程序用于系統(tǒng)初始化,子程序調(diào)度,鎖定狀態(tài)的顯示等。

圖6發(fā)送緩沖區(qū)鍵碼子程序流程圖

圖4~6是主要軟件模塊的流程圖。單片機(jī)源程序見本刊網(wǎng)絡(luò)補(bǔ)充版(.com)。

5結(jié)論

本文介紹的PC/AT鍵盤具有結(jié)構(gòu)簡(jiǎn)單、設(shè)計(jì)靈活、安全可靠的特點(diǎn),可用于標(biāo)準(zhǔn)PC和嵌入式PC。本鍵盤可以在標(biāo)準(zhǔn)的鍵盤基礎(chǔ)上進(jìn)行改造,只需換掉原來(lái)的控制芯片即可,可節(jié)省設(shè)計(jì)成本。單片機(jī)C51編程幾個(gè)有用的模塊(1)KeilC51常用功能模塊使用說(shuō)明

說(shuō)明

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

這些可選內(nèi)容大部分為宏定義,如果不定義宏相應(yīng)的功能在編譯時(shí)被屏蔽,不會(huì)增加代碼長(zhǎng)度。具體可選內(nèi)容見各模塊中的說(shuō)明。

在Config.h文件中還要包含一個(gè)單片機(jī)硬件的資源頭文件。

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

時(shí)鐘模塊

在單片機(jī)軟件設(shè)計(jì)中,時(shí)鐘是重要資源,為了充分利用時(shí)鐘資源,故設(shè)計(jì)本時(shí)鐘模塊。本模塊使用定時(shí)器0,在完成用戶指定功能的同時(shí),還能夠自動(dòng)處理一些其它模塊中與時(shí)鐘相關(guān)的信息。

時(shí)鐘模塊由聲明文件Timer.h以及實(shí)現(xiàn)文件Timer.c組成。

用戶應(yīng)該在Config.h中定義宏TIMER_RELOAD來(lái)設(shè)定定時(shí)器0的重裝載初值。推薦的定時(shí)器0的中斷時(shí)間大于1毫秒。

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

延時(shí):當(dāng)用戶需要進(jìn)行一定時(shí)間的延時(shí)時(shí),可以通過(guò)調(diào)用Delay()來(lái)進(jìn)行,參數(shù)為時(shí)鐘中斷的次數(shù)。如時(shí)鐘中斷周期為1ms,想進(jìn)行100ms的延時(shí),則可以調(diào)用Delay(100)。

注意:

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

定時(shí):當(dāng)程序中需要使用定時(shí)功能時(shí),如等待某外部事件,如果在一定時(shí)間內(nèi)發(fā)生則繼續(xù)執(zhí)行,如果在這段時(shí)間內(nèi)發(fā)生,則認(rèn)為出現(xiàn)錯(cuò)誤,轉(zhuǎn)向錯(cuò)誤處理機(jī)制。

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

這里簡(jiǎn)單說(shuō)明一下關(guān)于阻塞式函數(shù)及非阻塞式函數(shù)。簡(jiǎn)單說(shuō),阻塞式函數(shù)就是當(dāng)檢測(cè)完成條件,如果不能夠完成則等待,如:

voidCheckSomething()

{

//gbitSuccessFlagisaglobalvariable

while(gbitSuccessFlag==FALSE)

{

//donothingbutwaiting

}

}

可以看到,當(dāng)bitSuccessFlag沒(méi)有被設(shè)置為TRUE時(shí),函數(shù)保持等待狀態(tài)不返回,這樣就是阻塞式的函數(shù)。

另外一種情況:

BITCheckSomething()

{

if(gbitSuccessFlag==TRUE)

{

//…

returnTRUE;

}

returnFALSE;

}

在這里,如果所檢測(cè)的事件有沒(méi)有完成,函數(shù)進(jìn)行檢測(cè)之后,立刻返回, 通過(guò)返回值報(bào)告完成情況,如果沒(méi)有完成,則等待調(diào)用者分配再次執(zhí)行的機(jī)會(huì)。這樣的函數(shù)就是非阻塞函數(shù)。

在應(yīng)用定時(shí)功能時(shí),首先要將檢測(cè)函數(shù)定義成非阻塞函數(shù)。如上面的第二個(gè)版本的CheckSomething。

然后下面模式:

BITbitDone=FALSE;

ResetClock();//cleartimerinterrupttimescounter

while(GetClock()

{

if(CheckSomething()==TRUE)

{

bitDone=TRUE;

break;

}

}

if(bitDone==FALSE)

{

//processtimeout

}

或者簡(jiǎn)單寫成:

BITbitDone=FALSE;

ResetClock();

while(GetClock()=(z))

當(dāng)然,用戶也可以將IsPackageHeader和IsPackageTailer定義成為函數(shù),通過(guò)BIT類型的返回值來(lái)向調(diào)用者提供與相應(yīng)宏相同的信息。

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

這時(shí)需要提供回調(diào)函數(shù)QueryPackageFormat,原形如下:

BYTEQueryPackageFormat(BYTEbyData,BYTEbyCount,BYTEbyParam);

函數(shù)中三個(gè)參數(shù)的含義與使用簡(jiǎn)單數(shù)據(jù)包格式時(shí)判斷數(shù)據(jù)包尾的宏的參數(shù)相同。

函數(shù)通過(guò)返回值來(lái)通知作為調(diào)用者的接收函數(shù)對(duì)接收到的數(shù)據(jù)如何處理,但目前這種方法僅為需要處理復(fù)雜數(shù)據(jù)包格式時(shí)的一種可選方法,但不推薦。用戶如果想使用這種方法可以自己更改接收函數(shù)中相應(yīng)的

#ifdefSCOM_ComplexPackageFormat

#endif//SCOMM_ComplexPackageFormat

預(yù)編譯指令之間的內(nèi)容。

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

0:繼續(xù)找數(shù)據(jù)包頭或繼續(xù)找數(shù)據(jù)包尾。

1:找到數(shù)據(jù)包頭。

2:找到數(shù)據(jù)包尾。

3:數(shù)據(jù)包出錯(cuò),需要拋棄。

然后更改源代碼來(lái)實(shí)現(xiàn)上面的協(xié)議。

注意:當(dāng)用戶需要使用字符串的時(shí)候,可以利用簡(jiǎn)單的包裝函數(shù)將字符串轉(zhuǎn)換為字節(jié)數(shù)組。所以沒(méi)有必要提供專用的字符串處理函數(shù)。

鍵盤掃描模塊

鍵盤掃描模塊有兩種工作方式,一種為自動(dòng)的由時(shí)鐘模塊調(diào)用,另一種是由程序員自行調(diào)用。

1)由時(shí)鐘模塊自動(dòng)調(diào)用的方式

將時(shí)鐘模塊實(shí)現(xiàn)文件(Timer.h)及鍵盤掃描模塊的實(shí)現(xiàn)文件(KBScan。c)包含進(jìn)工程,在Config.h文件中添加TIMER_KBSCANDELAY宏。時(shí)鐘模塊自動(dòng)對(duì)時(shí)鐘中斷進(jìn)行計(jì)數(shù),當(dāng)達(dá)到TIMER_KBSCANDELAY宏所定義的值后,自動(dòng)調(diào)用鍵盤掃描模塊中的函數(shù)KBScanProcess()進(jìn)行鍵盤掃描,也就是說(shuō),這個(gè)宏的值可以決定按鍵消抖動(dòng)的時(shí)間。

用戶應(yīng)該提供兩個(gè)回調(diào)函數(shù)OnKBScan()及OnKeysPressed()。在函數(shù)OnKBScan中進(jìn)行鍵盤掃描,并返回掃描碼。掃描碼的類型缺省為BYTE,當(dāng)鍵盤規(guī)模較大時(shí),BYTE不能夠完全包含鍵盤信息時(shí),可在Config.h文件中重定義宏KBvalue,如下:

#defineKBvalueWORD

這樣,就可以使用16位的鍵盤掃描碼,如果此時(shí)還達(dá)不到要求,可以將鍵盤掃描碼定義成一個(gè)結(jié)構(gòu),但這樣做將會(huì)增加代碼量及消耗更多的RAM資源,故不推薦。

掃描模塊調(diào)用OnKBScan取得掃描碼,并調(diào)用用戶可以重定義的宏IsNoKeyPressed來(lái)判斷是否有鍵按下,缺省的IsNoKeyPressed實(shí)現(xiàn)如下:

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

即認(rèn)為OnKBScan返回0掃描碼時(shí)為沒(méi)有鍵按下,如果掃描函數(shù)返回其它非零掃描碼做為無(wú)鍵按下的掃描碼時(shí),可以在Config.h文件中重定義IsNoKeyPressed宏的實(shí)現(xiàn)。

8位鍵盤掃描碼(缺省值)時(shí),相應(yīng)的掃描函數(shù)為:

BYTEOnKBScan()

當(dāng)掃描模塊經(jīng)過(guò)軟件消抖動(dòng)之后,發(fā)現(xiàn)有鍵按下,就會(huì)調(diào)用另一個(gè)回調(diào)函數(shù)OnKeysPressed。函數(shù)的聲明應(yīng)該如下:

voidOnKeyPressed(BYTEbyKBvalue,BYTEbyState)

其中中的參數(shù)byKBvalue的類型為BYTE,此為缺省值,如果使用其它類型的掃描碼,就將此參數(shù)變?yōu)橄鄳?yīng)類型。這個(gè)值由OnKBScan返回。另一個(gè)參數(shù)byState在通常情況下為零。但當(dāng)用戶在Config.h中定義宏KBSCAN_BRUSTCOUNT,同時(shí)鍵盤上的某鍵被按住不放時(shí),掃描模塊對(duì)它自己的調(diào)用(注意這里和TIMER_KBSCANDELAY宏不同,TIMER_KBSCANDELAY是時(shí)鐘中斷足夠的次數(shù)后調(diào)用掃描模塊,而KBSCAN_BRUSHCOUNT為掃描模塊自身的被調(diào)用次數(shù))進(jìn)行計(jì)數(shù),當(dāng)達(dá)到KBSCAN_BRUSTCOUNT時(shí),掃描模塊調(diào)用OnKeysPressed,此時(shí)第一個(gè)參數(shù)的含義不變,而byState變成1,同時(shí)計(jì)數(shù)器復(fù)位,又經(jīng)過(guò)一段時(shí)間后,用值為3的byState調(diào)用OnKeysPressed。這樣就可以很方便的實(shí)現(xiàn)多功能鍵或者檢測(cè)某鍵的長(zhǎng)時(shí)間被按下。

2)由用戶自行調(diào)用

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

注意:

1)函數(shù)KBScanProcess為非阻塞函數(shù),它將在很快的時(shí)間內(nèi)返回,等待再次分配給它執(zhí)行的機(jī)會(huì)。

2)函數(shù)KBScanProcess是在時(shí)鐘中斷外部運(yùn)行的,它的過(guò)程可以被任何中斷打斷,但不影響系統(tǒng)運(yùn)行。

3)byState的最大值為250,之后被復(fù)位為零。應(yīng)用舉例

現(xiàn)在來(lái)舉例說(shuō)明上述幾個(gè)模塊的使用方法。

硬件環(huán)境描述:

為了控制一盞燈,需要單片機(jī)提供一個(gè)做控制功能的開關(guān)量,這里不描述外部接口電路,只說(shuō)明當(dāng)單片機(jī)的P10腳為高電平時(shí),燈滅,當(dāng)P10腳為低電平時(shí),燈亮。

可以通過(guò)計(jì)算機(jī)由串口發(fā)送命令來(lái)控制,或通過(guò)一個(gè)按鍵(pushbutton不是自鎖式的按鍵)來(lái)手動(dòng)控制(按鍵接在P11腳上,當(dāng)鍵沒(méi)有按下時(shí),P11電平為高,鍵按下時(shí),引腳電平被接低),當(dāng)使用按鍵手動(dòng)控制的時(shí)候,需要給計(jì)算機(jī)發(fā)送通知。

設(shè)定串口通訊指令如下:

數(shù)據(jù)包由0xff做包頭,4個(gè)字節(jié)長(zhǎng),第二個(gè)字節(jié)為命令代碼,第三個(gè)字節(jié)為數(shù)據(jù),最后一個(gè)字節(jié)為校驗(yàn)位。

命令和數(shù)據(jù)代碼有如下組合:

(計(jì)算機(jī)發(fā)給單片機(jī))

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

0x100x00:計(jì)算機(jī)控制燈滅。

(單片機(jī)發(fā)給計(jì)算機(jī))

0x110x01:?jiǎn)纹瑱C(jī)正常執(zhí)行控制指令,返回。(數(shù)據(jù)位是非零值即可)

0x110x00:單片機(jī)不能夠正常執(zhí)行控制指令,或控制指令錯(cuò)(不明含義的數(shù)據(jù)包或校驗(yàn)錯(cuò)等)。

0x120x01:手動(dòng)控制燈亮。(數(shù)據(jù)位是非零值即可)

0x120x00:手動(dòng)控制燈滅。

建立工程:

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

啟動(dòng)KeilC的IDE,在Example下建立新工程,將各模塊的實(shí)現(xiàn)文件包含進(jìn)工程。

在Example文件夾下建立Output文件夾,更改工程設(shè)置,將Output作為輸出文件和List文件的輸出文件夾(推薦使用這樣的結(jié)構(gòu), 當(dāng)保存工程文件時(shí),可以簡(jiǎn)單的刪除Output文件夾中的內(nèi)容而不會(huì)誤刪有用的工程文件)。

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

輸入代碼:

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

//

//file:onfig.h

//

#ifndef_CONFIG_H_

#define_CONFIG_H_

#include//使用AT89C52做控制

#include“../Common/Common.h”//使用自定義的數(shù)據(jù)類型

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

#defineTIMER_KBSCANDELAY40//40ms重檢測(cè)按鍵狀態(tài),即40ms消抖

#defineSCOMM_AsyncInterface//使用異步通訊服務(wù)

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

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

#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;//燈的狀態(tài),缺省為off

staticvoidInitialize()

{

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

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

//波特率為19200

EA=1;//開中斷

}

voidmain()

{

Initialize();//初始化

while(TRUE)//主循環(huán)

{

ImpTimerService();//實(shí)現(xiàn)時(shí)鐘中斷服務(wù),如鍵盤掃描

AsyncRecePackage(4);//接收4個(gè)字節(jié)長(zhǎng)的數(shù)據(jù)包

}

}

//在中斷外部響應(yīng)時(shí)鐘中斷事件

voidOnTimerEvent()

{

//donothing

}

//控制外部燈

staticvoidTriggerLamp(BITbEnable)

{

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

}

//鍵掃描回調(diào)函數(shù)

BYTEKBScan()

{

BITb;

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

b=P11;//讀入引腳狀態(tài)

return~b;//數(shù)據(jù)反相做掃描碼

}

//計(jì)算校驗(yàn)和

staticBYTECalcCheckSum(BYTE*pbyBuf,BYTEbyLen)

{

BYTEby,bySum=0;

for(by=0;by

return0–bySum;

}

//接收到鍵盤消息回調(diào)函數(shù)

voidOnKeyPressed(BYTEbyvalue,BYTEbyState)

{

BYTEby[4];

if(byState==0)

{

switch(byvalue)

{

case0x01:

gbitLampState=~gbitLampState;//燈狀態(tài)取反

TriggerLamp(gbitLampState);//執(zhí)行控制

by[0]=0xff;//構(gòu)造數(shù)據(jù)包

by[1]=0x12;

by[2]=(BYTE)gbitLampState;

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

SendPackage(by,4);//發(fā)送數(shù)據(jù)包

break;

//處理其它掃描碼

default:

break;

}

}

//接收到數(shù)據(jù)包回調(diào)函數(shù)

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);//處理長(zhǎng)度或校驗(yàn)和不正確

}

switch(pbyBuf[1])

{

case0x10:

gbitLampState=(BIT)pbyBuf[2];

TriggerLamp(gbitLampState);

by[2]=1;

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

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

break;

default://不知道的命令

by[2]=0;

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

SendPackage(by,4);//發(fā)送沒(méi)有成功執(zhí)行通知

break;

第7篇

關(guān)鍵詞:?jiǎn)纹瑱C(jī)原理;考試改革;Proteus軟件

中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2017)22-0133-02

一、前言

單片機(jī)又稱為單片微型計(jì)算機(jī),是計(jì)算機(jī)體系的一個(gè)重要分支,也是現(xiàn)今較為流行的嵌入式系統(tǒng)的一部分。由于其體積小、控制功能強(qiáng)、成本低等特點(diǎn)可方便地組裝成各種智能控制設(shè)備和儀器,做到機(jī)電一體化,因此廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過(guò)程控制等領(lǐng)域,可以說(shuō)單片機(jī)已經(jīng)滲透到我們生活的方方面面。單片機(jī)原理及應(yīng)用課程也是目前高校計(jì)算機(jī)、電子、電氣、自動(dòng)化等專業(yè)均開設(shè)的一門專業(yè)課。由于該課程是一門理論性、實(shí)踐性都很強(qiáng)的課程,因此該課程對(duì)實(shí)驗(yàn)教學(xué)有很高的要求,實(shí)驗(yàn)教學(xué)在學(xué)生學(xué)習(xí)的過(guò)程中占了很重要的地位。但是,目前很多高校的單片機(jī)課程實(shí)踐教學(xué)環(huán)節(jié)及考核方式都存在著一些問(wèn)題。學(xué)生在傳統(tǒng)的以理論考核為主的學(xué)習(xí)方式下很難激發(fā)學(xué)生的學(xué)習(xí)興趣,很難提高動(dòng)手能力。通過(guò)考試改革,使學(xué)生在重視基礎(chǔ)知識(shí)學(xué)習(xí)的同時(shí),更加注重實(shí)踐能力和動(dòng)手能力的境況,促進(jìn)創(chuàng)新精神的形成。

二、目前的教學(xué)考核形式及存在的問(wèn)題

《單片機(jī)原理及應(yīng)用》課程是一門專業(yè)課,其前續(xù)課程主要有《電路》、《數(shù)字電子技術(shù)》、《微機(jī)原理》等,課程理論教學(xué)的主要內(nèi)容包括以下幾方面:(1)單片機(jī)的硬件系統(tǒng)結(jié)構(gòu)。包括單片機(jī)的基本組成,CPU結(jié)構(gòu)及時(shí)序,RAM、ROM的組織結(jié)構(gòu)及擴(kuò)展,并行I/O接口的基本原理等。(2)單片機(jī)指令系統(tǒng)。包括單片機(jī)尋址方式及指令,匯編語(yǔ)言程序設(shè)計(jì)等。(3)單片機(jī)接口技術(shù)及應(yīng)用。包括單片機(jī)系統(tǒng)開發(fā)的基本方法和步驟,單片機(jī)系統(tǒng)擴(kuò)展及外部的接口,單片機(jī)的綜合應(yīng)用等內(nèi)容。考核主要以閉卷的考試為主,學(xué)生的總評(píng)成績(jī)這樣劃分:平時(shí)作業(yè)、實(shí)驗(yàn)成績(jī)和考勤各占10%,期末考試成績(jī)70%。這樣的教學(xué)及考核形式尚存在諸多問(wèn)題。

1.教學(xué)方面問(wèn)題。實(shí)驗(yàn)課時(shí)少。根據(jù)學(xué)院制定的教學(xué)計(jì)劃,《單片機(jī)原理及應(yīng)用》的總學(xué)時(shí)為32學(xué)時(shí),其中實(shí)驗(yàn)課程8學(xué)時(shí)。實(shí)驗(yàn)課程的學(xué)時(shí)數(shù)太少,也是影響學(xué)生動(dòng)手能力的一個(gè)方面。在實(shí)驗(yàn)課程的分配中,軟件實(shí)驗(yàn)、驗(yàn)證性實(shí)驗(yàn)至少占了6學(xué)時(shí),所以綜合性設(shè)計(jì)性實(shí)驗(yàn)開設(shè)率不高,學(xué)生對(duì)所學(xué)課程缺乏整體性了解和綜合運(yùn)用的能力。實(shí)驗(yàn)設(shè)備缺乏。由于學(xué)校擴(kuò)大招生規(guī)模,實(shí)驗(yàn)室現(xiàn)有的實(shí)驗(yàn)設(shè)備臺(tái)套數(shù)太少,為滿足學(xué)生實(shí)驗(yàn),不得不增加每組實(shí)驗(yàn)的學(xué)生人數(shù)。我國(guó)目前的文化教育,重視理論輕視實(shí)踐,這造成了學(xué)生們從小就重視理論知識(shí)的學(xué)習(xí)而輕視動(dòng)手實(shí)踐。另外,在考核方式上,實(shí)驗(yàn)課一般作為理論課考試分值的一部分,往往也只占很少的學(xué)分,并且只要寫過(guò)實(shí)驗(yàn)報(bào)告就基本可以通過(guò)。久而久之,大部分學(xué)生也滋生了重視理論課程輕視實(shí)驗(yàn)的思想。

2.考核方面問(wèn)題??己朔绞讲缓侠怼W(xué)生的考核以閉卷的考試占主要部分,實(shí)驗(yàn)環(huán)節(jié)所占成績(jī)比例低。這樣的考試形式使得大部分同學(xué)以理論學(xué)習(xí)及考試成績(jī)?yōu)橹鲗?dǎo),對(duì)于課程學(xué)習(xí)過(guò)程中的實(shí)踐動(dòng)手環(huán)節(jié)只是消極地參與,并沒(méi)有真正起到動(dòng)手動(dòng)腦的作用??荚噧?nèi)容不合理。由于考試形式以閉卷考試為主,考試內(nèi)容只能局限于教材,加上期末考試前劃范圍、勾重點(diǎn)等,使得一部分同學(xué)以考前重點(diǎn)突擊復(fù)習(xí)為主,造成了這些同學(xué)在平時(shí)學(xué)習(xí)及實(shí)踐環(huán)節(jié)的松懈??荚囶}型不合理。考試中客觀性題型較多,分值比例較大,綜合設(shè)計(jì)性題型、論述性題型較少。這對(duì)于學(xué)生的思考能力及綜合分析問(wèn)題能力的考查不全面,也不利于激發(fā)學(xué)生的學(xué)習(xí)興趣和主觀能動(dòng)性。能過(guò)以上分析,目前《單片機(jī)原理及應(yīng)用課程》的考核方法已經(jīng)不能滿足學(xué)校提出的“培養(yǎng)創(chuàng)新性人才”的要求,不利于培養(yǎng)學(xué)生動(dòng)手能力、創(chuàng)新能力,也不能激發(fā)學(xué)生的學(xué)習(xí)主動(dòng)性。

三、教學(xué)考試改革的方式及具體措施

針對(duì)單片機(jī)教學(xué)考試存在的問(wèn)題,可以從以下幾個(gè)方面進(jìn)行改革。

1.為考試改革而進(jìn)行的教學(xué)改革。首先,教學(xué)改革要進(jìn)行教學(xué)方法的改革。采用從完成實(shí)際問(wèn)題出發(fā),激發(fā)學(xué)生的學(xué)習(xí)興趣和主觀能動(dòng)性的目標(biāo)教學(xué)方法。在課程的開始階段,設(shè)置一個(gè)簡(jiǎn)單的綜合性實(shí)例,利用仿真軟件或?qū)嶒?yàn)箱將實(shí)際工程問(wèn)題解決方案演示給學(xué)生看,并要求學(xué)生下來(lái)查找一些與此相關(guān)的實(shí)際生活中的應(yīng)用。以此提高學(xué)生的學(xué)習(xí)興趣。在接下來(lái)的教學(xué)過(guò)程中教師以教學(xué)目標(biāo)為導(dǎo)向,整個(gè)教學(xué)過(guò)程圍繞教學(xué)目標(biāo)展開。在教學(xué)目標(biāo)的刺激下,學(xué)生為實(shí)現(xiàn)目標(biāo)而努力學(xué)習(xí)。在完成目標(biāo)的過(guò)程中,教師積極引導(dǎo),并將教學(xué)內(nèi)容滲透其中。這種教學(xué)方法不僅可以使學(xué)生清楚地認(rèn)識(shí)到單片機(jī)的原理、概念在實(shí)際生活中的意義,而且對(duì)于激發(fā)學(xué)習(xí)熱情,培養(yǎng)理論聯(lián)系實(shí)際的能力極其有益。其次,教學(xué)內(nèi)容的改革。注重接口技術(shù)和應(yīng)用技術(shù)的學(xué)習(xí),適當(dāng)減少體系結(jié)構(gòu)的理論學(xué)習(xí)。在目標(biāo)教學(xué)法中,學(xué)生以實(shí)際目標(biāo)引導(dǎo)其學(xué)習(xí)^程,那么在教學(xué)內(nèi)容上就應(yīng)增加能夠達(dá)成實(shí)際目標(biāo)的應(yīng)用技術(shù)的學(xué)習(xí)內(nèi)容,理論體系結(jié)構(gòu)的教學(xué)可以把框架性的知識(shí)傳授給學(xué)生,學(xué)生在應(yīng)用中遇到的理論問(wèn)題,他們會(huì)在框架的知識(shí)基礎(chǔ)上自己進(jìn)一步細(xì)化豐富內(nèi)容;從匯編語(yǔ)言轉(zhuǎn)向C語(yǔ)言的編程方式。傳統(tǒng)教學(xué)模式中,教師喜歡使用匯編語(yǔ)言編程,匯編語(yǔ)言雖然具有高效控制精確的優(yōu)點(diǎn),但其結(jié)構(gòu)性差,語(yǔ)句復(fù)雜,調(diào)試難度大,學(xué)生接受也比較困難。C51高級(jí)語(yǔ)言具有程序結(jié)構(gòu)清晰、可讀性好、易于維護(hù)等優(yōu)點(diǎn),一條C語(yǔ)言相當(dāng)于幾條匯編指令,學(xué)生在有C語(yǔ)言的基礎(chǔ)上入門很快,這樣也提高了學(xué)生的學(xué)習(xí)興趣;使用Proteus仿真軟件。通過(guò)使用仿真軟件,學(xué)生只需要一臺(tái)電腦就可以完成實(shí)驗(yàn)室里的基本實(shí)驗(yàn),方便學(xué)生自己動(dòng)手,提高其動(dòng)手能力。再次,實(shí)驗(yàn)的改革。把實(shí)驗(yàn)軟件實(shí)驗(yàn)、驗(yàn)證實(shí)驗(yàn)、設(shè)計(jì)性實(shí)驗(yàn)及綜合性實(shí)驗(yàn)四個(gè)部分,通過(guò)驗(yàn)證性實(shí)驗(yàn),學(xué)生們可以進(jìn)一步了解單片機(jī)及芯片的作用,提高學(xué)生的學(xué)習(xí)興趣。設(shè)計(jì)性實(shí)驗(yàn),可以培養(yǎng)學(xué)生實(shí)踐動(dòng)手能力及創(chuàng)新能力。綜合性實(shí)驗(yàn),可以提高學(xué)生綜合運(yùn)用所學(xué)知識(shí)的能力,提高學(xué)生的實(shí)驗(yàn)技能和和培養(yǎng)學(xué)生的創(chuàng)新能力。在原有的實(shí)驗(yàn)課時(shí)的基礎(chǔ)上增加實(shí)驗(yàn)課時(shí),同時(shí)提高設(shè)計(jì)性及綜合性實(shí)驗(yàn)的比例,真正讓學(xué)生把理論與實(shí)踐結(jié)合起來(lái)。

2.考試方法改革。根據(jù)《單片機(jī)原理及應(yīng)用》課程的特點(diǎn),考試可以采用筆試、做設(shè)計(jì)、寫論文、進(jìn)行實(shí)際操作以及開卷、閉卷等多種方式相結(jié)合。我們不能因?yàn)楣P試的一些缺點(diǎn)就否定筆試在成績(jī)?cè)u(píng)定中的作用,在筆試的過(guò)程中還可以增加開卷、閉卷等多種形式。在出卷時(shí)增加試卷的靈活性,適當(dāng)增加設(shè)計(jì)、分析和綜合思考題型。題目的設(shè)計(jì)應(yīng)能使每一位學(xué)生在解每道題時(shí)都有對(duì)知識(shí)的理解、分析、比較、融會(huì)貫通的過(guò)程,從而鍛煉學(xué)生的思維,多給學(xué)生提供探索的機(jī)會(huì)和可能性,鼓勵(lì)學(xué)生獨(dú)立思考、標(biāo)新立異、強(qiáng)調(diào)智力開發(fā)、避免考試中的偶然性。同時(shí)在筆試的基礎(chǔ)上還應(yīng)該增加反映學(xué)生平時(shí)學(xué)習(xí)情況的評(píng)價(jià)內(nèi)容,比如平時(shí)作業(yè),實(shí)驗(yàn)報(bào)告成績(jī)等。還可以增加實(shí)際操作環(huán)節(jié)的評(píng)定,比如對(duì)每次實(shí)驗(yàn)課程都ρ生的操作進(jìn)行評(píng)分,增加實(shí)踐環(huán)節(jié)的考評(píng),把學(xué)生綜合設(shè)計(jì)性實(shí)驗(yàn)的操作調(diào)試及結(jié)果作為總評(píng)成績(jī)的一部分進(jìn)行考核?;?qū)?shí)踐環(huán)節(jié)改為操作考試,由學(xué)生現(xiàn)場(chǎng)操作,教師根據(jù)操作內(nèi)容正確性進(jìn)行評(píng)分。最后在課程結(jié)束后,還可以鼓勵(lì)學(xué)生通過(guò)學(xué)習(xí)的知識(shí)內(nèi)容進(jìn)行創(chuàng)新設(shè)計(jì),將其所做的設(shè)計(jì)或者通過(guò)網(wǎng)絡(luò)、圖書查閱到的資料通過(guò)分析總結(jié)后寫成論文的形式提交,以附加分的形式納入總評(píng)成績(jī)中。這種方法鍛煉了學(xué)生的分析、設(shè)計(jì)和對(duì)信息的處理能力。

3.考試效果的評(píng)估和對(duì)教學(xué)方法的反饋。淡化考試分?jǐn)?shù)之間的微小差異,增大平時(shí)考試成績(jī)的比例,實(shí)行百分制、等級(jí)制及與評(píng)語(yǔ)相結(jié)合的綜合評(píng)分方法,對(duì)有獨(dú)立見解或創(chuàng)新的學(xué)生加分鼓勵(lì)。應(yīng)獎(jiǎng)勵(lì)有個(gè)性者,獎(jiǎng)勵(lì)有主見、有獨(dú)立思維能力的學(xué)生。同時(shí),建立考試結(jié)果分析制度,不斷總結(jié)教學(xué)經(jīng)驗(yàn)。發(fā)現(xiàn)問(wèn)題及時(shí)糾正,拓寬、疏通教學(xué)質(zhì)量的有效反饋渠道,建立健全溝通機(jī)制。改革后的總體效果還有待長(zhǎng)時(shí)間的檢驗(yàn)。在教學(xué)過(guò)程中可以明顯的發(fā)現(xiàn),提問(wèn)題的同學(xué)明顯增多,同學(xué)之間相互討論的次數(shù)明顯增加。希望此次考試改革能給《單片機(jī)原理及應(yīng)用》課程的學(xué)習(xí)帶來(lái)新的氣象,增強(qiáng)學(xué)生學(xué)習(xí)的積極性、主動(dòng)性,培養(yǎng)學(xué)生的創(chuàng)新精神和創(chuàng)新意識(shí),實(shí)現(xiàn)人才的全面發(fā)展。

參考文獻(xiàn):

[1]何宏.單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2012.

[2]李康林.單片機(jī)課程考試方法改革的實(shí)踐和探索[J].長(zhǎng)沙大學(xué)學(xué)報(bào),2007,(5):107-109.

[3]周曉雁.單片機(jī)實(shí)驗(yàn)教學(xué)改革的嘗試[J].山東工業(yè)大學(xué)學(xué)報(bào),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)