標(biāo)題: STC12C5A60S2單片機(jī)AD按鍵程序(節(jié)約io口) [打印本頁(yè)]

作者: 418854190    時(shí)間: 2020-7-8 20:06
標(biāo)題: STC12C5A60S2單片機(jī)AD按鍵程序(節(jié)約io口)
單片機(jī)用的是STC12C5A60S2  晶振12M
AD判斷部分我自己琢磨的  穩(wěn)定性還可以吧  只要?jiǎng)e快速輪換按不同按鍵就沒事    最大顯示數(shù)是255

基準(zhǔn)電源用的是5V 所以電壓必須穩(wěn)定沒有波動(dòng)     也可以用431做一個(gè)穩(wěn)定的基準(zhǔn)電源   
串聯(lián)的分壓電阻隨意選擇 只要能拉開電壓差距就行  按下按鍵看顯示屏顯示的數(shù)  在到程序里修改該按鍵值的數(shù)據(jù)范圍
比如顯示的是20   程序里對(duì)應(yīng)按鍵的最小數(shù)填15 最大數(shù)填25    這兩個(gè)數(shù)及它們之間的數(shù)都屬于該按鍵的   
對(duì)地電容我是隨便選的 不知道是多少  能用就行  

電路原理圖如下:


制作出來的實(shí)物圖如下:



MA:
    MOV        ADC_CONTOR,#0C8H        ;開啟P1.0的AD轉(zhuǎn)換        電壓  #11001000B
        LCALL AD        ;調(diào)用AD子程序
        MOV        A,ADC_RES
        MOV 33H,A;           電壓數(shù)據(jù)放入33H
        MOV  B,#100           ;100放入B
    DIV  AB                   ;ADC_RES除以B
    MOV  36H,A           ;A余數(shù)放入36H
    MOV  A,B           ;B余數(shù)放入A
    MOV  B,#10           ;10放入B
    DIV  AB                   ;A除以B
    MOV  37H,A           ;A放入37H
    MOV  38H,B           ;B放入38H
        MOV A,33H;           取出電壓數(shù)據(jù)放入A 用于按鍵對(duì)比
        RET;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;AD轉(zhuǎn)換子程序
AD:         MOV        A,ADC_CONTOR
     LCALL DELAY30MS
         JNB        0E4H,AD
         CLR        0E4H
         MOV        ADC_CONTOR,A
         RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADDAT:            
;按鍵0                                                                                 0~05等于按鍵0按下
V_KEY0:                                 CJNE A,#0,V_KEY0_2;
V_KEY0_1:                          CLR OUT0;                 
                                         LCALL DIP;                                 調(diào)用顯示
                                         LCALL MA;                                 調(diào)用AD檢測(cè)
                                         CJNE A,#255,V_KEY0;         判斷按鍵釋放
                                         LJMP V_KEY0_4
V_KEY0_2:                         CJNE A,#05,V_KEY0_3;
                                         LJMP V_KEY0_1;
V_KEY0_3:                          JC V_KEY0_1;
V_KEY0_4:            MOV P3,#0FFH;                         P3輸出高電位                 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;按鍵1                                                                                 18~27等于按鍵1按下
V_KEY1:              CJNE A,#18,V_KEY1_2;
V_KEY1_1:            CLR OUT1;
                                         LCALL DIP;
                     LCALL MA;
                                         CJNE A,#255,V_KEY1;         
                                         LJMP V_KEY1_4               
V_KEY1_2:            CJNE A,#27,V_KEY1_3;
                     LJMP V_KEY1_1;
V_KEY1_3:            JC V_KEY1_1;
V_KEY1_4:            MOV P3,#0FFH;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;按鍵2                                                               38~46等于按鍵2按下
V_KEY2:              CJNE A,#38,V_KEY2_2;
V_KEY2_1:            CLR OUT2;
                                         LCALL DIP;
                     LCALL MA;
                                         CJNE A,#255,V_KEY2;
                                         LJMP V_KEY2_4                 
V_KEY2_2:            CJNE A,#46,V_KEY2_3;
                     LJMP V_KEY2_1;
