51单片机芯片测试仪,能对常用的14引脚以内的74系列芯片进行检测
自动检测: 按下键盘上的自动检测键并按确定键确认开始自动检测,并将测试结果显示在OLED
手动检测: 以知芯片信号的情况下,输入要测试的芯片型号,并按确认键确认,开始检测并将测试结果显示在OLED显示器上
OLED显示器显示内容
芯片型号
芯片名称
表达式
测试结果
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include<reg52.h>
- #include<keys.h>
- #include<lcd12864.h>
- #include<port.h>
- #define port1 P1 //硬件连接引脚
- #define port2 P2 //硬件连接引脚
- #define led P0^0
- //u8 temp1=0; //port1暂存
- //u8 temp2=0; //port2暂存
- u8 chip[3];
- u8 chiptest14(u8 *chip);//14引脚芯片检测函数
- void zijian();//自动检测函数
- u8 code tip1[]="您好,欢迎使用此产品,该产品可以对常见的74系列芯片进行检测。 ";
- u8 code tip2[]="请将芯片放入芯片底座中按开始键开始";
- u8 code tip3[]="请输入芯片型号,按回车键结束。";
- u8 code tip4[]="请选择自检或输入模式";
- u8 code tip5[]="输入键或自检键按下";
- u8 code tip6[]="自检中,请稍等...";
- u8 code tip7[]="请输入芯片型号,按检测键开始检测";
- u8 code tip8[]="输入开始检测啦";
- u8 code tip9[]="芯片型号:";
- u8 code tip11[]="检测失败";
- sbit p00=P0^0;
- sbit p01=P0^1;
- sbit p02=P0^2;
- sbit p03=P0^3;
- sbit p04=P0^4;
- sbit p05=P0^5;
- sbit p06=P0^6;
- sbit p07=P0^7;
- u8 code LS00[4][2]={
- {0x3f,0x3f}, //第一次输出 p1输出 p2输出
- {0x1b,0x1b}, //第一次输入 p1输入 p2输入
- {0x24,0x24}, //第二次输出 p1输出 p2输出
- {0x24,0x24} //第二次输入 p1输入 p2输入
- };
- u8 code LS04[4][2]={
- {0x2a,0x2a}, //第一次输出 p1输出 p2输出
- {0x2a,0x2a}, //第一次输入 p1输入 p2输入
- {0x3f,0x3f}, //第二次输出 p1输出 p2输出
- {0x15,0x15} //第二次输入 p1输入 p2输入
- };
- u8 code LS08[4][2]={
- {0x15,0x15}, //第一次输出 p1输出 p2输出
- {0x11,0x11}, //第一次输入 p1输入 p2输入
- {0x00,0x00}, //第二次输出 p1输出 p2输出
- {0x00,0x00} //第二次输入 p1输入 p2输入
- };
- u8 code LS32[4][2]={
- {0x15,0x15}, //第一次输出 p1输出 p2输出
- {0x35,0x35}, //第一次输入 p1输入 p2输入
- {0x2a,0x2a}, //第二次输出 p1输出 p2输出
- {0x2e,0x2e} //第二次输入 p1输入 p2输入
- };
- void main()
- {
- u8 count;
- unsigned int k,j;
- //lcd12864_init() ;
- display(tip1,64);//显示欢迎词 1
- for(k=0;k<20000;k++)
- for(j=0;j<40;j++);
-
- display(tip2,34);//显示说明 2
- while(1) // 3
- {
- while(getkeys()==0||keyvalue!=1);//等待开始按键按下,未按下时等待 4
- display(tip4,20);//提示自检或输入模式选择 5
- while(getkeys()!=2&&getkeys()!=3);//等待输入键按下
- display(tip5,18);//输入键或自检键按下
- if(keyvalue==2) //这是自检程序
- {
- display(tip6,17); //正在进行自检,请稍等
- //自动检测程序
- zijian();
- }
- if(keyvalue==3) //这是输入程序
- {
- display(tip7,32);//请输入芯片型号,
- if(getkeys()!=4)//当检测按键没有按下时 芯片输入阶段
- {
- display_x(tip9,4,10); //芯片型号提示
- for(count=0;count<3;count++)//获得输入的芯片型号
- {
-
- while(getkeys()==0||keyvalue==1||keyvalue==2||keyvalue==3||keyvalue==4);//当数字区没有按下时等待
- while(keyvalue!=0)//进行按键转换
- {
- switch(keyvalue)
- {
- case 0://没有按键按下
- break;
- case 1://1号按键按下
- break;
- case 2://2号按键按下
- break;
- case 3://3号按键按下
- break;
- case 4://4号按键按下
- break;
- case 5://5号按键按下
- keyvalue=3;break;
- case 6:
- keyvalue=6;break;
- case 7:
- keyvalue=9;break;
- case 8:
- keyvalue='#'-0x30;break;
- case 9:
- keyvalue=2;break;
- case 10:
- keyvalue=5;break;
- case 11:
- keyvalue=8;break;
- case 12:
- keyvalue=0;break;
- case 13:
- keyvalue=1;break;
- case 14:
- keyvalue=4;break;
- case 15:
- keyvalue=7;break;
- case 16:
- keyvalue='*'-0x30;break;
- default:break;
-
- }
-
- chip[count]=keyvalue+0x30;
- lcd12864_swrite(cmd,0x9d+count);
- lcd12864_swrite(dat,chip[count]);
- while(getkeys()==0) //如果松开按键
- {
- for(k=0;k<20000;k++);
- for(k=0;k<20000;k++);
- for(k=0;k<20000;k++);
- keyvalue=0;
-
- }
- for(k=0;k<20000;k++);
- for(k=0;k<20000;k++);
- for(k=0;k<20000;k++);
- for(k=0;k<20000;k++);
-
- keyvalue=0;
-
- }
-
-
-
- }
- while(getkeys()!=4);
- if(chip[0]=='0'&&chip[1]=='0'&&chip[2]=='8')//74ls08检测
- {
- if(!chiptest14(LS08))
- { display("检测结果:",10);
- display_x("型号:74LS08",2,12);
- display_x("功能:2输入四与门",3,16);
- display_x("状况:良好",4,10);
- }
- else
- {display("检测结果:",10);
- display_x("状况:已坏",4,10);
- }
- }
- else if(chip[0]=='0'&&chip[1]=='0'&&chip[2]=='4')//74ls04检测
- {
- if(!chiptest14(LS04))
- { display("检测结果:",10);
- display_x("型号:74LS04",2,12);
- display_x("功能:六反相器",3,14);
- display_x("状况:良好",4,10);
- }
- else
- {display("检测结果:",10);
- display_x("状况:已坏",4,10);
- }
- }
- else if(chip[0]=='0'&&chip[1]=='0'&&chip[2]=='0')//74ls00检测
- {
- if(!chiptest14(LS00))
- { display("检测结果:",10);
- display_x("型号:74LS00",2,12);
- display_x("功能:2输入四与非",3,16);
- display_x("状况:良好",4,10);
- }
- else
- {display("检测结果:",10);
- display_x("状况:已坏",4,10);
- }
- }
- else if(chip[0]=='0'&&chip[1]=='3'&&chip[2]=='2')//74ls32检测程序
- {
- if(!chiptest14(LS32))
- {
- display("检测结果:",10);
- display_x("型号:74LS32",2,12);
- display_x("功能:2输入四或门",3,16);
- display_x("状况:良好",4,10);
- }
- else
- {
- display("检测结果:",10);
- display_x("状况:已坏",4,10);
- }
-
-
- }
- else
- {display("检测结果:",10);//检测结束,不存在芯片库
- display_x("不存在芯片库!",4,14);
- }
- while(keyvalue==0);
- }
- }
- }
- }
- u8 chiptest14(u8 *chip)//14引脚芯片检测程序
- {
- port1=0xff;
- port2=0xff;
- port1=*chip; //端口1输出
- port2=*(chip+1); //端口2输出
- if((port1==*(chip+2))&&(port2==*(chip+3)))
- {
- port1=*(chip+4);
- port2=*(chip+5);
- if((port1==*(chip+6))&&(port2==*(chip+7)))
- //display(tip10,8);
- return 0;
- else
- //display(tip11,8);
- return 1;
- }
- else
- {
- //display(tip11,8);
- return 1;
- }
-
- }
- void zijian()//自动检测函数
- {
- if(!chiptest14(LS04))//74ls04自动检测
- {
- display("检测结果:",10);
- display_x("型号:74LS04",2,12);
- display_x("功能:六反相器",3,14);
- display_x("状况:好",4,8);
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
51单片机集成芯片测试仪.rar
(7.45 MB, 下载次数: 86)
|