日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于单片机门电路测试

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于单片机门电路测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

? ? ? ? 使用stc89c52為核心。功能為檢測門電路,仿真中沒有集成門芯片,所以此程序只可以測試門電路而不是集成門。目前僅支持7400、7404、7432后續有時間我可以繼續設計更多門電路的檢測。如果需要源碼后續我會分享出來。

二、電路代碼驅動

實驗仿真電路

1、數碼管使用74hc573鎖存器驅動

sbit C1=P3^2; //數碼管驅動芯片控制端 sbit C2=P3^3; sbit C3=P3^4; sbit C4=P3^5;

2、兩個LED指示燈

sbit LED_Good = P3^6; //正常指示燈 sbit LED_Bad = P3^7; //錯誤指示燈

3、兩個按鍵

sbit KEY_Choose = P3^0; // 選擇檢測芯片 sbit KEY_Begin = P3^1; // 確定選擇的芯片

4、單片機對門電路檢測信號輸入輸出

sbit OutPutOne = P1^0; //單片機信號輸出1 sbit OutPutTow = P1^1; //單片機信號輸出2 sbit InPut = P1^2; //單片機信號輸入

三、程序分析

1、數碼管驅動程序

void SEG_Def () {C1=C2=C3=C4=0; P0 = 0x40;C1 =C2 =C3 =C4 =1; delay (10);C1 =C2 =C3 =C4 =1; }void SEG_7400 () {C1=C2=C3=C4=0; P0 = 0x07;C1 = 1; delay (10); C1 = 0; P0 = 0x66;C2 = 1; delay (10); C2 = 0;P0 = 0x3f; C3 =C4 =1; delay (10); C3 =C4 =0;}void SEG_7404 () {C1=C2=C3=C4=0; P0 = 0x07;C1 = 1; delay (10); C1 = 0; P0 = 0x66;C2 = 1; delay (10); C2 = 0;P0 = 0x3f;C3 = 1; delay (10); C3 = 0;P0 = 0x66;C4 = 1; delay (10); C4 = 0;}void SEG_7432 () {C1=C2=C3=C4=0; P0 = 0x07;C1 = 1; delay (10); C1 = 0; P0 = 0x66;C2 = 1; delay (10); C2 = 0;P0 = 0x4f;C3 = 1; delay (10); C3 = 0;P0 = 0x5b;C4 = 1; delay (10); C4 = 0;}

2、LED指示程序

/******************************** 函數名:LED指示 ********************************/ //門電路正常提示// void LED_normal () {unsigned int i;for (i=0;i<4;i++){LED_Good = 1; delay_slow ();LED_Good = 0; delay_slow ();} } //門電路錯誤提示// void LED_error () {unsigned int i;for (i=0;i<4;i++){LED_Bad = 1; delay_slow ();LED_Bad = 0; delay_slow ();} }

3、開始選擇菜單程序

/**************************************** 函數名:一級選擇菜單函數 功能:循環檢測按鍵并執行菜單選擇的功能 *****************************************/ void MenuChoose () {while (1){if (KEY_Choose == 0){ delay (300);if (KEY_Choose == 1) {//控制范圍//if (MenuData == 4){MenuData = 1;}else {MenuData=MenuData+1;}switch (MenuData){case 1:SEG_7400 ();break;case 2:SEG_7404 ();break;case 3:SEG_7432 ();break;}}}if (MenuData==1&&KEY_Begin==0){Begin_Carry_7400 ();}if (MenuData==2&&KEY_Begin==0){Begin_Carry_7404 ();}if (MenuData==3&&KEY_Begin==0){Begin_Carry_7432 ();}} }

4、門電路檢測程序

/******************************** 函數名:開始執行門電路檢測 ********************************/ void Begin_Carry_7400 () { delay_slow();CheckStatus = 0;OutPutOne = 0; OutPutTow = 0;if (InPut == 0) {CheckStatus = 0; LED_error (); }else if (InPut == 1) {CheckStatus++;}delay_slow();OutPutOne = 0; OutPutTow = 1;if (InPut == 0) {CheckStatus = 0; LED_error (); }else if (InPut == 1) {CheckStatus++;}delay_slow();OutPutOne = 1; OutPutTow = 0;if (InPut == 0) {CheckStatus = 0; LED_error (); }else if (InPut == 1) {CheckStatus++;}delay_slow();OutPutOne = 1; OutPutTow = 1;if (InPut == 1) {CheckStatus = 1; LED_error (); }else if (InPut == 0) {CheckStatus++;}if (CheckStatus == 4) {LED_normal (); }}

四、仿真說明

? ? ? ? 1、開始仿真

? ? ? ? 2、點擊選擇按鈕選擇想要檢測的門電路

? ? ? ? 3、在選擇開關選擇接入待測門電路

? ? ? ? 4、點擊開始執行按鈕開始檢測并輸出狀態由LED顯示

總結

以上是生活随笔為你收集整理的基于单片机门电路测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。