黄山学院本科毕业论文
开始 接收串口数据 判断接受到的数据第4位是否为1 N Y 按选定的通道号采集 选定循环采集方式 结束
图4.7 从机串口接受中断函数Serial_INT() interrupt 4
开始 选定通道号 开始转换 转换结束将得到的数据发送给串口 结束 图4.8模数转换子程序ADCON
31
黄山学院本科毕业论文
第五章 调试结果
这个系统是一个主从式的数据采集系统。系统调试以程序为主,硬件调试应
先检测电路的焊接是否正确,然后用外用表检测或通电检测其是否有短路或断路。软件调试包括调试程序和对硬件准确性的调试。
在整个系统中,主机用到了9个按键,按键0按下后,发送一个00H的数据给从机,而从机接收到这个信号就开始调用一个循环采集方式,然后从机采集完数据后再将转换好的数据和采集线路的通道号发送给主机并用LED数据显示器显示出来;按键1-8用于选择采集方式,分别送相应的采集线路的通道号给从机,然后再将从机转换好的数据和采集线路的通道号发送给主机并用LED数据显示器显示出来;当主机没有按键按下时,则发送一个数0给LED。
参考文献
[1] 严洁.单片机原理及其接口技术.机械工业出版社,2010,65-105 [2] 范红刚.51单片机自学笔记.北京航空航天大学出版社,2009
[3] 高云.基于MSP430的温室多路数据采集系统.农机化研究,2009,No.8 [4] 常铁原,王欣,陈文军. 多路数据采集系统的设计.电子技术应用,2008,No.11
[5] 叶红海,李丽敏.基于单片机的多路数据采集系统的设计与实现.2008,No.4
32
黄山学院本科毕业论文
[6] 彭伟.单片机C语言程序设计实训100例.电子工业出版社,2009,46-48,104-110
[7] 杨居义,杨晓琴,王益斌等.单片机课程设计指导.清华大学出版社,2009,135-141
[8] 刘刚,秦永左,朱杰斌.单片机原理及应用.北京大学出版社,2006,76-98,134-155
[9] 林祝亮,武林,杨金华.基于双单片机的多路数据采集系统设计.仪器仪表学报,2006,No.6
[10] 元增民,张文希.单片机原理与应用基础.国防科技大学出版社,2006,205-266
[11] 王琳,商周,王学伟.数据采集的发展及应用.电测与仪表,2004,No.464 [12] V. Schmidt, Control, data acquisition, and remote participation for fusion research, Fusion Eng. Des. 81 (2006) 1702–1712.
[13] A.Neto,H.Fernandes,A.Duarte, Firesignal-Data acquisition and control system software.FusionEngineering and Design 82(2007)1359-1364.
附录1
主机部分程序
#include
#define uchar unsigned char #define uint unsigned int sbit k1=P3^4; sbit smgd=P2^6; sbit smgk=P2^7;
uchar Pre_KeyNo=16,KeyNo=16; uchar code LEDData[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,
0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79, 0X71} /*****延时子程序*****/
void Delay(uint x) { uchar i; while(x--)
for(i=0;i<120;i++); }
/**************LED显示子程序***************/
33
黄山学院本科毕业论文
void Display_Result(int d) {
smgk=1; P0=0X7C; smgd=1;
P0=LEDData[d/100]; //显示百位 Delay(5); smgd=0; smgk=0; smgk=1;
P0=0X7D; smgd=1;
P0=LEDData[d/10]; //显示十位 Delay(5); smgd=0; smgk=0; P0=0x7E; smgd=1;
P0=LEDData[d]; //显示个位 Delay(5); smgk=0; smgd=0; smgk=1; P0=0X7C; smgd=1;
P0=0x80; //显示小数点 Delay(5); smgd=0; smgk=0; }
/************键盘扫描子程序**************/
void Keys_Scan() { uchar Tmp,An;
P3=0XF0; Delay(1);
An=P3^0XF0; Tmp=An>>4; 四位
34
//低四位置1,放入4行 //按键后11110000将变成
XXXX0000,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1
//该表达式将高4位移到低 黄山学院本科毕业论文
swith(Tmp) //判断按键发生在哪列 {
case 1:KeyNo=0;break; case 2:KeyNo=1;break; case 4:KeyNo=2;break; case 8:KeyNo=3;break;
default: KeyNo=16; //无键按下 }
P3=0X0F; //高4位置0,放入4列 Delay(1);
Tmp=P3^0xF0;
switch(Tmp) { case 1:KeyNo+=0;break; case 2:KeyNo+=4;break; case 4:KeyNo+=8;break; case 8:KeyNo+=12;break; } }
/********向串口发送数据子程序*********/
void putc_to_serialport(uchar C) { SBUF=C; while(T1==0); TI=0; }
Display() { smgK=1; P1=0X01; Smgd=1; P0=OXOF; }
/*******主程序*******/
void main() { P0=0x00;
35
// 按键后00001111将变成
0000XXXX,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1
//0—3行分别附加起始值0,4,
8,12