久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4518|回復: 0
打印 上一主題 下一主題
收起左側(cè)

51單片機ADC0809電壓采集

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:724208 發(fā)表于 2020-4-7 17:26 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
程序:
/******************調(diào)用頭文件*******************/
#include "reg52.h"
#include "intrins.h"

/*****************定義地址**********************/
sbit KEY   = P1^0;            //按鍵
sbit ADD_C = P1^2;
sbit ADD_B = P1^3;
sbit ADD_A = P1^4;            // 選輸入口

sbit CLK =   P1^5;            // 時鐘
sbit START = P1^6;            // 轉(zhuǎn)換啟動信號
sbit EOC =   P1^7;            // 轉(zhuǎn)換結(jié)束信號
sbit OE =    P1^1;            // 輸出允許信號

/*****************定義全局變量********************/
int flag = 0;

/*****************數(shù)碼管段碼**********************/
unsigned char code DUAN[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};    //不帶小數(shù)點
unsigned char code DUAN1[] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x80};   //帶小數(shù)點

/*****************電壓值區(qū)間******************/
float JS[] = {0,62.5,125,187.5,250,312.5,375,437.5,500};
/*******************讀ADC*******************/
void read_adc(void)
{
                START = 0;
                _nop_();
                START = 1;
                _nop_();
                START = 0;
                while(EOC==0);
                OE=1;
}

/*****************AD值區(qū)間計算*********************/
int LED_JS(float AD)
{
        int t0 = 0;
        int i = 0;
        for(; i<8 ;i++)
        {
                if(AD >= JS[i])
                        if(AD <= JS[i+1])
                                t0 = i;
        }
        return t0+1;
}

/*****************不精確延時**********************/
void delay_ms(int i)
{
        int j=0;
        while(i--)
        {
                for(j=0;j<120;j++);
        }
}

/*****************數(shù)碼管顯示**********************/
void display1(unsigned char ADC1_PORT)
{
        int AD1 = ADC1_PORT * 500.0/255.0;
        P2 = 0xFD;   P0 = DUAN1[AD1/100];     delay_ms(5);     // 位選:P2^1  個位
        P2 = 0xFB;   P0 = DUAN[(AD1/10)%10];  delay_ms(5);     // 位選:P2^2  小數(shù)點后一位
        P2 = 0xF7;   P0 = DUAN[AD1%10];       delay_ms(5);     // 位選:P2^3  小數(shù)點后兩位
}

/*****************LED顯示**********************/
void display2(unsigned char ADC2_PORT)
{
        float AD2 = ADC2_PORT * 1.96;
        P2 = 0xFF;                  // 清屏
  switch(LED_JS(AD2))
        {
                case 1: P0 = 0xff; break;
                case 2: P0 = 0xfe; break;
                case 3: P0 = 0xfc; break;
                case 4: P0 = 0xf8; break;
                case 5: P0 = 0xe0; break;
                case 6: P0 = 0xc0; break;
                case 7: P0 = 0x80; break;
                case 8: P0 = 0x00; break;
                default:P0 = 0xef;
        }
       
}

/*******************初始化*******************/
void init()
{
       
        ADD_C=0;
        ADD_B=1;
        ADD_A=1;           // 選擇第三通道
       
        CLK=0;             //時鐘
        START=1;           // 內(nèi)部寄存器清零
        EOC=1;             // 轉(zhuǎn)換結(jié)束
        OE=0;              // 使能
       
        TMOD=0x02;      // 0000_0010 8位 0~255
        TH0=200;
        TL0=200;        // 裝載初值
        EA=1;           // 開總中斷
        ET0=1;          // 開定時器中斷
        TR0=1;          // 開定時器
}

/****************mAin函數(shù)*******************/
void main()
{
        init();         // 初始化
        while(1)
        {
                if(KEY == 0)               // 檢測到按鍵
                {
                        delay_ms(5);             // 防抖
                        if(KEY == 0)
                        {
                                while(!KEY);           // 等松手
                                flag ++;               // 加1
                                flag &= 0x01;          // 與0x01相與 保證每次進入flag都為0或1
                        }
                }
               
                if(flag == 0)
                {
                        read_adc();
                        display1(P3);
                        OE=0;
                }
               
                if(flag == 1)
                {               
                        read_adc();
                        display2(P3);
                        OE=0;
                }
        }
}

/****************中斷服務程序*******************/
void TIM0_Serves() interrupt 1         // 用于產(chǎn)生CLK
{
        CLK = !CLK;
}


1.png (37.04 KB, 下載次數(shù): 82)

1.png

01.zip

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天干天天操 | 午夜国产在线观看 | a级片免费观看 | 超碰在线观看97 | 精品国产乱码久久久久久88av | 日韩中文字幕在线观看 | 中文字幕99| 午夜免费福利视频 | 91成人小视频 | 久草福利资源站 | 午夜在线观看免费视频 | 国产一区二区三区在线观看视频 | 久精品视频 | 色综合一区 | 日本人の夫妇交换 | 国产精品av在线 | 99热在线观看 | 成人性生活视频 | 中文字幕在线观看不卡 | 一起操在线 | 亚洲va韩国va欧美va精品 | 韩国av免费| 亚洲欧美一区二区三区四区 | 欧美日韩免费在线观看 | 国产一区二区欧美 | 91精品免费视频 | 久久精品在线观看 | 久久精品久久久 | 一区二区美女 | 免费黄网站在线观看 | 午夜专区| 一区二区福利 | 日韩毛片网站 | 国产成人免费视频 | 国产免费黄色片 | 亚洲国产成人精品女人久久久 | 欧美日韩一区二区在线观看 | 欧美日韩精品一区 | 国产超级av | 四虎在线免费观看视频 | 男人天堂网av |