基于单片机门电路测试
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                基于单片机门电路测试
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                一、簡(jiǎn)介
? ? ? ? 使用stc89c52為核心。功能為檢測(cè)門(mén)電路,仿真中沒(méi)有集成門(mén)芯片,所以此程序只可以測(cè)試門(mén)電路而不是集成門(mén)。目前僅支持7400、7404、7432后續(xù)有時(shí)間我可以繼續(xù)設(shè)計(jì)更多門(mén)電路的檢測(cè)。如果需要源碼后續(xù)我會(huì)分享出來(lái)。
二、電路代碼驅(qū)動(dòng)
實(shí)驗(yàn)仿真電路1、數(shù)碼管使用74hc573鎖存器驅(qū)動(dòng)
sbit C1=P3^2; //數(shù)碼管驅(qū)動(dòng)芯片控制端 sbit C2=P3^3; sbit C3=P3^4; sbit C4=P3^5;2、兩個(gè)LED指示燈
sbit LED_Good = P3^6; //正常指示燈 sbit LED_Bad = P3^7; //錯(cuò)誤指示燈3、兩個(gè)按鍵
sbit KEY_Choose = P3^0; // 選擇檢測(cè)芯片 sbit KEY_Begin = P3^1; // 確定選擇的芯片4、單片機(jī)對(duì)門(mén)電路檢測(cè)信號(hào)輸入輸出
sbit OutPutOne = P1^0; //單片機(jī)信號(hào)輸出1 sbit OutPutTow = P1^1; //單片機(jī)信號(hào)輸出2 sbit InPut = P1^2; //單片機(jī)信號(hào)輸入三、程序分析
1、數(shù)碼管驅(qū)動(dòng)程序
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指示程序
/******************************** 函數(shù)名:LED指示 ********************************/ //門(mén)電路正常提示// void LED_normal () {unsigned int i;for (i=0;i<4;i++){LED_Good = 1; delay_slow ();LED_Good = 0; delay_slow ();} } //門(mén)電路錯(cuò)誤提示// void LED_error () {unsigned int i;for (i=0;i<4;i++){LED_Bad = 1; delay_slow ();LED_Bad = 0; delay_slow ();} }3、開(kāi)始選擇菜單程序
/**************************************** 函數(shù)名:一級(jí)選擇菜單函數(shù) 功能:循環(huán)檢測(cè)按鍵并執(zhí)行菜單選擇的功能 *****************************************/ 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、門(mén)電路檢測(cè)程序
/******************************** 函數(shù)名:開(kāi)始執(zhí)行門(mén)電路檢測(cè) ********************************/ 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 (); }}四、仿真說(shuō)明
? ? ? ? 1、開(kāi)始仿真
? ? ? ? 2、點(diǎn)擊選擇按鈕選擇想要檢測(cè)的門(mén)電路
? ? ? ? 3、在選擇開(kāi)關(guān)選擇接入待測(cè)門(mén)電路
? ? ? ? 4、點(diǎn)擊開(kāi)始執(zhí)行按鈕開(kāi)始檢測(cè)并輸出狀態(tài)由LED顯示
總結(jié)
以上是生活随笔為你收集整理的基于单片机门电路测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: MOS管学习
- 下一篇: WebServer报错Unexpecte
