📄 main.c
字号:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#include "ICL7135.h"
#include "ocm4x8c串.h"
#define Ver 1000
#define Vm 27000-378
//#define Vm 27000-400
sbit STARP=P3^7;
sbit MOTORON=P3^0;
sbit NGLED=P3^5;
sbit OKLED=P3^4;
sbit BELL=P3^6;
uint MOT_R;
uchar STARP_ON;
uchar STARP_OFF;
uint Test_tim;
uchar BCD_i;
uchar AD_ok;
uchar AD_i;
uint LCD_tim;
uchar Rmaxmin[8];
uint Rmax;
uint Rmin;
uint Ur[4];
uint Test;
uint BELL_tim;
uint LCD_flash_tim;
uchar LCD_flash;
uchar LCD_flash_ONOFF;
uint NG_tim;
uint OK_tim;
uchar code tab1[]={
"Rmax: Ω"
"Rtes: Ω"
"Rmin: Ω"
" "
};
uchar code tab2[]={
" "
" "
"手机马达电阻测试"
" Ver:1.00"
};
/////////////////////////////////////////////////////////////////////////
// Bitmap点阵数据表 //
// 图片: D:\..\晶研力信.bmp,横向取模左高位,数据排列:从左到右从上到下 //
// 图片尺寸: 128 * 64 //
/////////////////////////////////////////////////////////////////////////
unsigned char code nBitmapDot[] = // 数据表
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0xFF,0x80,0x00,0x00,0x70,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1B,0xF7,0x80,0x00,0x08,0xF8,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1E,0x07,0x80,0x00,0x0F,0xF8,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0C,0x07,0x80,0x00,0x07,0xF8,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0E,0xF7,0x80,0x00,0x03,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xF7,0x00,0x00,0x01,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xF7,0x00,0x00,0x03,0xC0,0x35,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0x07,0x00,0x00,0x03,0x80,0x69,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0E,0x07,0x00,0x00,0x07,0x70,0xCB,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFF,0x00,0x00,0x0E,0xF9,0xDF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFE,0x00,0x00,0x1F,0xFA,0xDF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0xCE,0x00,0x00,0x1C,0x7D,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x02,0x0D,0xF0,0x00,0x3E,0x77,0xF1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x07,0xF8,0x00,0x3E,0xF3,0xE3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0x9F,0x78,0x00,0x77,0xE3,0xE3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x3F,0x98,0x78,0x00,0xE7,0xF0,0xE3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xC3,0x98,0x78,0x01,0xE7,0xC0,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xC3,0x9B,0x78,0x01,0xC3,0x01,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xDF,0x9F,0xF8,0x01,0xC0,0x01,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0x98,0x78,0x00,0x00,0x01,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xE3,0x98,0x78,0x00,0x00,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xC3,0x98,0x78,0x00,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xCF,0x9F,0xF8,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0x9F,0xF0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x73,0x0C,0x70,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x43,0x00,0x70,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x04,0x07,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x70,0x00,0x00,0x07,0x03,0xE0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x78,0x00,0x00,0x07,0x81,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x07,0x80,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x0F,0x81,0xEF,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0F,0x03,0xFF,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x00,0x1E,0x1F,0xCF,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xC0,0x00,0x1E,0xFF,0x1F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF1,0xE0,0x00,0x3C,0xFC,0x30,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF1,0xE0,0x00,0x78,0x78,0xF8,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE1,0xE0,0x00,0xF8,0x00,0x78,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE1,0xE0,0x01,0xFC,0x01,0xF8,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC1,0xE0,0x01,0xEC,0x0F,0xE0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC1,0xC0,0x01,0xCC,0x07,0x9C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x81,0xC0,0x01,0x8C,0x01,0xFC,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x83,0xC0,0x01,0x0C,0x0F,0xFC,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x03,0xC0,0x00,0x0C,0x1F,0xE0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x03,0xC0,0x00,0x0C,0x1E,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x03,0x80,0x00,0x0C,0x08,0x3C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x87,0x80,0x00,0x0C,0x09,0xFC,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0xC7,0x80,0x00,0x0C,0x0F,0xFE,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xFF,0x00,0x00,0x0C,0x0F,0xFE,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xFF,0x00,0x00,0x0C,0x0F,0x1C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0x00,0x00,0x1C,0x0E,0x1C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7C,0x00,0x00,0x1C,0x06,0x38,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x3C,0x00,0x00,0x0C,0x07,0xFC,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x38,0x00,0x00,0x0C,0x07,0xFC,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x04,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/********** HEX转BCD******/
/***bcd_data(<0x255,>0)***/
/*
unsigned char BCD2HEX(unsigned int bcd_data)
{
unsigned char temp;
temp=((bcd_data>>8)*100)|((bcd_data>>4)*10)|(bcd_data&0x0f);
return temp;
}*/
/********** HEX转BCD******/
/***hex_data(<0xff,>0)****/
/*
unsigned int HEX2BCD(unsigned char hex_data)
{
unsigned int bcd_data;
unsigned char temp;
temp=hex_data%100;
bcd_data=((unsigned int)hex_data)/100<<8;
bcd_data=bcd_data|temp/10<<4;
bcd_data=bcd_data|temp%10;
return bcd_data;
}
*/
void main(void)
{
uchar i,Rx;
uint Rmax_old,Rmin_old,Ur_tem;
uchar MOT_R_BCD[4];
init_lcd();
img_disp (nBitmapDot); //显示公司标志
OKLED=0;
NGLED=0;
MOTORON=0;
BELL=0;
delay1 (4000);
OKLED=1;
NGLED=1;
MOTORON=1;
BELL=1;
clrram ();
chn_disp(tab2);
delay1 (4000);
clrram ();
chn_disp(tab1);
TH0=(0xffff-5000)>>8; //5ms
TL0=(0xffff-5000)&0xff;
ET0=1;
TMOD=0x01;
TR0=1;
EX0=1;
IT0=1;
EA=1;
while(1)
{
for(i=0;i<8;i++)
{
P2&=0xf0;
P2|=i;
Rx=0;
switch(P0)
{
case ~(1<<0): Rx=0;
break;
case ~(1<<1): Rx=1;
break;
case ~(1<<2): Rx=2;
break;
case ~(1<<3): Rx=3;
break;
case ~(1<<4): Rx=4;
break;
case ~(1<<5): Rx=5;
break;
case ~(1<<6): Rx=6;
break;
case ~(1<<7): Rx=7;
break;
}
switch(P1&0x30)
{
case 0x20: Rx=8;
break;
case 0x10: Rx=9;
break;
}
Rmaxmin[i]=Rx;
}
Rmax_old=Rmax;
Rmin_old=Rmin;
Rmin=Rmaxmin[0]*1000+Rmaxmin[1]*100+Rmaxmin[2]*10+Rmaxmin[3];
Rmax=Rmaxmin[4]*1000+Rmaxmin[5]*100+Rmaxmin[6]*10+Rmaxmin[7];
for(i=0;i<8;i++) Rmaxmin[i]+=0x30;
for(i=0;((i<3)&&(Rmaxmin[i]==0x30));i++) Rmaxmin[i]=' ';
for(i=4;((i<7)&&(Rmaxmin[i]==0x30));i++) Rmaxmin[i]=' ';
if((Rmax_old!=Rmax)||(Rmin_old!=Rmin))
{
if(Rmax<Rmin)
{
chn_disp2(" Err ",0x83,4);
chn_disp2(" Err ",0x93,4);
}
else
{
// if(Rmax>35) chn_disp2(" Err ",0x83,4);
// else
chn_disp2(&Rmaxmin[4],0x83,2);
// if(Rmin<25) chn_disp2(" Err ",0x93,4);
// else
chn_disp2(Rmaxmin,0x93,2);
}
}
///////////////////////////////////////////////////////
/*
Test=0 请放入测试件
Test=1 测试中
Test=2 合格
Test=3 不合格
*/
if((STARP==1)&&(++STARP_OFF>5))
{
STARP_ON=0;
STARP_OFF=0;
Test=0;
BELL=1;
chn_disp2(" 准备测试 ",0x98,8);
//chn_disp2(" 请放入测试件 ",0x98,8);
chn_disp2(" ",0x8b,4);
}
switch(Test)
{
case 0:
Test_tim=0;
if((STARP==0)&&(++STARP_ON>5))
{
STARP_ON=0;
STARP_OFF=0;
Test=1;
Test_tim=200; //测试时间 1s
chn_disp2(" 测试中..... ",0x98,8);
}
OKLED=1;
NGLED=1;
MOTORON=1;
break;
case 1:
MOTORON=0;
break;
case 2:
OKLED=0;
NGLED=1;
MOTORON=1;
break;
case 3:
OKLED=1;
NGLED=0;
MOTORON=1;
if(LCD_flash_ONOFF==0)
{
if((LCD_flash&0x1)==0) chn_disp2(" 不合格 ",0x98,8);
else
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x98);
for (i=0;i<8;i++)
{
wr_lcd (dat,0xa1);
wr_lcd (dat,0xf6);
}
}
LCD_flash_ONOFF=1;
}
break;
}
/*
if(LCD_tim==0) //定时全刷屏
{
init_lcd();
chn_disp(tab1);
chn_disp2(&Rmaxmin[4],0x83,2);
chn_disp2(Rmaxmin,0x93,2);
switch(Test)
{
case 0: chn_disp2(" 请放入测试件 ",0x98,8);
break;
case 1: chn_disp2(" 测试中..... ",0x98,8);
break;
case 2: chn_disp2(" 合格 ",0x98,8);
break;
case 3:
if(LCD_flash_ONOFF==0)
{
if((LCD_flash&0x1)==0) chn_disp2(" 不合格 ",0x98,8);
else chn_disp2(" ",0x98,8);
LCD_flash_ONOFF=1;
}
break;
}
LCD_tim=1000;
} */
////////////////////////////////////////////////////////////////
if(AD_ok)
{
Ur[AD_i]=(uint)ICL7135_BCD[0]*10000+(uint)ICL7135_BCD[1]*1000+(uint)ICL7135_BCD[2]*100+ICL7135_BCD[3]*10+ICL7135_BCD[4];
ICL7135_BCD[5]=' ';
// chn_disp2(ICL7135_BCD,0x8B,3); //显示电压
if(++AD_i>2) AD_i=0;
AD_ok=0;
}
if((Test_tim==0)&&(Test==1))
{
MOTORON=1;
Ur_tem=0;
for(i=0;i<2;i++) Ur_tem+=Ur[i];
Ur_tem>>=1;
// Ur_tem=(long)Ur_tem*981/1000;
Ur_tem=(long)Ur_tem*1158/1000;
if(Ur_tem>0) MOT_R=(Vm-Ur_tem)/Ur_tem;
else MOT_R=10000;
if((MOT_R>Rmax)||(MOT_R<Rmin))
{
Test=3;
chn_disp2(" 不合格 ",0x98,8);
LCD_flash=0;
LCD_flash_tim=0;
LCD_flash_ONOFF=1;
}
if((MOT_R>=Rmin)&&(MOT_R<=Rmax))
{
Test=2;
chn_disp2(" 合格 ",0x98,8);
}
if(MOT_R>9999)
{
chn_disp2(" ∞ ",0x8b,4);
}
else
{
MOT_R_BCD[0]=MOT_R/1000+0x30;
MOT_R%=1000;
MOT_R_BCD[1]=MOT_R/100+0x30;
MOT_R%=100;
MOT_R_BCD[2]=MOT_R/10+0x30;
MOT_R_BCD[3]=MOT_R%10+0x30;
for(i=0;((i<3)&&(MOT_R_BCD[i]==0x30));i++) MOT_R_BCD[i]=' ';
chn_disp2(MOT_R_BCD,0x8b,2);
}
}
}
}
void timer0(void) interrupt 1 using 1
{
TH0=(0xffff-5000)>>8;
TL0=(0xffff-5000)&0xff;
if(Test_tim) Test_tim--;
if(Test==3)
{
if(++BELL_tim>15)
{
BELL_tim=0;
if(++NG_tim<4) BELL=!BELL;
else BELL=1;
}
if(++LCD_flash_tim>100)
{
LCD_flash++;
LCD_flash_tim=0;
LCD_flash_ONOFF=0;
}
}
else
{
LCD_flash_tim=0;
LCD_flash=0;
LCD_flash_ONOFF=0;
NG_tim=0;
}
if(Test==2)
{
if(++OK_tim<(5*15)) BELL=0;
else BELL=1;
}
else OK_tim=0;
if(LCD_tim>0) LCD_tim--;
}
void intersvr0(void) interrupt 0 using 1
{
if(AD_ok==0)
{
if(ICL7135_D5A==1) BCD_i=0;
ICL7135_BCD[BCD_i]=P1&0x0f;
if(++BCD_i>4)
{
BCD_i=0;
AD_ok=1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -