新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC16F877A的AD學習

        PIC16F877A的AD學習

        作者: 時間:2016-11-09 來源:網絡 收藏
        今天晚上開始編寫ADC程序!

        下面是一個3*3AD鍵盤的原理圖

        本文引用地址:http://www.104case.com/article/201611/317654.htm

        程序的頭文件

        #ifndef ADC_H
        #define ADC_H

        #include "main.h"
        void init_adc() ;
        char get_key() ;

        #endif
        子程序

        #include "adc.h"
        void init_adc()
        {
        //定義端口方向
        TRISA0=1 ;
        ADCS1=0 ;//選擇系統時鐘
        ADCS0=0 ;
        //選擇通道RA0 ;
        //CH2=0 ;
        //CH1=0 ;
        //CH3=0 ;
        bitclr(ADCON0,5) ;
        bitclr(ADCON0,4) ;
        bitclr(ADCON0,3) ;
        ADON=1 ;//AD就緒
        ADFM=0 ;

        }
        char get_key()
        { char adata=0;
        ADGO=1;
        while(ADGO);
        if(ADRESH>0xcb)
        adata=1;
        else if(ADRESH>0xa8)
        adata=2;
        else if(ADRESH>0x8f)
        adata=3;
        else if(ADRESH>0x7d)
        adata=4;
        else if(ADRESH>0x6f)
        adata=5;
        else if(ADRESH>0x63)
        adata=6;
        else if(ADRESH>0x5a)
        adata=7;
        else if(ADRESH>0x53)
        adata=8;
        else if(ADRESH>0x4c)
        adata=9;
        else
        adata=0;

        return adata;

        }
        主程序

        #include
        #include
        #include

        #include "main.h"
        #include "t232.h"
        #include "adc.h"
        #include "lcd.h"

        bank1 char temp ;
        bank1 char t1 ;
        bank1 char dat[6] ;
        bank1 char key_data=0 ;


        void init_all()
        {
        init_adc() ;
        init_232() ;
        init_lcd() ;
        }

        void main()
        {
        init_all() ;
        while(1)
        {
        key_data=0 ;
        while(key_data==0)
        {
        key_data=get_key() ;
        }
        temp=get_key() ;
        if(temp==key_data)
        {
        while(key_data)
        {
        key_data=get_key() ;
        }
        t1=temp+0x30 ;
        sprintf(dat,"key%c",t1) ;
        send_str(dat) ;

        }
        }
        }
        將讀取的鍵盤數值傳送到上位機!

        經測試發現AD鍵盤不是很好用,容易出現按鍵錯誤,不是很穩定,所以實際當中最好不要使用AD鍵盤,打算使用zlg7290鍵盤來作鍵盤和顯示!



        關鍵詞: PIC16F877AAD學

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 六盘水市| 澄城县| 习水县| 武宣县| 全州县| 许昌县| 潞西市| 延长县| 泰宁县| 三都| 贡山| 车险| 通州市| 仁化县| 伊春市| 桦川县| 安溪县| 阜平县| 宝鸡市| 永福县| 衡山县| 双辽市| 合江县| 微博| 通山县| 固安县| 荣成市| 漾濞| 绍兴市| 板桥市| 闽侯县| 扶绥县| 砚山县| 沙湾县| 九台市| 孝感市| 齐河县| 来凤县| 高唐县| 新余市| 宁海县|