Keil有以下几个特点:
① 全功能的源代码编辑器;
② 器件库用来配置开发工具设置;
③ 项目管理器用来创建和文护用户的项目;
④ 集成的MAKE工具可以汇编、编译和连接用户嵌入式应用;
⑤ 所有开发工具的设置都是对话框形式的;
⑥ 真正的源代码级的对CPU和外围器件的调试器;
⑦ 高级GDI(AGDI)接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信
4.3程序设计
4.3.1 主程序
根据需要,可将系统按照功能划分为多个模块,分别是主程序模块、A/D转换模块、LCD显示模块、中断服务程序模块、按键输入模块等。每个模块都有各自的功能通过主程序有机的连接。各模块关系如图。
图4.3.1 关系图
4.3.2 A/D转换子程序
先要选通PCF8591,又因为PCF8591具有4个通道,所以我们通过发送通道控制字来选择,接下来选择转换通道,首先从I2C总线传输开始,然后发送寻址字节,发送控制字节,检查应答,再次发送寻址字节后依次通道采样。
程序:
{
unsigned char i = 0;
iic_start();
IICSendByte(PCF8591_WRITE); //控制字0x90
check_ACK();
IICSendByte(controlbyte); //通道控制字
check_ACK();
iic_start(); //重新发送开始命令
IICSendByte(PCF8591_READ); //控制字0x91
check_ACK();
IICreceiveByte(); //空读一次
slave_ACK(); //收到一个字节后发送一个应答位
while (i < 3)
//采集0,1,2通道
{
receivebuf[i++] = IICreceiveByte();
slave_ACK();
}
receivebuf[3] = IICreceiveByte(); //采集第3通道
slave_NOACK(); //收到最后一个字节后发送一个非应答位
iic_stop();
}
图4.3.2 A/D转换子流程图
4.3.3 显示子程序
显示子程序流程图如图4-3所示。判断LCD是否忙,通过单片机写指令控制,然后调用A/D转换的数据,显示在液晶显示屏上。
图4.3.3显示子程序流程图
结 论
本通用数据采集系统实用性强,能够很好地巡回采集测量控制多路数字信号和模拟信号,结构较为简单,成本低,外接元件少。在实际应用中工作性能稳定,测量电压准确,精度较高。而且从单片机主芯片串行口连接RS232转换芯片MAX232与PC机相连,完成电压实时数据的传递和其他控制工作。并通过串口和LCD显示端连接,拥有较好的人机界面。适用范围广泛,可以单独使用作为监控仪,应用于电子器件环境变化,工业厂房测量各部分的工作电压等等。也可以作为智能控制系统的一部分,与其它设备协同工作。系统移植性强,只需改变或添加前端测量用的传感器类型,可在此基础上修改为其他非电量参数的测量系统。
但是由于时间仓促,本多路数据采集系统,还有一些不足之处,也发现在许多的问题并没有很好的解决,只解决了一部分的问题,例如A/D转换,存储的问题得到了解决,但参数设置的问题并没有解决。虽然现场不能大量的存储数据,但也可存一定量至少当天所有的数据例如温度,气压的等等数据,这可以当做是上位机的一种备份,这本系统已可做到。但在现在设置参数的任务我并没有完成,这需要今后更进一步的思考与学习。在现实生产应用中现场设置也是有一定必要的,这样我们可以随时根据现在变化改变,不需要依靠后台。希望今后能够进一步完善系统。