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

標(biāo)題: 哪位大神幫忙看一下,我做的是TLC0834采集0-5V在數(shù)碼管上顯示兩位數(shù),但現(xiàn)在只顯示0.0 [打印本頁]

作者: 18699427623    時(shí)間: 2019-5-15 11:00
標(biāo)題: 哪位大神幫忙看一下,我做的是TLC0834采集0-5V在數(shù)碼管上顯示兩位數(shù),但現(xiàn)在只顯示0.0
/********************************* 包含頭文件 ********************************/
#include <reg52.h>
#include <intrins.h>
/********************************* 端口定義 **********************************/

#define uchar unsigned char
#define uint unsigned int

sbit CS = P1^4;
sbit Clk = P1^2;
sbit DATI = P1^3;
sbit DATO = P1^1;
sbit  AD_SARS = P1^6;

sbit led2 = P2^1;
sbit led3 = P2^2;


/******************************* 定義全局變量 ********************************/
unsigned char dat = 0x00; //AD 值
unsigned char count = 0x00; //定時(shí)器計(jì)數(shù)
unsigned char CH; //通道變量
unsigned char dis[] = {0x00, 0x00, 0x00}; //顯示數(shù)值
unsigned char c=0;
/******************************* 共陽 LED 段碼表 *******************************/
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

/****************************************************************************
函數(shù)功能 :AD 轉(zhuǎn)換子程序
入口參數(shù) :CH
出口參數(shù) :dat
****************************************************************************/
unsigned char adc0834(unsigned char CH)
{
  unsigned char i,AI_data;
  CS = 1;
  _nop_();
  DATO = 1;
  _nop_();
  _nop_();
  Clk = 0;
  _nop_();
  CS = 0;
  _nop_();

  //Start BIT
  DATI = 1;
  _nop_();
  Clk = 1;
  _nop_();
  Clk = 0;
  _nop_();

  //SGL/DIF BIT
  DATI = 1;
  _nop_();
  Clk = 1;
  _nop_();
  Clk = 0;
  _nop_();
  
  //ODD/EVEN BIT   
  if((CH == 0x00) || (CH == 0x02))
  {
    DATI = 0;
  }
  if((CH == 0x01) || (CH == 0x03))
  {
    DATI = 1;
  }
  _nop_();
  Clk = 1;
  _nop_();
  Clk = 0;
  _nop_();

  //SELECT BIT
  if((CH == 0x00) || (CH == 0x01))
  {
    DATI = 0;
  }
  if((CH == 0x02) || (CH == 0x03))
  {
   DATI = 1;
  }
  _nop_();
  Clk = 1;
  _nop_();
  Clk = 0;
  _nop_();
  Clk = 1;
  _nop_();
  Clk = 0;
  _nop_();

  //讀取轉(zhuǎn)換的8位數(shù)據(jù)
  for(i=0;i<8;i++)
  {
    AI_data <<= 1;
        _nop_();
    AI_data+=(uchar)DATO;
    _nop_();
        Clk = 1;
        _nop_();
        Clk = 0;
        _nop_();
  }

  CS = 1;
  DATI = 1;
  return dat;
}

/****************************************************************************
函數(shù)功能 :將 0-255 級(jí)換算成 0.00-5.00 的電壓數(shù)值
入口參數(shù) :i
出口參數(shù) :
****************************************************************************/
void convdata(unsigned char i)
{
dis[0] = i/51; //個(gè)位
dis[1] = (i%51)*10/51*2; //小數(shù)點(diǎn)后第一位
dis[2] = ((i%51)*10%51)*10/51*2; //小數(shù)點(diǎn)后第二位
}
/****************************************************************************
函數(shù)功能 :數(shù)碼管顯示子程序
入口參數(shù) :
出口參數(shù) :
****************************************************************************/
void display(void)
{
        P0=0xff;
        switch(c)
        {
                case 0:led2=0;led3=1;c++;P0=tab[dis[0]]&0x7f;;break;
                case 1:led2=1;led3=0;c=0;P0=tab[dis[0]];break;
                default :break;
        }
}
/****************************************************************************
函數(shù)功能 :主程序
入口參數(shù) :
出口參數(shù) :
****************************************************************************/
void main(void)
{
        TMOD = 0x01; //設(shè)置中斷
        TH0=(65536-50000)/256;// 定時(shí)器 1 初值定時(shí) 50ms
        TL0=(65536-50000)%256;
        IE = 0x82;
        TR0 = 1;
        while(1) //主循環(huán)
        {
                dat = adc0834(CH);
                convdata(dat); //數(shù)據(jù)轉(zhuǎn)換
                display(); //顯示數(shù)值
        }
}
/****************************************************************************
函數(shù)功能 :定時(shí)器中斷延時(shí)程序 這一段的作用時(shí)隔一段時(shí)間抽樣一次 否側(cè)顯示的最后一位
會(huì)不穩(wěn)定
入口參數(shù) :
出口參數(shù) :
****************************************************************************/
void timer0(void) interrupt 1
{
       
        TH0=(65536-50000)/256;// 定時(shí)器 1 初值定時(shí) 50ms
        TL0=(65536-50000)%256;
        count++;
        if (count == 0x01)
        {
                count = 0x00;
                dat = adc0834(CH);
        }
}


作者: zb123    時(shí)間: 2019-5-15 15:04
可以用仿真軟件看一下




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