proteus8.9+stm32f103對74HC00(四與非門)、74HC02(四或非門)、74HC04(六非門)進行簡單測試
一、設(shè)計要求:
主芯片:STM32F103R6
IC測試座:DIP18 (18個引腳)
有四只開關(guān):分別為“向上選擇”、“向下選擇”、“確定”、“退出”
用一個LCD12864顯示操作和結(jié)果的界面
二、展示內(nèi)容:
LCD12864顯示內(nèi)容:
第一屏:見圖 顯示可檢測的器件的列表,被選中的型號反白顯示
第二屏:見圖 標題為被檢測的器件的型號+testing…,下面有兩行,第一行顯示器件是否完好,如果有故障,在第二排顯示是哪個部件出現(xiàn)故障。最后一排有狀態(tài)顯示,三種內(nèi)容,沒有測量時顯示“開始測量”,正在測量時顯示“測量中…”,測量完成后,顯示“測量結(jié)束”
三、操作說明:
(1)開機,顯示第一屏
(2)按“向上選擇”和“向下選擇”,可以依次選中列表中的器件,再按下“確認”鍵,可以選中該器件,進入第二屏,最下顯示“開始測量”
(3)按“確認”鍵,開始測量,測量完成后,最下顯示“測量結(jié)束”,并把結(jié)果在第二行和第三行的提示后顯示。
(4)按“退出”鍵,回到第一屏。
四、測試芯片:
(1)74HC00 四與非門
(2)74HC02 四或非門
(3)74HC04 六非門
五、效果展示:
%)LQ3JL338]`{SY37S)JLT2.png (97.56 KB, 下載次數(shù): 44)
下載附件
完整電路
2020-6-3 17:17 上傳
BAUBQ1_8[$BS0[~(C_{5HSK.png (282.24 KB, 下載次數(shù): 44)
下載附件
正確展示
2020-6-3 17:17 上傳
{6NJ6[]VD]R8]PIFVZ]$V.png (526.44 KB, 下載次數(shù): 52)
下載附件
錯誤展示
2020-6-3 17:17 上傳
2_OYTYCK2XBJM)@(GF~UUUC.png (65.31 KB, 下載次數(shù): 41)
下載附件
邏輯分析
2020-6-3 17:17 上傳
部分代碼展示(檢測函數(shù))(因水平有限,且半夜趕出來的,未優(yōu)化代碼,歡迎大佬指正哈)
- u16 pinout[3][4]={{0xE493,0xEDB7,0xF6DB,0xDB6F},{0xE493,0xD24B,0xC927,0xDB6F},{0xEAAB,0xD557,0xEAAB,0xD557}};
- int test[16];
- void testing(int dis) //該函數(shù)為設(shè)置引腳電位函數(shù)
- {
- int i,flage;
- for(flage=0;flage<4;flage++)
- {
- GPIO_Write(GPIOB,pinout[dis][flage]);
- for(i=0;i<16;i++)
- {
- if(i<8)
- {
- IC74HC251_OE1_0;
- IC74HC251_OE2_1;
- }
- else
- {
- IC74HC251_OE1_1;
- IC74HC251_OE2_0;
- }
- if(i==0 || i==2 || i==4 ||i==6 || i==8 || i==10 || i==12 || i==14)
- {
- IC74HC251_S0_0;
- }
- else
- {
- IC74HC251_S0_1;
- }
- if(i==0 || i==1 || i==4 ||i==5 || i==8 || i==9 || i==12 || i==13)
- {
- IC74HC251_S1_0;
- }
- else
- {
- IC74HC251_S1_1;
- }
- if(i==0 || i==1 || i==2 ||i==3 || i==8 || i==9 || i==10 || i==11)
- {
- IC74HC251_S2_0;
- }
- else
- {
- IC74HC251_S2_1;
- }
- test[i]=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
- }
- compare(dis,flage);
- }
- }
- int error[4][16];
- int errpart[6];
- void compare(int dis,int flage) //該函數(shù)為比對函數(shù)
- {
- int i,j,winflage=0,position=80;
- u16 n=pinout[dis][flage];
- int a[16];
- for (i = 0; i != 16; ++i)
- {
- a[i] = n % 2;
- n /= 2;
- }
- for(i=0;i<16;i++)
- {
- if(test[i]==a[i])
- {
- error[flage][i]=0;
- }
- else
- {
- error[flage][i]=1;
- }
- }
- if(flage==3)
- {
- for(i=0;i<4;i++)
- {
- for(j=0;j<16;j++)
- {
- if(error[i][j]==0)
- {
- winflage++;
- if(winflage==64)
- {
- LCD_DIS_Char(3,50,"TRUE",MIDDLE,0);
- }
- }
- else
- {
- if(dis==2)
- {
- if(j<5 && j>2){errpart[0]=1;}
- if(j<7 && j>4){errpart[1]=1;}
- if(j<9 && j>6){errpart[2]=1;}
- if(j<11 && j>8){errpart[3]=1;}
- if(j<13 && j>10){errpart[4]=1;}
- if(j<15 && j>12){errpart[5]=1;}
- }
- else
- {
- if(j<6 && j>2){errpart[0]=1;}
- if(j<9 && j>5){errpart[1]=1;}
- if(j<12 && j>8){errpart[2]=1;}
- if(j<15 && j>11){errpart[3]=1;}
- }
- }
- }
- }
- if(winflage!=64){
- LCD_DIS_Char(4,50,"FLASE",MIDDLE,0);
- j=0;
- for(i=0;i<6;i++)
- {
- if(errpart[i]==1)
- {
- position=position+(i-j)*8;
- LCD_DIS_Number(6,position,i+1,MIDDLE);
- }else
- j++;
- }
- }
- }
- }
復制代碼
完整仿真及其代碼51黑下載地址:
proteus+stm32+74HC00(02、04)簡單數(shù)字電路測試.7z
(280.95 KB, 下載次數(shù): 30)
2020-6-5 04:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|