当前位置:首页 > 单片机电阻表的设计说明书 - 图文
单片机课程设计说明书
附录3
主程序:#include
unsigned char code mes1[]={%unsigned char code digit[]={%unsigned char code mes[]={%unsigned char res[5],temp_0=0,temp_1=0; unsigned char t=0,sign=7; unsigned int R=0; unsigned char DIY_1602[]= {
/*-- 电阻符号 --*/
0x00,0x00,0x0E,0x11,0x11,0x0A,0x1B,0x00 };
/**************函数功能:延时若干毫秒 *****************/ void delaynms(unsigned char n) {
unsigned char i,j,k; delaynms(100); }
for(i=0;i 17 单片机课程设计说明书 /*************主函数*******************/ void main(void) { unsigned char j,T1=0,T2=0,k=1; delaynms Init_LCD1602(); Write_DIY1602(DIY_1602); WriteAdd_1602(0x00); j=0; while(mes1[j]!='\\0') WriteData_1602(mes1[j++]); while(1) } void get_liangcheng(void) //判断用哪一个量程 { unsigned char i; for(i=0;i<5;i++) { P3=(P3&0xf0)+i; delaynms(50); temp_0=GetAD_code(0); sign=7; { get_liangcheng(); handle_code();//处理AD读取到的数据 dis_code(); //显示四位数字和一个小数点 dis_dw_lc(); //显示电阻单位和量程。 delaynms(1000); } 18 单片机课程设计说明书 switch(i) { case 0: if((0x05 sign=0; break; //中断switch; case 1: if((0x20 sign=1; break; case 2: if((0x30 sign=2; break; case 3: if((0x2b sign=3; break; case 4: if((0x2b sign=4; break; } if(sign!=7) break; //中断for循环 } } /*************处理AD读出的数*******************/ void handle_code(void) //处理AD读出的数 { unsigned char i; P3=(P3&0xf0)+sign; delaynms(50); temp_0=GetAD_code(0); //AD读取电压, 19 单片机课程设计说明书 temp_1=GetAD_code(1); R=((100*temp_0)/(255-temp_1))*10; //转换成电阻, for(i=0;i<4;i++) //把处理后的前四位数放进数组 { } /*************显示读数和小数点*******************/ void dis_code(void) //显示读数和小数点 { unsigned char point=10,i; if(sign==0||sign==3)//判断各量程的小数点放在第几位 point=3; res[3-i]=R; } R=R/10; else if(sign==1||sign==4) point=1; else { } WriteAdd_1602(0x40); //显示四个数学和一个小数点 if(sign==2) point=2; for(i=0;i<4;i++) { } if(i==point) WriteData_1602('.'); WriteData_1602(digit[res[i]]); 20
共分享92篇相关文档