附录1:C语言程 #include<reg52.h> //对P1口定义 sbit d1=P1^6; sbit key1=P1^7; sbit cs=P1^2; sbit clk=P1^3; sbit din=P1^1; sbit dout=P1^0; // #define uchar unsigned char #define uint unsigned int uchar a,x,y,z,date,temp; uchar conword,qian=1,shi,ge,key; uint dianya,temp1; //制做LED显示查询表 uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极个位数码管段码表 uchar code table2[]= {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //共阴极十位和小数数码管点显示表 uchar code table3[]={0x04,0x14,0x24,0x34,0x44,0x54,0x64,0x74,0x84,0x94,0xA4};//tcl2543初始化通道号表 bit cy; sbit bit7=B^7; void display(qian,shi,ge);//宏定义 void delay(z); void jp(); void daout(); //主函数 void main() { a=0; key=0; while(1) { daout();//初始化调用 jp();//键盘扫描子程序调用 display(qian,shi,ge);//显示调用 } } //键盘扫描子程序,九通道切换 void jp() { //a=1; if(key1==0)//去除按键抖动 { delay(20); if(key1==0) //通道增 通过按键来选择通道可选范围为0-9 { a++; if(a==10) a=0; key++; if(key==10) key=0; } while(!key1); } if(d1==0) { delay(20); if(d1==0)// 通过按键来实现对通道号逆选,即通道递减 { a--; if(a==-1) a=9; key--; if(key==-1) key=9; } while(!d1); } qian=a; } //延时子程序 void delay(z) { for(x=z;x>0;x--) for(y=110;y>0;y--); } //显示子程序 void display(qian,shi,ge) { P2=0xfe;//选中qian位 P3=table[qian];// 送qian位段码即显示通道号 delay(5);//延时 P2=0xff; P2=0xfb;//选中十位 P3=table2[shi];//显示测得的电压值 delay(5); P2=0xff; P3=0xff; P2=0xf7;//选中个位 P3=table[ge];//显示个位 delay(5); P2=0xff; P3=0xff; delay(5); } //对TCL2543AD数据采集进行初始化子程序 void daout() { char i; uchar value=0; conword=table3[key];//对TCL2543初始化 cs=1;//对TCL2543清零 cs由高到低有效 cs=0; clk=0;//TCL2543在时钟脉冲下将采集数据输出 B=conword; for(i=8;i>0;i--)//对2543输入控制字并获取输出值 { cy=dout; din=bit7; clk=1; B=B<<1;//左移 clk=0; value=value<<1; if(cy==1) value++; } //二十进制转换子程序 dianya=value*5; cs=1; shi=dianya/256;//对获得的二进制数处理,转换成十进制数并处理为列表值 temp=dianya%256; temp1=temp*10; ge=temp1/256; }