超声波流量计的主程序研究与设计 十二
五 系统软件的仿真和调试
超声波流量计单片机开发过程中都要有编程器,硬件开发器,开发软件,指令系统,芯片使用说明书等。随着科学的进步,开发手段多种多样。 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_();
}
}
}
超声波流量计