西安航空职业技术学院 毕业设计论文
附录 部分源程序
#include
#define uchar unsigned char #define uint unsigned int #include
//数码管段选定义 0 1 2 3 4 5 6 7 8 9
uchar
smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码
//数码管位选定义
uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};
uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; uchar smg_i = 3; //显示数码管的个位数
sbit SCL=P2^0; sbit DO=P2^1; sbit CS=P2^2;
sbit key1 = P2^3; sbit key2 = P2^4;
uchar nw_can ; // 内外电压的选择
/***********************1ms延时函数*****************************/ void delay_1ms(uint q) {
uint i,j; for(i=0;i 24 code //SCL定义为P1口的第3位脚,连接ADC0832SCL脚 //DO定义为P1口的第4位脚,连接ADC0832DO脚 //CS定义为P1口的第4位脚,连接ADC0832CS脚 for(j=0;j<120;j++); 西安航空职业技术学院 毕业设计论文 /***********************小延时函数*****************************/ void delay_uint(uint q) { while(q--); } // 1 1 0 通道 // 1 1 1 通道 { unsigned char i=0,value=0,value1=0; SCL=0; DO=1; CS=0; SCL=1; SCL=0; DO=SGL; SCL=1; //第二个上升沿 SCL=0; DO=ODD; SCL=1; //第三个上升沿 SCL=0; //第三个下降沿 DO=1; for(i=0;i<8;i++) { } for(i=0;i<8;i++) { //接收校验数据 value1>>=1; SCL=1; SCL=0; //开始从第四个下降沿接收数据 value<<=1; if(DO) value++; //开始 //第一个上升沿 unsigned char ad0832read(bit SGL,bit ODD) 25 西安航空职业技术学院 毕业设计论文 } } if(DO) value1+=0x80; SCL=1; SCL=0; CS=1; SCL=1; if(value==value1) return value; //与校验数据比较,正确就返回数 据,否则返回0 return 0; /****************************************************/ void display() { uchar i; for(i=0;i P1 = 0xff; 数码显示函数 //消隐 //段选 P3 = smg_we[i]; P1 = dis_smg[i]; delay_1ms(1); //位选 } /******************按键*********************/ void key() { if(key1 == 0) { if(key1 == 0) { 26 西安航空职业技术学院 毕业设计论文 } } nw_can = 0; //板子上可调电阻电压 if(key2 == 0) { } } void main() { uchar i; uint temp; while(1) { dis_smg[1]=smg_du[temp/10]; //十位 temp = temp * 100 / 255 * 4.5; dis_smg[2]=smg_du[temp/100] & 0x7f; //得到百位 else temp = ad0832read(1,1); //循环255个周期读取一次 key(); //按键程序 display(); { if(nw_can == 0) temp = ad0832read(1,0); //循环255个周期读取一次 //数码管显示函数 if(i % 30 == 0) //循环30次 if(key2 == 0) { } nw_can = 1; //板子上可调电阻电压 0832,因CPU运行比较快,没必要每次循环都去读取,选择通过CH0输入 0832,因CPU运行比较快,没必要每次循环都去读取,选择通过CH0输入 27 西安航空职业技术学院 毕业设计论文 } } } dis_smg[0]=smg_du[temp]; //个位 ADC0832为8位 ADC,数值为0~255,我们将其分开放入l_tmpdate数组中显示 i++; 28