超聲波流量計的主程序研究與設計 十二
五 系統軟件的仿真和調試
超聲波流量計單片機開發過程中都要有編程器,硬件開發器,開發軟件,指令系統,芯片使用說明書等。隨著科學的進步,開發手段多種多樣。 C51程序的編寫和編譯鏈接等過程可以在開發工具“Keil C51”的環境下進行。工作原理就是利用模擬開發軟件在計算機上實現對單片機的硬件模擬,指令模擬,運行狀態模擬,從而完成應用軟件開發全過程。
另外一個優點就是可以不需要硬件就進行全軟件仿真,一切調試好后將程序燒入芯片,再將芯片插入硬件系統,就可使用了。
調試過程如下:
首先建立一個項目,選擇要保存項目的路徑,并輸入項目文件名,保存;選擇單片機類型(本設計選擇Ateml89C52),選定CPU型號后,單擊“確定”;接下來創建程序文件,在彈出的編輯窗口中輸入C51源程序;輸入完成后,選擇路徑保存“.C”文件;將創建的程序文件添加到項目中去;程序文件添加完畢后,將鼠標指向“Target 1”并單擊右鍵,再單擊“Options for Target‘Target 1’”選擇“Target ”標簽進行相關設置;最后單擊“Buile Target”選項,開始對項目中的程序文件進行編譯連接,沒有錯誤之后,系統就會生成與項目文件同名的可執行代碼及用于EPROM編程的Hex文件。將生成的HEX文件下載到單片機系統中,就可以運行相應的程序。
附件二:主單片機程序
#include<reg51.h>
#include<math.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
//顯示部分定義和初始化
/* LCD顯示只需用P3的4個位口,端口定義如下*/
#define LCD_data P0 //數據口
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; //按鍵標識、標號
double tc;//時間差
#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;//確認鍵的標志位
//1.延時函數
//--------------------------------------------------------------
void delay(int ms)
{
while(ms--)
{
uchar i;
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
超聲波流量計