开短路测试程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include //51单片机定义寄存器的头文件

#include //51单片机的申明库函数,软件自带

#include //包含循环左移,右移,一个机器周期延时的头文件,软件自带

#define uchar unsigned char

#define uint unsigned int

uchar n; //总共的不良点数

uint i; //已经测到的点

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

void delay_ms(int ms); //延时1ms

sbit P_HC595_SER = P3^5; //pin 14 SER data input

sbit P_HC595_SRCLK = P3^6; //pin 11 SRCLK Shift data clock

sbit P_HC595_RCLK = P2^4; //pin 12 RCLk store (latch) clock

sbit P_HC595B_SER = P3^2; //pin 14

sbit P_HC595B_SRCLK = P3^3; //pin 11

sbit P_HC595B_RCLK = P3^4; //pin 12

sbit BEEP = P3^7;

sbit pass = P3^0;

sbit fall = P2^1;

sbit SW2 = P2^2;

sbit SW1 = P2^3;

sbit SW3 = P2^0;

sbit LCD_RS = P2^5; //显示屏4脚指令类型

sbit LCD_RW = P2^6; //显示屏5脚读写

sbit LCD_EN = P2^7; //显示屏6脚使能

#define cs_data P1

#define LCD_DATA P0

// 定义数据

uchar cdis_11 [ ] = {" PCB:-- "};

uchar cdis_12 [ ] = {" Pin:-- "};

uchar cdis_13 [ ];

uchar cdis_14 [ ];

uchar sd_tata_l[16];

uchar sd_tata_h[16];

uchar sd_tata_1[116];

uchar sd_tata_2[116];

//uchar sd_tata_3[116];

//uchar sd_tata_4[116];

//uchar sd_tata_5[116];

//uchar sd_tata_6[116];

//uchar sd_tata_7[116];

#include "001-1602显示屏.h"

#include "002-EEPROM读、写.h"

#include "003-595.h"

//==============================================

//延时1ms函数

//==============================================

void delay_ms(int ms)

{

unsigned char i;

while(ms--)

{ for(i = 0; i<120; i++);}

}

//============================================================================= // 蜂鸣器响二声 OK

//============================================================================= void beep()

{ unsigned char i;

for (i=0;i<4;i++)

{ BEEP=!BEEP; delay_ms(40);} //取反并延时

}

//============================================================================= // 蜂鸣器响一声 NG

//============================================================================= void beep_NG()

{ unsigned char i;

for (i=0;i<2;i++)

{ BEEP=!BEEP; delay_ms(400);} //取反并延时

}

//============================================================================= // 计算加显示

//============================================================================= void xianshi()

{ uint a,b,c,d;

d=((i/16)+1)/10; //求板十位

c=((i/16)+1)%10; //求板个位

b=((i%16)+1)/10; //求点十位

a=((i%16)+1)%10; //求点个位

LCD_disp_char(6, 1, d+0x30); //显示板十位

LCD_disp_char(7, 1, c+0x30); //显示板个位

LCD_disp_char(6, 2, b+0x30); //显示点十位

LCD_disp_char(7, 2, a+0x30); //显示点个位

}

//============================================================================= // 不良结果处理

//============================================================================= void fall_out(uchar l_h,s)

{

uchar y; //

uchar spot; //开路与短路点的位置

uchar KL_DL; //开路与短路显示的量

uchar dat; //开路与短路数据差

BEEP=0;

fall=0;

n=n+1; //不良数加一

if(cs_data >sd_tata_l[i]) // 区分开路与短路

{

dat=cs_data- sd_tata_l[i] ; //找出开路点的位置

KL_DL=0x4b;

}

else // 短路

{

dat=sd_tata_l[i] - cs_data; //找出短路点的位置

KL_DL=0x44;

}

for(y=1; y<9; y++)

{

if(dat & 0x01) //最低位是否为1

{spot= y;

break;

}

dat = dat >> 1;

}

spot=spot+l_h;

xianshi();

相关文档
最新文档