V_KEY2_3:            JC V_KEY2_1;
V_KEY2_4:            MOV P3,#0FFH;

51hei截圖20200708200955.jpg (38.73 KB, 下載次數(shù): 196)

51hei截圖20200708200955.jpg

51hei截圖20200708201001.jpg (31.87 KB, 下載次數(shù): 210)

51hei截圖20200708201001.jpg

STC12C5A60S2 - 1602 - AD按鍵.rar

29.71 KB, 下載次數(shù): 54, 下載積分: 黑幣 -5


作者: caifei9280    時(shí)間: 2020-7-24 10:54
說老實(shí)話   這種程序語(yǔ)言我就沒看懂。

作者: Sanada    時(shí)間: 2020-7-24 13:35
caifei9280 發(fā)表于 2020-7-24 10:54
說老實(shí)話   這種程序語(yǔ)言我就沒看懂。

那是匯編語(yǔ)言,執(zhí)行效率最高,最難讀懂的語(yǔ)言
作者: cjffengyu    時(shí)間: 2020-8-16 10:46
大神啊,膜拜了,謝謝
作者: 大風(fēng)吹過啊    時(shí)間: 2020-8-22 22:52
STC12的話單獨(dú)驗(yàn)證是可以的,加進(jìn)系統(tǒng)里使用要考慮好參考電壓的問題。電壓不穩(wěn)對(duì)AD按鍵來說是災(zāi)難,實(shí)用的話為了省事最好用STC15或者STC8
作者: 湖南孵化    時(shí)間: 2020-8-29 07:49
謝謝,有自己的思想。
作者: aking991    時(shí)間: 2020-9-1 11:45
首先為你還在用匯編的點(diǎn)贊,曾幾何時(shí)我也是從匯編過來的,現(xiàn)在已改為C了,會(huì)匯編的來學(xué)改用C的很好學(xué)的,但前提是要有人幫指導(dǎo)一二,然后通過自己不斷的實(shí)踐,從實(shí)踐中不斷的改進(jìn),會(huì)學(xué)得更快的,支持你
作者: zhyzsn    時(shí)間: 2020-10-22 01:40
匯編好,學(xué)習(xí)學(xué)習(xí)
作者: Abcd123456njiuy    時(shí)間: 2020-10-22 22:36
caifei9280 發(fā)表于 2020-7-24 10:54
說老實(shí)話   這種程序語(yǔ)言我就沒看懂。

沒看懂那就學(xué)唄哈哈
作者: fhq1087    時(shí)間: 2021-2-5 23:43
又是位匯編大佬,這兩天在琢磨這個(gè)ADC檢測(cè)多個(gè)按鍵的事,只會(huì)C,還沒想好怎么寫
作者: madell    時(shí)間: 2021-2-12 17:10
匯編不錯(cuò),代碼寫的不錯(cuò)。
作者: 3486635230    時(shí)間: 2021-3-28 22:03
匯語(yǔ)言,實(shí)在不了好移植。樓主寫C語(yǔ)言吧
作者: 1860774xxxx    時(shí)間: 2021-3-29 11:01
舊時(shí)老式彩色電視就會(huì)這樣的原理 但有一個(gè)很大的缺點(diǎn) 一但回南天按鍵受潮 按鍵本身就會(huì)產(chǎn)生電阻值 AD就會(huì)判斷錯(cuò)誤 比如說你想按加音量 結(jié)果給你直接換臺(tái)了 這也是老式電視通病
作者: dhbt2021    時(shí)間: 2022-2-12 22:07
沒有參數(shù)設(shè)置?
作者: 山水2000    時(shí)間: 2023-7-1 10:39
用匯編寫的程序真的很少了,我也只能看的懂匯編,C一直覺得復(fù)雜看不懂。
作者: 13872888583    時(shí)間: 2023-7-4 08:18
這個(gè)方法,在電視機(jī)上早就有了,從2002年電視機(jī)芯片開始用單片機(jī),里面的按鍵就是采用這種方法




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1