時間:2023-05-29 18:23:17
開篇:寫作不僅是一種記錄,更是一種創(chuàng)造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇單片機程序設計,希望這些內容能成為您創(chuàng)作過程中的良師益友,陪伴您不斷探索和進步。
[關鍵詞]:紅外遙控 解碼 單片機
1紅外遙控系統(tǒng)組成
通用紅外遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應用編/解碼專用集成電路芯片來進行控制操作,如圖1所示。發(fā)射部分包括鍵盤矩陣、編碼調制、LED紅外發(fā)送器;接收部分包括紅外接收器、光電轉換放大器、解調等。
2紅外遙控發(fā)射和接收原理
按下遙控器的某一個鍵,遙控器會發(fā)出一連串經過調制后的信號,這個信號經過紅外一體化模塊接收后,輸出解調后的數(shù)字脈沖,每個按鍵對應不同的脈沖,故識別出不同的脈沖就能識別出不同的按鍵。按鍵信息采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如圖2所示。
上述“0”和“1”組成的32位二進制碼經38kHz的載頻進行二次調制以提高發(fā)射效率,達到降低電源功耗的目的,然后再通過紅外發(fā)射二極管產生紅外線向空間發(fā)射,如圖3所示。
3單片機解碼程序設計
紅外一體化接收頭輸出信號連接到單片機外中斷輸入引腳,設置為下降沿中斷方式。引導碼解碼過程只解碼帶數(shù)據的引導碼,不對連發(fā)碼引導碼進行解碼。這就要求使用過程中,長按操作不起作用。
關鍵解碼流程設計如圖4所示。
中斷解碼完成后,完成酥局夢弧V鞒絳蛑脅檠到完成標志,就對解碼數(shù)據進行反碼校驗并進行對應的處理。
4效果與應用
以上設計的單片機解碼程序,成功應用于萬年歷、計算器、電機控制、旋轉LED廣告燈燈各種單片機項目教學過程中,完全取代矩陣鍵盤進行操作,電路簡單,程序可靠。稍有不足的是要占用一個外中斷,并且在中斷解碼操作時,會占用CPU時間。
對于時序有嚴格要求的項目應用,可以考慮“外中斷+定時器”的方式,在每個下降沿時進入中斷,對數(shù)據進行處理。兩次進中斷的時間間隔采用定時器來記錄,省略此前中斷解碼流程中設計的各種延時和等待操作,減少時間占用,提高CPU利用率。
參考文獻:
關鍵詞 單片機;C語言;TG12864;液晶顯示
中圖分類號:TP271 文獻標識碼:A 文章編號:1671—7597(2013)031-017-02
1 TG12864液晶原理
1.1 TG12864顯示原理
點陣式LCD其顯示原理是控制LCD點陣中點的亮暗,亮和暗的點陣按一定規(guī)律可以組成漢字,組成一幅圖形和曲線等。
1.2 TG12864內部結構及相關指令
1.2.1 TG12864內部結構
TG12864是一種圖形點陣液晶顯示器,它主要由行驅動器、列驅動器及128×64全點陣液晶顯示器組成,有20個外部引腳。可以由單片機控制顯示8×4個16×16點陣漢字。
1.2.2 TG12864相關指令
該類液晶顯示模塊的指令系統(tǒng)比較簡單,總共有七種。
1)顯示開關指令。
功能:設置屏幕顯示開/關,DB0=1,開顯示;DB0=0,關顯示。DB7~DB0=0x3f,開顯示;DB7~DB0=0x3e,關顯示。
2)顯示起始行設置。
功能:顯示起始行是由Z地址計數(shù)器控制的,該命令自動將A0~A5位地址送入Z地址計數(shù)器,起始地址可以是0~63范圍內任意一行。Z地址計數(shù)器具有循環(huán)計數(shù)功能,用于顯示行掃面同步,當掃描完一行后自動加一。DB7~DB0=0xc0,顯示從0行開始。
3)頁設置。
功能:頁地址存儲在X地址計數(shù)器中,A2~A0可表示8頁,讀寫數(shù)據對頁地址沒有影響,除本指令可改變頁地址外,復位信號RST可把頁地址計數(shù)器內容清零。DB7~DB0=0xb8,顯示從0頁開始。
4)列地址設置。
功能:列地址存儲在Y地址計數(shù)器中,讀寫數(shù)據對列地址有影響,在對DDRAM進行讀寫操作后,Y地址自動加一。DB7~DB0=0x40,顯示從0列開始。
5)讀狀態(tài)。
功能:讀忙信號標志位BF,復位標志RST以及顯示狀態(tài)(ON/OFF)bf=1,內部忙;bf=0,內部空閑;res=1,正處于復位初始化狀態(tài),res=0,正常狀態(tài)。
6)寫數(shù)據。
寫數(shù)據到DDRAM,DDRAM是存儲圖形數(shù)據的,寫數(shù)據到DDRAM前,要先執(zhí)行設置頁地址及設置列地址命令。
7)讀數(shù)據。
從DDRAM讀數(shù)據,讀數(shù)據前,要先執(zhí)行設置頁地址及設置列地址命令。
2 應用程序設計
#include
#define uchar unsigned char
#define uint unsigned int
#define disp_on 0x3f //定義開顯示
#define disp_off 0x3e //定義關顯示
#define dis_x 0xb8 //定義顯示0頁
#define dis_y 0x40 //定義顯示0列
#define dis_z 0xc0 //定義顯示0行
#define db P0
sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;
sbit cs1=P2^3;
sbit cs2=P2^4;
sbit rst=P2^5;
sbit bf=P2^6;
sbit res=P2^7;
uchar code tab[]={/*青海工業(yè)職業(yè)學校*/0x01,0x00,0x01,0x00,0x3F,0xF8,0x01...};
void check_busy(void);
void chushihua(void);
void delay(uint);
void wr_lcd(uchar,uchar);
void clear_lcd(void);
void display(void);
void _disp(uchar,uchar,uchar,uchar,uchar,uchar *);
void main() //主程序
{chushihua();display();while(1);}
void chushihua(void) //液晶初始化函數(shù)
{rst=0;delay(50);rst=1;
cs1=1;cs2=1;
wr_lcd(0,disp_off);
wr_lcd(0,disp_on);}
void wr_lcd(uchar i,uchar j) //寫液晶函數(shù)
{check_busy();
rs=i;rw=0;
db=j;e=1;
delay(1);
e=0;}
void check_busy(void) //檢測忙閑函數(shù)
{db=0xff;
rs=0;rw=1;
delay(1);
e=1;
while(res||bf==1);
e=0;}
void clear_lcd(void) //清屏函數(shù)
{uchar i,j;cs1=1;cs2=1;
wr_lcd(0,disp_on);
for(j=0;j
{wr_lcd(0,dis_x+j);
wr_lcd(0,dis_y);
wr_lcd(0,dis_z);
for(i=0;i
{wr_lcd(1,0x00);
wr_lcd(1,0x00);}
}
}
void _disp(uchar ye,uchar lie,uchar hang,uchar ls,uchar zs,uchar *ptr1) //液晶顯示函數(shù)
{ uchar i,j,m,n,a;
wr_lcd(0,disp_on);
for(m=0;m
{for(n=0;n
{for(j=0;j
{ wr_lcd(0,dis_x+j+ye+m*2); //顯示起始頁設置
wr_lcd(0,dis_z); //顯示起始行設置
wr_lcd(0,dis_y+lie+n*ls); //顯示起始列設置
a=j*ls+n*2*ls+m*zs*2*ls; //控制字的顯示數(shù)組位
for(i=0;i
{wr_lcd(1,*(ptr1+a+i));}
}
}
}
}
void display(void) //顯示主程序
{
uchar *ptr;
clear_lcd();
cs1=1;cs2=0; //開左屏顯示青海工業(yè)
ptr=&tab[0]; //取數(shù)組首地址
_disp(0,0,1,16,4,ptr); //顯示從0頁、0列開始,顯示一行,每個字16列顯示2個字
cs1=0;cs2=1; //開右屏顯示職業(yè)學校
ptr=&tab[128]; //取數(shù)組的第128個元素地址
_disp(0,0,1,16,4,ptr); //顯示從0頁、0列開始,顯示一行,每個字16列顯示2個字
}
void delay(uint x) //延時函數(shù)
{uchar i;
for(;x>0;x--)
for(i=0;i
以上程序,如果要從3頁,4列開始,在左屏顯示2行,每個字16列,共顯示4個字青海工業(yè),只要將顯示主程序改為:
void display(void)
{uchar *ptr;
clear_lcd();
cs1=1;cs2=0;
ptr=&tab[0];
_disp(3,4,2,16,2,ptr);}
上述液晶顯示程序,應用起來靈活、方便,要將漢字顯示在液晶的什么位置,只需修改顯示主程序中_disp(0,0,1,16,4,ptr)函數(shù)中的數(shù)據即可。
3 結束語
用C語言程序來對液晶顯示模塊進行編程控制,編程效率高,思路清晰,處理問題靈活方便,相對匯編語言有明顯的優(yōu)勢。
關鍵詞 單片機 C語言 規(guī)范性
中圖分類號:G424 文獻標識碼:A DOI:10.16400/ki.kjdkz.2015.08.062
On the C Language Programming Normative in MCU Course
HUANG Xiaofeng
(Advanced Vocational Technical College, Shanghai University of Engineering Science, Shanghai 200437)
Abstract: For "SCM C language programming" teaching in programming problems, he attached importance to guide students in teaching practice modular, standardized program design emphasizes standardized programming for students to understand the structure and function of the program's important role and throughout the Teaching has always been, so that students micro controller applications has been greatly improved.
Keywords: SCM; C language; normative
0 引言
單片機技術課程一直以來作為高職計算機應用、電氣自動化、應用電子技術等專業(yè)的主干課程。通過對單片機技術職業(yè)崗位需求分析可知,高職畢業(yè)生從事與單片機相關的職業(yè)技術崗位,主要有硬件測試工程師、軟件測試工程師、硬件設計助理工程師、軟件設計助理工程師等工作崗位。目前高職單片機課程多以MCS51系列為主,學生踏入工作崗位后,會涉及到其他各種類別的單片機,如AVR、MSP430、PIC等。由于軟件編程靈活性強,對邏輯思維能力要求高,在單片機教學中學生普遍反映編程時無從下手,程序調試錯誤百出,面對調試中出現(xiàn)的問題不知如何修改驗證,上機編程的教學實踐過程更多則淪為代碼錄入。本文針對“單片機C語言程序設計”教學中存在的編程困擾,提出在教學實踐中重視引導學生進行模塊化、規(guī)范性程序設計,培養(yǎng)學生良好的編程習慣,提高程序的易讀性、可移植性,為將來步入職業(yè)技術崗位打下堅實基礎。
1 單片機C語言編程的規(guī)范性
以Kei C51軟件編程為例并結合多年的教學經驗,將單片機C語言編程的規(guī)范性主要歸納為:(1)文檔的規(guī)范性;(2)變量、函數(shù)的規(guī)范性;(3)程序書寫的規(guī)范性;(4)模塊化編程等四個方面。
1.1 文檔的規(guī)范性
任何一個單片機C程序都應該在工程下進行編譯和管理,一個工程可以包含多個C文件,不同的C文件分別實現(xiàn)一個相對獨立的功能。在單片機課程教學中部分學生一開始就忽略了工程的概念,或者通過一個C文件試圖實現(xiàn)所有功能,這在功能較為單一的系統(tǒng)中是可行的,但稍微復雜一點的系統(tǒng)要想通過一個程序來完成其所有功能,程序的可讀性和可移植性就會變差。因此,在編程之初就要強調工程對C程序源文件的管理作用,以及工程所包含的各個C文件之間的相互關系,并通過對C文件規(guī)范化的命名體現(xiàn)其功能,如鍵盤模塊命名為key.c,顯示模塊命名為display.c,數(shù)據處理模塊命名為datapro.c。
1.2 變量、函數(shù)的規(guī)范性
變量、函數(shù)的規(guī)范主要體現(xiàn)在命名的規(guī)范,一般要符合匈牙利命名規(guī)范。如表1所示,主要注意字母的大小寫是有區(qū)分的,取名要與變量或函數(shù)的含義或完成功能相一致,并且要在教學中一直貫徹使用,望文生義以增強易讀性。
此外,由于單片機頭文件對一些常用的符號變量和特殊功能寄存器進行了定義聲明,因此編程時對相關符號變量和特殊功能寄存器的操作一定要與頭文件中的定義聲明保持一致。如51單片機reg51.h頭文件對端口(P0~P3口)、特殊寄存器、特殊的位、中斷函數(shù)等做了定義聲明,用戶在對相關端口或SFR進行操作時只能嚴格的按照頭文件中的聲明使用,不能按照自己的想法隨便更換名字,否則會造成編譯出錯,如果要想按照自己的習慣書寫,要重新聲明定義。如P1.0口在<reg51.h>定義為P1^0,若想用P1_0表示則必須用“sbit P1_0=P1^0;”作聲明。常用的51系列單片機在KeilC51軟件中的一些定義格式如表2所示。
表2 <reg51.h>或<reg52.h>頭文件中常用的一些定義
3 模塊化編程
模塊化、規(guī)范化的程序設計,是提高程序的易讀性、可移植性和復用性最為重要的手段。模塊化程序設計的集中體現(xiàn)為六個字即“高內聚低耦合”。按照自頂向下的原則進行程序設計時,首先是引導學生進行系統(tǒng)功能分析,按照“低耦合”的原則進行軟件模塊的劃分,勾勒出由主程序及各模塊子程序搭建的大骨架、粗線條輪廓,繼而深入到各個軟件模塊內部,依據“高內聚”的原則確定模塊內程序結構。
以單片機無線多路溫度采集系統(tǒng)為例,簡單介紹軟件編程的具體思路。如圖1所示,無線多路溫度采集系統(tǒng)主要包括單片機、溫度數(shù)據采集、無線信號傳輸、鍵盤與顯示器等模塊,完成四路溫度數(shù)據采集,并在液晶屏上顯示實時溫度信息。
圖1 溫度采集系統(tǒng)硬件框圖
圖2 溫度采集系統(tǒng)軟件模塊組成
在課程教學中,依據無線多路溫度采集系統(tǒng)功能,軟件編程劃分為溫度采集、按鍵控制、顯示、無線通信等子模塊。其中溫度采集程序完成溫度數(shù)據采集與處理,鍵盤控制程序鍵掃描及處理,LCD顯示程序完成屏幕刷新,無線通信程序實現(xiàn)單片機與PC機間的數(shù)據交換。各模塊功能單一,且模塊之間無直接聯(lián)系,通過主程序對各模塊進行調用與協(xié)調完成系統(tǒng)功能,每個模塊作為一個函數(shù)、或單獨作為一個C文件,并通過主程序完成各模塊文件的調用與協(xié)調,其關系圖如圖2所示。可以看到,模塊與模塊之間耦合度較低,有利于程序的維護與移植。
1.4 程序書寫的規(guī)范性
程序書寫的規(guī)范性能夠極大增加了程序的易讀性。主要體現(xiàn)在:采用空行或注釋符號分隔程序段落;if、for、while、do等語句自占一行,執(zhí)行語句不得緊跟其后;程序的分界符‘{’和‘}’應獨占一行并且位于同一列,同時與引用它們的語句左對齊;如果出現(xiàn)嵌套的{},則使用縮進對齊;一般重要的代碼行或段落采用“//” 注釋提示等。
關鍵詞 單片機 崗位能力 51單片機 C語言
中圖分類號:G424 文獻標識碼:A
1 單片機課程介紹
作為職業(yè)院校,我們的畢業(yè)生將走進企業(yè),從事基本的生產與操作,在校期間除了個人素質培養(yǎng)還要進行專業(yè)培訓,各專業(yè)課程的設置,各門課程如何展開教學,都直接影響學生的質量。今年帶了一個畢業(yè)班,學生通過頂崗實習,回校反饋的意見中就提到單片機這門課,上崗之后用的最多的就是這門課程所學的知識,也就是在電子信息、機電一體化、通信技術、應用電子等一系列專業(yè)應用領域都涉及單片機或嵌入式的一些應用。正如單片機技術已經滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。企業(yè)需求這方面的人才,而人才培養(yǎng)是高職院校的根本任務。
單片機課程是一門實踐性、應用性和創(chuàng)新性很強的專業(yè)課程。由于單片機課程內容的抽象化,決定了單片機課程教學必須通過大量的實踐鍛煉和動手操作訓練來強化其知識結構,僅學習單片機芯片的基本知識而不綜合運用單片機軟、硬件技術動手解決實際問題,等于紙上談兵。單片機廣泛的應用性和單片機技術日新月異的發(fā)展又決定單片機的學習,必須舉一反三,通過創(chuàng)新的思維方式去掌握新技術,創(chuàng)造性地拓展其應用空間,這就對創(chuàng)新型高技能人才的培養(yǎng)提供了堅實的平臺。
2 單片機課程實訓條件
現(xiàn)階段單片機實訓設備種類與名目并不少,大多是實驗箱、實驗開發(fā)裝置或綜合實驗平臺。這樣的實驗設備造價昂貴,且無法設計完成貼近工程實例的項目,在教學實踐中暴露出很多不足,不太適合于職業(yè)院校,體現(xiàn)在以下幾個方面:
(1)使用設備方法過于復雜:對理論水平要求過高,只有專業(yè)理論知識扎實的學生才能使用。(2)設備過于復雜:有些設備不僅僅是針對單片機課程的,會涉及通信、GPS技術、自動控制等,不是針對學生特點定制。(3)資源浪費嚴重:單片機成套設備中大部分功能根本使用不到,一旦個別器件失效,整套實驗設備都擱置。(4)設備價位過高:學校負擔較重。(5)實驗設備的擴展接口少,給學生自行設計的空間太小,沒有真正體現(xiàn)單片機的優(yōu)越性。
3 單片機課程改革
由于原有單片機實驗設備無法正常使用,本學期改用機器人作為實驗媒體,所開設的實驗內容都是軟件與硬件相結合,并嘗試用C語言編程。此批機器人已經購買時間很長,部分元器件必須更換,電路也進行了一些改變,在設計與應用中更趨合理。出于教學需要,筆者和企業(yè)的老師一起著力研究與開發(fā)單片機實訓設備。經過一段時間的教學實踐,已經看到了一些教學效果,學生們的興趣也比較高。對比以往的單片機課程教學,主要有這幾個方面的改革:
3.1 使用機器人作為實驗硬件
機器人技術是多種學科綜合的應用,是由各種傳統(tǒng)的學科構成。機器人在運行、工作的過程中有許多地方需要修改。那么如何修改這些部分?也是從兩方面入手。首先是從硬件上進行改造, 通電前要檢查機械部件是否安裝正確,各種接線連接是否準確,機器人里有許多傳感器,會大大影響它的運行情況,學生要通過修改程序來使其工作正常。在執(zhí)行任務的過程中,學生可以充分發(fā)揮自己的想象力,隨時都可能會有新的創(chuàng)意,例如:可以在程序里加一些定時器,來節(jié)省運行時間;可以任意改變參數(shù)值,以達到工作的理想狀態(tài)。這些工作可以幫助學生提高對外界事物的觀察力。當機器人走近學生,大家似乎又回到了童年,對事物又有了不同的理解。這些機器人比普通的機器人內容要豐富得多,通過玩這些機器人,學生不僅練習了單片機的軟、硬件結合,還可以戰(zhàn)勝困難,挑戰(zhàn)自我。
3.2 應用C語言編寫程序
C語言是一種編譯型程序設計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。C語言有功能豐富的庫函數(shù)、運算速度快、編譯效率高、有良好的可移植性,而且可以直接實現(xiàn)對系統(tǒng)硬件的控制。
C語言是一種結構化程序設計語言,它支持當前程序設計中廣泛采用的由頂向下結構化程序設計技術。此外,C語言程序具有完善的模塊程序結構,從而為軟件開發(fā)中采用模塊化程序設計方法提供了有力的保障。因此,使用C語言進行程序設計已成為軟件開發(fā)的一個主流。用C語言來編寫目標系統(tǒng)軟件,會大大縮短開發(fā)周期,且顯著地增加軟件的可讀性,便于改進和擴充。在單片機教學中,以往大多使用匯編語言編程,而現(xiàn)在改用C語言完成軟件功能,下面結合8051介紹單片機C語言的優(yōu)越性:
(1)用C語言編寫單片機程序,不需要懂得單片機的指令集;
(2)無須懂得單片機的具體硬件,也能夠編出符合硬件實際情況的程序;
(3)不同函數(shù)的數(shù)據實行覆蓋,有效利用片上有限的RAM空間;
(4)程序具有堅固性:數(shù)據被破壞是導致程序運行異常的重要因素。C語言對數(shù)據進行了許多專業(yè)性的處理,避免了運行中間非異步的破壞;
(5)C語言提供復雜的數(shù)據類型(數(shù)組、結構、聯(lián)合、枚舉、指針等),極大地增強了程序處理能力和靈活性;
(6)提供了專門針對8051單片機的data、idata、pdata、xdata、code等存儲類型,自動為變量合理地分配地址;
(7)提供small、compact、large等編譯模式,以適應片上存儲器的大小;
(8)中斷服務程序的現(xiàn)場保護和恢復,是直接與單片機相關的,由C編譯器代辦;
(9)提供常用的標準函數(shù)庫,以供用戶直接使用;
(10)頭文件中定義宏、說明復雜數(shù)據類型和函數(shù)原型,有利于程序的移植和支持單片機的系列化產品的開發(fā);
(11)有嚴格的句法檢查,錯誤很少,可容易地在高級語言的水平上迅速地被排掉;
(12)可方便地接受多種實用程序的服務:如片上資源的初始化有專門的實用程序自動生成;再如,有實時多任務操作系統(tǒng)可調度多道任務,簡化用戶編程,提高運行的安全性等等。
C51是廣泛應用于8051系列單片機編程的高級語言,具有C語言的開發(fā)效率高、可讀性強、可移植性強等諸多優(yōu)點。keil C51編譯器提供了大量功能豐富的庫函數(shù),能夠對C51源程序編譯生成高效的目標代碼,從而提高了程序的開發(fā)與維護效率,因此采用C51語言編寫8051系列單片機應用程序是單片機課程教學的必選內容。
3.3 在線仿真調試
單片機常用開發(fā)軟件Keil具有強大的仿真功能,C51和匯編語言都是適合的。它最大的好處就是簡單、方便,容易使用,不需要使用任何電路,也沒有特殊的要求;甚至可以在硬件電路制作好之前就將串口部分的程序編寫、調試完畢。對于51單片機,只要充分掌握其特點,能夠熟練利用它,就可以解決應用中的大部分問題。很多任務都可以使用軟件仿真來完成,根本無需任何硬件仿真器;只有一些新的外部器件的時序、接口的調試才有可能需要用到硬件仿真器。
3.4 企業(yè)專家作為執(zhí)教人員參與教學
本學期的單片機課程教學由企業(yè)專家與專任教師合作完成。由于是試點,所有實驗項目都是根據機器人設計的。單片機實訓項目包括項目概述、項目要求、系統(tǒng)設計、硬件設計、軟件設計、系統(tǒng)仿真及調試,提供完整的程序清單和電路原理圖。教學中采用實際應用項目實例,力求理論和實踐相結合,同時考慮培養(yǎng)學生解決工程實際問題和綜合應用的能力。典型實例都來自實際工程應用,有助于學生動手能力的培養(yǎng)和鍛煉。
4 結論
目前,單片機已經成為電子設計的潮流。單片機應用的意義不僅在于它的廣闊范圍及所帶來的經濟效益,更重要的意義在于,單片機的應用從根本上改變了控制系統(tǒng)傳統(tǒng)的設計思想和設計方法。以前采用硬件電路實現(xiàn)的大部分控制功能,正在用單片機通過軟件方法來實現(xiàn)。
高職院校的電子技術相關專業(yè)學生要加強這門課程的學習與實踐,將有助于今后的就業(yè)與創(chuàng)業(yè),電子行業(yè)需要大量的單片機人才,它也可以成為學生自主創(chuàng)業(yè)、研發(fā)智能電子產品的好幫手。
參考文獻
[1] 林立.單片機原理及應用.北京:電子工業(yè)出版社,2013.
【關鍵詞】AT89C51 單片機 流水燈
在電子信息技術和自動化智能控制領域,單片機正以前所未有的速度替代了傳統(tǒng)的數(shù)字邏輯電路構成的控制系統(tǒng)。由于單片機具有體積小、功能強、成本低、應用面廣等優(yōu)點,所以單片機在我們的日常生活和工作中無處不在、無處不有,可以說單片機已經滲透到了我們生活的各個領域。基于單片機的流水燈設計與實現(xiàn),全面的介紹了一個完整的單片機控制系統(tǒng),包括系統(tǒng)結構和硬件電路,軟件流程和程序編寫。流水燈的控制對單片機應用技術的教學入門和基礎案例具有參考價值。
一、控制系統(tǒng)和硬件電路
本文采用AT89C51單片機為控制器的流水燈系統(tǒng),AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS 8位微處理器 ,工作電壓范圍4.25~5.50V,工作頻率0~24MHz,AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案且在使用AT89C51單片機時無須外擴存儲器[1-3]。本流水燈系統(tǒng)實際上就是一個帶有八個發(fā)光二極管的單片機最小應用系統(tǒng),即為由發(fā)光二極管、晶振、復位、電源等電路和必要的軟件組成的單個單片機控制系統(tǒng),硬件原理如圖1所示。
本流水燈系統(tǒng)使用AT89C51單片機來實現(xiàn)流水燈的控制的設計原理是:P1的八個接口P1.0~P1.7,都通過限流電阻連接著LED燈的陽極,所有LED燈的陰極連接在0V,要讓接在P1.0口的LED1亮起來,那么只要把P1.0口的電平變?yōu)楦唠娖骄涂梢粤耍幌喾矗绻釉赑1.0口的LED1熄滅,就要把P1.0口的電平變?yōu)榈碗娖剑煌瑯拥姆绞娇刂平釉赑1.1~P1.7口的其他7個LED的點亮和熄滅。只要將發(fā)光二極管LED1~LED8依次點亮、熄滅,8只LED燈便會一亮一暗的做流水燈了[3-4]。在此還應注意一點,由于人眼的視覺暫留效應以及單片機執(zhí)行每條指令的時間很短,我們在控制二極管亮滅的時候應該延時一段時間,否則我們就看不到“流水”效果了,所以要人眼直接觀察到流水燈的狀態(tài),需要在每個LED燈狀態(tài)轉換間隔,進行一定時間的延時。
二、系統(tǒng)的軟件流程
流水燈系統(tǒng)的控制器為單片機,完成硬件的設計和實現(xiàn)后,需要根據系統(tǒng)的控制要求告訴單片機怎么來進行工作,即編寫程序控制單片機管腳電平的高低變化,來實現(xiàn)發(fā)光二極管的一亮一滅。那么通過軟件編程的方法來實現(xiàn)。下面本文以最簡單的流水燈控制功能,即實現(xiàn)8個LED燈的循環(huán)點亮,圖2為實現(xiàn)流水燈控制的系統(tǒng)的軟件流程[5]。
三、系統(tǒng)程序
編程設計的思路是在程序一開始就給P1口送一個數(shù),這個數(shù)本身就讓P1.0先高,其他位為低,然后讓這個數(shù)據向高位移動不就實現(xiàn)“流水”效果,8051指令中沒有讓P1數(shù)據移動的指令,但有對累加器ACC中數(shù)據左移或右移的指令,ACC在指令中常寫為A,累加器A數(shù)據左移指令為"RL A",累加器數(shù)據右移指令為"RR A",累加器在數(shù)據傳輸和數(shù)據處理過程中作用十分重要,累加器ACC為8位。他可與片內所有單字節(jié)寄存器交換數(shù)據,實際上P1和其他端口在單片機中也是一個寄存器[6-7]。這樣我們可以將需移動的數(shù)據先放到ACC中,讓其移動,然后將ACC移動后的數(shù)據再轉送到P1口,這樣同樣可以實現(xiàn)“流水”效果。左側程序就是流水燈的程序light water.asm。
將上述程序編譯并燒寫到AT89C51數(shù)字芯片中,安裝在設計好的實驗板上,可以看到程序的”流水”效果。
從單片機控制流水燈系統(tǒng)可以得出,設計一個完整的單片機控制系統(tǒng),需要對包括整體系統(tǒng)設計、硬件電路、軟件設計、程序編寫等每個環(huán)節(jié)進行系統(tǒng)的規(guī)劃和多次的動手實踐調試,只有這樣,才能全面系統(tǒng)的完成單片機控制系統(tǒng)的要求。
參考文獻:
[1]何立民.單片機應用系統(tǒng)設計[M].北京:航空航天大學出版社,1994.
[2]耿德根.AVR高速嵌入式單片機原理與應用[M].北京:北京航空航天大學出版社,2002.
[3]胡漢才.單片機原理及其接口技術[M].北京:清華大學出版社,1996.
[4]易禮智.基于51 單片機實現(xiàn)流水燈的若干種編程方法[J].銅仁學院報,2012(11):125-127
[5]周航慈.單片機應用程序設計技術[M].北京:北京航空航天大學出版社,2001.
關鍵詞:單片機;PC機;RS-232串行接口;轉換芯片MAX232
中圖分類號:TP274 文獻標識碼:A 文章編號:1674-7712 (2014) 02-0000-02
溫度數(shù)據采集系統(tǒng)是一種以單片機為基礎,通過串行通信與上位機進行數(shù)據傳輸,達到對溫度的采集與監(jiān)控。它已廣泛地應用到測量、監(jiān)測、控制、診斷、科學試驗等各個領域中。近二十年來,溫度數(shù)據采集技術由于采用了微機等一系列新技術,得到了飛速的發(fā)展,在形式上由原來的專用的測試儀器到現(xiàn)在的使用微機的虛擬儀器;采集的分辨率從4位、8位到現(xiàn)在的24位分辨率;采集的速率從幾KPS到現(xiàn)在最高速率已達2GPS,記錄設備從原來的手記、紙帶的模擬或數(shù)字記錄到磁帶記錄,到現(xiàn)在的硬盤記錄、磁光盤記錄。所有這些都是不斷地采用新技術的結果,所以溫度數(shù)據采集系統(tǒng)能夠使我們的工作更方便更有效的進行,對工業(yè)的發(fā)展起到顯著的作用[1]。
本文主要的工作就是以單片機為核心,利用串口通訊的知識,實現(xiàn)對溫度數(shù)據的采集和監(jiān)控。串行端口的溫度數(shù)據采集系統(tǒng)主要由下位機系統(tǒng)和上位機系統(tǒng)兩部分組成。下位機系統(tǒng)完成的主要功能是用溫度傳感器把溫度值信號變換成0~5V的模擬信號,然后再經過信號調理,放大,A/D轉換將其轉換為數(shù)據信號,通過串口向上位機傳送。上位機系統(tǒng)主要完成向各下位機發(fā)出召測命令,并把接收來的數(shù)據進行處理,最后通過VB語言對Mscomm控件進行編程實現(xiàn)智能儀表的集中監(jiān)測[2]。
一、系統(tǒng)總體設計
溫度數(shù)據采集系統(tǒng)原理框圖如圖1所示。溫度傳感器輸出的模擬信號經信號調理電路后被放大,再由A/D轉換模塊轉換為數(shù)字量,傳送給單片機,并在LED上進行顯示。同時數(shù)據可通過RS-232串行接口傳送到上位機,通過系統(tǒng)圖形用戶界面來達到對溫度的采集與監(jiān)控。
在溫度數(shù)據采集系統(tǒng)實現(xiàn)上,采用了性價比較好的89C51單片機為主的采集電路,且將一些任務由軟件實現(xiàn),這樣可以用更少的端口實現(xiàn)數(shù)據外存儲,解決了單片機外擴存儲器線路復雜問題,從而減小了單片機采集電路的體積,實現(xiàn)盡可能的系統(tǒng)最小化,以便于攜帶。在信息轉送PC機問題上,采用串口中斷,利用轉換芯片MAX232,使得TTL電平到RS232電平的轉換電路更加簡單實用,單片機采集系統(tǒng)的體積相應減小[3]。
二、系統(tǒng)硬件設計
(一)單片機的選擇。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,俗稱單片機。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案[4]。
(二)系統(tǒng)采集模塊
1.ADC0808簡介:經過信號調理電路輸出的電信號,己經是0~5V的標準信號,而且這些信號與溫度具有良好的線性關系,因此輸出的不同電壓信號可以代表不同溫度。為了使各項溫度數(shù)值能夠顯示,必須先把信號調理電路輸出的標準模擬信號轉化成數(shù)字信號,以便送入單片機進行數(shù)據處理與運算,使經過單片機處理后的數(shù)據與實際測量的溫度相對應。
2.A/D轉換電路及擴展:AT89C51單片機芯片內部集成了諸如定時器、串行口等功能部件,但是在應用系統(tǒng)中,很多時候片內資源不夠用。這時就需要在單片機芯片外部擴展必要的存儲器以及其他一些I/O端口,才能滿足實際需要。本設計采用可編程I/O接口芯片Intel 8255A進行端口擴展[5]。
3.通訊電路:在串行數(shù)據傳輸過程中,由于傳輸距離、現(xiàn)場狀況等諸多因素可能引起信息的出錯,也可能使傳輸?shù)臄?shù)據發(fā)生位錯誤,在數(shù)據通信時發(fā)生無法預測的錯誤。為了使系統(tǒng)能夠可靠、穩(wěn)定地通信,在通信時采用數(shù)據校驗的方法進行糾錯。通信協(xié)議采用基本的RS - 232,用CRC校驗,提供單片機串行通信的數(shù)據可靠性。
三、下位機軟件設計
溫度數(shù)據采集系統(tǒng)的設計除了硬件電路以外,還需要軟件的設計,這樣整個系統(tǒng)才能夠按照要求很好的執(zhí)行,所以軟件設計也是很重要的。本設計中選用的單片機語言主要是匯編語言。下位機程序采用模塊化結構,匯編語言編寫。軟件設計主要包括2個部分:一是溫度數(shù)據的采樣、A/D轉換、鍵盤處理和LED顯示;二是下位機與上位機之間的通訊,通訊的目的僅在于將數(shù)據上傳到PC機中,程序設計采用的是查詢法。
(一)主程序設計。溫度數(shù)據采集系統(tǒng)的設計除了硬件電路以外,還需要軟件的設計,這樣整個系統(tǒng)才能夠按照要求很好的執(zhí)行,所以軟件設計也是很重要的。本設計中選用的單片機語言主要是匯編語言。
下位機程序采用模塊化結構,匯編語言編寫。軟件設計主要包括2個部分:一是溫度數(shù)據的采樣、A/D轉換、鍵盤處理和LED顯示;二是下位機與上位機之間的通訊,通訊的目的僅在于將數(shù)據上傳到PC機中,程序設計采用的是查詢法。單片機在上電初始化后,首先進行各功能部件的初始化,主要包括對主機CPU等芯片進行模式和初始狀態(tài)的設置,即對中斷的初始化、串口的初始化、液晶、時鐘芯片和數(shù)據存儲器等的初始化。單片機主程序完成的功能就是響應按鍵、刷新顯示,數(shù)據采集,存儲及與上位機通訊,通過判斷工作方式控制字,完成相應的功能[6]。
(二)系統(tǒng)子程序設計
1.A/D轉換子程序設計。A/D轉換子程序用來控制對ADC0809模擬輸入電壓的模數(shù)轉換,并將對應的數(shù)值移入70H內存單元。
2.BCD轉換子程序設計。由于ADC0808是一個8位精度的A/D轉換器,它最終轉換成的數(shù)字量結果都是0~255的整數(shù)值,因此,必須把它們轉換成代表實際溫度信號的數(shù)值。由于被測溫度的實際值與傳感器輸出信號以及信號調理后的信號均有良好的線性關系。
這里的整數(shù)值是指經過A/D轉換后的數(shù)字量,實際參數(shù)值由整數(shù)部分和小數(shù)部分組成,而且都是二進制數(shù)。然后,分別對上式計算的結果,即實際壓力值的整數(shù)部分和小數(shù)部分進行BCD碼轉換,再把代表實際溫度值的這些BCD碼存入單片機內對應的RAM單元,以便在LED顯示子程序中直接取出BCD碼,在LED上顯示十進制數(shù)值。
3.LED顯示子程序設計。本設計采用四個LED顯示溫度數(shù)據。顯示子程序采用動態(tài)掃描法實現(xiàn)四位數(shù)碼管的數(shù)值顯示。測量所得的轉換數(shù)據存放在70H內存單元中,測量數(shù)據在顯示時需轉換成十進制BCD碼放在71H~74H單元中[7]。
四、上位機軟件設計
(一)VB及其常用控件Mscomm的編程方法。Visual Basic(簡稱VB)是一種在窗口操作平臺上的視覺開發(fā)工具,使得開發(fā)更方便快捷。VB提供了串行通信控件,讓開發(fā)者可以方便快捷地開發(fā)串行通信程序。利用計算機進行串口通訊是自動化將來發(fā)展的一種方向。
串口通訊作為一種古老而又靈活的通訊方式,被廣泛地應用于PC間的通訊以及PC和單片機之間的通訊之中。提到串口通訊的編程,人們往往立刻想到C、匯編等對系統(tǒng)底層操作支持較好的編程語言以及大串繁瑣的代碼。VB開發(fā)串口通信程序常用的方法是利用VB本身提供的控件Mscomm來實現(xiàn),該控件隱藏了大部分串口通信的底層運行過程和許多煩瑣的處理過程,將串口封裝起來,容易操作與實現(xiàn)。同時支持查詢方法和事件驅動通訊的機制。
(二)系統(tǒng)圖形用戶界面設計。利用VB中的Mscomm控件進行串口通信是一種方便和快捷的方式,主要利用該控件的Input方法從串口中讀取數(shù)據,利用Output方法向串口寫數(shù)據。在自動化過程中,從串口讀寫數(shù)據是最基礎的工作,利用VB可以非常方便和快速地從串口中讀取數(shù)據,而且VB界面比較友好,因此利用VB編寫自動化控制程序是非常方便和有效的。
為了更方便地實時了解數(shù)據采集的情況,我們把從單片機讀來的數(shù)據分別賦給數(shù)組,然后描繪出波形曲線。
1.計算機的串行通訊程序。首先開啟一個VB項目,并在窗體上安排一個Mscomm控件,作為串行通訊的信道。按下F4調出屬性窗口,變量Comport屬性位2,另外將Rthreshold屬性設置為1,意思就是只要外界傳送任何字符串,隨即引發(fā)事件。設置一個Picturebox對象,把由單片機傳送來的數(shù)據以線條方式繪制在此圖片框控件上。按下F4調出屬性窗口,其Name屬性改為“Graph1”。
Mscomm控件支持以文本和二進制格式傳輸數(shù)據,由于下位機是單片機,處理二進制數(shù)據較為方便,因此本例中以二進制格式發(fā)送和接收數(shù)據,定義兩個Byte類型的動態(tài)數(shù)組來存放和接收數(shù)據,在接收數(shù)據時采用事件驅動法,當接收緩沖區(qū)有Rthreshold個數(shù)據時,引起OnComm事件。
2.單片機的串行通訊程序。80C51單片機從外部采集到的一組數(shù)據,存在片內RAM20H~3DH區(qū)域,要求將這個數(shù)據塊傳送給PC機,為了保證傳送的正確,傳送前由單片機先向PC發(fā)送數(shù)據#55H,PC機接收到后,向單片機回送數(shù)據#0AAH,經檢驗正確后,單片機才開始向PC機傳送數(shù)據。
參考文獻
[1]李麗敏,張玲玉,解浩.單片機溫度測控系統(tǒng)設計[J].佳木斯大學學報,2008(01).
[2]李曉妮.單片機溫度控制系統(tǒng)的設計[J].九江學院學報,2005(03).
[3]洪家平.WINDOWS環(huán)境下PC機與單片機的通信[J].微計算機信息,2005(03).
[4]劉興生,孫延明,龔祝平.制陶窯爐的溫度數(shù)據采集系統(tǒng)[J].機電工程技術,2006(08).
[5]陳杰,黃鴻.傳感器與檢測技術[M].北京:高等教育出版社,2002.
[6]劉華俊.最新傳感器應用設計與制造[M].北京:中國科學技術文獻出版社,2006.
現(xiàn)在支持51系列單片機的語言共有4種,即匯編語言、PL/M語言、C語言和BASIC語言。這里面C語言是一種結構化語言,能夠產生壓縮代碼,同時具有語言簡潔、使用方便、表達能力強、可移植性好、可進行結構化程序設計等優(yōu)點。由C語言生成的目標代碼的效率也只稍微低于匯編語言。因此本次設計采用C語言編程。
在單片機開發(fā)中除了使用到硬件外,也離不開軟件,在這里使用的是目前最流行的用以開發(fā)MCS-51系列單片機的軟件Keil軟件,它的開發(fā)方案十分完整,提供了包括C編譯器、宏匯編、連接器、庫管理以及一個功能強大的仿真調試器等,這些部分的組合是通過一個集成開發(fā)環(huán)境(uVision)來完成的。KeilC51軟件系統(tǒng)能夠提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,采用的是Windows界面。另一點重要之處是,通過查看編譯后生成的匯編代碼,就能感覺到KeilC51能夠生成的效率非常高的目標代碼,并且這些代碼的排列很緊湊,容易讓人理解,這種系統(tǒng)大型軟件的開發(fā)時更能將高級語言的優(yōu)勢體現(xiàn)出來。
1無線模塊的設計
1.1無線模塊總體設計預先設置好必需的參數(shù),模塊每次上電后即可自動連接到預先設置的無線網絡及服務器,因為在自動工作的模式下,模塊的串口始終工作在透明數(shù)據傳輸狀態(tài),可以將它看做一條虛擬的串口線,按照使用普通串口的方式發(fā)送和接收數(shù)據就可以。在自動工作模式下,系統(tǒng)的連接網絡完全自動運行。系統(tǒng)默認自動重試次數(shù)設置為永遠,也就是說,系統(tǒng)會在連接網絡失敗或斷開的時候一直重新嘗試連接。用戶也可以將重試次數(shù)設置為有限值,在此情況下,一旦重試次數(shù)超限后,系統(tǒng)將不再嘗試重連,只有系統(tǒng)復位后才能再次重啟自動連接流程。Socket連接(此處特指Tcp連接)是虛連接,在無線網絡連接非正常斷開的情況下原有的Socket連接不會被刪除,并且在無線網絡連接恢復后繼續(xù)使用。自動組幀機制。在透明傳輸狀態(tài)下,在串口上所有的數(shù)據都是以字節(jié)流的形式進行傳輸?shù)模诰W絡上,數(shù)據卻是以固定的幀格式的形式傳輸,因此,數(shù)據在串口與網絡之間流動是就需要一個流與幀之間的轉換過程。對于從網絡到串口的方向的數(shù)據傳輸來說,數(shù)據由幀轉換成流是非常容易的。而相反的從串口到網絡的數(shù)據傳輸方向,即數(shù)據由流轉換成幀格式的時候,就需要一定的規(guī)則來約束。
1.2無線模塊程序設計命令工作模式模塊提供了一種基于串口控制的命令工作模式,用于不同應用場合的特殊需求。此工作模式下,模塊根據用戶通過串口下發(fā)的指令進行工作,用戶可以通過指令對模塊進行完全的控制,包括修改配置參數(shù)、控制聯(lián)網、控制TCP/IP連接、數(shù)據傳輸?shù)取_@是一種高級的使用方式,也是對用戶來說最為靈活的使用方式,用戶可以通過指令任意控制無線網絡的連接、斷開,也可以同時創(chuàng)建多個不同類型的TCP/IP連接,并保持通信。在使用WIFI模塊時,可以根據系統(tǒng)的情況決定是否進行命令行的操作。串口數(shù)據操作。在串口發(fā)送每條CMD后,需要等待該命令的回復。如果本條命令沒有回復,需要增加超時,將強制退出該命令。應當保證At發(fā)送命令時,串口只有一條在等待回復的At指令。用于串口接收WIFI模塊回傳的響應信息,在上位機發(fā)送完成每條AT指令后需要等待WIFI模塊響應或者超時(請將超時時間設置大于500ms)。
2主控模塊與LED顯示模塊程序設計
本設計采用RS232總線與PC機通信,在PC機中采用串口調試程序向單片機發(fā)送數(shù)據,在PC機與單片機之間采用MAX232電平轉換芯片進行電平轉換,參照51單片機的串口通信時序對單片機的串口通信程序進行編寫,其主程序流程圖及串口中斷服務程序流程如圖1所示。在顯示部分,由于采用ULN2803芯片作為數(shù)碼管陣列的段選顯示驅動電路,同時采用573芯片作為其顯示數(shù)據的緩沖電路,所以在顯示函數(shù)的編寫過程中,首先要對數(shù)碼管陣列送入位選信號并保持,然后通過一段恰當?shù)难訒r再將段選信號送入,這樣一來就實現(xiàn)了數(shù)碼管的動態(tài)顯示。由于本設計中并沒有使用BCD數(shù)碼管,所以需在顯示數(shù)據之前進行數(shù)據為的分離,這部分程序在串口通信中斷服務函數(shù)中完成。在本設計中,采用MAX232作為單片機系統(tǒng)與PC機通信之間的電平轉換電路。而在單片機與PC機通信的過程中,在單片機系統(tǒng)的程序編寫則涉及到了兩個功能函數(shù)的編寫:串口通信初始化函數(shù),串口通信中斷服務函數(shù)。在進行單片機串口通信函數(shù)的編寫過程中,要根據單片機串口通信時序來進行相應語句的編寫。
3結束語
本文在keil環(huán)境下采用C語言用模塊化程序設計的方法編程,先對無線模塊的部分功能進行程序分析,串口通信初始化函數(shù),串口通信中斷服務函數(shù)。在進行單片機串口通信函數(shù)的編寫過程中,要根據單片機串口通信時序來進行相應語句的編寫,然后對主控模塊和顯示模塊進行具體的設計,將單片機的串口中斷和數(shù)碼管的動態(tài)顯示等程序進行了設計。
作者:楊巍 單位:齊齊哈爾信息中心
關鍵詞:智能模型車;MATLABGUI;無線串口
中圖分類號:TP274 文獻標識碼:A 文章編號:1674-7712 (2013) 04-0094-01
隨著科技的進步和人類需求的不斷提升,傳統(tǒng)汽車已不能滿足人們的需求,具有自動駕駛功能的概念汽車已頻頻出現(xiàn),也許在不久的將來,具備自動駕駛功能的智能汽車將走進我們的生活.為此本文構建了一個基于模型車的遙控及自動控制開發(fā)調試平臺。
一、總體設計
該平臺由PC機MATLABGUI軟件充當上位機,以ATmega16單片機為核心的模型車充當下位機,二者通過無線藍牙模快通信,系統(tǒng)簡單穩(wěn)定可靠。整體設計結構圖見圖1。
二、智能模型車硬件電路
智能模型車采用Atmega16單片機集中控制和分散模塊化設計。智能模型車硬件由AVR單片機最小系統(tǒng)板,藍牙模塊HC-06實現(xiàn)無線串口連接以及電機驅動電路組成,智能模型車采用左右兩個電機,Atmega16單片機OCR1輸出PWM控制電機運動轉速,單片機Atmega16的四個I/O口PC0、PC1、PC2、PC3分兩組控制電機的轉動方向。智能模型車裝內部車輪轉軸部分有SM100K模組,用于測量兩路電機轉速。
三、智能模型車軟件程序設計
智能模型車的核心控制程序主要涉及三個部分:1.通過串口中斷發(fā)送當前的車輪計數(shù)值;2.通過串口中斷接收PC機部分傳來的控制指令;3.單片機通過對L298N的各個管腳傳輸信號達到控制電機運行的目的。
單片機的程序主要應用到ATmega16單片機的外部中斷EXT0和EXT1用于接收車輪碼盤的轉動計數(shù),由串口中斷接收PC端發(fā)送的控制信息,經過單片機處理將控制信息轉化成對電機的驅動信號。這時再由串口中斷發(fā)送將當前的轉動方向與碼盤計數(shù)傳回到PC端,完成模型車當前狀態(tài)的信息采集工作。單片機程序設計基本流程見圖2。
四、MATLABGUI程序設計
在GUIDE上設計的壓力傳感器標定軟件GUI見圖3,在此GUI上可以實現(xiàn)對串口的屬性設定,對下位機ATmega16通過藍牙串口進行控制并將兩個輪子的速度值以進度條的方式顯示在程序界面上。
本設計主要設計了兩種控制方式,一種是利用鍵盤對模型車進行實時手動控制,另外一種是在MATLABGUI的axes控件空間內設定樣值點,運行自動控制,小車將按照設定的軌跡進行運行。
上位機的主要任務是將控制信息轉換成單片機能夠接收的控制指令,首先加入兩個0xff最為數(shù)據包頭,接著發(fā)兩個輪子的方向和速度信息的編碼,最后是校驗和。整個程序流程見圖4。
本文對自動駕駛技術進行了深入的了解的基礎上,對自動駕駛如何控制問題的進行了抽象模擬,建立了以計算機為上位機,MATLABGUI程序作為控制平臺,ATmega16主控模型車為下位機的開發(fā)調試環(huán)境。提出了一種自動駕駛的控制思路,在系統(tǒng)設計中綜合了多學科的知識,對提高學生的綜合素質,激發(fā)學生自主學習興趣起到一定的作用。
參考文獻:
[1]馬潮.AVR單片機嵌入式系統(tǒng)原理與應用實踐[M].北京:北京航空航天大學出版社,2007.
關鍵詞 單片機;電路;隔膜泵補排油
中圖分類號TP368.1 文獻標識碼A 文章編號 1674-6708(2014)113-0232-02
0 引言
隔膜泵的補排油部分由輸入單元(探頭檢測信號),輸出單元(電磁閥)和控制單元構成。隔膜泵控制系統(tǒng)的PLC控制單元是單一模塊(CPU),主要控制著整個泵體的運行邏輯。其中補排油就是里面的一個單元模塊。CPU模塊內的程序對用戶開發(fā),但是在設備檢修時用戶的誤操作會更改補排油控制邏輯,這樣會對隔膜泵的液力端造成損壞,導致設備無法運行。本文針對上述問題,提出了一種基于單片機的隔膜泵補排油控制系統(tǒng),該控制系統(tǒng)為脫離了原PLC的CPU模塊控制的單獨控制系統(tǒng),具有使用方便,質量穩(wěn)定等優(yōu)點。
1 基于單片機的隔膜泵補排油控制系統(tǒng)構成
基于單片機的隔膜泵補排油控制系統(tǒng)主要由電路板、電源、80*51系列單片機、晶振電路、隔離輸入電路、隔離輸出電路構成。根據實際柜內的安裝空間設計好電路板的尺寸,在上面印刷已設計好的電路,相應把各個電子器件焊接上。探頭檢測信號通過輸入電路連接到單片機相應的管腳,單片機再經過邏輯運算由另一個管腳輸出經過隔離放大驅動電磁閥動作。從而實現(xiàn)隔膜泵補排油部分脫離原CPU模塊的控制。
2 單片機的基本管腳電路
51系列單片機的基本管腳電路包含簡單的輸入輸出電路、供電電路、復位電路、時鐘電路等。在實際應用中,我們常用P0.0--P0.7,P1.0--P1.7,P2.0--P2.7,P3.0--P3.7這32個管腳作為單片機的輸入輸出接口。當作為輸入接口時,吸附電流可以達到10mA,提拉電流只有不到1mA,所以,在應用中通常以低電平0V時為“0”信號,高電平5V時為“1”信號。
3 基于單片機的隔膜泵補排油控制系統(tǒng)的工作原理
圖1 基于單片機的隔膜泵補排油控制系統(tǒng)原理示意圖
基于單片機的隔膜泵補排油控制系統(tǒng)的工作原理如圖1所示。磁感應信號通過嵌入隔膜導桿(無磁介質)的磁環(huán)發(fā)出,作用于自制的磁式傳感器,也就是補排油探頭,該傳感器將+24V信號經過隔離輸入電路,轉換為+5V信號傳遞給單片機的P1.0管腳,完成對隔膜位置的檢測。同理,來自PLC的允許運行信號傳遞給管腳P3.7。
事先編輯好的程序寫入到單片機,其工作時檢測到接口地址有高電平輸入即為“1”,經過內部程序邏輯處理使管腳P0.0輸出+5V高電平。經過隔離放大輸出電路變?yōu)?24V電壓,驅動電磁閥吸合。發(fā)光二極管LED1發(fā)光作為電磁閥動作指示,從而完成整個補排油控制的動作。
4 程序設計
4.1 延時程序設計
作為單片機指令的執(zhí)行時間是很短的,大約為微秒級,因此,我們要求補排油時間間隔2秒,相對于微秒來說,相差太大,所以,在執(zhí)行某一指令時,插入延時程序來達到我們的要求,延時子程序可設計如下:
DELAY:MOV R5,#200
D1:MOV R6,#200
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
4.2 輸出控制程序設計
如圖1所示,當P1.0端口輸出高電平,即P1.0=1時,嵌入隔膜導桿的磁環(huán)發(fā)出磁感應信號作用于雙磁信號傳感器;當P1.0端口輸出低電平,即P1.0=0時,雙磁傳感器不處于工作狀態(tài)。可以使用SETB P1.0指令使P1.0端口輸出高電平,使用CLR P1.0指令使P1.0端口輸出低電平。輸出控制程序如下:
ORG 0
START:CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
5 結論
基于單片機的隔膜泵補排油控制系統(tǒng)是傳統(tǒng)隔膜泵補排油控制系統(tǒng)的改進,可以避免由于誤操導致的對隔膜泵液力端造成的損壞。從目前的實際應用效果看,在隔膜泵補排油上可以不再依賴進口的PLC產品來控制,成為獨立的控制單元,節(jié)省了安裝空間,提高了隔膜泵的穩(wěn)定性,降低了制造成本。并且單片機具有很強的可擴展性,可以實現(xiàn)更多的功能。
參考文獻
[1]上官同英.單片機原理及應用技術[M].北京:清華大學出版社,2011.
摘 要:單片機原理與應用是中、高級技工院校工科電類專業(yè)的一門重要的專業(yè)課程。由于該課程具有一定的理論難度與深度,因此在教學中必須根據技校生的認知狀況,采用模塊教學法使學生在較短的時間內掌握單片機原理及接口技術,熟悉其應用系統(tǒng)的開發(fā)技術。
關鍵詞 :模塊 單片機 教學
隨著大規(guī)模、超大規(guī)模集成電路技術的發(fā)展和計算機微型化的需要,人們把微型計算機的基本功能部件集成在一個半導體芯片上,使得一塊集成電路芯片就能構成一個完整的微型計算機,簡稱單片機。由于單片機的硬件、軟件系統(tǒng)及I/O接口控制能力等方面都有獨到之處,具有較強而有效的功能,因此它的應用極其廣泛。也正因為此,如今的各中、高級技工院校的計算機應用、自動控制、電氣電子、機械等工科專業(yè),都將單片機原理與應用作為各自專業(yè)的一門重要課程。但由于該課程涉及數(shù)字電路、C語言程序設計、可編程控制器技術等多門專業(yè)課程的內容,因此具有一定的理論難度與深度,加之技工院校的學時較短,實訓課時更是很難得到保證,結果導致教學效果不佳。為此,在單片機原理與應用的課程教學中引入模塊法,可以使學生在較短時間內系統(tǒng)掌握單片機原理及接口技術,掌握單片機的程序設計方法,熟悉單片機應用系統(tǒng)的開發(fā)技術。
一、模塊教學法的內涵
模塊教學法是近幾年來新引進技工院校的教學模式。它是指在教學過程中,圍繞不同層次學生的培養(yǎng)目標,將教學內容設定為“階梯狀”教學模塊,教師在不同的教學模塊,靈活運用案例教學法、討論式教學法、情景教學法等先進教法與學法,特別是在專業(yè)課程教學上強調“教師邊講解邊演示,學生邊操作邊理解”的動手動腦相結合的“雙邊教學法”,從而實現(xiàn)預期的教學目標。其與傳統(tǒng)教學方法最大的區(qū)別在于以素質為核心、以能力為本位,重在知識和技能的實際靈活應用。
二、模塊教學法在技工院校單片機教學中應用的意義
1.降低了教學難度
在以往的單片機教學過程中,按照傳統(tǒng)教材的教學模式,學生先學難懂的硬件結構原理,再學枯燥的匯編指令,然后又開始了脫離實驗的純軟件編程的學習,等開始學習單片機接口技術時,不少學生對前面的內容早已忘得一干二凈。這種傳統(tǒng)教學模式在很大程度上導致學生感到單片機“原理難學、指令難記、接口難用”。而采用模塊教學法,將教學內容根據學生的學情以及今后就業(yè)的需要,重組、整合,讓學生“邊學理論、邊實踐,學一樣、會一樣”,有效地降低了教學難度,激發(fā)了學生的學習興趣。
2.鍛煉了教師隊伍
單片機技術是一門實踐性很強的軟硬件結合的技術。無論是程序設計方法,還是硬件結構,都必須通過大量的實踐才能理解、掌握,同時單片機技術的更新?lián)Q代又極快,這就對教師的能力提出了全面的更高的要求。采用模塊教學法,可以使教師在教學過程中不斷地既教又學,真正實現(xiàn)了“教學相長”的目的,從而使普通教師達到“雙師型”教師的標準。
三、模塊教學法在技工院校單片機教學中的應用
1.明確教學內容
開發(fā)模塊課程的關鍵點是確定教學內容。針對技校生的知識掌握現(xiàn)狀以及相關課程的學習情況,筆者與同事對一些學生不容易學習理解和老師不好教的內容作了調整;同時考慮到雖然現(xiàn)在單片機新產品層出不窮,但51系列單片機以其高性價比受到廣大用戶和廠家的推崇,所以教學內容仍以51系列單片機為典型機型來組織內容。考慮到學生今后的發(fā)展,還添加了大量帶有工程性質的應用實例和其他一些新型的接口器件,以跟上單片機應用開發(fā)技術的潮流。
2.合理劃分模塊
我們以培養(yǎng)技校生職業(yè)能力為目標,從實用的角度出發(fā),將單片微型計算機基礎知識、51系列單片機的硬件結構、51系列單片機的指令系統(tǒng)、匯編語言程序設計、51系列單片機的內部功能單元、51系列單片機接口應用實例組合成基礎模塊;將51系列單片機系統(tǒng)的擴展、輸入/輸出通道及接口技術、單片機應用系統(tǒng)開發(fā)技術、單片機C51語言程序設計基礎組合成提高模塊,充分突出單片機應用系統(tǒng)以及接口技術方面的知識點。同時,為了突出技校生的能力培養(yǎng),我們又設置了基本實驗模塊與應用實驗模塊,其中基本實驗模塊包括了中斷實驗、定時器實驗、8279顯示接口實驗、LCD顯示實驗等內容,而應用實驗模塊包括了一鎖多功能按鍵識別技術、動態(tài)數(shù)碼顯示技術、點陣式LED簡單圖形顯示技術、霓虹燈控制、繼電器控制等內容。這樣就通過從易到難,循序漸進的教學過程,使學生受到從硬件設計到軟件編程的完整訓練,從而盡快掌握單片機應用系統(tǒng)的開發(fā)技術。
關鍵詞:單片機 程序設計 定時器 多用途
中圖分類號:TP368.1 文獻標識碼:A 文章編號:1007-9416(2013)10-0194-01
良好的設計需要有縝密的需求分析和設計原理的構思,多功能定時器的設計也要從以上兩點加以把握后著手進行。
1 基于單片機的多用途定時器的設計需求
在人們的工作與生活中,很多時候需要定時。例如,生活中的早起鬧鐘定時、食物的烘焙定時,工作中的零件每隔幾秒的打磨加工、鑄造、工廠里機器設備的開啟定時、體育等各項競技比賽的定時等等,這些都需要有一種多功能的定時器來對時間進行提醒。考慮到使用的便捷性與應用性,基于單片機的多用途定時器還應該具有LED液晶顯示功能,即可以在液晶屏幕上顯示當前時間,與預設定時間還有多少時間等;時間設置可通過按鍵進行,報警功能對于多用途時鐘也是必不可少的,例如,時鐘到達設定時間進行的音樂提示,為更加醒目提醒而設置的LED屏幕閃爍提醒等。該產品設計對于提升人們工作效率與生活品質都有著重要的幫助。
2 單片機結構與定時器設計原理
單片機多用途定時器主要應用了MSP430系列單片機、鍵盤、電源以及時鐘芯片DS1302等電子模塊與設備進行實現(xiàn),該時鐘系統(tǒng)的設計理論基礎如下:
2.1 Msp430單片機結構
MSP430系列單片機功耗可以達到微安級別,耗電極其低,結構上的設計也較為合理。主要有中央處理器、IO端口以及定時器與AD轉換部分等。其中,CPU主要用來處理程序指令,存儲單元用于存儲數(shù)據與程序,比較器與定時器具有比較和定時作用,IO端口用來連接各種設備,ADC模塊用來完成通道采樣轉換。
2.2 定時器設計原理
本設計主要是利用MSP430的IO端口與時鐘芯片DS1307和外接鍵盤相連,通過軟件程序設定與硬件電路的搭建,讓定時器實現(xiàn)定時、報警、顯示等多種功能。軟件程序中中斷程序的設計最為關鍵,要注意鍵盤輸入定時信號后的各個端口的中斷處理。而鍵盤的程序設計主要是采用掃描法,通過判斷行與列的鍵盤輸入信號來確定鍵入數(shù)字[1]。
3 基于單片機的多用途定時器的實現(xiàn)
3.1 硬件設計
多用途定時器的設計主要是通過MSP430單片機的各個端口與時鐘電路、鍵盤電路、顯示電路等進行連接,通過電壓與電平的變化和轉換來實現(xiàn)的硬件電路功能。在電路的設計中要考慮到各個器件引腳的功用、輸入輸出電平的匹配。不要忽略復位電路、比較電路、電源電路等部分。重要的電路部分要先畫出電路原理圖反復檢查確認后再進行搭建。
其中較為復雜的時鐘模塊設計主要是通過DS1302時鐘里面含有實時時鐘和31字節(jié)的靜態(tài)RAM,通過簡單的串行接口與單片機進行通信,實時時鐘電路提供年、月、日、星期、時、分、秒的信息,時鐘操作可通過AM/PM指示采用12/24小時格式[2]。用RES(復位)、SCLK(串行時鐘)、I/O(數(shù)據線)、三個口線與單片機之間進行同步串行通信[3]。時鐘電路部分是整個系統(tǒng)設計的難點,電路搭建的正確與否直接關系著定時器時鐘系統(tǒng)是否能夠正常運行。時鐘部分硬件電路如圖1所示:
其次是鍵盤模塊主要采用掃描方式進行。鍵盤的工作方式也是分為兩種,編程控制方式和中斷控制方式,一般是采用矩陣式鍵盤設計。首先設置各個口線為輸入模式,通過中斷的方式或者軟件查詢的方式,獲取信息,從而知道各個口線是否有鍵按下,如果有鍵按下,則口線端口為高電平,否則為低電平[4]。在按下設置鍵對時間進行調整之前可以通過+、-按鍵進行調節(jié)。掃描鍵盤一般由行和列組成,在鍵盤上的某條行線上輸入低電平,如果鍵盤中某個鍵被按下則某個列線變?yōu)榈碗娖健fI盤輸入時需要通過查詢方式掃描各條線。如果想調整的時間點為多個的話,在對其中的一個設置完成后,系統(tǒng)可以自動的跳到下一個時間點上,這樣就能夠對所有的時間的點進行調整了,調整結束之后返回到調整之后的時間并且顯示出來。
3.2 軟件設計
在軟件程序設計中,調試與仿真要用到的是IARSystems公司開發(fā)的軟件,它是全球領先的嵌入式開發(fā)工具,與服務的供應商,包含帶有C/C++編譯器和調試器的集成開發(fā)環(huán)境,實時操作系統(tǒng)等許多建模工具,我們本次設計使用的是IAREW430。軟件程序寫入前注意打開IAR Embedded Workbench,注意單擊菜單Project、Add file test出現(xiàn)需要的加載源文件界面,選擇相應的界面類型,編譯時注意對430單片機型號進行選擇。
程序在運行時要注意對DS1302進行設置,開始調整時間之前要先對DS1302系統(tǒng)進行初始化,看看當前系統(tǒng)的時間是否為0,準確無誤后,對時間進行上傳,將有效的信息存儲在EPROM中,然后上傳給信息管理層,收到命令后對相應的時間進行修改,然后顯示出具體的時間。LED數(shù)碼管在顯示之前,要對串口的工作方式進行設置,然后設置對應的地址指針,然后選擇數(shù)段碼,通過傳送過來的脈沖來顯示,最后知道段位的時間,然后再次選擇段位,通過下一次傳送顯示這個段位的時間,以此類推,當所有的段位都顯示出來后,取段結束顯示時間成功。
4 結語
多用途定時器對于人們日常工作與生活中的定時給予了很大的幫助,利用單片機進行的多用途定時器經過實踐應用,效果顯著,功能完善,值得推廣應用。
參考文獻
[1]王秋爽.單片機開發(fā)基礎與經典設計實例[M].機械工業(yè)出版社.2008:99.
[2]胡漢才.單片機原理及其接口技術[M].清華大學出版社.2010:55-58.
關鍵詞:單片機;溫度測控
中圖分類號:TP18文獻標識碼:A文章編號:1009-3044(2007)17-31419-01
Discusses the Monolithic Integrated Circuit in the Temperature Observation and Control Aspect Application
ZHANG Wei
(Jiujiang Universitiy,Jiujiang 332005,China)
Abstract:The temperature observation and control has the widespread application in the industry domain, along with sensor technology, microelectronic technology, monolithic integrated circuit technology unceasing development. This article will introduce one kind based on AT89C52 and 89C2051 double MCU injection molding formation temperature observation and control system, and hard, software design method and system functional block diagram and so on.
Key words:Monolithic integrated circuit;Temperature observation and control
塑料制品因具有容易加工、生產效率高、節(jié)約能源、絕緣性能好、質量輕、耐磨和耐腐蝕性強等優(yōu)點,其使用比例正迅猛增加。而注塑成型是塑料加工中普遍采用的方法之一。該方法制成品效率比其他常規(guī)的金屬成型方法高,能適用于多種原料,成批、連續(xù)地生產,并且具有穩(wěn)定的尺寸,容易實現(xiàn)生產的自動化和高速化,具有極高的經濟效益。在影響塑料成型加工過程的諸多因素當中,熔體溫度是一個最為關鍵的控制量,本文介紹了溫度的檢測與控制方法。
1 加工工藝對控制系統(tǒng)的要求
根據塑料制品特性和實際控制要求:在剛開始加熱時,希望溫度上升的速度可以快些,以便縮短上升時間,但又不能有太大的超調,并且希望PID控制器參數(shù)初值可以在線更改,當溫度達到控制要求范圍內時,希望其能一直被控制在給定值附近變化,當其超出某一范圍時(如高于某一值或低于某一值時)就啟動上限報警或下限報警。
根據上述要求,決定采用如下加熱過程:剛開始加熱時,可以采取滿功率加熱或按滿功率的某一比例值加熱,當溫度上升到某一值時,轉為按基于Fuzzy推理的參數(shù)自整定PID控制算法得到的控制量進行調節(jié)加熱,加熱方式可通過功能單元決定。
(1)按百分比加熱:就是以設定值的某一比例值作為控制量來決定PWM的占空比來控制固態(tài)繼電器的通斷,選定加熱比例后,前端機就以該比例決定的固定的PWM的占空比來進行加熱,該比例值可在線更改。
(2)按設定值加熱:根據設定值與實際溫度的偏差,采用基于Fuzzy推理的參數(shù)自整定PID控制算法得到控制量,按該控制量決定PWM的占空比進行加熱。
2 控制系統(tǒng)原理
控制系統(tǒng)由硬件和軟件兩部分組成。其中硬件部分主要由信號采集與放大電路、溫度補償電路、A/D轉換電路、單片機電路幾部分組成。軟件包括單片機AT89C52程序設計、單片機AT89C52與AT89C2051通信程序設計、單片機AT89C2051程序設計三個主要模塊組成。
3 控制系統(tǒng)硬件設
(1)信號采集與放大電路
采用K型熱電偶獲得現(xiàn)場的實際溫度,溫度采樣范圍為0―400℃ ,相應地轉換的電壓信號范圍為0―20mv。因為系統(tǒng)要控制8路工業(yè)電爐,所以就要對8路溫度進行檢測采樣和控制,這里采用CD4051 實現(xiàn)八選一通道選擇。電壓信號放大采用低零漂移的運算放大器OP07 , 差分雙端輸入,可以有效地抑制共模干擾。
從熱電偶獲得的最大有效電壓為20mv ,而ICL7135 滿量程時的電壓為2V,所以放大電路的放大倍數(shù)為100,該放大電路由運放U4、U5組成第一級差分武電路,U6組成第二級差分式電路,根據這一放大倍數(shù)來取電阻的阻值,該放大電路的放大倍數(shù)可由下式計算:
Av=A1A2=(1+2R96/R95)(-R89/R98),要保證Av=-100,取R89=20K,取R98=20K。取R96=20K,R95為一電位器,其取值范圍之為0-500。所以只要調節(jié)電位器R95,就可以滿足要求。
(2)溫度補償電路
熱電偶分度表是在冷端溫度為0℃ 時測定的,熱電偶在實際測量中,當冷端的溫度不是0℃時,就不能直接利用分度表得知溫度值,因此必須對熱電偶冷端進行溫度補償修正。熱電偶測溫電路中要有冷端溫度補償電路、冷端補償方法較多,這里采用冷端溫度補償器來實現(xiàn)溫度補償。
該補償電路的工作原理是熱電偶產生的電勢經濾波放大后有一定的靈敏度,采用溫敏二極管組成的測量電橋的輸出經放大器放大后也有相同的靈敏度。將這兩個放大后的信號再通過增益為1的運算放大器相加,則可以自動補償冷端溫度變化引起的誤差。補償范圍在0―50℃ ,精度可以達到0.5 ℃。
(3)A/D轉換電路
因溫度是一個緩慢變化的過程,對采樣速率要求不高,為提高抗干擾能力,采用雙積分A/D轉換器。
本文采用MAXIM公司的ICL7135 , MC1403芯片為ICL7135提供基準電壓。通常情況下,設計者都是用單片機來并行采集ICL7135的數(shù)據,在這里,作者采用單片機對ICL7135 進行串行數(shù)據采集,利用該方式具有結構簡單、占用單片-機資源少等特點。
在ICL7135與單片機系統(tǒng)進行連接時,如果使用ICL7135的并行采集方式,則不但要連接BCD碼數(shù)據輸出線,又要連接BCD
碼數(shù)據的位驅動信號輸出端,這樣至少需要9根I/0口線,因此,系統(tǒng)的連接比較復雜,ICL7135的串行接法是通過計脈沖數(shù)的方法來獲得測量轉換結果的,可以通過單片機的定時器TO或Tl來作計數(shù)脈沖器,定時器TO所用的CLK頻率是系統(tǒng)晶振頻率的1 / 12 ,因此可利用單片機的ALE信號經74LS74分頻后作為ICL7135的脈沖(CLK)輸入,便可得到定時器TO所使用的頻率與單片機系統(tǒng)晶振頻率的關系,以及ICL7135所需頻率輸入與單片機系統(tǒng)晶振頻率的關系。
為使定時器TO計數(shù)脈沖與ICL7135工作所需的脈沖同步,可以將ICL7135的BUSY信號接至AT89C52的P3 .2 ( INTO)引腳上,此時定時器TO是否工作將受BUSY信號的控制,并且將定時器TO的選通控制信號GATE位置1 。ICL7135的輸入電壓與TO計數(shù)脈沖成線性關系,ICL7135滿量程時對應的有效計數(shù)脈沖為20000 ,可以得以下公式:
fIN=VIN/VMAX*20000=VIN/VR*1000,式中:fIN為對應輸入電壓VIN的計數(shù)脈沖,VMAX,VR分別為ICL7135的最大工作電壓和基準電壓,且有VMAX=2VR,VR工作時事先通過MC1403輸出端電位器調好。
只要VR非常準確,且準確測量出VIN,因ICL7135和AT89C52 的精確度都非常高,故得到的fIN也可達到很高的精度。
(4)4CPU電路
之所以要用AT89C52和AT89C2051兩個單片機,主要是考慮到AT89C52要實現(xiàn)的功能比較多,負荷較重,且其片內RAM空間已全部分配完所以采用AT89C52作為系統(tǒng)的核心控制芯片,用AT89C52用于產生PWM波形去控制固態(tài)繼電器的導通與截止。
4 控制系統(tǒng)的軟件設計
根據系統(tǒng)的工作原理及控制要求,考慮軟件的總體結構設計,正確處理各實體之間的聯(lián)系,為此軟件采用模塊化的結構設計,自頂向下,逐步細化,利用子程序構成各模塊。整個軟件系統(tǒng)有良好的可讀性、可修改性,易于調試和維護。下面簡述其中三個主要的程序設計。
(1)單片機AT89C52 程序設計
包括主程序設計和中斷采樣程序設計,要對8路溫度進行循環(huán)采集,通過定時器T2每隔1s定時對8路溫度進行順序采集,這就要對通道選擇,這可通過AT89C52的P2.0、P2.1、P2.2 對多路開關CD4051的地址引腳A0、Al 、A2 進行控制而實現(xiàn)在采樣中斷子程序中,要對看門狗計數(shù)器清零,這可通過AT89C52的Pl .1 來控制MAX813L的WD1引腳實現(xiàn),每次進人中斷采樣時,給MAX813L的WD1引腳一個脈沖,從而對其內部計數(shù)器清零。獲得采樣數(shù)據后,要進行處理(如進制轉換等),加熱模式判別(停止加熱、是否需上下限報警、是按百分比加熱還是按基于Fuzzy推理的參數(shù)自整定PID控制加熱等),與AT89C2051進行通信,將獲得的控制量傳送給AT89C2051以實現(xiàn)PWM波形的生成,偏差和偏差變化率存取計算(因有8路溫度數(shù)據,對應就需給它們分配存儲空間,以方便存取和計算)。
(2)單片機AT89C52與AT89C2051通信程序設計
AT89C52 經采樣處理后,需將得到的控制量傳送給AT89C2051 , AT89C2051根據獲得的控制量通過軟件產生PWM控制信號。這就需安排好AT89C52與AT89C2051的通信協(xié)議,這里AT89C52 與AT89C2051之間采用四位數(shù)據線并行通信,所以在通信前需將AT89C52 發(fā)送的控制量拆成半字節(jié)后放入發(fā)送存儲單元。在進行通信時,AT89C52 通過引腳P0 . 4發(fā)聯(lián)絡信號,AT89C2051 收到AT89C52發(fā)送的聯(lián)絡信號后,通過引腳P3 . 4給AT89C52發(fā)應答信號,AT89C52收到AT89C2051的應答信號后,就開始給AT89C2051發(fā)送數(shù)據。
(3)單片機AT89C2051 程序設計
利用AT89C2051來完成PWM波形的發(fā)生,AT89C52只需將經運算后得到的控制量送給AT89C2051 , 這樣,AT89C52 的負荷就減輕了,有利于提高整個系統(tǒng)的工作性能。而AT89C2051只管PWM波形的發(fā)生,有利于提高控制精度,獲得較好的實時性,且電路結構相當簡單,八路輸出,只需要一片AT89C2051 ,和一個簡單的驅動電路。其工作過程也十分簡單:AT89C2051經軟件算法后獲得PWM波形,八路輸出采用循環(huán)輸出,因每路數(shù)據的更新時間非常短,不會影響控制的實時性,然后通過驅動電路驅動后去控制固態(tài)繼電器的閉合時間。
本系統(tǒng)選用單片機89C52作為核心控制芯片,具有成本低、體積小、集成度高、可靠性高等特點,是一種較理想的選擇。設計方法上,將軟件工程的思想引用于單片機系統(tǒng)的設計,使系統(tǒng)的信息流向及整體功能設計簡單明確、清晰。
參考文獻:
[1]張友德,趙志英,涂時亮.單片微型機原理、應用與實驗(實驗版)[M].上海:復旦大學出版社.