版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
財經(jīng)基本技能(第3版)教學(xué)指南+課后習(xí)題答案財經(jīng)基本技能(第3版)教學(xué)指南+課后習(xí)題答案財經(jīng)基本技能(第3版)教學(xué)指南+課后習(xí)題答案教材綜述一、教材的內(nèi)容和特色本教材主要內(nèi)容有:單片機(jī)最小系統(tǒng)的學(xué)習(xí)和制作、單片機(jī)編程軟件的使用、程序燒錄軟件的操作、C語言編程、程序流程圖的繪制和各種外圍電路的安裝與制作等??勺鳛橹械嚷殬I(yè)學(xué)校電子專業(yè)的選修課教材。本書具有以下特色:結(jié)構(gòu)和內(nèi)容的創(chuàng)新性:首先是結(jié)構(gòu)新,本書取消了傳統(tǒng)教材的章節(jié)結(jié)構(gòu),設(shè)置了教學(xué)項(xiàng)目和任務(wù),把專業(yè)知識和技能落實(shí)到具體的項(xiàng)目和任務(wù)中,通過項(xiàng)目引領(lǐng)任務(wù)驅(qū)動教學(xué)進(jìn)程,讓學(xué)生在任務(wù)的實(shí)施中鞏固知識,習(xí)得技能。其次是內(nèi)容新,在本書的編寫過程中,編寫人員有意識的聯(lián)系當(dāng)前的社會實(shí)際,及時吸收新理論、新知識、新技術(shù)、新工藝。2、突出職業(yè)性和實(shí)踐性:“以服務(wù)為宗旨,以就業(yè)為導(dǎo)向、以能力為本位”的中等職業(yè)教育擔(dān)負(fù)著培養(yǎng)初、中級技能型人才和數(shù)以億計的高素質(zhì)勞動者的任務(wù)。中職的教材必須為中職的教學(xué)改革服務(wù),為學(xué)生的就業(yè)服務(wù)。本教材作為電子專業(yè)的技能訓(xùn)練教材非常注重職業(yè)性和實(shí)踐性。3、教材、教案、學(xué)案三合一:本書按行動導(dǎo)向教學(xué)原則編寫,通過任務(wù)情境、任務(wù)描述、計劃與實(shí)施、練習(xí)與評價、任務(wù)資訊呈現(xiàn)內(nèi)容,展開教學(xué)和學(xué)習(xí)過程,力求做到教材、教案、學(xué)案三合一。5、知識、技能、情感相結(jié)合:本書不僅注重鞏固知識、突出技能,還通過情境模擬、總結(jié)評價滲透個人品德、職業(yè)道德和社會公德教育。二、教學(xué)策略建議1、以促進(jìn)學(xué)生發(fā)展為本本課程以提高學(xué)生的綜合素質(zhì)和綜合職業(yè)能力為目的,在對單片機(jī)簡單電路的教學(xué)和基本技能的訓(xùn)練過程中,應(yīng)體現(xiàn)對職業(yè)道德和職業(yè)意識的培養(yǎng),使學(xué)生掌握專業(yè)學(xué)習(xí)方法,提高自主學(xué)習(xí)能力,為學(xué)生的可持續(xù)發(fā)展奠定基礎(chǔ)。為適應(yīng)不同專業(yè)需求及學(xué)生的多樣性和差異性,可通過對選學(xué)模塊及較高要求內(nèi)容的靈活選擇,以及考核評價方式上,體現(xiàn)課程的選擇性和教學(xué)要求的層次性。教學(xué)中應(yīng)從學(xué)生的實(shí)際出發(fā),針對不同層次的學(xué)生,采用分層教學(xué),使每一個學(xué)生在原有的基礎(chǔ)上有所提高,有所發(fā)展。2、轉(zhuǎn)變教學(xué)觀念,改進(jìn)教學(xué)方法改變以課堂為中心、以知識傳授為主的單一教學(xué)模式,積極探索將理論教學(xué)環(huán)節(jié)和實(shí)踐教學(xué)環(huán)節(jié)相結(jié)合,將課堂知識與生產(chǎn)生活的實(shí)踐相結(jié)合,倡導(dǎo)具有職業(yè)教育特色的行為導(dǎo)向教學(xué)方法。教學(xué)過程中要根據(jù)課程內(nèi)容、學(xué)生實(shí)際和學(xué)校條件,合理選擇、綜合運(yùn)用多種教學(xué)方法,并結(jié)合中職學(xué)生思維方式特點(diǎn),充分利用各種教學(xué)資源和教學(xué)媒體,設(shè)計教學(xué)活動,創(chuàng)設(shè)學(xué)習(xí)情境,使教學(xué)內(nèi)容具體化、直觀化和形象化,引導(dǎo)學(xué)生通過任務(wù)的完成、工作過程的體驗(yàn)或典型電子產(chǎn)品的制作等,掌握相應(yīng)的知識和技能,提高學(xué)習(xí)興趣,激發(fā)學(xué)習(xí)動力。3、加強(qiáng)實(shí)踐性教學(xué)環(huán)節(jié),突出知識的應(yīng)用教學(xué)中要充分利用和創(chuàng)設(shè)實(shí)驗(yàn)、實(shí)訓(xùn)條件,增加學(xué)生動手實(shí)踐操作的機(jī)會,強(qiáng)化實(shí)踐技能的培養(yǎng)。在電子基本技能的訓(xùn)練過程中,融入理論知識的學(xué)習(xí),體現(xiàn)理論在實(shí)踐過程中的指導(dǎo)與應(yīng)用。對于課程教學(xué)內(nèi)容中的主要器件和典型電路,教學(xué)中要突出其實(shí)際應(yīng)用,引導(dǎo)學(xué)生通過查閱相關(guān)資料分析其外部特性和功能,分析其在生產(chǎn)、生活實(shí)踐中的典型應(yīng)用,了解其工作特性和使用方法,并學(xué)會正確使用。在教學(xué)過程中,要重視本專業(yè)領(lǐng)域新技術(shù)、新知識、新工藝、新設(shè)備的介紹,體現(xiàn)時代性;貼近生產(chǎn)現(xiàn)場,體現(xiàn)實(shí)用性。4、加強(qiáng)與現(xiàn)代教育技術(shù)的整合教師應(yīng)重視現(xiàn)代教育技術(shù)與課程的整合,努力推進(jìn)現(xiàn)代教育技術(shù)在職業(yè)教育教學(xué)中的應(yīng)用,更新觀念,改變傳統(tǒng)的教學(xué)方法,充分發(fā)揮計算機(jī)、互聯(lián)網(wǎng)等現(xiàn)代媒體技術(shù)的優(yōu)勢,合理應(yīng)用多種媒體組合,為教師教學(xué)和學(xué)生學(xué)習(xí)提供豐富多樣的教學(xué)資源、教學(xué)工具和教學(xué)環(huán)境。提倡在教學(xué)過程中,利用數(shù)字化教學(xué)資源大容量、多媒體、超文本、交互性、共享性的特點(diǎn),與各種教學(xué)要素和教學(xué)環(huán)節(jié)有機(jī)結(jié)合,提高教學(xué)的效率和效果。數(shù)字化教學(xué)資源(如教學(xué)演示軟件、多媒體光盤、虛擬仿真實(shí)訓(xùn)軟件、電子試題庫等)可作為輔助教學(xué)的工具,也可用于情境創(chuàng)設(shè)、協(xié)作交流等教學(xué)活動,有利于創(chuàng)建符合個性化學(xué)習(xí)及加強(qiáng)實(shí)踐技能培養(yǎng)的教學(xué)環(huán)境,并推動教學(xué)模式和教學(xué)方法的變革。5、考核評價的多元化考核與評價的目的不僅是為了考察教學(xué)結(jié)果的達(dá)成情況,更重要的是及時向教師和學(xué)生提供反饋信息,以便更有效的改進(jìn)和完善教師的教學(xué)和學(xué)生的學(xué)習(xí)活動,激發(fā)學(xué)生學(xué)習(xí)熱情,促進(jìn)學(xué)生個人的發(fā)展??己伺c評價的功能要從單純注重水平鑒定和選拔淘汰,過渡到注重促進(jìn)學(xué)生的發(fā)展,積極倡導(dǎo)與實(shí)施以導(dǎo)向、診斷、激勵及過程調(diào)控為主的發(fā)展性教學(xué)評價。(1)考核與評價主體的多元化從傳統(tǒng)考核與評價方式的主體單一性(即只有教師的評價),過渡到考核與評價主體的多元化,即教師的評價與學(xué)生的相互評價、學(xué)生的自我評價相結(jié)合。(2)考核與評價標(biāo)準(zhǔn)的多元化從傳統(tǒng)的只注重評價學(xué)生的學(xué)習(xí)情況與學(xué)業(yè)成績的單一性考核與評價,過渡到對學(xué)生在本課程學(xué)習(xí)過程中各方面活動及發(fā)展?fàn)顩r給予全面關(guān)注的多元化考核。(3)考核與評價的過程,從傳統(tǒng)的以結(jié)果性為主,過渡到過程性與結(jié)果性相結(jié)合,逐步建立學(xué)生的發(fā)展性考核與評價體系。(4)考核與評價的方式,從傳統(tǒng)的以量化為主,過渡到定量考核與定性描述相結(jié)合。三、課程性質(zhì)與任務(wù)單片機(jī)基礎(chǔ)與技能實(shí)訓(xùn)課程適用于中職電子相關(guān)專業(yè),屬于專業(yè)選修課,是電氣、電子等大類專業(yè)重要的綜合性基礎(chǔ)性實(shí)踐教學(xué)課程。本課程內(nèi)容側(cè)重于實(shí)際應(yīng)用,教學(xué)上應(yīng)以單片機(jī)結(jié)構(gòu)及應(yīng)用設(shè)計為主,使學(xué)生通過本課程的學(xué)習(xí),具備獨(dú)立設(shè)計簡單單片機(jī)控制電路的能力。使學(xué)生對于單片機(jī)的組成原理和結(jié)構(gòu)有比較深刻的理解,基本掌握單片機(jī)基礎(chǔ)及應(yīng)用的系統(tǒng)設(shè)計方法,可比較靈活地使用單片機(jī)構(gòu)成系統(tǒng)的外圍芯片,具備單片機(jī)軟件設(shè)計和編程能力。對于學(xué)生學(xué)習(xí)單片機(jī)原理及其應(yīng)用具有指導(dǎo)意義。為學(xué)生進(jìn)一步學(xué)習(xí)計算機(jī)控制技術(shù)及相關(guān)專業(yè)知識和職業(yè)技能,提高全面素質(zhì),增強(qiáng)適應(yīng)職業(yè)變化的能力和繼續(xù)學(xué)習(xí)的能力打下一定的基礎(chǔ)。本書共9個項(xiàng)目,以典型的LED控制電路、彩燈控制電路、數(shù)碼管控制電路、按鍵控制電路、蜂鳴器控制電路、數(shù)模模數(shù)轉(zhuǎn)換電路和溫度顯示電路為載體,通過安裝和調(diào)試整機(jī)的過程,使學(xué)生熟悉單片機(jī)最基礎(chǔ)的應(yīng)用電路,讓學(xué)生了解單片機(jī)的工作原理,掌握單片機(jī)程序設(shè)計、連接I/O設(shè)備的接口技術(shù)。對單片機(jī)應(yīng)用系統(tǒng)的軟、硬件設(shè)計有一定了解,為開發(fā)單片機(jī)及其應(yīng)用系統(tǒng)打下基礎(chǔ)。通過本課程的實(shí)踐,希望能夠使學(xué)生掌握單片機(jī)的使用方法、開拓學(xué)習(xí)知識的視野。使學(xué)生了解單片機(jī)的構(gòu)造原理,掌握其內(nèi)部的主要結(jié)構(gòu)和C語言的編程應(yīng)用,學(xué)習(xí)單片機(jī)常用的接口,常用的外圍電路設(shè)計等,使學(xué)生具備應(yīng)用單片機(jī)進(jìn)行簡單的控制系統(tǒng)開發(fā)的能力,注重培養(yǎng)和提高學(xué)生應(yīng)用單片機(jī)進(jìn)行創(chuàng)新設(shè)計、解決簡單的實(shí)際問題的能力。四、預(yù)備知識由于本課程涉及到C語言編程,課本中對每個語句都有詳細(xì)的說明,但是學(xué)生如果具備C語言的基礎(chǔ)知識,會對編程方面更加得心應(yīng)手,比如:子程序和主程序的基本結(jié)構(gòu)、位定義、變量的定義、宏定義、條件選擇語句、左移右移指令和基本的運(yùn)算符等;其次,學(xué)生要具備簡單電路的分析能力,如歐姆定律、節(jié)點(diǎn)電流定律等;除此之外,學(xué)生還應(yīng)具備數(shù)電和模電的基礎(chǔ)知識,如數(shù)制轉(zhuǎn)換、三極管的特性、數(shù)碼管的結(jié)構(gòu)等;另外,完成每個任務(wù)都需要制作外圍電路,所以學(xué)生應(yīng)具備電路安裝與焊接的基本技能。項(xiàng)目一初識單片機(jī)項(xiàng)目內(nèi)容本項(xiàng)目內(nèi)容主要包括單片機(jī)的內(nèi)、外部結(jié)構(gòu)、引腳、單片機(jī)應(yīng)用開發(fā)流程的介紹;各種數(shù)制及其相互轉(zhuǎn)換的學(xué)習(xí);單片機(jī)最小應(yīng)用系統(tǒng)的認(rèn)識及制作單片機(jī)最小應(yīng)用系統(tǒng)的實(shí)訓(xùn)。教學(xué)提要教學(xué)重點(diǎn):單片機(jī)最小應(yīng)用系統(tǒng)的構(gòu)成和制作。教學(xué)難點(diǎn):單片機(jī)各引腳的功能識別。教學(xué)建議課時分配任務(wù)內(nèi)容課時任務(wù)一認(rèn)識單片機(jī)1任務(wù)二認(rèn)識數(shù)制1任務(wù)三制作單片機(jī)最小應(yīng)用系統(tǒng)2教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法教學(xué)要點(diǎn)任務(wù)一主要是通過實(shí)物展示讓學(xué)生認(rèn)識各種單片機(jī)及其各引腳,還要讓學(xué)生認(rèn)識各種仿真器和編程器,要讓學(xué)生知道程序是如何燒錄到單片機(jī)里面的,而單片機(jī)的內(nèi)部結(jié)構(gòu)讓學(xué)生了解即可;任務(wù)二主要是介紹二進(jìn)制和十六進(jìn)制,以及他們和十進(jìn)制之間的轉(zhuǎn)換,本內(nèi)容以練習(xí)為主,教師要讓學(xué)生知道學(xué)習(xí)這些數(shù)制的目的所在;任務(wù)三主要以實(shí)訓(xùn)為主,教師可以給學(xué)生購買一個單片機(jī)最小系統(tǒng)的套件,學(xué)生制作完最小系統(tǒng)后,教師再根據(jù)成品講解最小系統(tǒng)的構(gòu)成以及使用方法。實(shí)訓(xùn)指導(dǎo)單片機(jī)最小系統(tǒng)是完成后續(xù)各種電路的基礎(chǔ),所以要確保每位學(xué)生都能順利完成這個電路的制作。如果是給學(xué)生購買套件進(jìn)行制作,要求學(xué)生按照先低后高的順序安裝元器件,還要確保元器件的極性不要接錯。如果使用萬用板或洞洞板制作,則要注意布局,確保整個系統(tǒng)安裝在同一塊電路板上。電路板制作好以后,教師幫助學(xué)生通過燒錄一個程序來驗(yàn)證電路是否正常運(yùn)行。任務(wù)一【練一練】答案AT89S51單片機(jī)的VSS是公共接地端,即接電源負(fù)極;RST/VPD是復(fù)位端,具有復(fù)位功能,另外,VCC掉電后,此引腳可外接備用電源,在低功耗下保持著RAM中的數(shù)據(jù);是外部ROM使能端口,訪問外部程序存儲器時,該腳輸出低電平,控制外部程序存儲器輸出數(shù)據(jù)。2、AT89S51單片機(jī)的內(nèi)部由中央處理器、存儲器、中斷系統(tǒng)及輸入輸出電路等構(gòu)成;中央處理器主要有運(yùn)算器和控制器組成,運(yùn)算器執(zhí)行各種算術(shù)運(yùn)算和邏輯運(yùn)算,控制器的作用是:根據(jù)接收到的指令或運(yùn)算器的運(yùn)算結(jié)果來決定或發(fā)出相應(yīng)的控制信號從而完成一個個指令的提取、運(yùn)算和控制任務(wù)。存儲器RAM稱為隨機(jī)存取存儲器或數(shù)據(jù)存儲器,用以存儲可以讀寫的數(shù)據(jù),如運(yùn)算的中間量、最終結(jié)果和要顯示的數(shù)據(jù)等;ROM稱為只讀存儲器或程序存儲器,用以存放程序、原始數(shù)據(jù)和表格等。I/O電路即輸入輸出電路,其作用是實(shí)現(xiàn)單片機(jī)與外部電路的數(shù)據(jù)交換。中斷是單片機(jī)與外部信息傳遞的方式之一,通過中斷控制器可以讓單片機(jī)暫時停止原程序的執(zhí)行,轉(zhuǎn)而執(zhí)行中斷請求的程序,并在此程序執(zhí)行完成后自動返回原程序。略任務(wù)二【練一練】答案1、(1)43(2)24(3)11.9375(4)272、(1)1010110 (2)10001010 (3)1000101003、(1)2B (2)B34、(1)11100 (2)10110111(3)110100115、(1)1001001 (2)1101100010(3)1000010110016、(1)68 (2)915(3)278(4)5.4任務(wù)三【練一練】答案1、填空題:(1)電源、時鐘電路、復(fù)位電路(2)XTALl、XTAL2(3)RST、高電平2、略【項(xiàng)目檢測】答案一、判斷題 1、對2、錯3、對4、錯5、對6、對二、計算題1、5=(101)2=(5)16,17=(10001)2=(11)16,56=(111000)2=(38)16,87=(1010111)2= (57)16,178=(10110010)2=(B2)162、3795.4三、項(xiàng)目二點(diǎn)亮發(fā)光二極管項(xiàng)目內(nèi)容本項(xiàng)目通過“點(diǎn)亮發(fā)光二極管”這一任務(wù)的驅(qū)動,讓學(xué)生知道用C語言編寫單片機(jī)程序的基本組成部分和常用運(yùn)算符號,會寫最簡單的單片機(jī)程序,會對單片機(jī)的某一位進(jìn)行控制;會使用Keil軟件對程序進(jìn)行編譯,會使用軟件將程序燒錄到單片機(jī)中;會對單片機(jī)的I/O口進(jìn)行總線控制。教學(xué)提要1、教學(xué)重點(diǎn):編寫“點(diǎn)亮一只發(fā)光二極管”的程序以及兩個軟件的使用。2、教學(xué)難點(diǎn):I/O口的總線控制方式。教學(xué)建議(一)課時分配任務(wù)內(nèi)容課時任務(wù)一點(diǎn)亮一只發(fā)光二極管1任務(wù)二點(diǎn)亮多只發(fā)光二極管2(二)教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法(三)教學(xué)要點(diǎn)任務(wù)一主要是通過編寫程序控制一只LED發(fā)光,由于學(xué)生是第一次接觸單片機(jī)編程,所以教學(xué)以教師的演示為主,通過編程讓學(xué)生知道一個完整的單片機(jī)程序包括哪幾部分,同時學(xué)會Keil軟件的使用方法,通過燒錄程序,讓學(xué)生學(xué)會燒錄軟件的使用方法,由于在后續(xù)的程序中會出現(xiàn)很多邏輯運(yùn)算,所以筆者在本節(jié)將常用的邏輯運(yùn)算符羅列下來,教師要對學(xué)生進(jìn)行必要說明;任務(wù)二的目的是讓學(xué)生學(xué)會進(jìn)行總線控制,完成了任務(wù)一以后,任務(wù)二就可以給予學(xué)生更多的主動權(quán),如電路的制作,程序的編寫,編程方面教師可以引導(dǎo)學(xué)生按照任務(wù)一提到的位定義的方法進(jìn)行,之后再給學(xué)生介紹總線控制方式。(四)實(shí)訓(xùn)指導(dǎo)由于在單片機(jī)最小系統(tǒng)中,P1.0口接有一只LED,因此任務(wù)一的電路就不需要另外制作,直接編寫程序控制這個LED即可。Keil軟件的使用過程中,有幾個關(guān)鍵點(diǎn)需要教師強(qiáng)調(diào):1、源程序的保存要加“.c”的后綴;2、要將源程序添加到項(xiàng)目組當(dāng)中;3、最后要輸出HEX文件,才能燒錄到單片機(jī)中。在任務(wù)二當(dāng)中,單片機(jī)要控制三只LED發(fā)光,因此,要制作三組LED與電阻串聯(lián)的電路,在制作電路時要注意LED的極性問題,確定采取共陽極或共陰極接法,接法不同,無論是位控制還是總線控制,賦的值都不一樣,教師要做必要說明;單片機(jī)與外圍電路要用排線進(jìn)行連接。任務(wù)一【練一練】答案頭文件為用戶定義了單片機(jī)常用寄存器的內(nèi)存地址,它其實(shí)就是一種聲明,將單片機(jī)中的一些常用的符號變量進(jìn)行定義聲明,對一些特殊功能寄存器進(jìn)行聲明,對一些關(guān)健字進(jìn)行定義;另外,用戶可以根據(jù)需要在頭文件中定義其它寄存器地址,凡是在頭文件中定義過的寄存器地址,編程時就不需要定義了。2、#include<reg51.h>sbitL1=P1^2;voidmain(){L1=1;}任務(wù)二【練一練】答案P1口的輸出情況被點(diǎn)亮的LED0x7fL70x66L7L4L3L00x9eL6L5L00xabL6L4L20x17L7L6L5L4【項(xiàng)目檢測】答案一、填空題1、頭文件、符號變量、特殊功能寄存器、關(guān)鍵字2、文件名.h3、main、入口4、11111110、16進(jìn)制數(shù)5、低電平、高電平語句解釋1、sbitP10=P1^0:將P1口的第0位定義為P102、L1=0:給變量L1賦值為03、P0=0xfe:給P0口的8位進(jìn)行賦值為0xfe連線題*按位與/測試等于==除!=邏輯或&&測試不等于||邏輯非!邏輯與>>乘<<按位取反&按位或|按位異或^位左移~位右移四、簡答題1、新建文件夾、打開Keil軟件、點(diǎn)擊“工程---新建工程”新建一個工程、在彈出的對話框中選擇新建的文件夾存放新建工程并取名后保存。2、1)設(shè)置編程器及接口;2)選擇芯片;3)設(shè)置熔絲位;4)加載所要燒錄的程序文件;5)編程燒錄。項(xiàng)目三制作節(jié)日彩燈項(xiàng)目內(nèi)容本項(xiàng)目主要介紹單片機(jī)控制一只或多只LED進(jìn)行閃爍的方法,通過幾個程序給學(xué)生介紹了延時子程序的編寫方法、子程序的調(diào)用方法、for語句和while語句的用法、帶參數(shù)子程序的作用以及循環(huán)左移和循環(huán)右移指令的應(yīng)用;還介紹了單片機(jī)控制多只LED以不同花樣進(jìn)行閃爍的方法。教學(xué)提要1、教學(xué)重點(diǎn):延時子程序、for語句和while語句、循環(huán)左移和循環(huán)右移指令2、教學(xué)難點(diǎn):指令的書寫和程序的格式。教學(xué)建議(一)課時分配任務(wù)內(nèi)容課時任務(wù)一讓發(fā)光二極管閃爍1任務(wù)二讓發(fā)光二極管循環(huán)閃爍2任務(wù)三控制LED以多種花樣進(jìn)行閃爍2(二)教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法(三)教學(xué)要點(diǎn)任務(wù)一主要是通過編寫程序控制一只LED閃爍,在編程之前,教師可以先讓學(xué)生分析如何才能讓LED閃爍,引導(dǎo)學(xué)生形成“LED工作狀態(tài)受電平高低影響”的概念,進(jìn)而引入延時程序的編寫方法;任務(wù)二涉及到八只LED的循環(huán)閃爍控制,也可以先讓學(xué)生獨(dú)立思考和討論,形成他們自己的思路,然后教師再介紹循環(huán)左移和循環(huán)右移的概念,另外,還要適當(dāng)加以拓展,比如循環(huán)左移兩位;任務(wù)三是對任務(wù)一和任務(wù)二的綜合應(yīng)用,主要目標(biāo)是讓單片機(jī)的兩組8個I/O口控制16只LED以不同的花樣進(jìn)行閃爍,在此任務(wù)的教學(xué)中要鼓勵學(xué)生設(shè)計更多的閃爍方式,然后讓同學(xué)之間相互分享,相互學(xué)習(xí)。(四)實(shí)訓(xùn)指導(dǎo)與項(xiàng)目二任務(wù)一一樣,本項(xiàng)目任務(wù)一的電路也不需要另外制作,直接編寫程序控制P1.0所接的LED即可。在編程方面,教師要引導(dǎo)學(xué)生獨(dú)立思考,不要照抄參考程序,每位學(xué)生的程序里面要有自己的思想內(nèi)容,比如延時時間的長短要不一樣;在任務(wù)二中,學(xué)生首先要制作正確的外圍電路,可以隨意采取共陽極和共陰極接法(或教師直接進(jìn)行分工),目的是便于程序方面的必要說明,編程之前,教師還要引導(dǎo)學(xué)生認(rèn)真解讀程序流程圖,最好讓學(xué)生自己完成流程圖的設(shè)計,之后再讓學(xué)生根據(jù)流程圖完成“填一填”的內(nèi)容,最后把程序?qū)懙絢eil軟件里,并進(jìn)行編譯和燒錄;任務(wù)三的外圍電路有16只LED,因此需要在任務(wù)二的基礎(chǔ)上再增加八只LED,電路制作完成后再完成“填一填”,但是最后寫程序時要將相應(yīng)的延時子程序?qū)戇M(jìn)去。任務(wù)一【練一練】答案#include<reg51.h>#defineucharunsignedchar//宏定義sbitL1=P1^0;sbitL2=P1^1;voiddelay(){uchara,b,c;for(a=20;a>0;a--)for(b=20;b>0;b--)for(c=248;c>0;c--);}voidmain(){while(1){L1=0;L2=1;delay();L1=1;L2=0;delay();}}任務(wù)二【練一練】答案#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintvoiddelay(uchar);voidmain(){ucharLED;LED=0xfc;while(1){P0=LED;delay(100);LED=_crol_(LED,2);}}voiddelay(ucharx){uinta,b;for(a=200;a>0;a--)for(b=x;b>0;b--);}任務(wù)三【練一練】答案1、共陰極接法和共陽極接法;共陰極接法時,P1=P2=0xff,共陽極接法時,P1=P2=0x00。2、可以通過按鍵來控制?!卷?xiàng)目檢測】答案一、填空題1、子程序2、1微秒3、聲明子程序4、宏定義5、循環(huán)右移、循環(huán)右移二、語句解釋1、語句while(a--)每執(zhí)行一次,變量a減1,只要a不為0,則一直執(zhí)行該語句,否則執(zhí)行下一條語句,因此,這個程序?qū)?zhí)行1001次while(a--),起到延時的作用。2、先讓i賦值為0,再判斷“i<8”是否為真,顯然“0<8”為真,則執(zhí)行一次花括號中的語句,然后讓i加1,重新判斷表達(dá)式“i<8”,因此,這個程序?qū)?zhí)行8次花括號中的語句,最終a=8。3、變量a循環(huán)左移一位計算題假設(shè)晶振頻率為12MHZ,計算下列延時程序的延時時間。1、t=100×200×2=40000微秒=0.04秒2、t=20×20×248×2=198400微秒≈0.2秒項(xiàng)目四制作定時器項(xiàng)目內(nèi)容本項(xiàng)目的內(nèi)容主要包括數(shù)碼管的識別和檢測、單片機(jī)控制數(shù)碼管顯示數(shù)字的方法;數(shù)組變量的定義和使用、if語句的應(yīng)用;還有用動態(tài)掃描的方式讓數(shù)碼管顯示數(shù)字、利用定時器中斷設(shè)置一秒的標(biāo)準(zhǔn)延時;最后使用switch-case語句編程、制作60秒定時器。教學(xué)提要1、教學(xué)重點(diǎn):動態(tài)掃描的含義和應(yīng)用2、教學(xué)難點(diǎn):定時器中斷及其初始化教學(xué)建議(一)課時分配任務(wù)內(nèi)容課時任務(wù)一讓單個數(shù)碼管顯示數(shù)字2任務(wù)二讓多個數(shù)碼管顯示數(shù)字2任務(wù)三完成60秒定時器的制作3(二)教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法(三)教學(xué)要點(diǎn)本項(xiàng)目通過創(chuàng)設(shè)短期實(shí)習(xí)的情境,給學(xué)生營造工作的場景,進(jìn)而給出檢測數(shù)碼管的任務(wù),程序方面,循序漸進(jìn),從控制一個數(shù)碼管顯示數(shù)字開始,到顯示數(shù)字的不斷變化,然后完成單片機(jī)控制多個數(shù)碼管實(shí)現(xiàn)靜態(tài)顯示和動態(tài)顯示的效果,最終實(shí)現(xiàn)60秒定時器的制作。教師在這些過程中,教授學(xué)生幾個重點(diǎn)的語句或指令,如if語句、switch-case語句;另外,關(guān)于定時器中斷,教師要想方設(shè)法讓學(xué)生理解它的作用和工作工程,并且要清楚如何開啟定時器中斷以及開啟哪個定時器中斷。(四)實(shí)訓(xùn)指導(dǎo)任務(wù)一先讓學(xué)生使用萬用表檢測數(shù)碼管,確定數(shù)碼管的類型和各個管腳對應(yīng)的字段,在“測一測”里記錄下來,然后制作外圍電路,此過程要特別注意接上拉電阻,最后通過編程控制數(shù)碼管顯示各個數(shù)字,再使用延時方式讓數(shù)碼管顯示不斷變化的數(shù)字;任務(wù)二是以四位數(shù)碼管為例進(jìn)行動態(tài)掃描控制,教師也可以讓學(xué)生控制兩位數(shù)碼管進(jìn)行動態(tài)顯示,電路連接方面要注意確定段控制和位控制的I/O口,編程方面要注意定時器中斷初值的設(shè)定要合適,初值太小顯示的數(shù)字會閃爍,初值太大會使顯示的數(shù)字產(chǎn)生互相干擾;如果任務(wù)二是使用兩位數(shù)碼管,則任務(wù)三就不需要另外制作外圍電路,編程方面最關(guān)鍵的是如何使用定時器中斷產(chǎn)生1秒的精確延時。任務(wù)一【練一練】答案填空題(1)共陽極數(shù)碼管、電源正極、低(2)共陰極數(shù)碼管、電源負(fù)極、高、低2、#include<reg51.h>unsignedcharb,i;unsignedinta;unsignedcharcodetabledu[]={0x3f,0x06};voiddisplay();voiddelay(){for(a=5000;a>0;a--)for(b=100;b>0;b--);}voidmain(){i=0; while(1) {if(i==1) i=0; display(); i++;delay(); }}voiddisplay(){ P0=tabledu[i];}任務(wù)二【練一練】答案填空題:驅(qū)動電路、靜態(tài)、動態(tài)編程簡單,顯示亮度高、占用I/O端口多1~2ms、余輝效應(yīng)計算題:假設(shè)AT89S51單片機(jī)晶振頻率為12MHz,要求定時時間8ms,使用定時器T0,工作方式0,計算定時器初值X。計數(shù)脈沖個數(shù)為:8ms/12/12MHz=8000;然后根據(jù)工作方式確定定時器初值:若為工作方式0,則計數(shù)初值為:2^13-8000=192=C0HTH0=00H,TL0=C0H任務(wù)三【練一練】答案1、計算題:(1)5(2)9(3)22、編程題:#include<reg51.h>unsignedchari,count;//i為位選變量,count為計數(shù)變量unsignedintt;//t為定時變量unsignedcharcodetabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定義段數(shù)組變量unsignedcharcodetablewe[]={0xfe,0xfd};//定義位數(shù)組變量voiddisplay();voidmain(){ i=0; t=0; count=60;//賦初值 TMOD=0x10;//選擇定時器1工作方式1TH1=(65536-5000)/256;TL1=(65536-5000)%256;//給定時器賦初值,保證中斷產(chǎn)生一次為0.005秒EA=1;ET1=1;TR1=1;//開中斷 while(1);}voidtime1()interrupt3using3//中斷子函數(shù){TH1=(65536-5000)/256;TL1=(65536-5000)%256;//恢復(fù)定時器初值 t++;//t遞增 if(t>=200)//t加到200時,定時時間為1秒,執(zhí)行以下程序 { t=0;//t清零 if(count>0) count--; //count從60減到0 }; display();//執(zhí)行顯示子程序 if(i>=1)//i在0和1之間轉(zhuǎn)換 i=0; else i++;}voiddisplay(void){ switch(i)//判斷變量i { case0://如果i=0,執(zhí)行以下程序 { P2=tablewe[0];//選擇右邊的數(shù)碼管 P0=tabledu[count%10];//顯示count的個位 break; } case1://如果i=1,執(zhí)行以下程序 { P2=tablewe[1];//選擇左邊的數(shù)碼管 P0=tabledu[count/10];//顯示count的個位 break; } default: break; };}【項(xiàng)目檢測】答案一、填空題1、共陰極數(shù)碼管、共陽極數(shù)碼管2、七段數(shù)碼管、八段數(shù)碼管3、數(shù)組4、定時器/計數(shù)器T0、定時器/計數(shù)器T15、中斷優(yōu)先級、所用工作寄存器組二、簡答題1、1)確定工作方式;2)預(yù)置定時或計數(shù)的初值;3)根據(jù)需要開放定時器/計數(shù)器的中斷直接對IE位賦值,ET0(IE.1)為定時/計數(shù)器T0中斷允許位,ET1(IE.3)為定時/計數(shù)器T1中斷允許位,EA(IE.7)為CPU中斷允許(總允許位);4)啟動定時器/計數(shù)器。2、首先計算switch后面圓括號中表達(dá)式的值,然后用此值依次與各個case的常量表達(dá)式比較,若圓括號中表達(dá)式的值與某個case后面的常量表達(dá)式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句;若圓括號中表達(dá)式的值與所有case后面的常量表達(dá)式都不等,則執(zhí)行default后面的語句n+1,然后退出switch語句,程序流程轉(zhuǎn)向開關(guān)語句的下一個語句。編程題1、#include<reg51.h>unsignedcharb,i;unsignedinta;unsignedcharcodetabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0xec,0x39,0x5e,0xe9,0x71};voiddisplay();voiddelay(){for(a=5000;a>0;a--)for(b=100;b>0;b--);}voidmain(){i=0; while(1) {if(i==16) i=0; display(); i++;delay(); }}voiddisplay(){ P0=tabledu[i];}略項(xiàng)目五制作搶答器項(xiàng)目內(nèi)容本項(xiàng)目主要涉及到單片機(jī)的按鍵控制,首先是使用按鍵讓單片機(jī)控制LED的工作狀態(tài),然后編寫按鍵消抖的程序來控制數(shù)碼管的顯示,最后是對矩陣鍵盤的介紹,要求使用矩陣鍵盤實(shí)現(xiàn)多路輸入。教學(xué)提要1、教學(xué)重點(diǎn):按鍵控制單片機(jī)輸出信號2、教學(xué)難點(diǎn):矩陣鍵盤的掃描方法、按鍵消抖的方法教學(xué)建議(一)課時分配任務(wù)內(nèi)容課時任務(wù)一制作模擬開關(guān)燈電路2任務(wù)二制作可控數(shù)碼顯示電路2任務(wù)三完成16路搶答器的制作3(二)教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法(三)教學(xué)要點(diǎn)在任務(wù)一的教學(xué)中,首先要指導(dǎo)學(xué)生畫出正確的電路圖,特別是要讓學(xué)生理解上拉電阻的作用,然后引導(dǎo)學(xué)生畫流程圖,建構(gòu)編程的思路,最后師生共同完成程序的編寫和燒錄;任務(wù)二可以引導(dǎo)學(xué)生結(jié)合數(shù)碼管顯示和按鍵控制獨(dú)立完成程序編寫,根據(jù)出現(xiàn)的問題進(jìn)行思考和討論,然后再引入按鍵消抖和松鍵消抖的概念和語句;任務(wù)三最重要的是給學(xué)生講清楚矩陣鍵盤的結(jié)構(gòu)和行掃描法。(四)實(shí)訓(xùn)指導(dǎo)任務(wù)一的首要步驟就是制作電路,在這里一般使用四腳的按鈕,學(xué)生要學(xué)會使用萬用表檢測常開和常閉引腳,以使開關(guān)正常工作,安裝時要注意接上上拉電阻;任務(wù)二的外圍電路不用另外制作,利用現(xiàn)有的外圍電路即可構(gòu)成,編程方面,重點(diǎn)是要想辦法解決按鍵抖動的問題;任務(wù)三的電路可連接矩陣鍵盤模塊(如圖5.1所示),要讓學(xué)生完整編寫程序難度會比較大,所以教師要讓學(xué)生理解編程的思路,然后對程序進(jìn)行修改,以使數(shù)碼管的顯示內(nèi)容發(fā)生變化,強(qiáng)調(diào)對現(xiàn)有程序的應(yīng)用,而不是死記硬背。圖5.1任務(wù)一【練一練】答案編程題#include<reg51.h>sbitLED1=P1^0;sbitLED2=P1^1;sbitopen=P3^0;sbitclose=P3^1;voidmain(){LED1=1;LED2=0;while(1){if(LED1==1){if(!open){LED1=0;LED2=1;}else{LED1=1;LED2=0;}}else{if(!close){LED1=1;LED2=0;}Else{LED1=0;LED2=1;}}}}簡答題為了確保I/O口作為輸入口時輸入高電平,作為輸出口時確保輸出電流足夠大。任務(wù)二【練一練】答案1、在按鍵閉合及斷開的瞬間均伴隨有一連串的抖動2、在檢測出鍵閉合后執(zhí)行一個延時程序,5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5ms~10ms的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序。任務(wù)三【練一練】答案1、填空題(1)矩陣鍵盤、16(2)行掃描法2、簡答題(1)將P1口和0xf0進(jìn)行與運(yùn)算,如果結(jié)果不為0xf0,則說明高四位不全為1。(2)通過檢測P1口高四位是否全為1,如果全為1,說明已經(jīng)松手?!卷?xiàng)目檢測】一、填空題1、上拉、限流2、按鍵抖動、按鍵消抖3、行掃描法二、簡答題1、預(yù)先將接按鍵的I/O口設(shè)置為高電平,然后通過檢測I/O口輸入狀態(tài)是否發(fā)生變化來判斷按鍵是否按下。2、依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。三、編程題1、假設(shè)LED接單片機(jī)的P1.0口,按鈕K接P3.0,編寫程序?qū)崿F(xiàn)以下效果:按下K,LED開始閃爍。#include<reg51.h>sbitLED=P1^0;sbitK=P3^0;inta;voidmain(){LED=1;while(1){if(!K){a=50000; LED=0; while(a--); LED=1; a=50000;while(a--);}}}2、程序略,要注意進(jìn)行按鍵消抖處理。項(xiàng)目六制作消防車報警器項(xiàng)目內(nèi)容本項(xiàng)目主要涉及到單片機(jī)對蜂鳴器的控制。介紹了有源蜂鳴器和無源蜂鳴器以及它們之間的區(qū)別、蜂鳴器的驅(qū)動電路以及驅(qū)動蜂鳴器發(fā)聲的程序;還介紹了利用I/O口定時翻轉(zhuǎn)電平產(chǎn)生矩形波對無源蜂鳴器進(jìn)行驅(qū)動、通過改變I/O口輸出矩形波的頻率來改變蜂鳴器聲音的方法;最后介紹了使用邏輯非和按位異或運(yùn)算符,讓蜂鳴器發(fā)出消防車報警聲的編程方法。教學(xué)提要1、教學(xué)重點(diǎn):驅(qū)動無源蜂鳴器發(fā)聲2、教學(xué)難點(diǎn):編程實(shí)現(xiàn)消防車報警聲教學(xué)建議(一)課時分配任務(wù)內(nèi)容課時任務(wù)一讓蜂鳴器發(fā)聲1任務(wù)二讓蜂鳴器發(fā)出音調(diào)漸變的聲音1任務(wù)三制作模擬消防車報警器2(二)教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法(三)教學(xué)要點(diǎn)本項(xiàng)目三個任務(wù)的電路部分完全一樣,程序方面的核心也相同,都是利用定時器中斷產(chǎn)生一定頻率的矩形波來驅(qū)動蜂鳴器,唯一不同的是隨著單片機(jī)輸出頻率的變化,蜂鳴器發(fā)出的聲音也會產(chǎn)生變化,從而實(shí)現(xiàn)任務(wù)二和任務(wù)三所要達(dá)到的效果,因此,教師所要做的就是將每個程序里的關(guān)鍵語句做詳細(xì)解釋,幫助學(xué)生理解。(四)實(shí)訓(xùn)指導(dǎo)蜂鳴器的驅(qū)動電路部分可以使用蜂鳴器模塊(如圖6.1),但是蜂鳴器模塊有無源蜂鳴器模塊和有源蜂鳴器模塊兩種。對于有源蜂鳴器模塊,單片機(jī)一個高(低)電平就可以讓其發(fā)出聲音,具體是什么電平觸發(fā),要看模塊中的三極管的類型,如果是NPN型三極管,則高電平觸發(fā),如果是PNP三極管,則低電平觸發(fā);對于無源蜂鳴器模塊,必須用2KHZ~5KHZ頻率的方波去驅(qū)動它。所以,使用之前要注意區(qū)分模塊類型。圖6.1任務(wù)一【練一練】答案1、填空題:(1)壓電式蜂鳴器、電磁式蜂鳴器(2)有源蜂鳴器、無源蜂鳴器2、簡答題:(1)PWM輸出口直接驅(qū)動,另一種是利用I/O口定時翻轉(zhuǎn)電平產(chǎn)生矩形波對蜂鳴器進(jìn)行驅(qū)動。(2)PWM輸出口直接驅(qū)動是利用PWM輸出口本身可以輸出一定的方波來直接驅(qū)動蜂鳴器。任務(wù)二【練一練】答案1、響度、音調(diào)和音品2、音調(diào)3、編寫程序,讓蜂鳴器每隔一秒鐘改變一次音調(diào)。#include<reg51.h>unsignedcharfrq;sbitbeep=P1^0;voiddelay(x){uinta,b;for(a=200;a>0;a--)for(b=x;b>0;b--);}voidmain(){frq=10;EA=1;ET1=1;TMOD=0x10;TH1=(65536-5000)/256;TL1=(65536-5000)%256;TR1=1;beep=0;delay(frq);beep=1;delay(frq);while(1);}voidtime1()interrupt3using3{TH1=(65536-5000)/256;TL1=(65536-5000)%256; if(t>=200) { t=0;if(frq>=2000)frq=10;elsefrq=frq+10; };elset++;}任務(wù)三【練一練】答案1、0x012、0xee0xfe0x00【項(xiàng)目檢測】答案填空題1、多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱2、振蕩器、電磁線圈、磁鐵、振動膜片3、有源、無源4、電源、振蕩音品語句解釋1、如果變量key為0,則給變量led賦值02、將0xe0賦給變量a3、對1取反4、對變量beep進(jìn)行按位取反三、簡答題必須利用定時器來做定時,通過定時翻轉(zhuǎn)電平產(chǎn)生符合蜂鳴器要求的頻率的波形,這個波形就可以用來驅(qū)動蜂鳴器了。編程題1、參考項(xiàng)目九任務(wù)一的程序。2、略項(xiàng)目七制作D/A、A/D轉(zhuǎn)換電路項(xiàng)目內(nèi)容本項(xiàng)目主要介紹了D/A轉(zhuǎn)換和A/D轉(zhuǎn)換的原理,并使用D/A轉(zhuǎn)換器DAC0832和A/D轉(zhuǎn)換器ADC0804分別實(shí)現(xiàn)“讓LED逐漸變亮”和“用電位器逐個點(diǎn)亮8支LED”的效果;還介紹了分析工作時序圖的方法。二、教學(xué)提要1、教學(xué)重點(diǎn):編程控制DAC0832和ADC08042、教學(xué)難點(diǎn):分析工作時序圖教學(xué)建議(一)課時分配任務(wù)內(nèi)容課時任務(wù)一讓LED逐漸變亮2任務(wù)二用電位器逐個點(diǎn)亮8支LED2(二)教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法(三)教學(xué)要點(diǎn)任務(wù)一首先要讓學(xué)生了解D/A轉(zhuǎn)換器的作用和原理,然后針對“讓LED逐漸變亮”的任務(wù)展開教師分析和學(xué)生討論,讓學(xué)生思考:如何才能使LED逐漸變亮?DAC0832的工作時序圖要做重點(diǎn)分析,主要是要教給學(xué)生分析的方法,以便在今后拿到其它芯片的時序圖也能獨(dú)立分析;任務(wù)二的教學(xué)過程與任務(wù)一基本相同,由于在任務(wù)一當(dāng)中學(xué)生已經(jīng)接觸過時序圖,所以,在任務(wù)二教師可以先讓學(xué)生嘗試分析ADC0804的工作時序圖,然后再加以補(bǔ)充。(四)實(shí)訓(xùn)指導(dǎo)本項(xiàng)目的任務(wù)內(nèi)容都需要另外的芯片協(xié)助完成,因此完成芯片與單片機(jī)之間的電路連接是功能實(shí)現(xiàn)的關(guān)鍵,任務(wù)資訊已經(jīng)提供了電路原理圖,在安裝電路的時候要注意LED的極性不要接錯,電源端和接地端不能漏接;任務(wù)二可以使用A/D轉(zhuǎn)換模塊(如圖7.1所示)實(shí)現(xiàn),當(dāng)短路子置于上面兩個插針位置時,內(nèi)部信號輸入可進(jìn)行有效的模/數(shù)轉(zhuǎn)換,此時,用戶可以通過旋轉(zhuǎn)電位器來觀察,內(nèi)部電壓信號的模/數(shù)轉(zhuǎn)換過程,作為模塊的測試使用,當(dāng)短路子置于下面兩個插針位置時,外部信號輸入可進(jìn)行有效的模/數(shù)轉(zhuǎn)換。圖7.1任務(wù)一【練一練】答案1、簡答題:(1)1)分辨率2)線性度3)絕對精度和相對精度4)建立時間(2)1)分辨率8位2)電流建立時間1μS3)數(shù)據(jù)輸入可采用雙緩沖、單緩沖或直通方式4)輸出電流線性度可在滿量程下調(diào)節(jié)5)邏輯電平輸入與TTL電平兼容6)單一電源供電(+5V~+15V);7)低功耗,20mW。2、填空題:(1)最低有效位、最小變化值(2)數(shù)據(jù)寄存器、電流任務(wù)二【練一練】答案1、填空題:(1)數(shù)字、模擬、(2)逐次比較2、簡答題:(1)1)分辨率2)量化誤差3)偏移誤差4)滿刻度誤差5)線性度6)絕對精度7)轉(zhuǎn)換速率(2)1)準(zhǔn)備階段。2)轉(zhuǎn)換階段。3)讀取階段?!卷?xiàng)目檢測】答案填空題1、線性度2、輸出值、理論值3、滿刻度變化4、電流5、時序6、模擬量、數(shù)字量7、模擬電壓8、有限位數(shù)、量化9、偏移誤差10、重復(fù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換逐次比較簡答題首先向片內(nèi)D/A轉(zhuǎn)換器輸入10000000,若電壓比較器:VIN>VN(VN為片內(nèi)D/A轉(zhuǎn)換的輸出,VIN為A/D轉(zhuǎn)換器的輸入電壓),N位寄存器的首位置1(若VIN<VN,則寄存器的首位寫0);再向D/A轉(zhuǎn)換輸入11000000(首位寫0時,輸入01111111),若VIN>VN,則寄存器第二位置1(若VIN<VN,則寫0);再向D/A轉(zhuǎn)換輸入11100000(或00111111),若VIN>VN,則寄存器第三位置1(若VIN<VN,則寫0);依次下去直到寄存器第8位賦值結(jié)束,控制邏輯檢測到比較器進(jìn)行8次后,EOC輸入信號,讓A/D轉(zhuǎn)換器將結(jié)果通過鎖存緩存器輸出至D0~D7。項(xiàng)目八制作溫度顯示器項(xiàng)目內(nèi)容本項(xiàng)目主要介紹了使用1602液晶屏幕和溫度傳感器DS18B20制作溫度顯示器的方法。在任務(wù)一中介紹了1602液晶模塊的引腳功能、1602寫數(shù)據(jù)和寫命令的格式、1602初始化程序以及1602液晶的顯示地址的設(shè)置;任務(wù)二主要介紹了DS18B20的時序圖、DS18B20的初始化程序和讀寫程序以及驅(qū)動DS18B20的操作流程;最后一個任務(wù)完成了溫度顯示器的制作。二、教學(xué)提要教學(xué)重點(diǎn):1602液晶顯示器的使用、驅(qū)動DS18B20芯片教學(xué)難點(diǎn):讓LCD顯示當(dāng)前溫度三、教學(xué)建議(一)課時分配任務(wù)內(nèi)容課時任務(wù)一讓1602液晶顯示器顯示字符2任務(wù)二驅(qū)動DS18B20芯片2任務(wù)三讓LCD顯示當(dāng)前溫度2(二)教學(xué)方法情境教學(xué)法、任務(wù)驅(qū)動法(三)教學(xué)要點(diǎn)要制作溫度顯示器,首先要學(xué)會讓液晶顯示器顯示指定的字符,任務(wù)一介紹的液晶顯示器是常用的1602液晶顯示器,所以任務(wù)一的教學(xué)要點(diǎn)就是講清楚1602液晶的時序圖,并根據(jù)時序圖畫出寫數(shù)據(jù)和寫命令的程序流程圖,至于液晶屏能否正常顯示字符以及字符顯示的位置,就要引導(dǎo)學(xué)生查看表8—1—3(見課本)的內(nèi)部指令,例如:寫入命令字“0x01”就起到清屏的作用;溫度傳感器種類很多,DS18B20溫度傳感器通常應(yīng)用于高精度、高可靠性的場合,其內(nèi)部含有數(shù)據(jù)存儲單元,具備記憶功能,配合指定的程序就可以將其儲存的數(shù)據(jù)讀取,所以任務(wù)二的關(guān)鍵是搞清楚“寫一個字節(jié)”和“讀一個字節(jié)”的程序指令;任務(wù)三是對前面兩個任務(wù)的綜合運(yùn)用,可以讓學(xué)生獨(dú)立完成。(四)實(shí)訓(xùn)指導(dǎo)任務(wù)一實(shí)訓(xùn)的首要任務(wù)是正確連接電路,因?yàn)橐壕э@示器的管腳比較多,所以要注意區(qū)分管腳的順序,電路連接好以后,學(xué)生可以直接將程序燒錄到單片機(jī)進(jìn)行測試,顯示器正常顯示以后,教師要求學(xué)生對顯示字符和顯示位置進(jìn)行改變,以達(dá)到熟悉控制指令的目的;任務(wù)二的電路部分較簡單,所以要求學(xué)生嘗試完成“寫一個字節(jié)”和“讀一個字節(jié)”的程序指令,然后結(jié)合任務(wù)三完成溫度顯示器的制作,但是要求顯示內(nèi)容要略有不同,可以加上日期或其它文字。任務(wù)一【練一練】答案00、100x82任務(wù)二【練一練】答案1、溫度傳感器2、單總線、雙向3、480uS、15~60uS4、兩個、執(zhí)行溫度轉(zhuǎn)換、讀RAM5、說出以下運(yùn)算的意義:(1)將變量dat與0x01按位求與,相當(dāng)于保留最低位;(2)將變量dat與0x80按位求或,即dat的高位補(bǔ)1。任務(wù)三【練一練】答案已知i為四位十進(jìn)制數(shù),試用適當(dāng)?shù)乃阈g(shù)運(yùn)算符表示其千位、百位、十位和個位。千位:i/1000百位:i%1000/100十位:i%100/10個位:i%10【項(xiàng)目檢測】答案填空題1、慢顯示2、字符地址3、顯示模式4、480uS5、拉高、存在脈沖6、一根I/O線語句解釋(5—9題為單片機(jī)向1602液晶寫指令的語句)1、將dat的各數(shù)據(jù)位右移1位2、將dat的各數(shù)據(jù)位和0x80按位求或3、將dat的各數(shù)據(jù)位和0x01按位求與,結(jié)果賦值給DQ4、將temp的各數(shù)據(jù)位和變量a按位求或5、lcd_w_com(0x38);
6、顯示關(guān)閉
7、開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍
8、顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位
9、清屏
附錄一C語言基礎(chǔ)知識匯總語言變量聲明和變量賦值1)基本數(shù)據(jù)類型在C語言中,僅有4種基本數(shù)據(jù)類型—整型、浮點(diǎn)型、指針和聚合類型(如數(shù)組和結(jié)構(gòu)等),所有其他的類型都是從這4種基本類型的某種組合派生而來。整型:整型家族包括字符、短整型、整型和長整型,它們都分為有符號(signed)和無符號(unsigned)兩種版本。規(guī)定整數(shù)值相互之間大小的規(guī)則很簡單:長整型至少應(yīng)該和整型一樣長,而整型至少應(yīng)該和短整型一樣長。浮點(diǎn)類型:諸如3.14159和2.3×1023這樣的數(shù)值無法按照整數(shù)存儲。第一個數(shù)為非整數(shù),而第二個數(shù)遠(yuǎn)遠(yuǎn)超出了計算機(jī)整數(shù)所表達(dá)范圍,這樣的數(shù)就可以用浮點(diǎn)數(shù)的形式存儲。浮點(diǎn)數(shù)家族包括float、double和longdouble類型。通常,這些類型分別提供單精度、雙精度以及在某種擴(kuò)展精度的機(jī)器上提供擴(kuò)展精度。ANSI標(biāo)準(zhǔn)僅僅規(guī)定longdouble至少和double一樣長,而double至少和float一樣長。標(biāo)準(zhǔn)同時規(guī)定了一個最小范圍:所有浮點(diǎn)類型至少能夠容納從10-37到1037之間的任何值。指針:變量的值存儲于計算機(jī)內(nèi)存中,每個變量都占據(jù)一個特定的位置。每個內(nèi)存的位置都由地址唯一確定并應(yīng)用,就像一條街上的房子由他們的門牌號碼標(biāo)識一樣,指針知識地址的另一個名字。2)變量聲明形式只知道基本的數(shù)據(jù)類型是遠(yuǎn)遠(yuǎn)不夠的,你還應(yīng)該知道怎樣聲明變量。變量的基本形式是:說明符(一個或多個)聲明表達(dá)式列表對于簡單的類型,聲明表達(dá)式列表就是被聲明的標(biāo)識符的基本類型。對于相對比較復(fù)雜的類型,聲明表達(dá)式列表的每個條目實(shí)際上是一個表達(dá)式,顯示被聲明的名字的可能用途。例如:inta,doubleb;該語句就是一條聲明語句,其中a,b就是變量名,該語句指明了變量a,b是int數(shù)據(jù)類型。所有變量在使用前都必須寫在執(zhí)行語句之前,也就是變量聲明要與執(zhí)行語句相分離,否則就是出現(xiàn)編譯錯誤。3)變量命名C語言中任何的變量名都是合法的標(biāo)示符。所謂標(biāo)識符就是由字母、數(shù)字和下劃線組成的但不以數(shù)字開頭的一系列字符。雖然C語言對標(biāo)示符的長度沒有限制,但是根據(jù)ANSI標(biāo)準(zhǔn),C編譯器必須要識別前31個字符。C語言是對大小寫敏感的,即C語言認(rèn)為大寫字母和小寫字母的含義是不同的,因此a1和A1是不同的標(biāo)識符。到目前為止,沒有一種命名規(guī)則可以讓所有的程序員贊同,程序設(shè)計教科書一般都不指定命名規(guī)則。常用的命名規(guī)則有匈牙利命名法和駝峰命名法等,在實(shí)際操作中,我們會采取相對簡單方便的命名規(guī)則,即“類型首字母”+“_”+“變量用途英文縮寫”,其中英文縮寫首字母為大寫,例如inti_Num,charc_Name[5]。4)變量賦值在一個變量聲明中,你可以給一個標(biāo)量變量指定一個初始值,方法是在變量名后面跟一個等號(賦值號),后面就是你想要給變量的值。例如:inti_Num=10;charc_Name[]=”student”;上述語句聲明i_Num為一個整數(shù)變量,其初始值為10,聲明c_Name為一個字符數(shù)組,其初始值為“student”。在C語言中,全局變量和靜態(tài)變量,如果沒有賦初值,則默認(rèn)初始值int,float,char分別為0,0.0,’\0’,除了全局變量和靜態(tài)變量以外,其他變量如果沒有賦初值,則默認(rèn)初始值為內(nèi)存中的垃圾內(nèi)容,對于垃圾內(nèi)容不能有任何假設(shè)。注意:定義指針后,默認(rèn)初始值不是0,而是隨機(jī)的一個值,故定義指針后,一定要初始化。在實(shí)際操作中,變量的賦值都是以賦值語句的形式出現(xiàn),賦值語句是由賦值表達(dá)式再加上分號構(gòu)成的表達(dá)式語句。其一般形式為:變量=表達(dá)式;在賦值語句的使用中需要注意以下幾點(diǎn):由于在賦值符“=”右邊的表達(dá)式也可以又是一個賦值表達(dá)式。下述形式:變量=(變量=表達(dá)式);該語句是成立的,從而形成了嵌套的情形。其展開后的一般形式為:變量=變量=…=表達(dá)式;例如:a=b=c=d=e=5;按照賦值運(yùn)算符的右結(jié)合性,因此實(shí)際上等效于:e=5;d=e;c=d;b=c;a=b;注意在變量聲明中給變量賦初值和賦值語句的區(qū)別給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其他同類變量之間仍必須用逗號隔開,而賦值語句則必須用分號隔開。例如:inta=5,b,c;在變量聲明中,不允許連續(xù)給多個變量賦初值。如下述說明就是錯誤的:inta=b=c=5;正確寫法為:inta=5,b=5,c=5;但是,賦值語句允許連續(xù)賦值。注意賦值表達(dá)式和賦值語句的區(qū)別。賦值表達(dá)式是一種表達(dá)式,它可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,而賦值語句則不能。下述語句是合法的:If((x=y+7)>0)z=x;語句功能為若表達(dá)式x=y+5大于0則z=x。但是,下述語句是錯誤的:If((x=y+7;)>0)z=x;因?yàn)閤=y+7;是語句,不能出現(xiàn)在表達(dá)式中。實(shí)例:#include“stdafx.h”voidmain(){ inti_Tmp,i_Type=8; floatf_Tmp; doubled_Tmp; charc_Tmp; d_Tmp=d_Tmp=f_Tmp=12; f_Tmp=i_Type; i_Tmp=i_Type+3; printf("a=%d,b=%d,c=%.3f,d=%.6lf",i_Tmp,i_Type,f_Tmp,d_Tmp);}算術(shù)運(yùn)算符及使用方式C語言提供了最基本的算術(shù)運(yùn)算符,如下表:運(yùn)算符含義舉例結(jié)果+加法運(yùn)算符a+ba和b的和-減法運(yùn)算符a-ba和b的差*乘法運(yùn)算符a*ba和b的乘積/除法運(yùn)算符a/ba除b的商%求余運(yùn)算符a%ba除b的余數(shù)++自加運(yùn)算符a++,++aa自加1--自減運(yùn)算符a--,--aa自減11)+、-、*、/都適用于浮點(diǎn)類型和整數(shù)類型,當(dāng)兩個操作數(shù)都為整數(shù)時進(jìn)行整數(shù)運(yùn)算,其余情況則進(jìn)行double型運(yùn)算;當(dāng)/除法運(yùn)算符的兩個操作數(shù)為整數(shù)時,結(jié)果為整數(shù),舍去小數(shù)部分,例如5/3的結(jié)果為1;%求余運(yùn)算符只接受兩個整型操作數(shù)的運(yùn)算,結(jié)果為余數(shù)2)++、--:作用是使變量自加1或自減1,例如i++、++i,都是使i的值加1,但其執(zhí)行的步驟是不同的。例如:inti=3,j;j=i++;//i的值為4,j的值為3inti=3,j;j=++i;//i的值為4,j的值為4可見當(dāng)變量在左側(cè)時,先進(jìn)行賦值運(yùn)算再進(jìn)行自加1操作,當(dāng)變量在右側(cè)時,先進(jìn)行自加1操作再進(jìn)行賦值運(yùn)算。3)在賦值運(yùn)算符之前加上算術(shù)運(yùn)算符既構(gòu)成復(fù)合運(yùn)算符,例如:a+=b,等價于a=a+b。-=、*=、/=也是如此。位運(yùn)算符及使用方式(<<、>>、~、|、&、^)位運(yùn)算符是用來對二進(jìn)制位進(jìn)行操作,如下表:運(yùn)算符含義<<左移>>右移~取反|按位或&按為與^按為異或<<、>>:移位運(yùn)算符,例如左移運(yùn)算符:inti=3;i=i<<4;3的二進(jìn)制位為00000011,左移4位的結(jié)果為00110000,其操作中高位舍棄、低位補(bǔ)0,既i=48,等同于i乘以2的4次方。右移運(yùn)算符則有所不同,操作中是低位舍棄,高位則有兩種補(bǔ)位方式。一種為邏輯移位,高位補(bǔ)0;另一種為算術(shù)移位,當(dāng)符號位為1時高位全部補(bǔ)1,當(dāng)符號位為0時則高位全部補(bǔ)0。具體使用哪種移位方式則取決于當(dāng)前的編譯環(huán)境。~:取反運(yùn)算符,為單目運(yùn)算符,其操作是對操作數(shù)的二進(jìn)制位按位求反,既1變0,0變1。例如i=5,二進(jìn)制位為00000101,取反的結(jié)果為11111010。在計算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲,其中最高位為符號位,用0表示正,1表示負(fù)。補(bǔ)碼的規(guī)定如下:對正數(shù)來說,最高位為0,其余各位代表數(shù)值本身,例如14的補(bǔ)碼為00001110;對負(fù)數(shù)而言,則將該數(shù)絕對值的補(bǔ)碼按位取反,再加1,得該數(shù)的補(bǔ)碼,既-i=~i+1。例如-14的補(bǔ)碼為14的二進(jìn)制00001110取反加1得11110010。|、&、^:均為雙目運(yùn)算符,對操作數(shù)的二進(jìn)位進(jìn)行運(yùn)行,且操作數(shù)以補(bǔ)碼的方式出現(xiàn)。|按位或,兩個對應(yīng)的二進(jìn)位至少有一個為1則為1,否則為0;&按位與,兩個對應(yīng)的二進(jìn)位都為1則為1,否則為0;^按位異或,兩個對應(yīng)的二進(jìn)位不同則為1,否則為0。例如:a=5;(00000101)b=14;(00001110)a|b=15;(00001111)a&b=4;(00000100)a^b=11;(00001011)關(guān)系運(yùn)算符及使用方式(>、>=、<、<=、==、!=)運(yùn)算符含義>大于>=大于或等于<小于<=小于或等于==等于!=不等于關(guān)系運(yùn)算符用于比較兩個數(shù)值之間的關(guān)系,例如:a>3為關(guān)系表達(dá)式,大于號為關(guān)系運(yùn)算符,當(dāng)表達(dá)式成立時,“a>3”的值為“真”,當(dāng)“a>3”不成立時,“a>3”的值為“假”。其中應(yīng)當(dāng)注意的是關(guān)系表達(dá)式的返回值為整型值,而不是布爾型。表達(dá)式為真時返回值為1,表達(dá)式為假時返回值為0。邏輯運(yùn)算符及使用方式(&&、||、!)運(yùn)算符含義舉例結(jié)果&&邏輯與a&&ba,b都為真則結(jié)果為真,否則為假|(zhì)|邏輯或a||ba,b至少有一個為真則結(jié)果為真,否則為假!邏輯非!a當(dāng)a為真則結(jié)果為假,當(dāng)a為假則結(jié)果為真其中應(yīng)當(dāng)注意邏輯或,例如a||b,當(dāng)a為真時,C語言中直接跳過對b的判斷,其返回值為“真”。當(dāng)一個表達(dá)式包括幾種運(yùn)算符時,則以運(yùn)算符的優(yōu)先級對表達(dá)式進(jìn)行運(yùn)算,表達(dá)式的優(yōu)先級如下:優(yōu)先級運(yùn)算符類型說明1初等運(yùn)算符()、[]、->、.2單目運(yùn)算符!、~、++、--、*(指針運(yùn)算符)、&(取地址運(yùn)算符)3算術(shù)運(yùn)算符先乘除后加減4關(guān)系運(yùn)算符>、>=、<、<=、==、!=5邏輯運(yùn)算符&&、||6條件運(yùn)算符三目運(yùn)算符,例如?:7賦值運(yùn)算符=8逗號運(yùn)算符,數(shù)組數(shù)組是構(gòu)造類型,是一組具有相同類型數(shù)據(jù)的有序集合。每個數(shù)據(jù)成為數(shù)組的元素,用一個統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。一維數(shù)組的聲明方式為:<類型標(biāo)識符><數(shù)組名>[常量表達(dá)式]類型標(biāo)識符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型;數(shù)組名由用戶自定義,表示存儲空間的地址;常量表達(dá)式表示數(shù)組元素的個數(shù),也是數(shù)組的長度。例:inta[6];表示一個整型、數(shù)組名為a、長度為6的一維數(shù)組。(2)一維數(shù)組的引用形式:下標(biāo)法:數(shù)組名[下標(biāo)]例如:a[i];或p[i];a為數(shù)組名,p為指向數(shù)組的指針變量。注:C語言中不能依次引用整個數(shù)組,只能逐個引用數(shù)組中的各個元素。下標(biāo)就是被訪問的數(shù)組元素在所定義的數(shù)組中的相對位置。下標(biāo)為0表示的是數(shù)組元素在數(shù)組的第一個位置上,下標(biāo)等于1表示的是數(shù)組元素在數(shù)組的第二個位置上,依次類推。例如:inta[10];a[0]=100;//正確a[10]=100;//不正確,下標(biāo)越界例如:下標(biāo)法:intmain(){inta[10];for(inti=0;i<10;i++)a[i]=2*i;for(inti=0;i<10;i++)printf(“%d\t”,a[i]);return0;}指針法:*(a+i)或*(p+i);a是數(shù)組名,p為指向數(shù)組的指針變量。例如:指針法:intmain(){int*p=a;inti;for(i=0;i<10;i++)a[i]=2*i;for(i=0;i<10;i++)printf(“%d\t”,*(p+i));return0;}二維數(shù)組的聲明方式為:<類型標(biāo)識符><數(shù)組名>[常量表達(dá)式1][常量表達(dá)式2]:二維數(shù)組與一維數(shù)組的區(qū)別在于多出[常量表達(dá)式2]。[常量表達(dá)式1]是第一維,常稱為行;[常量表達(dá)式2]是第二維,也就是列。例:inta[3][5];表示一個3行5列的二維數(shù)組;數(shù)組元素的個數(shù)為:3*5=15個。二維數(shù)組的引用形式:下標(biāo)法:數(shù)組名[下標(biāo)][下標(biāo)]注:二維數(shù)組在引用時和一維數(shù)組一樣,只能逐個引用數(shù)組中的各個元素。例如:sz_A[5][6]下標(biāo)可以是整數(shù)表達(dá)式,如sz_A[8-5][2*3-1]。不要寫成sz_A[2,3]、sz_A[8-5,2*3-1]形式。注意:嚴(yán)格區(qū)分定義數(shù)組時用的sz_A[5][6]和引用元素時用的sz_A[5][6]的區(qū)別。前者sz_A[5][6]用來定義數(shù)組的維數(shù),后者sz_A[5][6]的5和6是下標(biāo),代表的是數(shù)組中的某一個元素?!纠?】分析程序的運(yùn)行結(jié)果源程序如下:#include<stdio.h>voidmain(){ intsz_Array[6];//一維數(shù)組 intsz_DlArray[3][5];//二維數(shù)組 inti_a;inti_dla; inti_dlb;//一維數(shù)組 for(i_a=0;i_a<6;i_a++) {sz_Array[i_a]=i_a*2+2; } printf("\n輸出一維數(shù)組元素為:\n"); for(i_a=0;i_a<6;i_a++) {printf("%d\t",sz_Array[i_a]); }//二維數(shù)組 for(i_dla=0;i_dla<3;i_dla++) {for(i_dlb=0;i_dlb<5;i_dlb++){sz_DlArray[i_dla][i_dlb]=i_dla+i_dlb;} }printf("\n輸出二維數(shù)組元素為:\n");for(i_dla=0;i_dla<3;i_dla++) {for(i_dlb;i_dlb<5;i_dlb++){ printf("%d",sz_DlArray[i_dla][i_dlb]); } printf("\n"); }}運(yùn)行結(jié)果為:輸出一維數(shù)組元素為:24681012輸出二維數(shù)組元素為:0123412345234563456745678指針法:可以通過行指針來引用二維數(shù)組元素。定義行指針變量:int(*p)[3],指針p是指向一個由3個元素所組成的整型數(shù)組指針。例如:voidmain(){inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}int(*p)[4]=a;for(inti=0;i<3;i++){for(intj=0;i<4;j++)printf(“%d\t”,p[i][j]);printf(“\n”);}}字符數(shù)組字符數(shù)組的定義與賦值字符數(shù)組是一串字符的集合,其數(shù)組元素為字符型。字符數(shù)組的賦值形式:char數(shù)組名[常量表達(dá)式]=“字符串”;或char數(shù)組名[常量表達(dá)式]={“字符串”};例:charsz_A[5]={‘s’,‘t’,‘u’,‘d’,‘y’,};定義數(shù)組sz_A,包含5個元素,其在內(nèi)存中的存放情況為:sz_A[0]sz_A[1]sz_A[2]sz_A[3]sz_A[4]study則各元素賦值如下:sz_A[0]=‘s’;sz_A[1]=‘t’;sz_A[2]=‘u’;sz_A[3]=‘d’;sz_A[4]=‘y’如果花括號中的字符個數(shù)大于數(shù)組長度,編譯系統(tǒng)就會報錯,如果花括號中的字符個數(shù)小于數(shù)組長度,其余元素則由系統(tǒng)自動定義為空字符,即‘\0’?!甛0’作為字符串的結(jié)束標(biāo)志,因此在定義數(shù)組長度時,應(yīng)在字符串原有的長度上加1,為字符串結(jié)束標(biāo)志預(yù)留空間。例:charsz_A[6]={‘s’,‘t’,‘u’,‘d’,‘y’,};定義數(shù)組sz_A,包含6個元素,其在內(nèi)存中的存放情況為:sz_A[0]sz_A[1]sz_A[2]sz_A[3]sz_A[4]sz_A[5]study\0則各元素賦值如下:sz_A[0]=‘s’;sz_A[1]=‘t’;sz_A[2]=‘u’sz_A[3]=‘d’;sz_A[4]=‘y’;sz_A[5]=‘\0’【例3】分析程序的運(yùn)行結(jié)果源程序如下:#include<stdio.h>voidmain(){charsz_A[10]="workhard";inti;for(i=0;i<9;i++)printf("%c",sz_A[i]);}運(yùn)行結(jié)果:workhard以上實(shí)例中,逐個顯示字符數(shù)組的各個元素,但需注意的是在定義字符數(shù)組的下標(biāo)時,至少比后面的字符串長度大1。其中,字符串長度應(yīng)包括其中空格的長度。字符串操作函數(shù):字符串復(fù)制函數(shù)strcpy()格式:strcpy(字符數(shù)組1,字符數(shù)組2)功能:是將字符數(shù)組2中字符串復(fù)制到字符數(shù)組1中去。注:字符數(shù)組1的長度必須大于字符數(shù)組2,從而能夠容納復(fù)制的字符數(shù)組2的字符串;字符數(shù)組1必須寫成數(shù)組名形式,字符數(shù)組2既可以是字符數(shù)組名,也可以是字符串;字符數(shù)組之間不能相互賦值。例如:charsz_str1[10],sz_str2[6]="workhard";Strcpy(sz_str1,sz_str2);printf("%s\n",sz_str1);運(yùn)行結(jié)果:workhard字符串連接函數(shù)strcat()strcat(字符數(shù)組1,字符數(shù)組2)功能:將字符數(shù)組1和字符數(shù)組2中的字符串連接起來,字符數(shù)組2中的字符串2接到字符數(shù)組1中的字符串后面。注:字符數(shù)組1的長度必須足夠大,能夠同時容納字符數(shù)組1中的字符串和字符數(shù)組2中的字符串。字符數(shù)組名2中的字符串連接到字符數(shù)組1的字符串時,刪除字符數(shù)組1中的字符串后面的標(biāo)志‘\0’,只在新串的最后保留“\0”。例如:charsz_str1[10]="work",sz_str2[6]="hard";strcat(sz_str1,sz_str2);printf("%s\n",sz_str1);運(yùn)行結(jié)果:workhard字符串比較函數(shù)strcmp()strcmp(字符數(shù)組1,字符數(shù)組2)功能:比較字符數(shù)組1和字符數(shù)組2中字符串,通過函數(shù)返回值得出比較結(jié)果。若字符數(shù)組1中的字符串<若字符數(shù)組1中的字符串,函數(shù)返回值<0;若字符數(shù)組1中的字符串>若字符數(shù)組1中的字符串,函數(shù)返回值>0;若字符數(shù)組1中的字符串=若字符數(shù)組1中的字符串,函數(shù)返回值=0;注:比較規(guī)則:比較過程中,按照從左到右的順序,逐個比較字符的ASCII碼值,直到遇到不相同的字符或“\0”,即結(jié)束比較。例如:charsz_str1[10]="work",sz_str2[10]="hard";if(strcmp(sz_str1,sz_str2)>0) { printf("大于\n"); }if(strcmp(sz_str1,sz_str2)<0) { printf("小于\n"); }if(strcmp(sz_str1,sz_str2)==0) printf("相等\n");運(yùn)行結(jié)果:大于sprintf()sprintf(s,”%s%d%c”,”text”,1,’char’);將輸出結(jié)果寫入數(shù)組S中;其函數(shù)返回值為字符串長度,相當(dāng)于strlen;計算長度時不計算“\0”,而sizeof計算時是加上“\0”的。例如:charsz_str;sprintf(sz_str,"%s%d%c","work",6,"hard");i_Tmp=sprintf(sz_str,"%s%d%c","work",6,"hard");printf("sprintf結(jié)果輸出:%s\n",sz_str);printf("sprintf函數(shù)返回值輸出:%d\n",i_Tmp);sscanf()sscanf(s,”%d%f%s”,&a,&b,&c);從一個字符串中讀進(jìn)與指定格式相同的數(shù)據(jù);其返回值為讀入有效數(shù)據(jù)的個數(shù);從數(shù)組S中,以固定格式向a,b,c輸入,sscanf不識別空格。charsz_str[11]="work6hard";charsz_str1[11]; sscanf(sz_str,"%4s",sz_str1); i_Tmp=sscanf(sz_str,"%4s",sz_str1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 欄桿制作安裝合同范例
- 餐具供貨合同范例
- 汽車購車訂車合同范例
- 品牌區(qū)域代理合同范例
- 機(jī)器 廠房買賣合同范例
- 頂棚拆除合同范例
- 地攤腸粉轉(zhuǎn)讓合同范例
- 長沙店面出租合同范例
- 一房兩賣小產(chǎn)權(quán)房合同范例
- 銀行入職合同范例
- 紅領(lǐng)巾獎?wù)挛襾頎幠昙t領(lǐng)巾爭章啟動課爭章計劃主題班會專題實(shí)用演示PPT課件
- 幼兒園課件:《認(rèn)識國旗》
- 《高等教育學(xué)》知識點(diǎn)梳理(附答案)
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院醫(yī)療質(zhì)量管理參考模板
- 張大千-ppt資料
- 內(nèi)螺紋銅管成型技術(shù)與工藝(綜述)
- 航道整治課程設(shè)計--
- 熱力試驗(yàn)測點(diǎn)安裝及布置規(guī)范
- 群塔作業(yè)方案(圖文并茂,十分詳細(xì))
- 八灘鎮(zhèn)第二中心小學(xué)信訪維穩(wěn)工作臺賬
- 布洛芬工藝規(guī)程
評論
0/150
提交評論