⑴ 單片機論文
單片機論文
在平時的學習、工作中,大家都經常接觸到論文吧,論文是指進行各個學術領域的研究和描述學術研究成果的文章。怎麼寫論文才能避免踩雷呢?以下是我為大家收集的單片機論文,僅供參考,歡迎大家閱讀。
摘要:
本文針對工科院校單片機課程中存在的問題進行探究,提出了以項目化教學作為主導的改革方案,以學生為本,充分調動學生的主觀能動性和學習興趣。
關鍵詞:
項目;單片機教學;改革探索
單片機課程將程序設計、通信技術、微機介面等多種專業知識綜合在一起,是一門工程性、實踐性以及技術性很強的課程。單片機課程是電子信息和自動化等專業的核心課程。
1、單片機課程教學現狀
1.1教師教學手段較為單一
單片機是大規模集成電路的發展產物,內部結構較為復雜。各大工科類院校對於單片機教學,仍舊採用教師在課堂上面講述相關的理論知識、單片機內部結構,然後講解單片機的程序設計以及匯編語言,教學方式較為單一,使學生沒能抓住學習的重點,喪失對單片機學習的熱情和興趣,導致教學質量越來越差[1]。
1.2學生沒有明確的學習目標
單片機課程的實踐性和應用性較強,在學習時要以應用為主要目標,然而有許多教師在教學的過程中忽略了這一點,導致學生沒有明確的學習目標,單純地跟著教師的思路,缺乏學習自主性和探究意識,學習目標不明確,影響教學效率。
1.3學生缺乏實踐機會
學生在做實驗時,主要的器材就是一本實驗指導書、一個集成實驗箱,學生按照指導書上面的流程機械式的進行實驗,盲目的觀察實驗結果,對於實驗中所應用到的一些原理模糊不清,導致學生在實驗結束後仍舊對所學的內容有疑惑,沒能掌握相關器材基本使用的方式,更沒有將之運用到實際工程中的能力。
1.4考核方式有著一定的局限性
各種工科類院校對於學生單片機課程考試仍舊採用筆試的方式,這種考試形式具有一定的局限性,不能真實客觀的反映出學生的學習水平,更不能考察出學生的實踐能力和動手能力,這種考試方式沒能很好的與實踐相結合,導致考核結果不具有客觀性。
2、應用項目教學方法
項目教學方法能夠很好的適用於技術教育,可以將學科體系的內容轉化成若干教學項目,然後圍繞著這些項目進行教學,教師要引導學生直接參與到項目教學整個過程中[2]。設計教學項目,著重強調讓學生參與其中,在模擬的生產場景中,完成規定的項目,這是理論與實踐的完美結合。
在項目教學整個過程中,學生要在規定的時間內,可以自由的進行討論,安排整個過程的進度,如此有助於激發學生的創新能力和積極性,培養了學生分析、解決問題的能力和團隊的協作能力。
3、項目教學法的實施步驟
如今許多單片機教科書中知識結構都是從簡單的數制到較為復雜的單機硬體,最後再到復雜的系統介面技術。但項目教學法改變了傳統的教學模式,教師能夠靈活掌握課程的教學順序,合理的安排教學任務,並結合自身多年教學經驗,總結出幾個步驟幫助學生對單片機進行有效的學習。首先應該對單片機有所感知,自己查找一些有關資料,進一步了解對單片機學習的必要性和應用性;其次教師要給學生布置一些項目具體的任務,例如製作秒錶、電子萬年歷等,給每個學生分配具體的任務,讓他們由淺及深的了解單片機課程;再次教師要對一些小模塊進行具體的講解和分析;最後以期末的實訓內容作為引導,將之貫穿於整個理論教學的過程中,模擬出一些生產場景,增強學生實際動手能力,完成最終的項目教學目標。
4、項目的選擇
項目化教學主要是以項目為主要載體,以任務作為動力,將實踐和理論緊密的結合起來,使學生在完成任務過程中就能夠充分掌握相關的技能和知識,進而不斷提高學生的實踐能力和學習效果。在設計教學時,要挑選合適的項目來保證改革效果。所選的項目既能包含單片機相關的知識,又不會過大的增加學生的學習負擔,給學生造成一定的心理壓力。
5、基於項目的單片機改革策略
5.1以項目為主要導向
傳統的教學方法主要是以教師講授知識為主,重視教師、教材以及課堂教學,這種傳統的教學模式主要強調理論知識的連續性和基礎知識的運用,但卻忽略了對學生興趣以及創造能力的培養。現階段,在課堂教學中要改變這種教學模式,變換傳統的教學結構,打破原有的教學框架,將教材中原有的知識順序分散成諸多小的知識點,運用一些經典的項目案例將這些小的知識點融入整個課堂教學,從而能夠實現以項目為導向教學模式。
5.2項目設置的方法
教師要對項目的實例進行選擇,認真撰寫項目的內容。所選的基礎項目能夠與學生自身的興趣相符合,給學生布置一些功能簡單易於實現的項目任務。選擇技能項目,鼓勵學生通過多種形式來實現項目的具體要求,對於學生獨立思考的能力有著較高的要求,在教學過程中教師可以指導學生進行分組討論,主要以學生互相討論以及師生互動的形式進行。綜合項目則是側重學生知識的提高,對於一些能力較強的學生應該充分發揮出他們的鑽研精神,能夠在鑽研的過程中提升自身專業技能。例如教師給學生布置一些製作秒錶的項目任務,讓學生自己動手,在製作的過程中將所學的知識運用到操作之中,使得學生們的理論知識與實踐能力有效的.結合在一起。
5.3測評環節
以項目為主要導向的教學過程中,考核的方式與傳承考試也有所不同,考量學生的學習效果主要是通過綜合評價實現的,主要評價有自我評價、教師評價、學生互評以及項目組長的評價等。
從項目框架的設計、需求的分析以及詳細的方案等各個環節對學生進行點評打分。教師在評價的過程中,主要以支持和鼓勵學生為主,可以增加學生自信心;在小組評價的過程中,應該著重了解學生在整個項目中所起到的作用,觀察學生是否屬於設計的主要人員,在設計的過程中是否配合等;在自我評價的過程中,要反映出自身在學習過程中所遇到的困難,在面對困難時是否能及時尋找到解決問題的方法,自我測評在今後的學習中有利於提升學生的學習效率。學生應該虛心接受別人的評價,在評價中才能夠更快、更好地改善自己的不足之處,不斷地完善自己。
6、結束語
項目教學法能夠充分調動學生學習的積極性,在整個教學過程中,既提升了學生的實踐能力,又促進了師生之間的情感交流。本文著重探討了工科類院校單片機課程教學的現狀,如教師教學手段較為單一、學生沒有明確的學習目標、學生缺乏實踐機會、考核方式具有一定的局限性。
本文也研究了應用項目教學方法、項目教學法的實施步驟、基於項目的改革策略等,主要是以項目為導向,設置項目方法優化測評環節。如此才能大幅度的提升學生們的實踐能力、創新能力以及思維能力。
參考文獻:
[1]李冰.單片機課程的項目化教學改革與實踐[J].實驗室科學.2014(1).
[2]郭毅飛,王華.項目教學法在單片機教學改革中的應用[J].湖南農機.2013(1).
摘要:
單片機是當前被運用到各個領域的一個技術產品,隨著當前社會生產活動的增多,單片機被運用到眾多的生產領域中,在一定程度上提升了人們的生活水平和質量。就當前單片機的使用情況看,單片機更多地被運用到電子技術領域中,提升電子領域的發展程度,例如在儀表儀器中使用單片機可以提升其智能程度;單片機在工業控制中通過自身功能的發揮,可使工業控制更加先進化。該文從單片機的概述入手,研究在電子技術發展中單片機運用的程度。
關鍵詞:
單片機;電子技術;應用研究
20個世紀70年代,單片機得到快速的發展,形成一個品種較為全面,功能更加強大的技術產品,開始在各生產領域中運用。隨著近半個世紀的發展,單片機取得更優質的成果,科技水平更加先進,在眾多領域中實現高效運用,提升這些領域的發展程度。單片機現在在電子技術領域中得到廣泛的使用,如在通信功能、儀表儀器等方面實現高效的運用,促進這些企業實現優質的發展。同時,隨著單片機運用程度的增加,應用領域的擴展,其技術呈現創新發展趨勢。
1、單片機的科學分析
1.1概述
單片機是嵌入式系統的一個組成部分,它採用規模較大的電路技術將CPU、RAM、ROM以及定時器等眾多功能集成在一個矽片上,繼而形成一個具有完善功能的,微型的計算機系統。單片式是1970年左右開始在生產中運用,隨著多年技術的革新和使用程度的加深,當前它在汽車電子,醫療器械,工業控制以及儀表儀器中得到運用。單片式發展速度較快,由最開始的4位單片機發展成8位單片機,到目前300M具有高速運轉和處理能力的單片機。
1.2主要特點
單片機是當前計算機發展的一個重要組成部分,隨著計算機水平的增長,單片機也呈現高效革新的態勢,且呈現不同用途的,不同型號的單片機產品。以AT89S52型號單片機為例,單片機目前重要的發展特點有6個方面。
第一,單片機具有使用方便的特點,單片機整體體積較小,系統構成較為簡單,整體呈現模塊化;
第二,對環境的要求較低,單片機具有較強的環境適應能力,可以在不同的環境得到運用;
第三,控制能力較強大,單片機有著較強的科技力量,通過眾多功能的集成,其具有很強的控制功能;
第四,功能消耗較低,單片機在運行的時候只需要較低的電壓,整體對功能的消耗低;
第五,速度快,單片機具有極強的處理功能,對各項數據和信息有著極快的處理速度;
第六,可靠性高,單片機可以實現長時間的工作,提升整體系統的運轉能力。
2、電子技術中單片機的應用情況分析
2.1手機通信中的運用
單片機在電子通訊中得到運用,主要體現在手機語音功能的建設中,單片機對手機語音信息進行識別,並開展相關操作。在手機的音頻入口安置單片機可以使其收集眾多的音頻信息,系統分辨工作開展之後,向各個部件下具體的指令和信息,實現語音信息中的手機操作。
2.2單片機提升醫療器械診斷正確性
人們在實現溫飽之後,更加關注自身的健康,對醫療水平有著越來越高的需求。但是,在醫療建設的過程中總會出現一些問題,檢測手段以及消毒水平存在一定的不足,影響整體醫療建設的質量。單片機在醫療器械中得到運用之後,大大減少了醫療問題的出現,使醫療工作得到一定程度的提升。單片機的使用增加了醫療設備的診療准確性,提升了診斷的精準性。同時,隨著單片機在醫療器械中的運用,整體醫療設備朝著更加智能化、自動化的發展方向前進,使醫療診斷的結果更加精準,更好地為人們的健康提供醫療保障。
2.3單片機使儀表儀器的使用更加智能化
單片機因其集成度高等特點被用於儀表儀器的生產,隨著單片機科研水平的不斷革新,儀表儀器的發展更加智能化,更加符合當前人們的使用需求。同時,隨著單片機使用程度的增加,儀表儀器設備朝著數字化方向發展,整體測試水平較高,儀表儀器控制和處理的功能建設更加優質。例如,在航天儀器製造的時候,使用單片機這種先進的技術可以使儀器的精準性和集成性更強,提升航天電子系統的數字化程度,大大降低航天事故發生的幾率。
2.4家電中普遍使用單片機
單片機不僅在高科技的領域中實現運用,如醫療器械、儀表儀器等領域,同時也在日常生活中得到運用,例如在家電行業中。隨著科研水平的發展,單片機越來越多地在生活中得到運用,提升人們生活的質量和幸福感。當前人們家庭生活中使用的洗衣機、微波爐以及電視機等家電都運用了單片機這項技術。在電視機的運用中,通過使用單片機使其系統控制技術更加先進,功能操作更加便捷。
例如,人們可以通過遙控器自由切換不同的電視頻道,選擇自己想看的電視節目。單片機在微波爐建造中,通過系統信息的處理,可以根據食材的不同進行科學的、自動的選擇工作,主要是選擇加熱時所需要的溫度和具體時間。單片機在洗衣機的系統控制中,可以根據衣物的材質以及臟污程度進行自動洗滌,對洗衣液的使用量、洗滌的強度控制以及詳細的洗滌時間有著科學的控制和選擇。
3、單片機在未來電子技術領域中開發趨勢分析
隨著社會生產實力的增強,科研技術程度更加深入,單片機型號和技能革新的速度會越來越快,其在電子領域的應用開發主要從以下3個方面進行。
3.1對單片機程序開發
隨著單片機自身開發程度的加深,其在嵌入式系統的建設中得到越來越全面的運用,目前已經不在裸機的環境中實現開發和使用。單片機已經實現一定程度的自動執行,可以對數據進行較強的儲存,科學處理和傳輸數據。單片機具有較強的環境使用能力,可以保障計算機在不同的環境中實現正常的運轉和數據的處理,對外界的物理參數實現高質量的採集,並對其進行邏輯分析和正確的處理。
3.2優化C語言系統程序
C語言有著強大的數據處理能力,可以以簡易的方式對編程語言開展編譯、處理等工作,有著強大的編程能力。為了使單片機在復雜的計算數據和控制數據的環境中實現正常的使用,提升系統的集成和控制能力,一定要加強C語言在單片機中的運用程度。通過對C語言更深度的開發,可以加大單片機的開發程度和力度,進而拓展單片機使用和運用的范圍和領域。
3.3加強對計算機的研發
目前,單片機的製作中使用眾多的通信介面,通過介面的連接可以和計算機進行數據的交流和溝通。可以說,單片機通過通信介面可以讓通信設備和計算機形成一定的聯系,可以使雙方進行精準的數據支持,提升設備對數據的使用程度和運用程度。為此,要想對單片機進行深度的開發,應該對計算機進行系統的分析和運用,提升數據連接和傳輸的質量。
4、結語
單片機是當前計算機發展的一個重要組成部分,隨著計算機水平的增長,單片機也呈現高效革新的態勢,在電子領域實現高效的運用。突出表現在手機通信中和家庭電器的使用中,提升人們的生活建設質量。同時,單片機使儀表儀器的使用更加智能化,提升醫療器械的診斷正確性。在未來的發展中,可以通過對單片機程序進行開發、優化C語言系統程序以及加強對計算機的研發這3個方面提升單片機在電子領域的運用程度。
參考文獻
[1]鄭澤宏.單片機在電子技術中的應用和開發技術研究[J].科技信息,2013(25):140,221.
[2]王紅紀,徐小亞.單片機在電子技術中的應用和開發[J].電子測試,2014(13):44-46.
[3]王德權.研究單片機在電子技術中的應用[J].科技與企業,2013(3):113.
[4]張力.單片機在電子技術中的應用和開發[J].電子技術與軟體工程,2016(5):259.
[5]許文濤.單片機在電子技術中的應用[J].黑龍江科技信息,2016(19):15.
摘要: 隨著電子科技的飛速發展,尤其是超大規模集成電路的出現,給我國的經濟帶來了實質性的改變。其中,對於單片機的使用已經在很多領域都有出現,比如說在工業自動化控制房間、在智能儀器儀表方面以及各種家用電器方面,單片機都起到了很大的作用。由於其極高的性能價格比,使其在電子時鍾方面的應用也是很常見的。本文通過對普通單片機電子時鍾的設計分析,從而達到對單片機進行更深入的學習與設計。
關鍵詞: 單片機;電子時鍾;設計分析
時鍾就是一個最典型的例子,由於人們的生活速度越來越快,人們的時間觀念也在不斷增強,生活中處處離不開時鍾,時鍾對人們可以說是不可或缺的東西。現如今,時鍾的樣式很功能也越來越多,人們對時鍾的精準度要求也越來越高。本文就是針對時鍾的精準度來設計一個普通單片機電子時鍾。
一、單片機的簡單介紹
(一)單片機的定義與分類
單片機是一種集成電路晶元,採用超大規模集成電路技術把具有數據處理能力的中央處理器、隨即存儲器、只讀存儲器等集成到一塊矽片上構成的一個小而完善的微型計算機系統。主要分類包括:STC系列單片機、AVR單片機、AT系列單片機等等 。
(二)單片機的應用與發展
目前,隨著電子自動化的廣泛應用,單片機以其自身的諸多優勢已經應用到了各個領域之中,這些領域主要包括智能儀器儀表、計算機網路、機器人控制、工業控制、家電管理等等。由於單片機的優勢很有多,在未來的生活中一定會被更多的領域所應用,有很好的發展趨勢。
二、單片機電子時鍾的設計方案
單片機電子時鍾的構成主要由:一個8位CPU;一個片內振盪器及時鍾電路;4K位元組ROM程序存儲器;256位元組RAM數據存儲器;兩個16位定時器/計數器;可定址64K外部數據存儲器和64K外部程序存儲器空間的控制電路;32條可編程的I/O線(四個8位並行I/O埠)和一個可編程全雙工串列口組成。
單片機電子時鍾的設計主要是對時鍾的內部工作和外部顯示進行設計,主要的設計方案則分為數字時鍾方案和數碼管顯示方案。通過數字時鍾和數碼管顯示的完美結合使電子時鍾的質量得到完善和保證。
(一)數字時鍾方案
這部分是單片機電子時鍾最主要的設計,也是時鍾內部工作部分。在單片機的內部存儲器中設置三個分別代表時、分、秒信息的位元組。在對內部的存儲器進行設置的時候,要根據時鍾的運作規律設定,時鍾的工作是由內部的定時器和軟體結合來實現的。對此設定1秒中斷,以此來推動秒針的運動,而當秒針中斷的次數達到60次的時候,則將其清零,同時分針的位元組開始運行,以此類推,當分鍾的中斷次數達到60次的時候,時鍾的位元組開始運行。當時鍾的位元組達到24的時候,便將時鍾的位元組清零,以上的操作反復進行,這就是單片機電子時鍾關於數字時鍾的設計方案。這部分的設計起來比較繁瑣,每個步驟都要做到很好的處理,設置時、分、秒的順序也不能打亂。
(二)數碼管顯示方案
數碼管顯示方案主要是對時鍾的外部顯示進行設計,主要分為靜態顯示和動態顯示兩個部分,在電子時鍾外部顯示中佔主導地位的就是動態顯示。所謂動態顯示就是根據內部設計中的秒針的運行情況,在出現的顯示器數字的輪流點亮,每隔一段時間都要點亮一次,這部分要求顯示器的掃描必須要有足夠快的速度,只有這樣,顯示出來的字元才不會出現閃爍的效果。同時,秒鍾和顯示器的運作應該是保持一致的,否則在電子時鍾運行的時候,就很容易出現時間上的誤差,這種動態顯示節省了I/O口,也會降低耗能。
(三)電子時鍾的硬體選擇
1、單片機的選擇,在單片機電子時鍾的設計中,通常都會選用AT89c52單片機,配備12MHz晶振,採用上電復位來對電路進行系統復位。
2、顯示電路選擇,在顯示電路的選擇上,採用軟體解碼動態顯示。
3、電源選擇,採用直流電源供電,電源基本選擇在4.5V左右。
4、選擇器的選擇,通常採用741s04.
三、系統軟體設計
對系統軟體的設計主要包括軟體的設計思想、總體設計以及按鍵掃描子程序。
(一)軟體設計思想
根據人們對電子時鍾功能的需求,需要設計出來的電子時鍾程序必須具備動態掃描、時鍾信號產生以及按鍵掃描處理等功能。利用單片機來實現電子時鍾的這些功能,主要利用的方法就是分時復用,要協調好各個器件的佔用時間,這樣才能實現單片機電子時鍾以上的功能,使電子時鍾對人們的需求造成滿足。
(二)總體設計
1、系統說明及設計框圖
利用普通單片機製作的簡易時鍾,其主要的工作原理就是運用6個PNP管來分別控制6個LED數碼管來完成時鍾的運行工作。這里出現的6個數碼管主要負責顯示小時、分鍾以及秒針的十位位置和個位位置,還會設定一個按鍵用於對時間的調整。
2、模塊設計
普通單片機電子時鍾的設計主要包括電源部分、復位電路、顯示部分、控制部分、位選部分等幾個模塊。對於電源部分的技術,要從外部引入直流電,電流應該選擇4.5V,這樣就可謂電子時鍾提供電源,使其能夠正常運行。
位選電路、復位電路二極體、電解電容部位,在其運行的時候,相應的引腳也會出現不同。在開關按下時引腳RST為高電平1,斷開時引腳為低電平0。
(三)按鍵掃描子程序
普通單片機電子時鍾的運行,最好選用按鍵來切換各種不同的狀態,這樣不僅簡單,容易操作,而且在電子時鍾出現狀況而需要查詢按鍵信息的時候,電子時鍾所具有的按鍵掃描功能就可以提供以往的按鍵情況,這種按鍵程序中還嵌套了按鍵掃描程序用來處理在不同情況下的電子時鍾狀態切換。
四、對整體系統進行調試
在單片機電子時鍾設計完成之後,要對電子時鍾所應用的系統進行簡單的測試,仔細分析在測試的過程中所出現的問題,進行問題的統計與分析,從而找到合理、科學的解決方法。使單片機電子時鍾更加完善。
(一)系統調試方法
對於單片機電子時鍾各個系統的調試,首先要對每個單獨的程序進行調試,將出現的問題歸納整理,找到合理的解決方法後,針對出現問題的程序進行系統的調試。確保每個程序都沒有問題之後,再進行整體的調試工作。只有這樣,才調試的過程中才會使調試工作有理有序的進行。
(二)系統時鍾誤差分析
時間准確,長時間不容易出現誤差是一個時鍾被認可的標准之一。對於系統誤差,設計者應該及時進行誤差的分析和調試工作。
在單片機電子時鍾系統中,能夠出現誤差的地方有很多,比如說晶體頻率的誤差,定時器溢出誤差以及延遲誤差等等,設計者要結合不同的誤差進行不同的分析,找出其內在的原因,從而擬定出解決的方案,使電子時鍾的精準度提高。
(三)軟體調試問題及解決
在軟體調試的過程中,應該將調試的重點分別放在各個模塊上,對這些模塊的調試可以採取在線調試和離線調試兩種方法,在調試過程中出現的問題要及時分析及時解決。
結語:
隨著我國電子技術的迅速發展,單片機的應用也會越來越廣泛,對於電子時鍾系統的設計一定也會日趨完善,功能也會越來越全面,性能會更加穩定,可以預見,在未來的幾年裡,單片機的應用也會越來越廣泛。更好的造福人們。
參考文獻:
[1]何立民.MCS251單片機應用系統設計技術[M].北京:北京航天航空大學.1999
[2]程光璇.普通單片機電子時鍾的設計[J].電子世界.2011(8)
[3]華貴山.基於單片機微機測控系統中的數字濾波技術研究[J].安徽電子信息職業技術學院學報.2006(5)
;⑵ 51單片機ram不夠用,怎麼優化程序
1.肯定的,嵌套越多,要壓棧保存的信息就越多,佔用的RAM就越多了,對51來說,最多就是CPU內256位元組的RAM。
2.是的。
3.沒用過這晶元……我用的最多的是AVR
4因為你定義了一個pagebuf[512],512位元組啊!51單片機的data撐死才256位元組(還沒算壓棧保存數據需要的RAM),所以編譯器自動將這個數組放在了XDATA中。
⑶ 我為51單片機設計了一個用獨立按鍵控制LED的程序,求大神看看程序有沒有什麼能夠優化的地方。
#include<reg51.h>
#include<intrins.h>
sbitk1=P3^1;
sbitk2=P3^0;
sbitk3=P3^2;
sbitk4=P3^3;
bitflag=0;
typedefunsignedcharu8;
typedefunsignedintu16;
#defineledP2
voiddelay(u16i)
{
while(i--);
}//延時函數
u8keyscan(void)
{
u8keyval=0;
if(k1==0)
{
while(k1==0);
keyval=1;
}
if(k2==0)
{
while(k2==0);
keyval=2;
}
if(k3==0)
{
while(k3==0);
keyval=3;
flag=~flag;
}
if(k4==0)
{
while(k4==0);
keyval=4;
}
return(keyval);
}
main()
{
u8key1,key2,num=0;
u8led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
while(1)
{
key1=keyscan();
if(key1!=0)key2=key1;
switch(key2)
{
case1:P0=led[num];delay(10000);P0=0xff;delay(10000);num++;num%=8;break;
case2:P0=led[num];delay(10000);P0=0xff;delay(10000);num--;if(num==0)num=7;break;
case3:if(flag)P0=led[num];elseP0=0xff;break;
case4:P0=led[num];while((key1=keyscan())!=4);P0=0xff;key1=key2=0;num=0;break;
default:break;
}
}
}
⑷ 如何優化單片機C語言代碼 轉
優化代碼和優化速度實際上是一個予盾的統一,一般是優化了代碼的尺寸,就會帶來執行時間的增加,如果優化了程序的執行速度,通常會帶來代碼增加的副作用,很難魚與熊掌兼得,只能在設計時掌握一個平衡點。 一、程序結構的優化 1、程序的書寫結構雖然書寫格式並不會影響生成的代碼質量,但是在實際編寫程序時還是應該尊循一定的書寫規則,一個書寫清晰、明了的程序,有利於以後的維護。在書寫程序時,特別是對於While、for、do…while、if… elst、switch…case 等語句或這些語句嵌套組合時,應採用"縮格"的書寫形式, 2、標識符程序中使用的用戶標識符除要遵循標識符的命名規則以外,一般不要用代數符號(如a、b、x1、y1)作為變數名,應選取具有相關含義的英文單詞(或縮寫)或漢語拼音作為標識符,以增加程序的可讀性,如:count、 number1、red、work 等。 3、程序結構C 語言是一種高級程序設計語言,提供了十分完備的規范化流程式控制制結構。因此在採用C 語言設計單片機應用系統程序時,首先要注意盡可能採用結構化的程序設計方法,這樣可使整個應用系統程序結構清晰,便於調試和維護。於一個較大的應用程序,通常將整個程序按功能分成若干個模塊,不同模塊完成不同的功能。各個模塊可以分別編寫,甚至還可以由不同的程序員編寫,一般單個模塊完成的功能較為簡單,設計和調試也相對容易一些。在 C 語言中,一個函數就可以認為是一個模塊。所謂程序模塊化,不僅是要將整個程序劃分成若干個功能模塊,更重要的是,還應該注意保持各個模塊之間變數的相對獨立性,即保持模塊的獨立性,盡量少使用全局變數等。對於一些常用的功能模塊,還可以封裝為一個應用程序庫,以便需要時可以直接調用。但是在使用模塊化時,如果將模塊分成太細太小,又會導致程序的執行效率變低 (進入和退出一個函數時保護和恢復寄存器佔用了一些時間)。 4、定義常數在程序化設計過程中,對於經常使用的一些常數,如果將它直接寫到程序中去,一旦常數的數值發生變化,就必須逐個找出程序中所有的常數,並逐一進行修改,這樣必然會降低程序的可維護性。因此,應盡量當採用預處理命令方式來定義常數,而且還可以避免輸入錯誤。 5、減少判斷語句能夠使用條件編譯(ifdef)的地方就使用條件編譯而不使用if 語句,有利於減少編譯生成的代碼的長度。 6、表達式對於一個表達式中各種運算執行的優先順序不太明確或容易混淆的地方,應當採用圓括弧明確指定它們的優先順序。一個表達式通常不能寫得太復雜,如果表達式太復雜,時間久了以後,自己也不容易看得懂,不利於以後的維護。 7、函數對於程序中的函數,在使用之前,應對函數的類型進行說明,對函數類型的說明必須保證它與原來定義的函數類型一致,對於沒有參數和沒有返回值類型的函數應加上"void"說明。如果果需要縮短代碼的長度,可以將程序中一些公共的程序段定義為函數,在Keil 中的高級別優化就是這樣的。如果需要縮短程序的執行時間,在程序調試結束後,將部分函數用宏定義來代替。注意,應該在程序調試結束後再定義宏,因為大多數編譯系統在宏展開之後才會報錯,這樣會增加排錯的難度。 8、盡量少用全局變數,多用局部變數。因為全局變數是放在數據存儲器中,定義一個全局變數,MCU 就少一個可以利用的數據存儲器空間,如果定義了太多的全局變數,會導致編譯器無足夠的內存可以分配。而局部變數大多定位於 MCU 內部的寄存器中,在絕大多數MCU 中,使用寄存器操作速度比數據存儲器快,指令也更多更靈活,有利於生成質量更高的代碼,而且局部變數所的佔用的寄存器和數據存儲器在不同的模塊中可以重復利用。 9、設定合適的編譯程序選項許多編譯程序有幾種不同的優化選項,在使用前應理解各優化選項的含義,然後選用最合適的一種優化方式。通常情況下一旦選用最高級優化,編譯程序會近乎病態地追求代碼優化,可能會影響程序的正確性,導致程序運行出錯。因此應熟悉所使用的編譯器,應知道哪些參數在優化時會受到影響,哪些參數不會受到影響。在ICCAVR 中,有"Default"和 "Enable Code Compression"兩個優化選項。在CodeVisionAVR 中,"Tiny"和 "small"兩種內存模式。在IAR==有7 種不同的內存模式選項。在GCCAVR 中優化選項更多,一不小心更容易選到不恰當的選項。 二、代碼的優化1、選擇合適的演算法和數據結構應該熟悉演算法語言,知道各種演算法的優缺點,具體資料請參見相應的參考資料,有很多計算機書籍上都有介紹。將比較慢的順序查找法用較快的二分查找或亂序查找法代替,插入排序或冒泡排序法用快速排序、合並排序或根排序代替,都可以大大提高程序執行的效率。.選擇一種合適的數據結構也很重要,比如你在一堆隨機存放的數中使用了大量的插入和刪除指令,那使用鏈表要快得多。數組與指針具有十分密碼的關系,一般來說,指針比較靈活簡潔,而數組則比較直觀,容易理解。對於大部分的編譯器,使用指針比使用數組生成的代碼更短,執行效率更高。但是在Keil 中則相反,使用數組比使用的指針生成的代碼更短。 2、使用盡量小的數據類型能夠使用字元型(char)定義的變數,就不要使用整型(int)變數來定義;能夠使用整型變數定義的變數就不要用長整型(long int),能不使用浮點型(float)變數就不要使用浮點型變數。當然,在定義變數後不要超過變數的作用范圍,如果超過變數的范圍賦值,C 編譯器並不報錯,但程序運行結果卻錯了,而且這樣的錯誤很難發現。在ICCAVR 中,可以在 Options 中設定使用printf 參數,盡量使用基本型參數(%c、%d、%x、%X、%u 和%s 格式說明符),少用長整型參數(%ld、%lu、%lx 和%lX 格式說明符),至於浮點型的參數(%f)則盡量不要使用,其它C 編譯器也一樣。在其它條件不變的情況下,使用%f 參數,會使生成的代碼的數量增加很多,執行速度降低。 3、使用自加、自減指令通常使用自加、自減指令和復合賦值表達式(如a- =1 及a+=1 等)都能夠生成高質量的程序代碼,編譯器通常都能夠生成inc 和 dec 之類的指令,而使用a=a+1 或a=a-1 之類的指令,有很多C 編譯器都會生成二到三個位元組的指令。在AVR 單片適用的ICCAVR、GCCAVR、IAR 等C 編譯器以上幾種書寫方式生成的代碼是一樣的,也能夠生成高質量的inc 和dec 之類的的代碼。 4、減少運算的強度可以使用運算量小但功能相同的表達式替換原來復雜的的表達式。如下:(1)、求余運算。a=a%8;可以改為:a=a&7;說明:位操作只需一個指令周期即可完成,而大部分的C 編譯器的"%"運算均是調用子程序來完成,代碼長、執行速度慢。通常,只要求是求2n 方的余數,均可使用位操作的方法來代替。(2)、平方運算a=pow(a,2.0);可以改為:a=a*a;說明:在有內置硬體乘法器的單片機中(如51 系列),乘法運算比求平方運算快得多,因為浮點數的求平方是通過調用子程序來實現的,在自帶硬體乘法器的 AVR 單片機中,如ATMega163 中,乘法運算只需2 個時鍾周期就可以完成。既使是在沒有內置硬體乘法器的AVR 單片機中,乘法運算的子程序比平方運算的子程序代碼短,執行速度快。如果是求3 次方,如:a=pow(a,3.0);更改為:a=a*a*a;則效率的改善更明顯。(3)、用移位實現乘除法運算 a=a*4;b=b/4;可以改為:a=a 2; b=b 2;說明:通常如果需要乘以或除以2n,都可以用移位的方法代替。在 ICCAVR 中,如果乘以2n,都可以生成左移的代碼,而乘以其它的整數或除以任何數,均調用乘除法子程序。用移位的方法得到代碼比調用乘除法子程序生成的代碼效率高。實際上,只要是乘以或除以一個整數,均可以用移位的方法得到結果,如:a=a*9 可以改為:a=(a 3)+a 5、循環(1)、循環語對於一些不需要循環變數參加運算的任務可以把它們放到循環外面,這里的任務包括表達式、函數的調用、指針運算、數組訪問等,應該將沒有必要執行多次的操作全部集合在一起,放到一個init 的初始化程序中進行。(2)、延時函數:通常使用的延時函數均採用自加的形式:void delay(void){unsigned int i;for(i=0;i 1000;i++);}將其改為自減延時函數:void delay(void){unsigned int i; for(i=1000;i 0;i--);}兩個函數的延時效果相似,但幾乎所有的C 編譯對後一種函數生成的代碼均比前一種代碼少1~3 個位元組,因為幾乎所有的MCU 均有為0 轉移的指令,採用後一種方式能夠生成這類指令。在使用while 循環時也一樣,使用自減指令控制循環會比使用自加指令控制循環生成的代碼更少 1~3 個字母。但是在循環中有通過循環變數"i"讀寫數組的指令時,使用預減循環時有可能使數組超界,要引起注意。(3)while 循環和do…while 循環用 while 循環時有以下兩種循環形式:unsigned int i;i=0;while(i 1000){i++;//用戶程序}或:unsigned int i;i=1000;do i--;//用戶程序 while(i 0);在這兩種循環中,使用do…while 循環編譯後生成的代碼的長度短於while 循環。6、查表在程序中一般不進行非常復雜的運算,如浮點數的乘除及開方等,以及一些復雜的數學模型的插補運算,對這些即消耗時間又消費資源的運算,應盡量使用查表的方式,並且將數據表置於程序存儲區。如果直接生成所需的表比較困難,也盡量在啟動時先計算,然後在數據存儲器中生成所需的表,後以在程序運行直接查表就可以了,減少了程序執行過程中重復計算的工作量。7、其它比如使用在線匯編及將字元串和一些常量保存在程序存儲器中,均有利於優化。
⑸ 《單片機》課程學習總結
《單片機》課程學習總結
篇一:《單片機》課程學習總結
《單片機》這門課程我已經學了一個學期了,在這一個學期的學習過程中,我一開始不怎麼懂得編程,但慢慢的我現在已經不僅會讀程序還會寫程序了。真為自己一個學期來努力學到的單片機知識只是而感到高興。
怎麼學單片機?也常看到有人說學了好幾個月可就是沒有什麼進展。當然,受限於每個人受到的教育水平不同和個人理解能力的差異,學習起來會有快慢之分,但我感覺最重的就是學習方法。一個好的學習方法,能讓你事半功倍,這里說說我學習單片機的經歷和方法。
我覺得學習單片機首先要懂得C語言,因為單片機大多說都是靠程序來實現的,如果看不懂程序或則不懂的編程是很難學會單片機的。學習單片機首先要明白一個程序是怎麼走的,要完全懂得程序每一個步驟的意思。其次要懂得每一條指令的意思,不能盲目地去靠背指令,這是記得不牢靠的,最主要的還是靠了解。學習單片機最主要的對89C51晶元內部結構有全方面的,只要了解了89C51才能知道單片機實現什麼樣的功能和作用,才能對單片機有更深一步的了解。 通過一個學期《單片機》這門課程的學習,我也從中有了不少心
得和體會想和大家分享一下。
萬事開頭難、要勇敢邁出第一步。開始的時候,不要老是給自己找借口,不要說單片機的程序全是英文,自己看不懂。遇到困難要一件件攻克,不懂指令就要勤奮看書,不懂程序就先學它,這方面網上教程很多,隨便找找看一下,做幾次就懂了。然後可以參考別的人程序,抄過來也無所謂,寫一個最簡單的,讓它運行起來,先培養一下自己的感覺,知道寫程序是怎麼一回事,無論寫大程序還是小程序,要做的工序不會差多少。然後建個程序,加入項目中,再寫代碼、編譯、運行。必須熟悉這一套工序。個人認為,一塊學習板還是必要的,寫好程序在上面運行一下看結果,學習效果會好很多,模擬器就看個人需要了。單片機是注重理論和實踐的,光看書不動手,是學不會的。
知識點用到才學,不用的暫時丟一邊。厚厚的一本書,看著人頭都暈了,學了後面的,前面的估計也快忘光了,所以,最好結合實際程序,用到的時候才去看,不必說非要把書從第一頁看起,看完它才來寫程序。比如你寫流水燈,完全就沒必要看中斷的知識,專心把流水燈學好就是了,這是把整本書化整為零,一小點一小點的啃。 程序不要光看不寫,一定要自己寫一次。最開始的時候,什麼都不懂,可以抄人家的程序過來,看看每一句是干什麼用的,達到什麼目的,運行後有什麼後果。看明白了之後,就要自己寫一次,你會發現,原來看明白別人的程序很容易,但到自己寫的時候卻一句也寫不出來,這就是差距。當你自己能寫出來的時候,說明你就真的懂了。
必須學會掌握調試程序的方法。不少人寫程序,把代碼寫好了,
然後一運行,不是自己想要的結果,就暈了,然後跑到論壇上發個帖子,把程序一貼,問:為什麼我的程序不能正常運行?然後就等別人來給自己分析。這是一種很不好的行為,應該自己學會發現問題和學會如何解決問題。這就需要學習調試程序的方法,比如KEIL里,可以下斷點啦,查看寄存器內容等等,這些都是調試程序的手段,當你發現你寫的程序運行結果和你想像中不一樣的時候,你可以單步,也可以下斷點,然後跟蹤,查看各相關寄存器內容,看看程序運行過中是不是有什麼偏差,找出影響結果的地方,改正過來。這一個過程非常重要,通過程序的排錯,你可以學到的知識是書上得不到的。
找到解決問題思路比找到代碼更重要。我們用單片機來控制周邊器件,達到我們想到的目的,這是一個題目,而如何寫出一個程序,來控制器件按你想要的結果去運作,這個就是解題的思路。要寫程序,就得先找到解決問題的思路,你學會找出這個解題思路,比你找到代碼更為重要。不少人很喜歡找人家的代碼,有的人甚至有了代碼就直接復制到自己的程序中,可以說,這不是一種學習的態度,無助於你編程水平的提高。
我幾乎不怎麼看人家的代碼,多數時候是看別人的思路,有方框圖最好,沒有的話文字說明也可以。要從代碼中看出別人處理問題的思路,是相當困難的,特別是大型的程序,看起來是非常的累人。所以現在我也明白了,以前讀書時說的程序流程圖很重要,現在算是知道了。當你知道一個問題怎麼去解決了,那麼剩下的只是你安排代碼去完成,這就已經不是什麼問題了。
開動腦筋,運用多種方法,不斷優化自己的程序。想想用各種不同方法來實現同一功能。這是一個練習和提高的過程,一個問題,你解決了,那麼你再想想,能不能換種寫法,也可以實現同一功能,或者說,你寫出來的代碼,能不能再精簡一點,讓程序執行效率更高,這個過程,就是一個進步的過程。很多知識和經驗的獲得,並不是直接寫在書讓你看就可以得到的,需要自己去實踐,開動腦筋,經驗才能得到積累,編程水平才能有所提高。
看別人的程序,學習人家的思路。這個在學習初期是很有用,通過看別人的程序,特別是老師寫出的具有一定水平的程序,可以使自己編程水平得到迅速的提高。同時,也可以結合別人的編程手法,與自己的想法融合在一起,寫出更高水平的程序,從中得到進步。但要注意,切忌將學習變成抄襲,更不是抄襲完了就認為自己學會了,這樣做只會使你退步。
嘗試編寫一下綜合應用的程序。從流水燈學起,到動態掃描,再到中斷,那麼,你可以試試寫一下時鍾這種綜合性應用的程序,不要小看時鍾,要寫好它不是一件容易的事情,它包括了單片機大部分的知識,比如有按鍵(IO讀取)、動態掃描(IO輸出)、中斷等,如何協調好各功能模塊正常工作,才是編程者需要學習的地方,當你單獨寫一個功能的時候,比如按鍵讀取,你可能感覺很容易,因為你的程序什麼也不做,只是讀按鍵。但把它和其它功能混合在一起,如何在整個程序運行中使每一部分都正常工作,這就不是寫一個按鍵讀取這么容易的事情,功能模塊之間有可能會互相影響,比如你需要讓數碼管既能顯示,又要去處理按鍵讀取,怎麼使這兩部分都正常工作,這就是一個協調過程。當你有了這個處理協調能力,你就算是入門了。
著重於培養解決問題的能力,而不是具體看自己編寫了多少程序或者做過什麼。「學單片機重點在於學習解決問題的思路,而不是局限於具體的晶元類型和語言」這一直是我的座右銘,是我學單片機學習單片機之後感悟出來的。真正的能力不是你曾經編寫過多少個可以實現的程序,而應該是:「遇到沒有解決過的問題,能利用自己已學的知識,迅速找到解決問題的方法。」這個才是能力。
面對一個新程序時,多自己開動腦筋,不要急於找別人的程序。
有不少人面對一個新程序時,第一步想到的就是網上找別人寫過的程序,然後抄一段,自己再寫幾句,湊在一起就完成任務,這雖然可能是省時間,但絕對不利你的學習。當你接到一個程序時,應該先自己構思一下整個程序的架構,想想如何來完成。有可能的話,畫一個流程圖,簡單的可以畫在腦子里,對程序中用到的數據、變數有一個初步的安排,然後自己動手去寫,遇到實在沒辦法解決的地方,再去請教老師或同學,或看別人是怎麼處理的,這樣首先起碼你自己動過腦想過,自己有自己的思路。如果你一開始就看別人的程序,你的思維就會受限在別人的思維里,自己想再創新就更難了,這樣你自己永遠也沒辦法提高,因為你是走在別人的影子里。
學會提問題。一般來說,學習過程中,你遇上的問題,多數人也有遇上的,所以如果有什麼不懂,你可以去問老師。我覺得學習單片機最主要的要多提問,對於一個自己不是太懂的程序,自己一定要多提問幾遍,這樣不但有利於加深自己的印象還能從中學到不少別人的方法。
經過一個學期我對《單片機》這門課程的學習,不僅讓我懂得了很多程序的編寫,還讓我學到了很多對自己有用的學習方法。總結這個學期來的我自己的學習情況,我覺得自己對編程進步了不少,懂得運用正確的學習方法學習單片機程序,不再去死記硬背指令了。所以我覺得學習要不斷總結學習方法,才能讓自己學習不斷進步。
交通信號燈設計報告
實驗目的: P1口的使用方法,延時程序的編寫
實驗要求:在一個十字路口分為東西南北走向,信號等按以下的狀態順序工作:
(1) 初始狀態0,東西、南北紅燈全亮。延時一定時間;
(2) 狀態1,南北綠燈亮通車,東西紅燈,延時一定時間;
(3) 狀態2,南北綠燈閃爍幾次轉黃燈,東西仍然紅燈,延時一定
時間;
(4) 狀態3,南北紅燈,東西綠燈通車,延時一定時間;
(5) 狀態4,南北仍然紅燈,東西綠燈閃爍幾次轉黃燈,延時一定
時間;
(6) 循環至狀態1,繼續
實驗電路和流程框架圖:
(1) 硬體電路
交通燈實訓設備用最小系統板和信號燈組合而成。
2、軟體編程
若各路口燈亮滅的時間間隔為2s鍾,燈光閃爍時間間隔為0.5s。用軟體延時的方法,晶振頻率12MHz時,一個機器周期為1us。
編寫交通信號燈程序:
編寫主程序,由R7做主程序的計數器,確定調用延時時間為0.5s,從而獲得交通燈的亮滅時間。
篇二:《單片機》課程學習總結
時光飛逝,一轉眼,一個學期又進尾聲了,本學期的單片機課程也結束,但通過這次單片機的學習,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養我們的創新精神,從而不斷地戰勝自己,超越自己。創新可以是在原有的基礎上進行改進,使之功能不斷完善,成為真己的東西。
當今社會隨著電子技術的發展,特別是隨著大規模集成電路的產生,給人們的生活帶來了根本性的變化,如果說微型計算機的出現使現代的科學研究得到了質的飛躍,那麼可編程式控制制器的出現則是給現代工業控制測控領域帶來了一次新的革命。在現代社會中,溫度控制不僅應用在工廠生產方面,其作用也體現到了各個方面。本學期我們就學習了單片機這門課程,感覺是有點難呢。也不知道整個學習過程是怎麼過來得,可是時間不等人。
剛開始學習的時候,對單片機沒有什麼認識,不知道什麼是單片機,更不知道它有什麼作用。通過學習才大體知道了單片機的一些知識。單片機是一塊在集成電路晶元上集成了一台有一定規模的微型計算機。簡稱為:單片微型計算機或單片機。單片機的應用到處可見,應用領域廣泛,主要應用在智能儀表、實時控制、通信、家電等方面。由中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、I/O介面、定時器/計數器以及串列通信介面等集成在一塊晶元上,構成了一個單片微型計算機,簡稱為單片機。它的應用范圍很廣,在工業自動化中應用有數據採集、測控技術。
在智能儀器儀表中應用有數字示波器、數字信號源、自動取款機等。在消費類電子產品中應用有空調機、電視機、微波爐、手機、IC卡、汽車電子設備等。在通訊方面應用有手機、小靈通等。在武器裝備方面應用有飛機、坦克、導彈、太空梭、智能武器等。剛開始學習時只能抄寫別人做成功的程序,一遍一遍的寫,從簡單的入手,逐步的積累,一步步的能夠將小的程序結合到一起,拼接成較為復雜一些的程序。但是程序不要只是看別人得,一定要自己寫過才是自己的。只有當你自己能寫出來的時候說明你真懂了。剛接觸KEIL時確實很讓人頭疼,使用 KEIL不會建項目、不會使用實驗板。然後可以參考已經成功的程序,抄過來,寫一個最簡單的,讓它運行起來,先培養一下自己的感覺,先建個項目,再配置一下項目,然後建個程序,加入項目中,再寫代碼、編譯、生成HEX,刷進單片機中、運行。其實當遇到問題一定要自己嘗試著解決,不能遇到問題就去問別人,自己一定要掌握解決問的方法和思路。對一個新項目時,自己一定要多想想,不要急著去看別人是怎麼寫的。應該先想一下程序的構架,想想如何來完成。然後自己動手去寫,理清自己的思路這樣更容易提高自己。
熟悉單片機的人都知道,要學好單片機可不是一件容易的事,倒不是因為單片機很難學,而是很難找到一本專為單片機入門者而編寫的教材。翻一下身邊的單片機教材,都好像是為已經懂單片機的人而寫的,一般先介紹單片機的硬體結構和指令系統,再是系統擴展和外圍器件,順便講一些應用設計(隨便說一下,很多書中的電路設計已經過時,並且有些程序還是錯誤的`)。如果按照此種學習方法,想進行產品開發,就必須先把所有的知識全部掌握了才可以進行實際應用。學習使用單片機只能靠循序漸進的積累,雖然單片機的課程只上了幾節就去上班了,但在學習的過程中有了一定的了解。下面就本人學習單片機的過程和經驗做簡要介紹。
首先,學習單片機要有一定的基礎:電子技術方面要有數字電路和模擬電路等方面的理論基礎,特別是數字電路;編程語言要求匯編語言或C語言。要想成為單片機高手,建議初學者首先學習匯編語言,學的差不多的時候,轉入C語言學習。盡管匯編語言屬於低級語言,編程效率低,但是較C語言具有目標代碼簡短,佔用內存少,執行速度快等優點,更重要的是能使初學者盡快熟悉單片機的內部結構,並能對其進行精確的控制。匯編語言在單片機教材裡面都會涉及,不需要單獨購買教材和學習。C語言是一門學問,有很多專業書籍來講解,並且對我們今後的編程生涯有絕對的好處,因此要深入學習,千萬不要自以為看了某某的視頻教程就以為掌握了C語言,那隻是C語言的一部分。在這里給大家推薦一本單片機C語言程序設計參考書,馬忠梅等著,北京航空航天大學出版社出版的《單片機的C語言應用程序設計》,要求C語言基礎。如果沒學過C語言,建議學習清華大學譚浩強編寫的C語言程序設計,這本書寫的不錯,通俗易懂。
其次,是單片機教材選擇。單片機是一門非常重視實踐的技術,不能總是看書,但要學習它首先應看書,對單片機引腳、內部結構、寄存器和原理有一定地了解和感官認識,它的是怎樣工作的,能幹些什麼?剛開始時,也許你看不明白,但這並不要緊,因為你還缺乏實踐經驗。現在單片機應用廣泛,因此各個廠家分別推出了自己的單片機,我們沒必要每樣都學!因為他們的編程方法和調試過程以及內部指令結構有一定的相似,只要學精通一款就OK了!尤其是用C語言編程,就幾乎不用分什麼派系,但是我們要選擇一款有代表性的知識范圍廣,並且入門容易,書籍多。一般來說,MCS-51系列單片機已經得到廣泛的普及和應用,市場上它的資料也比較多,用的人也很多。給大家推薦一些參考書,學習時只需要一本就足夠拉。書名:《新編MCS-51單片機應用設計》,哈爾濱工業大學出版,作者:張毅剛;書名:《單片機原理及應用》,高等教育出版社,作者:張毅剛等;書名:《單片機高級教程:應用與設計》,北京航空航天大學出版社,作者:何立民。相關教材還有很多,在這不一一列舉。
然後,是開發工具和開發環境的選擇。選擇一塊合適的學習板,對於初學者來說一般無力接受,如果經濟條件允許、本人又對單片機很感興趣、有從事相關工作意向的話,鼓勵大家購買。隨便說一句,學習板功能要求太全,具有流水燈、數碼管、獨立鍵盤、矩陣鍵盤、AD或DA、液晶、蜂鳴器等就差不多啦,畢竟,功能齊全的價格比較高。模擬器對單片機初學者來說既是那麼耳熟,同時又有些陌生,這主要是因為市場上傳統的模擬器價格都在千元以上,對經濟不是非常寬裕的人來說是不小的開支。同時模擬器是用來提高調試程序效率的,也不是非需不可的,如果你沒有模擬器,遇到程序出錯的時候,只好苦思冥想,反復燒寫調試。
隨便推薦一下,學林電子的51tracer模擬器,有興趣的朋友可關注一下。有了單片機教程板以後,先看下指導說明書,熟悉一下學習板,開卷有益。以後就得靠自己多練習了,將學習板與電腦連接好,先學會開發軟體的使用,然後從最簡單的流水燈實驗做起,按照你自己的意願控制流水燈,當你完成時,你會發現這是多麼愜意的事情。太好玩了,你會覺得這不是在學習,而是在玩,當你發現,單片機能夠按照你編寫的程序工作時,你會覺得非常興奮,比做什麼事情都開心,這樣你會慢慢迷上單片機,真的。不少網站上說搞定某個實驗,就恭維的告訴你一聲」恭喜你,學會了」自己學會了單片機,這有點可笑,這只能說明你算過關了,對單片機有了一定了解和會使用它了。但是單片機能完成的功能太多了,尤其是對外圍器件的控制,綜合起來能設計出許多意想不到的產品.因此除了入門外,精通可千萬別輕易說出口。
最後,在熟練掌握和應用後,那可以說對於單片機方面的硬體你已經入門了,剩下的就是自己練習設計開發各種課題,不斷的積累經驗。最終,自己完全設計具有個人風格的課題,產品,這樣你就是單片機高手拉。只要過了第一關,後面的路就好走多了,萬事開頭難,這大家可能都聽過。
有時候單片機的學習很單調,有些知識學起來很抽象,不容易理解,只能慢慢適應,一邊學習理論知識,一邊編寫程序,將程序刷入單片機進行調試,通過這種方式才能更快速的學習單片機。要堅定自己的學習信心,在付出持之以恆的努力,我相信自己能進一步加深對單片機的了解,在單片機的學習道路上走得更遠!
;⑹ C 單片機 開不開優化
開優化。C單片機如不開優化直接使用,程序的執行速度會很慢,而開了優化後優化了代碼,可以大幅增加程序運行的效率,以節省寶貴的時間,所以很有必要開優化。
⑺ 單片機 程序如何優化
如果用的是C語言的話,有幾點可以進行參考:
1 盡量減少全局變數,除非確實有必要,否則數據可以通過函數進行傳遞
2 賦值的時候用移位符代替'=',這樣表面看來沒有什麼區別,但是當編譯之後你就會發現移位符比'='執行效率要高
3 給程序加註釋,提高可讀性
⑻ stm8s003單片機寫OLED的代碼內存不夠怎麼辦
stm8s008空間大小是8K 使用的時候會出現空間不夠用的情況,這個時候要對軟體進行一些設置,從而優化程序大小。1,修改優化等級,如下圖所示,這樣會優化掉無關的函數,將代碼優化到最大程度2,如果代碼有多個數組,而ram實際空間不夠使用的時候,修改下面的參數,最大修改為0xfff。3,當二維數組定義完報錯,無法容納的時候,在數組前面加上NEAR可解決報錯例如:NEAR u8 buff[10][10] = {********};4,當代碼還是很多的時候就要從代碼邏輯和代碼本身一點點的扣 能用數組代替的盡量不用代碼,能用u8的不用u16
⑼ 怎麼優化 keil c51 代碼
怎麼優化keil C51代碼,這個C51單片機編程怎麼優化,很有多種方法如下:
第一代碼編程效率: C51單片機編程效率,有代碼效率,代碼的書寫風格,通過書寫風格來提高編程效率。
第二代碼編程效率: C語言編程效率沒有匯編編程代碼效率高,匯編是單片機底層操作,直接操作寄存器別C語言編程代碼要高30%,但是匯編代碼維護效率和開發效率低,C語言可以做二次開發,程序一直性好,易讀性強程序員維護起來非常方面,目前現在公司招聘都是一C語言招聘。
⑽ 做單片機程序優化怎麼做要分什麼步驟
太籠統了,單片機程序優化是指同一功能下,用最小最有效率的代碼實現。