超聲波流量計(jì)的主程序研究與設(shè)計(jì) 十二
五 系統(tǒng)軟件的仿真和調(diào)試
超聲波流量計(jì)單片機(jī)開發(fā)過程中都要有編程器,硬件開發(fā)器,開發(fā)軟件,指令系統(tǒng),芯片使用說明書等。隨著科學(xué)的進(jìn)步,開發(fā)手段多種多樣。 C51程序的編寫和編譯鏈接等過程可以在開發(fā)工具“Keil C51”的環(huán)境下進(jìn)行。工作原理就是利用模擬開發(fā)軟件在計(jì)算機(jī)上實(shí)現(xiàn)對單片機(jī)的硬件模擬,指令模擬,運(yùn)行狀態(tài)模擬,從而完成應(yīng)用軟件開發(fā)全過程。
另外一個(gè)優(yōu)點(diǎn)就是可以不需要硬件就進(jìn)行全軟件仿真,一切調(diào)試好后將程序燒入芯片,再將芯片插入硬件系統(tǒng),就可使用了。
調(diào)試過程如下:
首先建立一個(gè)項(xiàng)目,選擇要保存項(xiàng)目的路徑,并輸入項(xiàng)目文件名,保存;選擇單片機(jī)類型(本設(shè)計(jì)選擇Ateml89C52),選定CPU型號后,單擊“確定”;接下來創(chuàng)建程序文件,在彈出的編輯窗口中輸入C51源程序;輸入完成后,選擇路徑保存“.C”文件;將創(chuàng)建的程序文件添加到項(xiàng)目中去;程序文件添加完畢后,將鼠標(biāo)指向“Target 1”并單擊右鍵,再單擊“Options for Target‘Target 1’”選擇“Target ”標(biāo)簽進(jìn)行相關(guān)設(shè)置;最后單擊“Buile Target”選項(xiàng),開始對項(xiàng)目中的程序文件進(jìn)行編譯連接,沒有錯誤之后,系統(tǒng)就會生成與項(xiàng)目文件同名的可執(zhí)行代碼及用于EPROM編程的Hex文件。將生成的HEX文件下載到單片機(jī)系統(tǒng)中,就可以運(yùn)行相應(yīng)的程序。
附件二:主單片機(jī)程序
#include<reg51.h>
#include<math.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
//顯示部分定義和初始化
/* LCD顯示只需用P3的4個(gè)位口,端口定義如下*/
#define LCD_data P0 //數(shù)據(jù)口
sbit LCD_EN = P3^2; //液晶使能控制
sbit LCD_RS = P3^5; //寄存器選擇輸入
sbit LCD_RW = P3^6; //液晶讀/寫控制
sbit LCD_PSB = P3^7; //串/并方式控制
uchar code dis1[] = {"直徑: . cm"};
uchar code dis2[] = {"角度: . 度"};
uchar code dis3[] = {"流速: . m/s"};
uchar code dis4[] = {"流量: . m^3/s"};
uchar data_d[3] ={"000"};
uchar data_jiao[3]={"000"};
uchar data_v[4]={"0000"};
uchar data_q[4]={"0000"};
uchar flag=0,key=0; //按鍵標(biāo)識、標(biāo)號
double tc;//時(shí)間差
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
uchar IRDIS[2];
uchar IRCOM[4];
void delay0(uchar x); //x*0.14MS
void lcd_pos(uchar X,uchar Y); //確定顯示位置
//鍵盤部分定義和初始化
uchar temp,key_num,getkey;
sbit flag_sure=0;//確認(rèn)鍵的標(biāo)志位
//1.延時(shí)函數(shù)
//--------------------------------------------------------------
void delay(int ms)
{
while(ms--)
{
uchar i;
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
超聲波流量計(jì)