开短路测试程序培训讲学_第1页
开短路测试程序培训讲学_第2页
开短路测试程序培训讲学_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <reg51.h>#include <stdio.h>#include <intrins.h> / 带/51 单片机定义寄存器的头文件, 软件自/51 单片机的申明库函数 , 软件自带 包含循环左移, 右移 , 一个机器周期延时的头文件#define uchar unsigned char#define uint unsigned intuchar n;/ 总共的不良点数uint i;/ 已经测到的点sbit LCD_RS =卩2人5; sbit LCD_RW = P2A6; sbit LCD_EN = P2A7;#define delay

2、NOP(); _nop_();_nop_();_nop_();_nop_();void delay_ms(int ms); / 延时 1mssbitP_HC595_SER =P3A5;/pin 14SERdata inputsbitP_HC595_SRCLK= P3A6;/pin 11SRCLKShift data clocksbitP_HC595_RCLK =P2A4;/pin 12RCLkstore (latch) clocksbitP_HC595B_SER= P3A2;/pin 14sbitP_HC595B_SRCLK = P3A3;/pin 11sbitP_HC595B_RCLK= P

3、3A4;/pin 12sbitBEEP = P3A7;sbit pass = P3A0;sbitfall =P2A1;sbitSW2= P2A2;sbitSW1= P2A3;sbitSW3= P2A0;/显示屏4脚指令类型/显示屏5脚读写/显示屏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_l16;uchar sd_tat

4、a_h16;uchar sd_tata_1116;uchar sd_tata_2116;/uchar sd_tata_3116;/uchar sd_tata_4116;/uchar sd_tata_5116;/uchar sd_tata_6116;/uchar sd_tata_7116;#include "001-1602 显示屏 .h"#include "002-EEPROM 读、写 .h"#include "003-595.h" /=/ 延时 1ms 函数/=void delay_ms(int ms)unsigned char i

5、;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=

6、(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)1uchar y;/uchar spot; /开路与短路点的位置uchar KL_DL;/开路与短路显示的量uchar

7、dat;/开路与短路数据差BEEP=0;fall=0;n=n+1;/ 不良数加一if(cs_data >sd_tata_li) /dat=cs_data- sd_tata_li ; /KL_DL=0x4b;else / 短路dat=sd_tata_li - cs_data; / KL_DL=0x44; for(y=1; y<9; y+)if(dat & 0x01) / spot= y;break;dat = dat >> 1; spot=spot+l_h; xianshi();区分开路与短路找出开路点的位置找出短路点的位置最低位是否为 1LCD_disp_cha

8、r(10 ,1 ,0X4e) ; /LCD_disp_char(11 ,1 ,0X47) ; /LCD_disp_char(12 ,1 ,0x28); / LCD_disp_char(13 ,1 ,(n/10)+0x30); /LCD_disp_char(14 ,1 ,(n%10)+0x30); /LCD_disp_char(15 ,1 ,0x29); /第一位数显示 "N "(0X4e) 第二位数显示 "G "(0X47) 第三位数显示 "( "(0X28) 显示这个板已测NG的点 显示这个板已测NG的点 显示 ") &q

9、uot;(0X29)LCD_disp_char(8, 2, 0x2d);/LCD_disp_char(9, 2 ,(spot/10)+0x30); / LCD_disp_char(10,2 ,(spot%10)+0x30); / LCD_disp_char(11,2 , 0x20);/LCD_disp_char(12,2 , KL_DL);/LCD_disp_char(13,2 , 0x4c);/显示显示这个板NG的点显示这个板NG的点显示 K D显示 L/ 按绿色键接着测试/ 待机显示/ 按红色键不良数加50I1: if (SW1=0) delay_ms(15); while(!SW1);

10、BEEP=1; fall=1 ;display(); else if (SW2=0) while(!SW2);delay_ms(15);BEEP=1;n=n+50 ;else/ 重复检测按键 goto I1;/= / 学习程序/= void xie_xi() uint i;while(SW3);/合上治具没有?delay_ms(16);BEEP = 1;Send_595_wei (1,480);/输入点全部置 1Send_595_wei (0, 1 );/输入点送一个 0 第一点开始Send_595B_wei(1, 30 );/输出点全部置 1Send_595B_wei(0, 1 );/IAP

