前言:中文期刊網精心挑選了單片機程序設計范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
單片機程序設計范文1
摘要:通過對鼠標底層通信原理及協議的深入分析,探討了鼠標在80c196單片機系統中的應用價值與可行性,并介紹了鼠標接口軟件設計的原理及方法,給出了80c196單片機與microsoft鼠標的具體接口程序。
送信息時,第三個字節為一個完整的信息報告。但80c196每接收到一個字節,就產生一次中斷,然后根據當前字節是否大于40h確定其性質。若是信息報告的首字節,則還要進一步通過有效性檢驗后保存;若不是首字節,則必須經過一系列檢驗后保存起來。收到三個字節后立即進行命令分析和執行。具體處理過程可參看源程序。用戶模塊通過特定接口模塊(圖2(b))獲得鼠標當前位置和按鈕狀,并可通過進位標志c=0/1判斷鼠標是否安裝。
jlt goud
單片機程序設計范文2
摘要:討論如何利用軟件控制LM3033B-0BR3液晶顯示模塊時序,采用C51語言編程,驅動液晶模塊實現并行傳輸方式的字符、漢字以及圖形顯示。具體闡述了LM3033B-0BR3液晶顯示模塊與單片機AT89S52的并行接口電路和軟件編程方法。
關鍵詞:LM3033B-0BR3液晶顯示模塊;ST7920控制器;AT89S52單片機;C51編程
中圖分類號:TN40文獻標識碼:A
Parallel Interface Technique between Chinese Graphic 12864 Dot Matrix LCD Module and 51 Singlechip and C51 Programming
LI Zhi-guang1,2,LI Xiao-quan3,HUAI Jun-xia1,2
(1.Department of Applied Physics, Hebei University of Technology, Tianjin 300130, China;2.Shenzhen Topway Technology CO.,LTD., Shenzhen 518057, China; 3.Tianjin Light Industry Design Institute,TianJin 300193,China)
Abstract: How to control the time sequence of LM3033B-0BR3 LCD module by C51 programming was discussed in this paper. In this way the LCD module was driven by parallel communication and the characters and graphics could be displayed well. The parallel interface circuit and the soft design between LM3033B-0BR3 LCD module and AT89S52 were narrated in detail.
Keywords:LM3033B-OBR3 LCD module;ST7920 controller;AT89S52 single chip micyoco; C51 programming
引言
顯示器是人類與應用設備溝通的重要界面,近年來,隨著電子技術的飛速發展,液晶顯示技術在實際生活中得到了廣泛應用。液晶顯示模塊以其微功耗、體積小、顯示內容豐富、模塊化以及接口電路簡單等諸多優點在科研、生產和產品設計等領域中發揮著越來越重要的作用 [1-2]。LM3033B系列液晶顯示模塊是深圳TOPWAY公司生產的中文顯示模塊中的一員。采用了臺灣的ST7920控制芯片,并提供了中文字庫,為中文顯示開發方面帶來了更多的方便。本文以LM3033B-0BR3為例介紹了12864點陣液晶顯示模塊的引腳、結構、功能,詳述了與AT89S52單片機的硬件接口電路及有關軟件編程方法。
1 LM3033B-0BR3特點及操作
1.1字符顯示
每屏可顯示4行8列共32個16×16點陣的漢字,每個顯示RAM可顯示1個中文字符或2個16×8點陣全高ASCII碼字符,即每屏最多可實現32個中文字符或64個ASCII碼字符的顯示。內部提供128×2字節的字符顯示RAM緩沖區(DDRAM)。字符顯示是通過將字符顯示編碼寫入該字符顯示RAM實現的。根據寫入內容的不同,可分別在液晶屏上顯示CGROM(中文字庫)、HCGROM(ASCII碼字庫)及CGRAM(自定義字形)的內容。三種不同字符/字型的選擇編碼范圍為:顯示自定義字型其代碼分別是0000H、0002H、0004H和0006H共4個,顯示半寬ASCII碼字符為02H~7FH,A1A0H~F7FFH顯示8192種GB2312中文字庫字形。字符顯示RAM在液晶模塊中的地址80H~9FH。字符顯示的RAM的地址與32個字符顯示區域有著一一對應的關系,其對應關系如表1所示[3]。
1.2圖形顯示
繪圖顯示RAM提供64x32個位元組的記憶空間(由擴充指令設定繪圖RAM位址),在更改繪圖RAM時,由擴充指令設定GDRAM位址先設置垂直位址,再設置水平位址(連續寫入兩個位元組的資料來完成垂直與水平的坐標位址),再寫入兩個8位的資料到繪圖RAM,而位址計數器(AC)會自動加一,整個寫入繪圖RAM的步驟如下:
a.關閉繪圖顯示功能(在寫入繪圖RAM期間,繪圖顯示必須關閉)[4];
b.先將垂直的位元組(Y)寫入繪圖RAM位址;
c.再將水平的位元組(X)寫入繪圖RAM位址;
d.將D15~D8寫入到RAM中;
e.將D7~D0寫入到RAM中。
圖1 繪圖RAM與屏幕顯示區域的對應關系
1.3 LM3033B-0BR3的操作指令
LM3033B-0BR3提供兩套控制命令:基本指令集和擴充指令集?;局噶罴藢σ壕M3033B-0BR3的基本操作,如判斷控制器忙標志、清除顯示、設定顯示的地址、寫數據和讀數據等。而擴充指令集則包括設置睡眠模式,設置圖形顯示、設置反白、設置滾動等功能,可以進一步滿足低功耗的需求,使顯示效果更豐富,為使用者提供更方便的環境。
單片機對LM3033B-0BR3的操作過程為:單片機先確認ST7920內部處于非"忙"狀態。即讀取BF位,當BF為0時,LM3033B-0BR3才可接收新的指令或數據。在操作時,LM3033B-0BR3在單片機的時鐘信號的控制下,數據通過數據線傳送給LM3033B-0BR3,當LM3033B-0BR3成功接收到數據后,轉入內部時鐘控制,封鎖I/O口緩沖器,置"忙"標志。ST7920根據接收數據中的RW和RS位判斷所接收到的是數據還是指令,并進行相應的處理。處理完成后,撤消I/O口緩沖器的封鎖,"忙"標志清零。
2 單片機與LM3033B-0BR3的接口電路
一般液晶顯示模塊與單片機的接口分為直接訪問方式和間接控制方式,間接控制方式還分為一位串行、4位并行以及8位并行。本文采用的AT89S52和液晶LM3033B-0BR3模塊的接口電路如圖2所示。由于LM3033B-0BR3采用并口通信,外接電路簡單,與單片機連接采用間接連接的方法,即用I/O口直接與LCD數據線和控制線相連,其特點是簡單、直觀、操作方便。在此電路中,采用軟件模擬液晶的時序,達到正確顯示的目的。
圖2 AT89S52和液晶LM3033B-0BR3模塊的接口電路及LM3033B-0BR3引腳功能
3 液晶顯示C51程序設計
對LM3033B-0BR3的軟件編程采用Medwin 語言開發,主要包括兩部分,一部分是給液晶寫指令,另一部分是給液晶寫數據。有了這2個基本的子程序,就可以構造出各種實用的顯示子程序。由于液晶內部自帶漢字模塊,只需發送漢字對應的代碼就可以實現漢字的顯示,其代碼可以在ST7920模塊的資料中查找。對于圖形和曲線顯示的原理類似,只需要設置好相應的水平地址和垂直地址,并把相應的圖形編碼寫入液晶模塊,就可顯示出所要顯示的內容[5]。
寫命令到LCD:
void WRCMD(uchar cmdcode)
{
chk_busy();
RS=0;
RW=0;
E=1;
lcd_bus=cmdcode;
E=0;
}
寫數據到LCD:
void WRData(uchar Dispdata)
{
chk_busy();
RS=1;
RW=0;
E=1;
lcd_bus=Dispdata;
E=0;
}
初始化程序:
void Init()
{
RES=1;
RES=0;
delay(1);
RES=1;
delay(1);
WRCMD(0x30); //選擇8位并行
WRCMD(0x30); //選擇8位并行
WRCMD(0x0c); //開顯示(無游標、不反白)
WRCMD(0x01); //清除顯示
WRCMD(0x04); ///shift=0,AC加1
}
4 結論
在單片機與液晶的接口中,關鍵是要滿足液晶的時序要求;在軟件編程中,關鍵是要進行正確的初始化、操作及寫入顯示內容的代碼。以上接口電路和相應的程序已經通過調試,并在實際中得到應用。由ST7920構成的LM3033B-0BR3液晶顯示模塊與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結構或顯示程序都要簡潔得多。因此,LM3033B-0BR3液晶顯示模塊將得到廣泛的應用。
參考文獻
[1]楊應平,石城,蔣愛湘,李振華. 圖形點陣液晶顯示模塊與51系列單片機的接口設計[J].現代顯示, 2006,(5):41-45.
[2]李良成,張永順,張. 基于MSP430單片機的液晶顯示[J]. 現代顯示,2007,(5):32-33.
[3]深圳市拓普微科技開發有限公司. LM3033B(8位并行接口)液晶顯示模塊應用參考[R]. 2006.1.
[4]洪家平. 中文圖形顯示控制芯片ST7920的原理與應用[J]. 國外電子元器件, 2005,(1):38-40.
單片機程序設計范文3
【關鍵詞】單片機 理論與實驗 課程設計 協同教學
【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2016)31-0243-01
引言
單片機理論、實驗和課程設計相關課程體系是各高等院校電子電氣信息類工科專業基礎專業課程設置的重要組成部分,為大學生深入學習掌握單片機的基本原理,設計方法,實踐應用等打下基礎。大多數理工科高校開設這些課程,對學生進行綜合培養。對于單片機的理論與實踐教學,既可以選擇匯編語言,也可以選擇C語言進行。在高校的實際教學工作中,大多數老師是選擇匯編語言進行教學的,因為從匯編語言入手能更好的掌握單片機的硬件資源使用原理等,也有部分老師是直接使用C語言進行教學,認為匯編語言編程過于繁瑣,而C語言編程能夠在將來的實踐工作中得到更好的應用。本文通過總結作者多年來在單片機相關課程教學積累的經驗和教學研究心得,以51單片機理論、實驗和課程設計教學為例,對如何在使用不同編程語言進行繁瑣和復雜的教學中使學生更好地掌握單片機知識體系進行了探討。
1.單片機理論教學
1.1 匯編語言理論教學
單片機是一個把中央處理器CPU、數據存儲器RAM、程序存儲器ROM、并行IO接口、串行IO接口、定時器計數器、時鐘振蕩電路等集成在一起的控制芯片,硬件資源簡單且豐富,也易于擴展電路,所以單片機的學習側重點首先在于掌握硬件資源使用方法。因為匯編語言實際上是CPU能夠識別的機器碼的助記符,從匯編語言入手開始教學,能夠使學生更好地掌握單片機的硬件資源使用原理。使用匯編語言編程可以很方便地對單片機存儲器地址直接進行存取操作,也能很方便地對存儲器地址進行整體安排分配,前提是對單片機硬件資源非常熟悉,能夠靈活調用。比如指令MOV、MOVC和MOVX可以分別訪問單片機內部的數據存儲器、程序存儲器和外部擴展的數據存儲器。匯編編程的缺點在于進行算術運算和邏輯判斷跳轉等比較繁瑣。
1.2 C語言理論教學
國內的單片機C語言程序設計教程多數的編排都會在前面開始的章節介紹單片機硬件資源以及匯編語言指令系統,然后以更大篇幅講述C語言程序設計語法和針對硬件資源的編程。針對單片機的C語言程序設計語法與計算機C語言高級程序設計編程語法基本一致,而針對硬件資源的指令又類似于匯編語言指令系統,所以應該可以說單片機C語言程序設計是計算機C語言高級程序設計和匯編語言指令結合體。要掌握好C語言編程依然要對于單片機的硬件資源理解透徹并能靈活調用。但是C語言針對硬件資源的指令與匯編語言指令比較起來卻不如匯編那么直觀,也不如匯編指令那樣更加有助于單片機硬件體系結構的理解。
為了使初學者能夠更好地理解單片機硬件體系結構,掌握硬件資源的調用,選擇匯編語言進行教學顯然是更加合適的。
2.單片機實驗教學
單片機作為電子電氣信息類專業的一門專業基礎核心課程,比某些專業基礎課程如電路原理、數字電子技術、模擬電子技術等更加注重編程實踐的練習。單片機實驗課程一般都是配套安排在單片機理論課程的下半學期,這樣能夠更加有助于理論的理解和掌握。作為理論課程的配套課程,單片機實驗課程在教學上必須與理論課程保持一致性,選擇匯編語言進行實驗教學就是必然和最好的選擇。
在實驗設備的選擇上,學院實驗室早期購置過星研單片機Star ES51實驗箱,后來又購置了大批光佑STC開發板,可以兩者選其一。
早期的單片機實驗都是集中在實驗室進行,兩人共用一臺實驗箱,通過連線和讀寫配套程序仿真運行來進行實驗。這樣的實驗有一些明顯的不足,比如配套程序調用了很多鍵盤顯示的子程序,而這些子程序沒有直接給出來,實驗箱的很多硬件電路連接也沒有給出詳細原理圖,所以造成了實驗結束后多數學生也是對實驗原理和編程似懂非懂的結果。
有了STC開發板后,每個學生可以分配一塊開發板,各自進行單片機的編程仿真實驗,還可以將開發板帶回宿舍課后繼續練習,實驗可以更方便地進行。實驗開發板的原理圖清晰,例子程序豐富,通過讀寫配套例程可以較好的掌握單片機的基本原理。
顯然使用匯編語言選擇STC開發板進行單片機實驗是實驗教學的最好安排。實驗課程的要求注重于單片機基礎知識的掌握和硬件資源的調用。
3.單片機課程設計教學
單片機課程設計的安排是為了進一步提高學生的實踐能力,所以課程設計的教學就不再局限于基本原理的掌握,而是必須達到更高程度的實踐效果。匯編語言編程有利于對基礎知識的理解和單片機硬件資源的掌握,卻不利于復雜邏輯的處理。所以在學生已經基本掌握了基礎理論的情況下,課程設計選擇C語言編程,可以讓學生更加方便的進行復雜程序的編寫。
單片機課程設計實踐項目內容的安排上,必須注重單片機內部和外部硬件資源的綜合調用,以便完成具有實際意義的綜合程序的編寫。課程設計實踐項目安排了可以綜合調用單片機I/O口資源進行鍵盤掃描數碼管顯示以及中斷處理的實現計算器功能的程序編寫,和能夠使用I2C總線進行通訊的AD/DA處理的程序編寫。這兩種程序的綜合度和復雜度都遠遠大于單片機實驗題目的要求。從實踐結果來看,通過這種綜合性復雜程序的編寫練習,能夠大大提高學生的開發設計實際項目的動手實踐能力。
結束語
在我國大力實行人才戰略強調人才培養的大環境下,本文作者所在高校也響應國家號召加強本科生培養,實施卓越工程教育,取得了積極可喜的成績。本文積極探索和提高單片機理論實驗課程設計協同教學的方法,取得了長足的進步和發展,也得到了學生的高度認同。以此方法培養出來的本科生在參加全國大學生電子設計競賽的過程中也取得了驕人的成績。本文作者經驗和方法也可以為兄弟院校相關專業的教學提供參考和借鑒。
參考文獻:
[1]李朝青.單片機原理及接口技術(第4版),北京航空航天大學出版社,2013.7
[2]郭天祥.新概念51單片機C語言教程――入門、提高、開發、拓展, 電子工業出版社,2009.1
[3]彭偉.單片機C語言程序設計實訓100例――基于8051+Proteus仿真(第2版), 電子工業出版社,2012.10
單片機程序設計范文4
關鍵詞:單片機;自動控制系統;開發
1 前言
基于單片機的特點,單片機在自動控制系統開發中得到了重要應用,不但提高了自動控制系統的性能,同時也滿足了自動控制系統的開發需求??紤]到單片機的應用情況,在單片機開發過程中認真總結經驗,做到掌握單片機的特點,重點做好單片機的開發。結合單片機開發實際,要想提高單片機開發的實效性,就要從明確功能目標、合理設置硬件電路和做好控制程序設計等方面內容。因此,在單片機開發過程中,應重點做好以上幾方面工作,保證單片機開發取得實效。
2 單片機開發應明確功能目標
在單片機開發過程中,單片機作為自動控制系統的核心部件,決定著自動控制系統的功能?;谶@一認識,在單片機開發過程中,明確功能目標是十分必要的。為此,應從以下幾個方面入手:(1)單片機開發應確定開發方向。由于單片機的功能較多,以單片機為基礎可以開發出多種自動控制系統?;趩纹瑱C的這一特點,在單片機開發過程中,只有確定開發方向,并在開發方向上做好單片機配置,才能保證單片機開發達到預期目標。因此,確定開發方向,是保證單片機開發取得實效的關鍵;(2)單片機開發應確定自動控制系統功能。在單片機開發過程中,除了要明確開發方向之外,在開發方向框架下確定自動控制系統的功能,是滿足單片機開發需要的重要步驟,關系到單片機開發的整體質量,并決定了單片機開發能否實現預定功能。因此,確定自動控制系統功能,是單片機開發的關鍵;(3)單片機開發應把握開發原則。單片機作為自動控制系統的重要元件,不但決定了自動控制系統的功能,同時也是自動控制系統開發的關鍵。因此,在開發過程中應把握高效性、全面性和合理性的原則,保證單片機開發能夠取得積極效果,進而滿足單片機開發需要,使單片機開發取得積極效果。
3 單片機開發應合理設置硬件電路
在單片機開發過程中,硬件電路的設定關系到單片機控制功能的實現,對單片機開發具有較強的決定作用?;趩纹瑱C開發實際,合理設置硬件電路,是保證單片機開發取得實效的關鍵措施。為此,單片機開發應將設置硬件電路作為重要內容,具體應從以下幾個方面入手:(1)單片機開發應根據功能需要合理設置硬件電路。在單片機開發過程中,單片機的硬件電路布置決定著單片機的整體功能。基于這一特點,只有根據功能需要合理設置硬件電路,并保證硬件電路的合理性,才能提高單片機開發的整體質量,進而滿足單片機開發需要;(2)單片機開發在硬件電路設置中應優化電路板空間。由于單片機的電路板空間有限,要想實現更多的控制功能,就要在電路設置中對電路板空間進行優化,進而實現單片機的其他功能。因此,合理優化電路板空間,是保證單片機開發質量的關鍵,對單片機開發具有重要意義;(3)單片機開發應保證硬件連接質量。在單片機開發過程中,為了保證硬件電路質量滿足實際需要,應對硬件連接的緊固程度進行確認,保證單片機的硬件連接質量達標,避免硬件脫落造成單片機的功能無法實現。因此,對硬件連接質量進行檢查是十分必要的。
4 單片機開發應做好控制程序設計
在單片機開發過程中,控制程序設計是關系到單片機開發質量的關鍵?;谶@一認識,做好控制設計是滿足單片機開發的重要措施。以下為熱敏電阻溫度計的控制程序設計實例:
系統擴展了一個按鍵,接于IOA15,當按鍵按下時,就進行A/D轉換初始化,并進行4次A/D轉換,SPCE061A的A/D轉換結果在高10位,每次將其移入低10位再計算4次平均值作為AD有效結果返回;為了提高準確度,變量TempAD、Temper都采用浮點數,計算完成用語音將溫度值報出來。由于在放音時播放函數會改變一些參數,為了穩定起見,在每次A/D轉換前都做一次初始化。
由于每個熱敏電阻的特性并非一樣、與熱敏電阻串聯的固定電阻的不準確等原因,每支溫度計在整個測量范圍內至少找5點進行校正,并適當的修改參數以達到最佳狀態。
A/D轉換程序:
.PUBLIC _ReadAD _ReadAD: .proc R2=4 //共進行4次轉換
R3=0
TestLoop:
R1=[P_ADC_MUX_Data] //進行一次AD轉換
R1=0x8000 TempConverLoop:
TEST R1,[P_ADC_MUX_Ctrl] JZ TempConverLoop //轉換完成?
R1=[P_ADC_MUX_Data] //讀取AD轉換值
R1=R1 LSR 4 //將AD值移到低10位
R1=R1 LSR 2 R3+=R1 //四次A/D值累加
R2-=1
JNZ TestLoop
R3=R3 LSR 2 //結果除以4,求4次A/D值的平均值
R1=R3 //R1-------A/D返回值
RETF
ENDP
從上述程序來看,單片機在控制程序設計過程中,應根據自動控制系統的功能進行設計,并保證程序的準確性,使控制程序能夠全面反映自動控制系統功能。
5 結論
通過本文的分析可知,結合單片機開發實際,要想提高單片機開發的實效性,就要從明確功能目標、合理設置硬件電路和做好控制程序設計等方面內容。因此,在單片機開發過程中,應重點做好以上幾方面工作,保證單片機開發取得實效。
參考文獻:
[1]肖洪兵.跟我學用單片機[M].北京:北京航空航天大學出版社,2002(08).
[2]何立民.單片機高級教程(第1版)[S].北京:北京航空航天大學出版社,2001.
[3]趙曉安.MCS-51單片機原理及應用[S].天津:天津大學出版社,2001(03).
[4]李廣第.單片機基礎(第1版)[S].北京:北京航空航天大學出版社,1999.
單片機程序設計范文5
關鍵詞: 單片機應用技術 教學 改革“五化”
近年來,我在從事計算機專業《單片機應用技術》課程的教學工作時,愈來愈感受到單片機應用技術的教科書與現狀之間的差距逐漸加大。為此我特提出五個方面的問題,以鑒同行。
一、教學內容應該“硬件化”
這是個觀念問題。學校中的大多數教師把《單片機原理及應用》這門課當做一門“匯編語言”來教,往往陷在指令系統這一章中拔不出來,既浪費了大量課時,又嚴重偏離了方向。
實踐證明,單片機應用的工夫不在對單片機本身的掌握上,而在對單片機控制對象的了解上。搞單片機開發的成功者,往往不是計算機專業畢業的人,而是某行業中搞自動化控制的人。即熟悉電路硬件的比熟悉程序軟件的干得更有出息。
我們一定要把這門課的重點放在“應用”兩字上。對指令系統,我認為花4個課時就足夠了,更應該完全刪除教材中關于單片機程序設計結構的專門討論章節。要知道游泳是在水中學會的,根本沒有必要在岸上花大量的課時去訓練劃水的基本動作。一句話,在這門課的教學過程一定要突出硬件的地位,樹立軟件為硬件服務的觀念。
二、存儲器擴展已經“單片化”
在計算機技術發展的初始階段,存儲器曾是個昂貴的資源,而今的存儲器制造技術已今非昔比。單片達兆位級的EPROM、FlashROM已比比皆是,RAM的單片容量則更不用說了。因此像8051單片機這類最大只支持64K存儲空間的機種,存儲器一片就能到位。這個技術現狀反過來指導我們,在教學時可刪除現有教科書中大篇幅的多片存儲器擴展技術(這是一個突出的知識陳舊化問題)。
教過這門課的老師都知道,多片存儲擴展時,如果不用全地址譯碼法,則會造成同一物理地址空間映射多個邏輯地址空間甚至出現存儲器地址之間的交疊。在教學中這部分內容是非常難于讓學生理解的,在工程中也會給程序設計帶來不便,還可能留下隱患。而存儲器“單片化”結構,可徹底避免這一現象。所以,扔掉“單片機存儲器擴展”這一單元,不僅原來的難題不再是難題,而且可節約大量課時。
三、程序設計可以“模塊化”
歷來單片機以“短小精干”著稱,因此開發應用系統十分珍惜資源(包括硬件與軟件),十分強調簡短。為此開發人員往往為“簡之再簡”而絞盡腦汁,有時不得不用一些“技巧”,使得設計出來的程序可讀性差,移植性差。所以在這個領域以前是不提“結構化”設計的。
現在由于硬件技術的發展,有些情況正在變化。從應用開發的環境來看,應用領域越來越廣泛、技術更新越來越快、開發周期必須越來越短。因此,開發人員不可能在每一產品的程序設計上精雕細琢地花費大量時間,更何況這個領域主要是非計算機專業的人員在工作。面對這種形勢,要求單片機程序設計也要能結構化、模塊化、乃至對象化,以便實現程序的交流和重用。
從單片機技術本身的發展來看,資源的不斷擴大,已經允許我們在單片機這塊“彈丸之地”上做一些像桌面系統上的事情。
程序模塊化就是子程序化,子程序化就意味著堆棧的開銷加大。以往,8051單片機的內存,包括堆棧在內用戶真正可用的只有80個字節?,F在我們可以用像8052這樣的產品,用戶實際可用的內存一下又多了128個字節。像臺灣華邦公司W77E58等51系列型號,片內還帶1024字節的RAM供用戶使用。
程序模塊化當然還會增多“履行公務”性的代碼,即“過門關節”變多。以往的觀點,這會使程序的運行時間加長,與單片機宗旨相違背?,F在我們可以選用主頻33MH。甚至60MH的單片機,還怕來不及嗎?另外一個因素是存貯芯片的價格平民化,使我們不再怕程序太“臃腫”。
所有這些為我們在單片機應用領域里引進“結構化語言”的思想提供了有利條件。模塊化在教學上的效益就是:利用現有的成熟模塊,學生可以立即體驗單片機應用的成果。體驗完后,教師提出一些小要求,學生作些小調整,活動來些小變化……單片機教學不就成了“寓教于樂”的形式了嗎?
四、課堂教學必須“實時化”
單片機技術近年的飛速發展,特別是器件的層出不窮,要求教師時刻把準“脈搏”,及時地根據技術現狀對教學內容作出調整與取舍。
例如,在給學生介紹8051系列單片機的ROM形式時,必須及時地介紹“一次寫入式”OPT型的PIC系列單片機及帶“閃爍存儲器”的AT89系列單片機。因為它們的出現,極大地改變了單片機的應用狀況。
同理在給學生講8051的串行口時,必須及時地介紹點對點通信技術及多機通信技術,因為提供單片機與其他計算機智能儀表或設備的數據交換。是近來的流行趨勢在給學生介紹單片機的人機界面時一定要介紹點陣式液晶顯示技術,因為它的出現使單片機亦能做到“圖文并茂”;在給學生講解I/O擴展時,一定要介紹IA2C總線,因為這是一種僅兩條線的片間總線,它的應用對硬件設計模式將產生重大影響。
再有,在給學生講A/D、D/A轉換技術時,一定要介紹V/F、F/V轉換技術,因為頻率形式的量,是介于模擬與數字之間的量,在自動控制領域中有極廣泛的應用。
五、實驗調試應該“符號化”
單片機程序設計范文6
【關鍵詞】單片機;仿真調試
在應用單片機開發設計電子產品的時候,絕大多數的設計人員都要使用仿真器。設計者在編制調試程序的時候,可以通過仿真器跟蹤單片機內部程序的運行流程,檢查程序的每一步執行的情況都否滿足設計者的初衷。同時,設計者可以直觀全面地得到單片機內部程序運行中的各項參數和數據,進而判斷所設計軟件程序的正確性和有效性,大大提高了程序設計的效率??梢哉f,仿真器是設計人員調試程序最有力的助手。
仿真器固然有很多的優點,筆者這里卻另辟蹊徑,在程序設計調試過程中拋開仿真器,單獨談一談單片機的“在線仿真調試”方案,僅供單片機愛好者參考。
所謂的單片機的“在線仿真調試”方案,實際上就是我們把測試程序燒入單片機芯片中,讓單片機脫離仿真器獨立運行。在運行過程中,設計者可以通過合理有效的手段獲取單片機實際運行過程中器件的一些狀態和必要數據,檢查單片機運行的程序是否符合設計要求,即所謂的“在線仿真調試”。
這種“在線仿真調試”的手段雖然得到的數據信息有限,但是也能得到一些必要的和關鍵的信息,對于熟練的設計人員也是可行的。獲取信息的手段包括檢查單片機外部連接發光二極管的狀態、數碼管或者液晶的顯示內容、串行通訊的必要數據等。設計者可以根據所得到的狀態或數據來驗證程序運行的正確性。如果程序設計有疏漏,設計者需要重新調整編輯軟件程序,燒入單片機后再次測試,直到圓滿完成開發任務。
要想做到“在線仿真調試”,必須滿足如下兩個條件:(1)單片機內部的程序存儲器具有FLASH功能,可以多次地把程序燒入單片機;(2)設計人員必須對所使用單片機的內部資源及周邊功能都比較熟悉,能夠迅速地編制出必要的測試程序。
從加快設計周期上講,有些新開發的產品與原有產品硬件相近,軟件功能差別也不大,開發任務時間又偏緊,設計人員也可以采用“在線仿真調試”的方式,即不必重畫仿真目標板,直接設計生產用的線路板,只是通過改動原有的軟件程序來適應新的產品要求。
從安全性上講,有些情況下直接連接仿真器運行很危險,如目標板上有強電接入,使得強電與仿真器之間沒有電氣隔離,容易損壞仿真器的硬件,即使把強電用隔離變壓器處理也不能保證絕對安全;有些場合程序運行時不允許中斷,例如,在動態測試傳動設備時,如果程序在斷點停止運行后會損壞相關設備,進而造成巨大的損失。這樣就必須用“在線仿真調試”來達到目的。
還有些無奈的情況,有些產品具有停電低功耗運行功能,這種低功耗工作方式仿真器無法實現仿真運行,只有脫機運行才能完成低功耗運行功能的測試工作;有些單片機廠家的單片機內部資源豐富,但是相應的仿真器很昂貴,動輒數萬元人民幣,租用和購買都不合適。如果研發項目需要幾個人共同開發,那么在研發初期無法實現人手一臺仿真器,就只有使用“在線仿真調試”的方式來節省研發設備的資金投入,并且可以不受場地限制,只需一臺計算機和一個目標板,再外加一個串行TTL/RS232接口通訊模塊就可以了。
“在線仿真調試”的方法給我們提供數據信息的方式有兩種:一種是應用于數據量較少的系統,直接借助目標板上的顯示器件(數碼管或者液晶)就可以獲取一些必要的信息,更有甚者,通過發光二極管也可以表達很多的狀態;另一種是應用于數據量較大的系統,設計者在程序中先把數據組織好,然后借助于單片機上的異步通訊接口,通過串行TTL/RS232接口通訊模塊把數據傳送給計算機,在計算機上分析所得到的數據。這就像使用仿真器調試程序一樣,通訊時就相當于使用仿真器運行程序至所設斷點處,所得數據就相當于仿真器所得到的相應寄存器及變量的數值,唯一的區別就是這里介紹的斷點是軟斷點,程序在執行斷點后還可以繼續運行。當然,設計者可以連續觀察多組數據,更好地分析程序運行的流程。
我們在利用通訊接口“在線仿真調試”的時候,應把數據組織得有一定的規律,這樣就可以迅速直觀地檢查運行結果,進而調整相應的程序段,為下一次的“在線仿真調試”做準備。這樣的“在線仿真調試”雖然每次都得把程序寫進單片機中,過程略顯繁瑣,但是所設置的軟斷點并不影響程序的連續執行,我們可以把多組數據放在一起比對查看,最大程度發揮“在線仿真調試”的優勢。
“在線仿真調試”,實質上就是設計者編制并運行測試程序,單片機在程序的運行過程中有效地給設計者反饋出必要的數據信息,然后通過有效地調整單片機的程序來達到最理想的結果。這就要求設計者的產品設計經驗豐富,處理問題時頭腦靈活,對程序運行過程中發生的異常情況心中有數,并在最短的時間調整程序來完成進一步的“在線仿真調試”。
以上僅是一家之言,僅供參考??傊O計人員在進行程序設計的時候,一定要靈活地選取最安全最方便最有效的方案,不必過于教條,最主要的是要不斷地積累經驗,在滿足產品設計要求的同時提升自己的價值。
【參考文獻】
[1]單片機原理系統設計與開發應用.中國科學技術大學出版社,1995.
[2]何立民.單片機高級教程.北京航空航天出版社,2000.