① 利用單片機控制八個led燈,要求:全亮全滅 ,四亮四滅,以從右到左的 流水形式編程,不是用c語言 編
#include <reg52.h>
#define LED P0 /*宏定義LED接於P0口*/
void delay (int); /*聲明延遲子函數*/
main()
{
int i;
while(1)
{
LED=0xfe;
for(i=0;i<7;i++)
{
delay(100);
LED=(LED<<1)|0x01; /*最低位LED燈左移一位後進行或運算使得最低位不會為「0」*/
}
for(i=0;i<7;i++)
{
delay(100);
LED=(LED>>1)|0x80; /*最低位LED燈右移一位後進行或運算使得最高位不會為「0」*/
}
LED=0xff;
for(i=0;i<4;i++)
{
delay(300);
LED=~LED; /*所有的LED燈取反全亮或者全滅*/
}
}
}
② 中專的電子技術應用專業 主要學什麼課程
本專業課程設置分為必修課和選修課兩大類。必修課為本專業學生必須學習的課程,含文化基礎課程、專業課程和集中實踐環節三項;選修課主要是專業課程和集中實踐環節,各校可以根據實際需要,按建議課時數在指定的課程范圍內選擇或另開課程。
(一) 文化基礎課程(必修)
1. 德育(177學時)
(1) 職業道德與職業指導(32學時)
本課程是中等職業學校學生必修的一門德育課程,旨在對學生進行職業道德教育與職業指導。其任務是:使學生了解職業、職業素質、職業道德、職業個性、職業選擇、職業理想的基本知識與要求,樹立正確的職業理想;掌握職業道德基本規范,以及職業道德行為養成的途徑,陶冶高尚的職業道德情操;形成依法就業、競爭上崗等符合時代要求的觀念;學會依據社會發展、職業需求和個人特點進行職業生涯設計的方法;增強提高自身全面素質、自主擇業、立業創業的自覺性。
(2) 法律基礎知識(32學時)
本課程是中等職業學校學生必修的一門德育課程,旨在對學生進行法律基礎知識教育。其任務是:使學生了解憲法、行政法、民法、經濟法、刑法、訴訟法中與學生關系密切的有關法律基本知識,初步做到知法、懂法,增強法律意識,樹立法制觀念,提高辨別是非的能力;指導學生提高對有關法律問題的理解能力,對是與非的分析判斷能力,以及依法律己、依法做事、依法維護權益、依法同違法行為作斗爭的實踐能力,成為具有較高法律素質的公民。
(3) 經濟與政治基礎知識(64學時)
本課程是中等職業學校學生必修的一門德育課程。其任務是:根據馬克思主義經濟和政治學說的基本觀點,以鄧小平理論為指導,對學生進行經濟和政治基礎知識的教育。引導學生正確分析常見的社會經濟、政治現象,提高參與社會經濟、政治活動的能力,為在今後的職業活動中,積極投身社會主義經濟建設、積極參與社會主義民主政治建設打下基礎。
(4) 哲學基礎知識(49學時)
本課程是中等職業學校學生必修的一門德育課程,旨在對學生進行馬克思主義哲學知識及基本觀點的教育。其任務是:通過課堂教學和社會實踐等多種方式,使學生了解和掌握與自己的社會實踐、人生實踐和職業實踐密切相關的哲學基本知識;引導學生用馬克思主義哲學的立場、觀點、方法觀察和分析最常見的社會生活現象;初步樹立正確的世界觀、人生觀和價值觀,為將來從事社會實踐打下基礎。
2. 語文(225學時)
在初中語文的基礎上,進一步加強現代文和文言文閱讀訓練,提高學生閱讀現代文和淺易文言文的能力;加強文學作品閱讀教學,培養學生欣賞文學作品的能力;加強寫作和口語交際訓練,提高學生應用文寫作能力和日常口語交際水平。通過課內外的教學活動,使學生進一步鞏固和擴展必需的語文基礎知識,養成自學和運用語文的良好習慣,接受優秀文化熏陶,形成高尚的審美情趣。
3. 數學(198學時)
在初中數學的基礎上,進一步學習數學的基礎知識。必學與限定選學內容:集合與邏輯用語、不等式、函數、指數函數與對數函數、任意角的三角函數、數列與數列極限、向量、復數、解析幾何、立體幾何、排列與組合、概率與統計初步。選學內容:極限與導數、導數的應用、積分及其應用、統計。通過教學,提高學生的數學素養,培養學生的基本運算、基本計算工具使用、空間想像、數形結合、思維和簡單實際應用等能力,為學習專業課打下基礎。
4. 英語(252學時)
在初中英語的基礎上,鞏固、擴展學生的基礎詞彙和基礎語法;培養學生聽、說、讀、寫的基本技能和運用英語進行交際的能力;使學生能聽懂簡單對話和短文,能圍繞日常話題進行初步交際,能讀懂簡單應用文,能模擬套寫語篇及簡單應用文;提高學生自主學習和繼續學習的能力,並為學習專門用途英語打下基礎。
5. 計算機應用基礎(132學時)
在初中相關課程的基礎上,進一步學習計算機的基礎知識、常用操作系統的使用、文字處理軟體的使用、計算機網路的基本操作和使用,掌握計算機操作的基本技能,具有文字處理能力,數據處理能力、信息獲取、整理、加工能力,網上交互能力,為以後的學習和工作打下基礎。
選學內容:電子表格軟體使用、資料庫基本操作和使用。
6. 體育與健康(160學時)
在初中相關課程的基礎上,進一步學習體育與衛生保健的基礎知識和運動技能,掌握科學鍛煉和娛樂休閑的基本方法,養成自覺鍛煉的習慣;培養自主鍛煉、自我保健、自我評價和自我調控的意識,全面提高身心素質和社會適應能力,為終身鍛煉、繼續學習與創業立業奠定基礎。
7. 物理(102學時)
在初中物理的基礎上,進一步學習力學、電學、振動和波、熱學和光學等內容,使學生掌握其基本規律、一般計算和應用、分析方法,為學習專業課程打下基礎。
(二) 專業課(必修)
8. 電工基礎(109學時)
了解電阻、電容、電感等各種電子元器件的特性與作用;理解簡單電路的基本原理與特性;了解電路的各種分析方法,能對給定的電路進行電壓、電流、功率等參數的計算;能繪制信號的波形圖,掌握中級以上裝配電工應知理論知識。
9. 電工基礎實驗(47學時)
了解電工儀器儀表的構造與工作原理,能正確使用常見電工儀器儀表;能運用電氣測量技術檢測調試一般電路;能對測量數據進行一般處理,並能繪制實驗曲線;了解與本課程有關的技術規范;能對一般的電氣線路進行故障分析與排除;掌握安全用電常識。
10. 電子工程制圖(60學時)
理解電子工程圖的投影原理,了解圖樣表達方式的種類和方法,了解《機械制圖》、《電氣制圖》的國家標准,了解尺寸標注、公差標注、表面粗糙度的標注方法;能熟練地使用繪圖工具,能繪制、識讀一般復雜程度的電子工程圖樣,能繪制電子產品裝配草圖。
11. 電子線路(150學時)
了解常用電子器件的工作原理、主要參數和外特性;理解各種基本的模擬與數字單元電路的組成與工作原理;能定性分析各種常用電子線路並能說明電路中每個元器件的作用;能計算簡單電子線路的參數;了解通用集成電路(IC)的性能特點,能畫出常用IC應用電路;能查閱電子器件手冊及有關資料並合理選用。
12. 電子線路實驗(75學時)
能熟練操作各種常用電子儀器;能熟練搭接實驗電路並用各種測量儀器對電子線路的各種參數進行檢測與調試,能正確觀察實驗現象、記錄測試結果並進行分析;能繪制各種測試曲線;能分析並排除典型電路故障;能編寫符合要求的實驗報告。
13. 機械基礎(60學時)
了解工程材料的種類、性能、牌號與用途;了解公差與配合方面的基本知識;理解機械運動基本原理;了解常用機構和機械零件的種類、性能;能正確使用常用測量儀器與工具。
14. 感測技術及應用(45學時)
了解感測器的工作原理,熟悉典型壓力、溫度、光電感測器的外特性,並能根據使用要求進行查表選型;掌握幾種常用物理量(如長度、速度、壓力、溫度、磁場等)的測量方法,會分析典型感測器的應用電路。
15. 電子產品結構工藝(60學時)
理解環境對電子產品的影響和產品可靠性的概念;了解電子設備的三防、散熱設計、減振、屏蔽的基本知識;掌握元器件布局、走線的知識;掌握印製線路板設計的步驟、方法;掌握工藝文件編制原則、要求。具有根據電原理圖設計印製電路板的能力;能對典型電子產品進行結構工藝分析;能調試組裝、中等復雜程度的產品整機。
16. 電子整機原理(102學時)
本課程按電子整機產品類型分為三個選修模塊。
(1) 音響設備
了解音響設備中常用電路的組成、功能並理解其工作原理;了解音響技術中特殊元器件或部件的用途、構成及工作原理;能識讀音響設備的典型整機線路圖;能合理選購、搭配及布置音響設備;能通過對故障現象和檢測數據的分析來判斷故障部位,能說明產生故障現象的原因。
(2) 數字視聽設備
掌握典型數字視聽設備的組成原理;了解光碟機和數字信號處理電路的特點;了解典型數字視聽設備的主要技術指標和參數;能讀懂典型數字視聽設備的整機線路圖;能通過對故障現象和檢測數據的分析判斷故障部位,能說明產生故障現象的原因。
(3) 彩色電視機
理解電視圖像光電轉換的基本原理;了解色度學基本知識;了解電視信號的基本組成和主要參數;了解彩色電視機的基本組成和基本電路的功能;理解PALD制彩色電視的編碼和解碼原理;理解彩色電視機基本電路的工作原理;掌握彩色電視機主要元器件、電路和整機的性能指標測試方法;了解電視機一般附屬電路的功能與工作原理;具備測試彩色電視機元器件、單元電路和整機性能指標的初步能力;能讀懂典型彩色電視機的整機線路圖;能通過對故障現象和檢測數據的分析判斷故障部位,能說明產生故障現象的原因;了解彩色電視機的有關新技術。
17. 電子測量儀器(68學時)
了解電子測量的基本知識;了解常用電子測量儀器的用途、性能及主要技術指標;理解常用電子測量儀器的組成和工作原理以及現代智能儀器的基本工作原理;能對測量結果進行簡單的數據處理;能根據被測對象正確地選擇儀器;熟練掌握常用電子測量儀器的操作技能;能正確使用儀器完成基本測量任務;能對電子測量儀器進行維護。
18. 單片機原理與應用(85學時)
了解單片機技術的特點、現狀和未來發展趨勢;理解單片機的工作原理;熟悉MCS-51單片機晶元的基本功能和典型應用實例;能正確操作、使用單片機開發系統;能說明常用指令、定址方式、介面的特點及用途;初步具備單片機應用系統的硬體及軟體設計、調試、檢測、維修的能力。
19. 專業英語(68學時)
了解科技英語的一些常見的語法現象和構詞法的基本知識;增加專業英語詞彙的積累;能藉助詞典翻譯一般難度的專業英文資料;能用英語書寫個人推薦信、專業介紹等簡單的應用文;能進行簡單的專業英語方面的交流。
(三) 集中實踐教學項目(必修)
20. 鉗工實習(30學時)
能按初級鉗工的規范要求對工件進行鋸割、銼削、劃線、鑽孔、攻絲、套扣、套形、裝配;能熟練使用千分尺、卡尺、角尺等常用量具。
21. 電子整機裝配實習(90學時)
了解常用元器件和材料的規格、型號及基本特性參數,能正確檢測、合理選用常用元器件;掌握整機裝配工藝的基本理論;了解電子整機生產的基本工藝流程及其新技術、新工藝;了解表面安裝技術;能正確使用和維護常用工具、儀器儀表及專用裝接設備;掌握電子整機的手工焊接、裝配、調試、裝接檢驗的基本技能;能識讀電子整機生產的技術文件。
22. 電工技能訓練(30學時)
熟悉並能正確使用常用配電設備、電工儀表、電工工具;熟悉並能正確進行導線的連接和恢復絕緣、以及照明燈具、開關與插座的安裝;初步具有識讀一般電氣原理圖、電器布置圖和電氣安裝接線圖的能力;初步掌握電工基本操作工藝和基本安全知識;了解電能的生產、輸送和分配以及常用低壓電器元件和一般設備的型號、規格與功能;了解與電工技能有關的技術規范。
23. 電子技術技能訓練(60學時)
了解電子產品設計與製作的一般過程;能閱讀電路原理圖、印製電路板圖;能藉助手冊查閱電子元器件及材料的有關數據;能正確選擇使用元器件和材料;能熟練地裝接電子電路並使用電子儀器進行調試;解決電子電路製作過程中出現的一般問題;能對所製作電路的指標和性能進行測試並提出改進意見。
24. 電子產品檢驗實習(30學時)
了解標准體系的原理;了解電子產品檢驗的一般概況、檢驗標准(GB和GB/T)及方法;熟練掌握常用測量儀器的正確使用方法;理解典型電子整機產品性能指標檢測方案;能正確處理測試數據和填寫規范的檢驗報告。
25. 電子整機維修實習(90學時)
能理解典型電子整機的基本原理及各部分電路的工作原理,能讀懂整機電原理圖、印製電路板圖和裝配圖;能敘述典型電子整機的一般維修方法和各部分的維修流程,能根據故障現象判斷故障部位,熟練運用各種維修方法與技巧查找並排除故障;掌握常用維修工具和儀器設備的功能及使用方法;能熟練拆裝實慣用整機;能注意維修安全,並能正確填寫維修報告。
註:電子整機維修實習中典型整機的選擇應與《電子整機原理》課程所選內容一致。
26. 單片機應用綜合實習(90學時)
了解單片機的結構及各部分功能,理解單片機的工作原理,能說明單片機編程的一般方法,能熟練使用單片機開發系統,能用匯編語言編制並調試一般性程序,能用單片機實行對典型應用電路的控制。
27. 崗位綜合實習(360學時)
能在生產實踐過程中使自己的專項技能熟練程度有明顯提高並達到企業的要求;能運用所學的知識解決生產實際問題;了解電子整機生產的全過程和各階段的生產工藝要求,能編寫生產實習報告或產品設計論文。
(四) 集中實踐教學項目(選修)
28. 收音機裝配與維修實習(30學時)
理解普通收音機的基本組成原理,能敘述收音機各功能電路的作用,能根據收音機的裝配與調試工藝文件組裝並調試收音機,能查找與排除收音機的一般性故障。
29. 電話機維修實習(30學時)
能理解電話機的基本原理及各部分電路的工作原理,能讀懂電話機的電原理圖、印製電路圖和裝配圖;能敘述電話機的一般維修方法和各部分的維修流程,能根據故障現象,判斷故障部位,運用各種維修方法與技巧查找並排除故障,能正確填寫維修報告。
30. 電熱與電動器具維修實習(30學時)
了解電阻式、紅外線等電熱器件及溫控器件的作用與性能,掌握電飯鍋、微波爐、電風扇的結構和工作原理,能按操作要求對這些器具進行拆裝,能夠使用常用儀器儀表進行檢測,能正確判斷和排除常見故障。
31. 計算機組裝與維修實習(30學時)
能敘述計算機的組成原理與各組成部分的主要功能與性能,能正確裝配計算機軟、硬體並進行調試,能對計算機的一般性軟、硬體故障進行檢測和維修。
(五) 選修課程
32. 文學藝術欣賞(30學時)
本課程可有以下幾種選項:
(1) 音樂欣賞
了解簡譜與五線譜樂理知識,了解欣賞音樂的三個階段,了解音樂的基本表現手段;了解常見歌曲與樂曲的體裁;了解中西常見樂器;能理解音樂語言,領會歌曲內容。
(2) 美術鑒賞
了解美術欣賞的基本知識,了解美術的基本特點和種類;了解美術作品的形式要素等常識;了解美術作品常見的幾種表現方式;能賞析中外名畫,能對大自然、社會生活、美術作品中的美進行欣賞。
(3) 詩詞欣賞
了解詩詞的特點及一般閱讀、欣賞詩詞的方法;理解各個歷史時期名家名篇中所反映的社會現實及流露的思想感情;了解詩詞形成、發展的規律及各種流派的風格特點;了解詩詞創作的一些基本方法。
33. 會計學基礎(30學時)
了解會計學原理的基本知識,了解會計核算體系的一般內容和具體方法,理解會計業務的處理程序,能編制工業企業主要會計報表。
34. 市場營銷(45學時)
了解市場營銷學的產生、發展及基本理論,理解和掌握企業的四種主要營銷策略。
35. 辦公自動化(45學時)
理解辦公自動化的概念和意義,能建立一套基本辦公自動化系統,掌握傳真機、復印機的基本工作原理,能正確使用和維護現代辦公設備,排除傳真機、復印機的常見故障。
36. 英語口語(68學時)
能聽懂比較規范的英語和日常生活用語,能進行一般的會話,能用英語簡單描述企業情況和工作環境,介紹產品和工藝,詢問或回答商業信息。
37. 英語資料閱讀(51學時)
了解科技英語的一般語法知識,能藉助字典簡明扼要正確翻譯電子類科普性英文資料。
38. 多媒體技術(68學時)
理解多媒體計算機的基本組成結構和工作原理,了解多媒體計算機的硬體與軟體技術及各組成部分的作用,能正確使用常用多媒體設備和多媒體軟體。
39. 材料與元件(51學時)
了解常用的電子材料的特點及應用;掌握阻容元件的種類、特點及應用,掌握阻容元件的命名、標識;了解電感元件、電接觸件的應用;掌握晶體管種類、特點及應用;掌握常見的各類集成電路的特點及應用;理解感測器件、顯示器件、壓電器件、電場、聲控器件的原理及應用;能結合電子材料和元器件的特點,理解其應用的要點。
40. 電機與電氣控制(68學時)
掌握控制用電機及常用低壓電器的性能、結構、用途;理解常用電氣控制線路的工作原理,能用常用儀器儀表對電氣控制線路進行檢測,能分析、排除一般的電氣控制線路故障。
41. 開關電源(51學時)
理解開關電源系統的組成原理和技術特點;了解開關電源技術中功率變換器(DC/DC變換器)的結構及工作原理;了解PWM開關變換器的組成、工作原理與技術指標;了解開關電源最新軟切換技術的原理、特點;能敘述開關電源的特點、指標及工作過程;會簡單估算主要元器件的技術參數及電源功率、效率;能分析比較常用開關電源的性能、特點,會利用常用或專用設備維修開關電源的常見故障。
42. 公共關系(51學時)
了解公共關系的產生與發展,理解公共關系的主要職能和實施步驟,以及社會主義市場經濟中公共關系的作用;能進行簡單公共關系的策劃,了解正確處理人際關系的一般方法。
③ 單片機實訓題目:8位邏輯電平模塊上的LED小燈呈現右側4盞先閃爍3次,左側4盞再閃爍3次,狀態間隔為2秒。
根據你的要求,我理解為,單片機控制8位邏輯輸入採集與8位LED輸出指示,那麼做模型的時候,用8路開關量輸入,8個LED燈做輸出,系統啟動的時候閃爍3次,間隔2秒,然後開始採集輸入信號,在對應的輸出端用LED顯示出來!
原理圖如下:
④ 《單片機C語言程序設計實訓100例——基於8051+Proteus模擬》 第03篇源代碼
單片機c語言編程100個實例目錄1
函數的使用和熟悉
實例3:用單片機控制第一個燈亮
實例4:用單片機控制一個燈閃爍:認識單片機的工作頻率
實例5:將 P1口狀態分別送入P0、P2、P3口:認識I/O口的引腳功能
實例6:使用P3口流水點亮8位LED
實例7:通過對P3口地址的操作流水點亮8位LED
實例8:用不同數據類型控制燈閃爍時間
實例9:用P0口、P1 口分別顯示加法和減法運算結果
實例10:用P0、P1口顯示乘法運算結果
實例11:用P1、P0口顯示除法運算結果
實例12:用自增運算控制P0口8位LED流水花樣
實例13:用P0口顯示邏輯"與"運算結果
實例14:用P0口顯示條件運算結果
實例15:用P0口顯示按位"異或"運算結果
實例16:用P0顯示左移運算結果
實例17:"萬能邏輯電路"實驗
實例18:用右移運算流水點亮P1口8位LED
實例19:用if語句控制P0口8位LED的流水方向
實例20:用swtich語句的控制P0口8位LED的點亮狀態
實例21:用for語句控制蜂鳴器鳴笛次數
實例22:用while語句控制LED
實例23:用do-while語句控制P0口8位LED流水點亮
實例24:用字元型數組控制P0口8位LED流水點亮
實例25: 用P0口顯示字元串常量
實例26:用P0 口顯示指針運算結果
實例27:用指針數組控制P0口8位LED流水點亮
實例28:用數組的指針控制P0 口8 位LED流水點亮
實例29:用P0 、P1口顯示整型函數返回值
實例30:用有參函數控制P0口8位LED流水速度
實例31:用數組作函數參數控制流水花樣
實例32:用指針作函數參數控制P0口8位LED流水點亮
實例33:用函數型指針控制P1口燈花樣
實例34:用指針數組作為函數的參數顯示多個字元串
單片機c語言編程100個實例目錄2
實例35:字元函數ctype.h應用舉例
實例36:內部函數intrins.h應用舉例
實例37:標准函數stdlib.h應用舉例
實例38:字元串函數string.h應用舉例
實例39:宏定義應用舉例2
實例40:宏定義應用舉例2
實例41:宏定義應用舉例3
* 中斷、定時器中斷、定時器 *中斷、定時器*中斷、定時器 /
實例42:用定時器T0查詢方式P2口8位控制LED閃爍
實例43:用定時器T1查詢方式控制單片機發出1KHz音頻
實例44:將計數器T0計數的結果送P1口8位LED顯示
實例45:用定時器T0的中斷控制1位LED閃爍
實例46:用定時器T0的中斷實現長時間定時
實例47:用定時器T1中斷控制兩個LED以不同周期閃爍
實例48:用計數器T1的中斷控制蜂鳴器發出1KHz音頻
實例49:用定時器T0的中斷實現"渴望"主題曲的播放
實例50-1:輸出50個矩形脈沖
實例50-2:計數器T0統計外部脈沖數
實例51-2:定時器T0的模式2測量正脈沖寬度
實例52:用定時器T0控制輸出高低寬度不同的矩形波
實例53:用外中斷0的中斷方式進行數據採集
實例54-1:輸出負脈寬為200微秒的方波
實例54-2:測量負脈沖寬度
實例55:方式0控制流水燈循環點亮
實例56-1:數據發送程序
實例56-2:數據接收程序
實例57-1:數據發送程序
實例57-2:數據接收程序
實例58:單片機向PC發送數據
實例59:單片機接收PC發出的數據
*數碼管顯示*數碼管顯示 數碼管顯示數碼管顯示*/
實例60:用LED數碼顯示數字5
實例61:用LED數碼顯示器循環顯示數字0~9
實例62:用數碼管慢速動態掃描顯示數字"1234"
實例63:用LED數碼顯示器偽靜態顯示數字1234
實例64:用數碼管顯示動態檢測結果
實例65:數碼秒錶設計
實例66:數碼時鍾設計
實例67:用LED數碼管顯示計數器T0的計數值
實例68:靜態顯示數字「59」
單片機c語言編程100個實例目錄3
鍵盤控制*鍵盤控制* *鍵盤控制 *鍵盤控制 */
實例69:無軟體消抖的獨立式鍵盤輸入實驗
實例70:軟體消抖的獨立式鍵盤輸入實驗
實例71:CPU控制的獨立式鍵盤掃描實驗
實例72:定時器中斷控制的獨立式鍵盤掃描實驗
實例73:獨立式鍵盤控制的4級變速流水燈
實例74:獨立式鍵盤的按鍵功能擴展:"以一當四"
實例75:獨立式鍵盤調時的數碼時鍾實驗
實例76:獨立式鍵盤控制步進電機實驗
實例77:矩陣式鍵盤按鍵值的數碼管顯示實驗
//實例78:矩陣式鍵盤按鍵音
實例79:簡易電子琴
實例80:矩陣式鍵盤實現的電子密碼鎖
液晶顯示LCD*液晶顯示LCD *液晶顯示LCD * *液晶顯示LCD*液晶顯示LCD *液晶顯示LCD */
實例81:用LCD顯示字元'A'
實例82:用LCD循環右移顯示"Welcome to China"
實例83:用LCD顯示適時檢測結果
實例84:液晶時鍾設計
*一些晶元的使用*24c02 DS18B20 X5045 ADC0832 DAC0832 DS1302 紅外遙控/
實例85:將數據"0x0f"寫入AT24C02再讀出送P1口顯示
實例86:將按鍵次數寫入AT24C02,再讀出並用1602LCD顯示
實例87:對I2C匯流排上掛接多個AT24C02的讀寫操作
實例88:基於AT24C02的多機通信 讀取程序
實例89:基於AT24C02的多機通信 寫入程序
實例90:DS18B20溫度檢測及其液晶顯示
實例91:將數據"0xaa"寫入X5045再讀出送P1口顯示
實例92:將流水燈控制碼寫入X5045並讀出送P1口顯示
實例93:對SPI匯流排上掛接多個X5045的讀寫操作
實例94:基於ADC0832的數字電壓表
實例95:用DAC0832產生鋸齒波電壓
實例96:用P1口顯示紅外遙控器的按鍵值
實例97:用紅外遙控器控制繼電器
實例98:基於DS1302的日歷時鍾
實例99:單片機數據發送程序
實例100:電機轉速表設計
模擬霍爾脈沖
http://www.dzkfw.com.cn/myxin/51c_language.chm 單片機c語言一百例子
⑤ 流水燈實訓報告
轉載於 http://www.scetop.com/jpkc/pld/ArticleShow.asp?ArticleID=565&BigClassName=%CA%B5%D1%B5%BD%CC%D1%A7
希望對你有幫助
實訓項目(一) 流水燈 1. 實驗目的通過此實驗讓用戶進一步了解、熟悉和掌握CPLD/FPGA開發軟體的使用方法及Ver-ilog HDL的編程方法;學習簡單時序電路的設計和硬體測試.2. 實驗內容本實驗的內容是建立可用與控制LED流水燈的簡單硬體電路,要求在SmartSOPC實驗箱上實現LED1-LED8發光二極體流水燈顯示.3. 實驗原理(1) 在引腳上周期性地輸出流水數據,如原來輸出的數據是11111100則表示點亮LED1、LED2.流水一次後,輸出數據應該為11111000,而此時則應點亮LED1~LED3三個LED發光二極體,這樣就可以實現LED流水燈.為了觀察方便,流水速率最好在2Hz左右.在QuickSOPC核心板上有一個48MHz的標准鍾源,該時鍾脈沖CLOCK與晶元的28腳相連.為了產生2Hz的時鍾脈沖,在此調用了一個分頻模塊,通過修改分頻系數來變改輸出頻率.當分頻系數為24×10時,輸出即為2Hz的頻率信號.(2) int_div分頻模塊說明: int_div模塊是一個占空比為50%的任意整數分頻器.輸入時鍾為clock,輸出時鍾為clk_out.其中F_DIV為分頻系數,分頻系數范圍為1~2N(n=F_DIV_WIDTH).若要改變分頻系數,則改變參數F_DIV和F_DIV_WIDTH到相應范圍即可.在本例中輸入時鍾頻率為48MHz,要得到2Hz的信號,分頻系數應為48×10/2=24×10.對於分頻系數為24×10的數需要一個25位寬的計數器.在以後的實驗中還會多次用到這個模塊,用戶可以分析它的基本原理.4. 實驗步驟(1) 啟動QUARTUSⅡ建立一個空白工程,然後命名為.(2) 新建VerilogHDL源程序文件ledwater.v,輸入程序代碼並保存,然後進行綜合編譯.若在編譯過程中發現錯誤,則找出並更正錯誤,直到編譯成功為止.(3) 從設計文件創建模塊,由ledwater.v生成名為ledwater.bsf的模塊符號文件.(4) 將光碟中EDA_component目錄下的int_div.bsf和int_div.v拷貝到工程目錄.(5) 新建圖形設計文件命名為led_wter.bdf在空白處雙擊滑鼠左鍵,在sym-bol對話框左上腳的的Iibraries中,分別將projet下的ledwater和int_div模塊放在圖形文件ed_wter.bdf中,加入輸入、輸出引腳,雙擊各引腳符號,進行引腳命名.將與ledwater模塊led[7..0]連接的引腳命名為led[7..0],與int_div模塊clock連接的引腳命名為clock. int_div模塊的clk_out與ledwater模塊的clk相連接.雙擊int_div的參數框,並修改參數,將F_DIV的值改為24000000, F_DIV_WIDTH的值改為25,單擊「確定」按扭保存修改的文件的參數如果led_water.bdf中部能看到參數設置框,可在空白處右擊滑鼠,選擇Show Parameter Assignments命令來顯示參數設置框。(6) 選擇目標器件並對相應的引腳進行鎖定,正在這里所選擇的器件為Altera公司Cyclone系列的EP 1C6Q240C8晶元,引腳鎖定方法如表3.1所列。將未使用的引腳設置為三態輸入(一定要設置,否則可能會損壞晶元)。 表3.1 引腳鎖定方法 信號引腳 信號引腳1C61C12EDA1C61C12EDALed[0]505050led[5]474747led[1]535353led[6]484848led[2]545454led[7]494949led[3]555555clock282828led[4]176176176 (7) 將led_water.bdf設置為頂層實體。對該工程文件進行全程編譯處理,若在編譯過程中發現錯誤,則找出並更正錯誤,直至編譯成功為止。(8) 最後將跳線短接帽跳接到smartSOPC實驗箱上JP6的LED0~LED7,使LED1~LED8 分別與FPGAD的引腳50、53~55、176和47~49相連。將AlteraByteBlasterⅡ下載電纜的兩端分別接到PC機的列印機並口和QuickSOPC核芯板上的JTAG下載口上,打開電源,執行下載命令,把程序下載到FPGA器件中,此時,即可在smartSOPC實驗箱上看到流水燈。(9 更改分頻模塊(int_div)的分頻系數,並重新編譯下載,觀察流水燈的變化。 5. 實驗參考程序 程序清單3.2ledwater.v Mole ledwater(led,clk); //模塊名ledwaterOutput[7:0]led; //定義LED輸出口Input clk; //定義時鍾輸入口Reg[8:0] led_r; //定義輸出寄存器Assign led=led_r[7:0]; //寄存器輸出always@(posedge clk) //在時鍾上升沿觸發進程beginled_r<=led_r<<1; //是,則輸出左移一位if(led_r==9`d0) //循環完畢嗎?led_r<=9`b11111111; //是,則重新賦初值endendmole 6. 日積月累(1) 思考:如何實現左流水燈或其他花樣流水呢?用戶自己動手試試。(2) REG數據類型:由兩大類數據類型,線網類型和寄存器類型。REG是最常見的寄存器類型,形式如下:REG[msb:lsb]reg1,reg2,…regN;其中,msb和lsb定義了范圍,並且均勻為常數值表達式。范圍定義是可以選的。如果沒有定義范圍,默認值為1位寄存器。 reg數據類型的默認初始值是不定值X,它可以賦正值,也可以賦負值。當一個reg類型數據是一個表達式中的操作數時,他的值被當作是無符號值,即正值(如意個4)為寄存器被賦值-1,則在表達式中進行運算時,其值被認為是+15)。 reg型只表示被定義的信號將用在always塊內,理解這一點很重要。並不是說reg 型信號一定是寄存器或觸發器的輸出。雖然reg型信號常常是寄存器或觸發器的輸出,但並不一定總是這樣,只有在時序邏輯中他對應的才是寄存器,而在組合邏輯中他則表達一個節點。(3)按照上述管工程進行編譯,會出現「warning: found pins functioning as undefined clocks and/or memory enables Info: Assuming node 」clock」 is an undefined clock」的警告,大概意思是指發現clock節點沒有定義成時鍾信號。消除這個警告的方法如下: ①選擇assignments→timing settings命令,在彈出的對話框中的clockseteings選項區中選中settingsfor indivial clock signals項。 ②對clocks進行設置,在彈出的對話框中單擊按鈕添加節點,按圖中所示進行設置。圖中requiredfmax 為系統需求的最大時鍾頻率,在這里填50HZ即可。 ③設置好之後連續單擊OK按鈕保存設置,最後再進行編譯,原先的warning就會消除。以上的操作是將「clock」加入時鍾域。如果「clock」不是一個時鍾信號,可將設置屬性改為「not a clock 」,也可以消除warning。
⑥ 單片機定時器與計數器的區別
在51單片機的學習過程中,我們經常會發現中斷、計數器/定時器、串口是學習單片機的難點,兩者的區別是什麼呢?下面就跟著我一起來看看吧。
單片機計數器與定時器的區別
計數器和定時器的本質是相同的,他們都是對單片機中產生的脈沖進行計數,只不過計數器是單片機外部觸發的脈沖,定時器是單片機內部在晶振的觸發下產生的脈沖。當他們的脈沖間隔相同的時候,計數器和定時器就是一個概念。
在定時器和計數器中都有一個溢出的概念,那什麼是溢出了。呵呵,我們可以從一個生活小常識得到答案,當一個碗放在水龍頭下接水的時候,過了一會兒,碗的水滿了,就發生溢出。同樣的道理,假設水龍頭的水是一滴滴的往碗里滴,那麼總有一滴水是導致碗中的水溢出的。在碗中溢出的水就浪費了,但是在單片機的定時計數器中溢出將導致一次中斷,至於什麼是中斷我們下次再講,這里只是初步的提下概念,中斷就是能夠打斷系統正常運行,而去運行中斷服務程序的過程,當服務程序運行完以後又自動回到被打斷的地方繼續運行。
在定時器計數器中,我們有個概念叫容量,就是最大計數量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脈沖,那麼導致碗中水溢出的最後一滴水的就是定時計數器的溢出的最後一個脈沖。
在各種單片機書本中,在介紹定時計數器時都講到一個計數初值,那什麼是計數初值呢?在這里我們還是假設水滴碗。假設第一百滴水能夠使碗中的水溢出,我們就知道這個碗的容量是100。問題1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想像,如果拿一個空碗去接水,那麼還是得要100滴水才能溢出,但是如果我們拿一個已經裝有水的碗拿去接,那就不用100滴了。到此我們可以算出,要使10滴水讓碗中的水溢出,那麼碗中就先要裝90滴水。
在定時計數器中,這90滴水就是我們所謂的初始值。問題2,在一個車間我們如何利用單片機對100件產品進行計件,並進行自動包裝呢?
我們可以利用計數器計數100,在中斷中執行一個自動包裝的動作就可以了。
在這里計數初值有3個,假設有方式0:計數初值=8912(2的13次方)—100=8812。方式1:計數初值=65536(2的16次方)—100=65436。方式0:計數初值=256(2的8次方)—100=156。
根據所得的初始值,再將其轉換為16進制或者2進制,就可以進行計數或者定時了。當然要讓程序完全的運行起來還需要相應的寄存器進行設置。這些可以從各種單片機教程中找到。
單片機中定時器與計數器的區別
定時器實際上也是計數器,只是計數的是固定周期的脈沖
定時/計數器很容易理解的啊
定時器實際上也是工作在計數方式下,只是計數的是固定周期的脈沖,由於脈沖周期固定,由計數值可以計算時間,有定時功能
定時和計數只是觸發來源不同(時鍾信號和外部脈沖)其他方面是一樣的。
單片機里的寄存器可以看成一個個電子開關,用來切換不同的功能、信號。
51里通過TMOD里的T/C 位切換計數信號的來源
當T/C工作在定時器時,對振盪源12分頻的脈沖計數,即每個機器周期計數值加1,計數頻率為1/12fosc,當晶振頻率6MHZ時,計數頻率為500KHz,每2us計數值加1;晶振12MHZ就是每1us加1 了。
當T/C工作在計數器是,計數脈沖來自外部脈沖輸入管腳T0(P3.4)或T1(P3.5),當T0或T1腳上負跳變時計數值加1 ,識別管腳負跳變需要2個機器周期,即24個振盪周期。所以T0或T1腳輸入的可計數的外部脈沖的最高頻率為1/24fosc,當晶振12MHZ時,最高計數頻率為500KHz,高於此頻率將計數出錯。
至於賦初值就是杯子原理了,由於51隻能加計數,且只能在杯子剛剛滿的那一刻發出中斷,觸發中斷程序,所以我們就往杯子里先放好一定的豆子,再來相應數量的豆子就滿了,然後中斷程序就自動工作了。
注意:
定時和計數只是觸發來源不同(時鍾信號和外部脈沖)其他方面是一樣的。
假設我們要定時一定時間(100個機器周期),我們就置初值為(溢出值-100)就行了,假設我們要計件100個,實際上也是置初值為(溢出值-100),然後將輸入脈沖設為外部輸入就可以了
所以說:定時和計數只是觸發來源不同(時鍾信號和外部脈沖)其他方面是一樣的。
在中斷里置初值是為下一個循環作準備,沒什麼好說的,看需要定了。
由於定時計數器的值也可以隨時讀出來,所以我們也可以從0開始計數,從而計算一段時間或一定脈沖的數量哦,這是照樣可以打開中斷,中斷時就說明已經又計數了(定時器溢出值)個脈沖哦,在中斷里進行溢出處理,就可以計算出遠遠大於(定時器溢出值)的數字了
此時也要注意一點:51讀數時除了T/C2的捕捉功能,直接讀TH和TL可是不斷變化的哦,具體的還是看書。當你理解了定時計數器後,我們甚至還可以將計數值置為(溢出值-1),從而實現自動單步(定時模式)或作為外部中斷(計數模式)用哦,仔細想想吧,呵呵;-)
至於中斷中的需要保護現場的原因,是為了防止不小心修改了別的程序的參數,從而影響別的程序的運行,所以要且只要保護中斷程序自己動過的數據,將動過的那些存儲器在退出中斷時恢復到進入時的狀態,就不會影響被中斷的程序了。
匯編需要自己保存現場,反正程序就是自己編的嘛,一切盡在掌握中;
C的話編譯器會自動進行覆蓋分析,自動保存需要保存的變數,一般應用時盡可放心,當然,如果你很了解編譯器做了什麼,也可以嵌入匯編天馬行空自由發揮啊,但新手可不建議這樣哦,還是交給編譯器吧。
其實這些可以說都是基礎知識啊,如果不明白肯定是你的書看的不夠仔細哦.
猜你喜歡
1. 單片機的硬體結構是什麼
2. 10秒定時器電路設計
3. 單片機技術論文
4. 單片機的發聲原理
5. 單片機開題報告範文
6. 電子實習報告單片機
7. 單片機實訓報告範文3篇
⑦ 《單片機》課程學習總結
《單片機》課程學習總結
篇一:《單片機》課程學習總結
《單片機》這門課程我已經學了一個學期了,在這一個學期的學習過程中,我一開始不怎麼懂得編程,但慢慢的我現在已經不僅會讀程序還會寫程序了。真為自己一個學期來努力學到的單片機知識只是而感到高興。
怎麼學單片機?也常看到有人說學了好幾個月可就是沒有什麼進展。當然,受限於每個人受到的教育水平不同和個人理解能力的差異,學習起來會有快慢之分,但我感覺最重的就是學習方法。一個好的學習方法,能讓你事半功倍,這里說說我學習單片機的經歷和方法。
我覺得學習單片機首先要懂得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模擬器,有興趣的朋友可關注一下。有了單片機教程板以後,先看下指導說明書,熟悉一下學習板,開卷有益。以後就得靠自己多練習了,將學習板與電腦連接好,先學會開發軟體的使用,然後從最簡單的流水燈實驗做起,按照你自己的意願控制流水燈,當你完成時,你會發現這是多麼愜意的事情。太好玩了,你會覺得這不是在學習,而是在玩,當你發現,單片機能夠按照你編寫的程序工作時,你會覺得非常興奮,比做什麼事情都開心,這樣你會慢慢迷上單片機,真的。不少網站上說搞定某個實驗,就恭維的告訴你一聲」恭喜你,學會了」自己學會了單片機,這有點可笑,這只能說明你算過關了,對單片機有了一定了解和會使用它了。但是單片機能完成的功能太多了,尤其是對外圍器件的控制,綜合起來能設計出許多意想不到的產品.因此除了入門外,精通可千萬別輕易說出口。
最後,在熟練掌握和應用後,那可以說對於單片機方面的硬體你已經入門了,剩下的就是自己練習設計開發各種課題,不斷的積累經驗。最終,自己完全設計具有個人風格的課題,產品,這樣你就是單片機高手拉。只要過了第一關,後面的路就好走多了,萬事開頭難,這大家可能都聽過。
有時候單片機的學習很單調,有些知識學起來很抽象,不容易理解,只能慢慢適應,一邊學習理論知識,一邊編寫程序,將程序刷入單片機進行調試,通過這種方式才能更快速的學習單片機。要堅定自己的學習信心,在付出持之以恆的努力,我相信自己能進一步加深對單片機的了解,在單片機的學習道路上走得更遠!
;