找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3903|回复: 5
收起左侧

51单片机集成芯片测试仪设计 带程序PCB原理图

  [复制链接]
ID:215786 发表于 2017-6-29 13:20 | 显示全部楼层 |阅读模式
51单片机芯片测试仪,能对常用的14引脚以内的74系列芯片进行检测

自动检测:  按下键盘上的自动检测键并按确定键确认开始自动检测,并将测试结果显示在OLED

手动检测: 以知芯片信号的情况下,输入要测试的芯片型号,并按确认键确认,开始检测并将测试结果显示在OLED显示器上

OLED显示器显示内容
芯片型号
芯片名称
表达式
测试结果

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
0.png
0.png
0.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<keys.h>
  3. #include<lcd12864.h>
  4. #include<port.h>

  5. #define port1 P1  //硬件连接引脚
  6. #define port2 P2  //硬件连接引脚
  7. #define led P0^0
  8. //u8 temp1=0;     //port1暂存
  9. //u8 temp2=0;     //port2暂存
  10. u8 chip[3];
  11. u8 chiptest14(u8 *chip);//14引脚芯片检测函数
  12. void zijian();//自动检测函数
  13. u8 code tip1[]="您好,欢迎使用此产品,该产品可以对常见的74系列芯片进行检测。    ";
  14. u8 code tip2[]="请将芯片放入芯片底座中按开始键开始";
  15. u8 code tip3[]="请输入芯片型号,按回车键结束。";
  16. u8 code tip4[]="请选择自检或输入模式";
  17. u8 code tip5[]="输入键或自检键按下";
  18. u8 code tip6[]="自检中,请稍等...";
  19. u8 code tip7[]="请输入芯片型号,按检测键开始检测";
  20. u8 code tip8[]="输入开始检测啦";
  21. u8 code tip9[]="芯片型号:";
  22. u8 code tip11[]="检测失败";
  23. sbit p00=P0^0;
  24. sbit p01=P0^1;
  25. sbit p02=P0^2;
  26. sbit p03=P0^3;
  27. sbit p04=P0^4;
  28. sbit p05=P0^5;
  29. sbit p06=P0^6;
  30. sbit p07=P0^7;
  31. u8 code LS00[4][2]={
  32.                                                               {0x3f,0x3f},        //第一次输出           p1输出   p2输出
  33.                                                                          {0x1b,0x1b},        //第一次输入                p1输入   p2输入
  34.                                                                {0x24,0x24}, //第二次输出                p1输出   p2输出
  35.                                                                          {0x24,0x24}  //第二次输入    p1输入   p2输入
  36.                                                                         };       
  37. u8 code LS04[4][2]={
  38.                                                               {0x2a,0x2a},        //第一次输出           p1输出   p2输出
  39.                                                                          {0x2a,0x2a},        //第一次输入                p1输入   p2输入
  40.                                                                {0x3f,0x3f}, //第二次输出                p1输出   p2输出
  41.                                                                          {0x15,0x15}  //第二次输入    p1输入   p2输入
  42.                                                                         };       
  43. u8 code LS08[4][2]={
  44.                                                               {0x15,0x15},        //第一次输出           p1输出   p2输出
  45.                                                                          {0x11,0x11},        //第一次输入                p1输入   p2输入
  46.                                                                {0x00,0x00}, //第二次输出                p1输出   p2输出
  47.                                                                          {0x00,0x00}  //第二次输入    p1输入   p2输入
  48.                                                                         };       
  49. u8 code LS32[4][2]={
  50.                                                               {0x15,0x15},        //第一次输出           p1输出   p2输出
  51.                                                                          {0x35,0x35},        //第一次输入                p1输入   p2输入
  52.                                                                {0x2a,0x2a}, //第二次输出                p1输出   p2输出
  53.                                                                          {0x2e,0x2e}  //第二次输入    p1输入   p2输入
  54.                                                                         };       

  55. void main()
  56. {
  57.         u8 count;
  58.         unsigned int k,j;
  59.         //lcd12864_init() ;
  60.         display(tip1,64);//显示欢迎词   1
  61.         for(k=0;k<20000;k++)
  62.         for(j=0;j<40;j++);
  63.        
  64.         display(tip2,34);//显示说明       2
  65.         while(1)              //         3
  66.                 {
  67.                                  while(getkeys()==0||keyvalue!=1);//等待开始按键按下,未按下时等待      4
  68.                                                 display(tip4,20);//提示自检或输入模式选择                            5
  69.                                  while(getkeys()!=2&&getkeys()!=3);//等待输入键按下
  70.                                                 display(tip5,18);//输入键或自检键按下
  71.                                  if(keyvalue==2)   //这是自检程序
  72.                                  {
  73.                                  display(tip6,17); //正在进行自检,请稍等
  74.                                  //自动检测程序
  75.                                          zijian();
  76.                                  }
  77.                                  if(keyvalue==3) //这是输入程序
  78.                                  {
  79.                                  display(tip7,32);//请输入芯片型号,                         
  80.                                  if(getkeys()!=4)//当检测按键没有按下时   芯片输入阶段
  81.                                  {
  82.                                                          display_x(tip9,4,10);        //芯片型号提示         
  83.                                                          for(count=0;count<3;count++)//获得输入的芯片型号
  84.                                                                 {
  85.                                                                
  86.                                                                  while(getkeys()==0||keyvalue==1||keyvalue==2||keyvalue==3||keyvalue==4);//当数字区没有按下时等待
  87.                                                                                 while(keyvalue!=0)//进行按键转换
  88.                                                                                 {
  89.                                                                                         switch(keyvalue)
  90.                                                                                  {
  91.                                                                                          case 0://没有按键按下
  92.                                                                                                                         break;
  93.                                                                                          case 1://1号按键按下
  94.                                                                                                                         break;
  95.                                                                                          case 2://2号按键按下
  96.                                                                                                                         break;
  97.                                                                                          case 3://3号按键按下
  98.                                                                                                                         break;
  99.                                                                                          case 4://4号按键按下
  100.                                                                                                                         break;
  101.                                                                                          case 5://5号按键按下
  102.                                                                                                                         keyvalue=3;break;
  103.                                                                                          case 6:
  104.                                                                                                                         keyvalue=6;break;
  105.                                                                                          case 7:
  106.                                                                                                                         keyvalue=9;break;
  107.                                                                                          case 8:
  108.                                                                                                                         keyvalue='#'-0x30;break;
  109.                                                                                          case 9:
  110.                                                                                                                         keyvalue=2;break;
  111.                                                                                          case 10:
  112.                                                                                                                         keyvalue=5;break;
  113.                                                                                          case 11:
  114.                                                                                                                         keyvalue=8;break;
  115.                                                                                          case 12:
  116.                                                                                                                         keyvalue=0;break;
  117.                                                                                          case 13:
  118.                                                                                                                         keyvalue=1;break;
  119.                                                                                          case 14:
  120.                                                                                                                         keyvalue=4;break;
  121.                                                                                          case 15:
  122.                                                                                                                         keyvalue=7;break;
  123.                                                                                          case 16:
  124.                                                                                                                         keyvalue='*'-0x30;break;
  125.                                                                                          default:break;
  126.                                                                                        
  127.                                                                                  }
  128.                                                                                  
  129.                                                                                         chip[count]=keyvalue+0x30;
  130.                                                                                         lcd12864_swrite(cmd,0x9d+count);
  131.                                                                                         lcd12864_swrite(dat,chip[count]);
  132.                                                                                          while(getkeys()==0) //如果松开按键
  133.                                                                                          {
  134.                                                                                                  for(k=0;k<20000;k++);
  135.                                                                                                  for(k=0;k<20000;k++);
  136.                                                                                                  for(k=0;k<20000;k++);
  137.                                                                                                 keyvalue=0;
  138.                                                                                                  
  139.                                                                                          }
  140.                                                                                           for(k=0;k<20000;k++);
  141.                                                                                          for(k=0;k<20000;k++);
  142.                                                                                          for(k=0;k<20000;k++);
  143.                                                                                          for(k=0;k<20000;k++);
  144.                                                                                          
  145.                                                                                                 keyvalue=0;
  146.                                                                  
  147.                                                                                 }
  148.                                                                        
  149.                                                                  
  150.                                                                  
  151.                                                          }
  152.                                                          while(getkeys()!=4);
  153.                                                          if(chip[0]=='0'&&chip[1]=='0'&&chip[2]=='8')//74ls08检测
  154.                                                                 {
  155.                                                                  if(!chiptest14(LS08))
  156.                                                                  { display("检测结果:",10);
  157.                                                                          display_x("型号:74LS08",2,12);
  158.                                                                          display_x("功能:2输入四与门",3,16);
  159.                                                                          display_x("状况:良好",4,10);
  160.                                                                  }
  161.                                                                  else
  162.                                                                  {display("检测结果:",10);
  163.                                                                         display_x("状况:已坏",4,10);
  164.                                                                  }
  165.                                                          }
  166.                                                          else if(chip[0]=='0'&&chip[1]=='0'&&chip[2]=='4')//74ls04检测
  167.                                                                 {
  168.                                                                  if(!chiptest14(LS04))
  169.                                                                  { display("检测结果:",10);
  170.                                                                          display_x("型号:74LS04",2,12);
  171.                                                                          display_x("功能:六反相器",3,14);
  172.                                                                          display_x("状况:良好",4,10);
  173.                                                                  }
  174.                                                                  else
  175.                                                                  {display("检测结果:",10);
  176.                                                                         display_x("状况:已坏",4,10);
  177.                                                                  }
  178.                                                          }
  179.                                                          else if(chip[0]=='0'&&chip[1]=='0'&&chip[2]=='0')//74ls00检测
  180.                                                                 {
  181.                                                                  if(!chiptest14(LS00))
  182.                                                                  { display("检测结果:",10);
  183.                                                                          display_x("型号:74LS00",2,12);
  184.                                                                         display_x("功能:2输入四与非",3,16);
  185.                                                                          display_x("状况:良好",4,10);
  186.                                                                  }
  187.                                                                  else
  188.                                                                  {display("检测结果:",10);
  189.                                                                         display_x("状况:已坏",4,10);
  190.                                                                  }
  191.                                                          }
  192.                                                          else if(chip[0]=='0'&&chip[1]=='3'&&chip[2]=='2')//74ls32检测程序
  193.                                                                 {
  194.                                                                         if(!chiptest14(LS32))
  195.                                                                         {
  196.                                                                                 display("检测结果:",10);
  197.                                                                                 display_x("型号:74LS32",2,12);
  198.                                                                                 display_x("功能:2输入四或门",3,16);
  199.                                                                                 display_x("状况:良好",4,10);
  200.                                                                         }
  201.                                                                         else
  202.                                                                         {
  203.                                                                                 display("检测结果:",10);
  204.                                                                                 display_x("状况:已坏",4,10);
  205.                                                                         }
  206.                                                                        
  207.                                                                  
  208.                                                                 }
  209.                                                          else                                       
  210.                                                                 {display("检测结果:",10);//检测结束,不存在芯片库
  211.                                                                         display_x("不存在芯片库!",4,14);
  212.                                                                  }
  213.                                                          while(keyvalue==0);
  214.                                  }

  215.                          }
  216.                 }
  217. }       
  218. u8 chiptest14(u8 *chip)//14引脚芯片检测程序
  219. {
  220.                 port1=0xff;
  221.                 port2=0xff;
  222.                 port1=*chip;   //端口1输出
  223.                 port2=*(chip+1); //端口2输出
  224.                 if((port1==*(chip+2))&&(port2==*(chip+3)))
  225.                 {
  226.                 port1=*(chip+4);
  227.                 port2=*(chip+5);
  228.                 if((port1==*(chip+6))&&(port2==*(chip+7)))
  229.                         //display(tip10,8);
  230.                   return 0;
  231.                 else
  232.                         //display(tip11,8);
  233.             return 1;
  234.                 }
  235.                 else
  236.                         {
  237.                                 //display(tip11,8);       
  238.                                 return 1;
  239.                         }
  240.        
  241. }               

  242. void zijian()//自动检测函数
  243. {                                 
  244.                 if(!chiptest14(LS04))//74ls04自动检测
  245.                 {
  246.                  display("检测结果:",10);
  247.                  display_x("型号:74LS04",2,12);
  248.                  display_x("功能:六反相器",3,14);
  249.                         display_x("状况:好",4,8);                        
  250.                 }
  251. ……………………

  252. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
51单片机集成芯片测试仪.rar (7.45 MB, 下载次数: 85)
回复

使用道具 举报

ID:1 发表于 2017-6-30 02:53 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:667165 发表于 2019-12-18 14:29 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:61207 发表于 2020-9-20 17:18 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:138956 发表于 2020-10-15 19:27 | 显示全部楼层

好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:701252 发表于 2020-10-16 16:34 | 显示全部楼层
好资料,51黑有你更精彩!!!只想下来学习一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表