欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1893|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

使用單片機的A/D轉(zhuǎn)換口,采集外部輸入電壓在四位數(shù)碼管上顯示出來,單位為V

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:442670 發(fā)表于 2018-12-21 12:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗五 A/D轉(zhuǎn)換實驗
一、實驗?zāi)康?br /> 1. 了解單片機的A/D的工作原理。
2. 掌握單片機的A/D的應(yīng)用。
二、實驗內(nèi)容

//1. 編寫程序,使用單片機的A/D轉(zhuǎn)換口,采集外部輸入電壓,并把采集到的電壓在四位數(shù)碼管上顯示出來,單位為V,并保留兩位小數(shù)。
typedef unsigned char uchar;
typedef unsigned char u8;
typedef unsigned int  u16;
typedef unsigned int  uint;


#include <stc15.h>
#include <intrins.h>


void AdInit();
void Timer1Init(void);        //2毫秒@11.0592MHz
void tuiwan();
//   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
u8 code BLOCK[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

uint advcc[8]={0};
uint advin[8]={0};
u16 vin,vcc,vee;
uchar n=0;
uchar ch=3;
u8 wei=1;


void main()
{
    tuiwan();
    Timer1Init();        //2毫秒@11.0592MHz
    AdInit();
    EA=1;
    while(1)
    {

        
    }
}

void AdInit()
{
  P1M0=0x00;  
  P1M1=0xFF;
  P1ASF=0x28;  
  ADC_CONTR=0x80;
  EADC=1;
  ADC_CONTR=0x88|ch;   
}

void Adsevr() interrupt 5
{

  ADC_CONTR=0x80;
    if(ch==3)
    {
        advcc[n]=(ADC_RES<<2)+(ADC_RESL&0x03);
        ch=5;
        ADC_CONTR=0x88|ch;
    }
    else if(ch==5)
    {
        advin[n]=(ADC_RES<<2)+(ADC_RESL&0x03);
        n++;
        if(n>=8)
        {
            n=0;
        }
        ch=3;
        ADC_CONTR=0x88|ch;
    }
   
}
void tuiwan()
{
    P2M0 |=  0xF0;
    P2M1 &= ~0xF0;

    P0M0 = 0xFF;
    P0M1 = 0x00;

}

void Timer1Init(void)        //2毫秒@11.0592MHz
{
    AUXR |= 0x40;        //定時器時鐘1T模式
    TMOD &= 0x0F;        //設(shè)置定時器模式
    TL1 = 0x9A;        //設(shè)置定時初值
    TH1 = 0xA9;        //設(shè)置定時初值
    TF1 = 0;        //清除TF1標(biāo)志
    ET1 = 1;                        //使能定時器0中斷
    TR1 = 1;        //定時器1開始計時
   
}

void tm1_isr() interrupt 3
{
  
        u8 i;
        vin=0;
        vcc=0;
   

        for(i=0;i<8;i++)
        {
            vin=vin+advin[i];
            vcc=vcc+advcc[i];
        }
        vcc=vcc>>3;
        vin=vin>>3;
             vin=vcc/1024.0*vin;

            
        
        switch ( wei )
    {
       case 1:
       P27=1;
       P0=BLOCK[vin/1000%10]|0x80;
       P24=0;
       wei=2;
       break;

       case 2:
       P24=1;
       P0=BLOCK[vin/100%10] ;
       P25=0;
       wei=3;
       break;

       case 3:
       P25=1;
       P0=BLOCK[vin/10%10];
       P26=0;
       wei=4;
       break;

       case 4:
       P26=1;
       P0=BLOCK[vin%10];
       P27=0;
       wei=1;
       break;        
    }
}

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

使用道具 舉報

沙發(fā)
ID:449881 發(fā)表于 2020-2-26 10:44 | 只看該作者
顯示的電壓值范圍是多少啊?精確幾個小數(shù)點
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表