找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4029|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

proteus+stm32+74HC00(02、04)簡(jiǎn)單數(shù)字電路測(cè)試程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
proteus8.9+stm32f103對(duì)74HC00(四與非門)、74HC02(四或非門)、74HC04(六非門)進(jìn)行簡(jiǎn)單測(cè)試
一、設(shè)計(jì)要求:
主芯片:STM32F103R6
IC測(cè)試座:DIP18 (18個(gè)引腳)
有四只開關(guān):分別為“向上選擇”、“向下選擇”、“確定”、“退出”
用一個(gè)LCD12864顯示操作和結(jié)果的界面
二、展示內(nèi)容:
LCD12864顯示內(nèi)容:
第一屏:見圖  顯示可檢測(cè)的器件的列表,被選中的型號(hào)反白顯示
第二屏:見圖  標(biāo)題為被檢測(cè)的器件的型號(hào)+testing…,下面有兩行,第一行顯示器件是否完好,如果有故障,在第二排顯示是哪個(gè)部件出現(xiàn)故障。最后一排有狀態(tài)顯示,三種內(nèi)容,沒有測(cè)量時(shí)顯示“開始測(cè)量”,正在測(cè)量時(shí)顯示“測(cè)量中…”,測(cè)量完成后,顯示“測(cè)量結(jié)束”
三、操作說明:
(1)開機(jī),顯示第一屏
(2)按“向上選擇”和“向下選擇”,可以依次選中列表中的器件,再按下“確認(rèn)”鍵,可以選中該器件,進(jìn)入第二屏,最下顯示“開始測(cè)量”
(3)按“確認(rèn)”鍵,開始測(cè)量,測(cè)量完成后,最下顯示“測(cè)量結(jié)束”,并把結(jié)果在第二行和第三行的提示后顯示。
(4)按“退出”鍵,回到第一屏。
四、測(cè)試芯片:
(1)74HC00         四與非門
(2)74HC02         四或非門
(3)74HC04         六非門
五、效果展示:


部分代碼展示(檢測(cè)函數(shù))(因水平有限,且半夜趕出來的,未優(yōu)化代碼,歡迎大佬指正哈)
  1. u16 pinout[3][4]={{0xE493,0xEDB7,0xF6DB,0xDB6F},{0xE493,0xD24B,0xC927,0xDB6F},{0xEAAB,0xD557,0xEAAB,0xD557}};
  2. int test[16];
  3. void testing(int dis)    //該函數(shù)為設(shè)置引腳電位函數(shù)
  4. {
  5. int i,flage;
  6. for(flage=0;flage<4;flage++)
  7. {
  8.   GPIO_Write(GPIOB,pinout[dis][flage]);
  9.   for(i=0;i<16;i++)
  10.   {
  11.    if(i<8)
  12.    {
  13.     IC74HC251_OE1_0;
  14.     IC74HC251_OE2_1;
  15.    }
  16.    else
  17.    {
  18.     IC74HC251_OE1_1;
  19.     IC74HC251_OE2_0;
  20.    }
  21.    if(i==0 || i==2 || i==4 ||i==6 || i==8 || i==10 || i==12 || i==14)
  22.    {
  23.     IC74HC251_S0_0;
  24.    }
  25.    else
  26.    {
  27.     IC74HC251_S0_1;
  28.    }
  29.    if(i==0 || i==1 || i==4 ||i==5 || i==8 || i==9 || i==12 || i==13)
  30.    {
  31.     IC74HC251_S1_0;
  32.    }
  33.    else
  34.    {
  35.     IC74HC251_S1_1;
  36.    }
  37.    if(i==0 || i==1 || i==2 ||i==3 || i==8 || i==9 || i==10 || i==11)
  38.    {
  39.     IC74HC251_S2_0;
  40.    }
  41.    else
  42.    {
  43.     IC74HC251_S2_1;
  44.    }
  45.    test[i]=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
  46.    }
  47.   compare(dis,flage);
  48. }
  49. }
  50. int error[4][16];
  51. int errpart[6];
  52. void compare(int dis,int flage)     //該函數(shù)為比對(duì)函數(shù)
  53. {
  54. int i,j,winflage=0,position=80;
  55. u16 n=pinout[dis][flage];
  56. int a[16];
  57. for (i = 0; i != 16; ++i)
  58. {
  59.   a[i] = n % 2;
  60.   n /= 2;
  61. }
  62. for(i=0;i<16;i++)
  63. {
  64.   if(test[i]==a[i])
  65.   {
  66.    error[flage][i]=0;
  67.   }
  68.   else
  69.   {
  70.    error[flage][i]=1;
  71.   }
  72. }
  73. if(flage==3)
  74. {
  75.   for(i=0;i<4;i++)
  76.   {
  77.    for(j=0;j<16;j++)
  78.    {
  79.     if(error[i][j]==0)
  80.     {
  81.      winflage++;
  82.      if(winflage==64)
  83.      {
  84.       LCD_DIS_Char(3,50,"TRUE",MIDDLE,0);
  85.      }
  86.     }
  87.     else
  88.     {
  89.      if(dis==2)
  90.      {
  91.       if(j<5 && j>2){errpart[0]=1;}
  92.       if(j<7 && j>4){errpart[1]=1;}
  93.       if(j<9 && j>6){errpart[2]=1;}
  94.       if(j<11 && j>8){errpart[3]=1;}
  95.       if(j<13 && j>10){errpart[4]=1;}
  96.       if(j<15 && j>12){errpart[5]=1;}
  97.      }
  98.      else
  99.      {
  100.       if(j<6 && j>2){errpart[0]=1;}
  101.       if(j<9 && j>5){errpart[1]=1;}
  102.       if(j<12 && j>8){errpart[2]=1;}
  103.       if(j<15 && j>11){errpart[3]=1;}
  104.      }
  105.     }
  106.    }
  107.   }
  108.   if(winflage!=64){
  109.    LCD_DIS_Char(4,50,"FLASE",MIDDLE,0);
  110.    j=0;
  111.    for(i=0;i<6;i++)
  112.    {
  113.     if(errpart[i]==1)
  114.     {
  115.      position=position+(i-j)*8;  
  116.      LCD_DIS_Number(6,position,i+1,MIDDLE);
  117.     }else
  118.      j++;
  119.    }
  120.   }
  121. }
  122. }
復(fù)制代碼

完整仿真及其代碼51黑下載地址:
proteus+stm32+74HC00(02、04)簡(jiǎn)單數(shù)字電路測(cè)試.7z (280.95 KB, 下載次數(shù): 30)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2020-6-5 04:07 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表