11、_erase (0x00, 0x00);/IAP_write (0x00, 0x00,cs_data); / 据值)Send_595B_wei(1, 1);/IAP_erase (0x10, 0x00); / IAP_write (0x10, 0x00,cs_data); / 据值)/for(i=1;i<16;i+)Send_595_wei (1, 1);/Send_595B_wei(1,30);/Send_595B_wei(0, 1);/IAP_write (0x80, i ,cs_data); / 据值)Send_595B_wei(1, 1); /IAP_write (0x90, i

12、 ,cs_data); / 据值)pass=0;beep();LCD_disp_char(10 ,1 ,0X50) ; /LCD_disp_char(11 ,1 ,0X41) ; /LCD_disp_char(12 ,1 ,0x53); /LCD_disp_char(13 ,1 ,0x53); / /= / 测试程序输出点送一个 0扇区擦除 -(高 8位地址,低 8 位地址) 写数据 - (高 8 位地址,低 8 位地址,数输出点送一个 1扇区擦除 - (高 8 位地址,低 8 位地址) 写数据 - (高 8 位地址,低 8 位地址,数/输入点送一个 1 第二点开始全部置 1输出点送一个 0

13、高 8 位写数据 - (高 8 位地址,低 8 位地址,数输出点送一个 1写数据 - (高 8 位地址,低 8 位地址,数第一位数显示 "p "(0X50) 第二位数显示 "a "(0X41) 第三位数显示 "s "(0X53) 第三位数显示 "s "(0X53)/= void cscy ()uint w_data;beep();for(w_data=0;w_data<16;w_data+)读数据 -(高 8 位地址,低 8位sd_tata_lw_data=IAP_read (0x00, w_data) ;

14、/ 地址)for(w_data=0;w_data<16;w_data+)sd_tata_hw_data=IAP_read (0x10, w_data) ;/while(1) i=0;/ 打开治具没有?/ 合上治具没有?i=0; n=0; BEEP=1; fall=1; pass=1;/ 待机显示/ 开始测试?Send_595_wei (1,480);Send_595_wei (0, 1 );/ 输入点全部置 1/ 输入点送一个 0Send_595B_wei(1, 30 );Send_595B_wei(0, 1 ); if(cs_data != sd_tata_li) /fall_out(

15、0);if(n>=50) goto T1; else xianshi(); delay_ms(150);Send_595B_wei(1, 1);/if(cs_data != sd_tata_hi) /输出点全部置 1输出点送一个 0 第一点前 8 位测试输出点送一个 1 第一点后 8 位测试T1: while(!SW3); delay_ms(16); while(SW3); cs_data =0xff; delay_ms(16); display(); while(SW1); delay_ms(16); while(!SW1);fall_out(8);if(n>=50) goto

16、T1; else xianshi(); / delay_ms(150);/for(i=1;i<480;i+)Send_595_wei (1, 1);/16*30=480/ 送一个 1 第二点开始/Send_595B_wei(1,30);/ 全部置 1Send_595B_wei(0, 1);/输出点送一个 0Send_595B_wei(1,(i/16)*2); /跳过已测试的板if(cs_data != sd_tata_li%16)/fall_out(0);if(n>=50)goto T1;elsexianshi();delay_ms(150);前 8 位测试/单步NG处理/单步0K

17、处理输出点送一个 1后 8 位测试Send_595B_wei(1, 1); / if(cs_data != sd_tata_hi%16) /fall_out(8);if(n>=50)goto T1;else xianshi();/ delay_ms(150);if(n=0 ) / 全部测完后 OK 处理 pass=0;beep();LCD_disp_char(10 ,1 ,0X50) ; /LCD_disp_char(11 ,1 ,0X41) ; /LCD_disp_char(12 ,1 ,0x53); /LCD_disp_char(13 ,1 ,0x53); /else / 全部测完后

18、 NG 处理 LCD_disp_char(10 ,1 ,0X4e) ; /LCD_disp_char(11 ,1 ,0X47) ; /LCD_disp_char(12 ,1 ,0x28); /LCD_disp_char(13 ,1 ,(n/10)+0x30); /LCD_disp_char(14 ,1 ,(n%10)+0x30); /LCD_disp_char(15 ,1 ,0x29); /第一位数显示 "p "(0X50) 第二位数显示 "a "(0X41) 第三位数显示 "s "(0X53) 第三位数显示 "s "(0X53)第一位数显示 "N "(0X4e) 第二位数显示 "G "(0X47) 第三位数显示 "( "(0X28) 显示这个板已测 NG的点 显示这个板已测 NG的点 显示 ") "(0X29)w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论