• 大小: 58KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: C/C++
  • 标签: adc0832  

资源简介

数字电压表(adc0832+C语言源程序+protues仿真)

资源截图

代码片段和文件信息

#include 
#include 


#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char


sbit ADCS =P3^4; //ADC0832 chip seclect
sbit ADDI =P1^1; //ADC0832 data in
sbit ADDO =P1^1; //ADC0832 data out
sbit ADCLK =P1^0; //ADC0832 clock signal

sbit S_1 = P2^4;
sbit S_2 = P2^5;
sbit S_3 = P2^6;
sbit S_4 = P2^3;

unsigned int Adc0832(unsigned char channel);
void delayms(unsigned char ms);
unsigned char PW[]={0X280XEE0X320XA20XE40XA10X210XEA0X200XA0};
/************
读ADC0832函数
************/

//采集并返回
unsigned int Adc0832(unsigned char channel)
{
   uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;

if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端形成下降沿3
ADDI=1;//控制命令结束 
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
   dat|=ADDO;//收数据
   ADCLK=1;
   _nop_();
   _nop_();
   ADCLK=0;//形成一次时钟脉冲
   _nop_();
   _nop_();
   dat<<=1;
   if(i==7)dat|=ADDO;

for(i=0;i<8;i++)
{
   j=0;
   j=j|ADDO;//收数据
   ADCLK=1;
   _nop_();
   _nop_();
   ADCLK=0;//形成一次时钟脉冲
   _nop_();
   _nop_();
   j=j<<7;
   ndat=ndat|j;
   if(i<7)ndat>>=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高数据端回到初始状态
dat<<=8;
dat|=ndat;
   return(dat);            //return ad data
}


void show(uchar p)   
{
uchar ii1i2;

i1 = p/51;

i = (10*p) /51;
i2 = i % 10;


S_1 = 0;
S_2 = 1;
P0=PW[i1];
P05 = 0;
delayms(50);

S_1 = 1;
S_2 = 0;
P0=PW[i2];
delayms(50);

}


/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms) {
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++) ;
     }
}/*********************************************************/


int main(void)
{
while(1)
show(Adc0832(0));
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        749  2011-02-09 17:46  adc0832\STARTUP.OBJ

     文件       5245  2011-02-09 17:46  adc0832\show.LST

     文件       6376  2009-05-07 14:37  adc0832\STARTUP.A51

     文件       1514  2011-02-09 17:50  adc0832\qqq.plg

     文件       2280  2011-02-09 17:46  adc0832\show.c

     文件       9385  2011-02-09 17:46  adc0832\show.OBJ

     文件       9795  2011-02-09 17:46  adc0832\qqq

     文件      14048  2011-02-09 17:46  adc0832\STARTUP.LST

     文件         55  2011-02-09 17:46  adc0832\qqq.lnp

     文件       9495  2011-02-09 17:46  adc0832\qqq.M51

     文件     104962  2011-02-09 17:57  adc0832\数字电压表.DSN

    .......     55315  2011-02-09 17:50  adc0832\qqq.uvopt

     文件       1454  2011-02-09 17:46  adc0832\qqq.hex

     文件        742  2011-02-09 17:57  adc0832\数字电压表.PWI

     文件     105389  2011-02-09 17:56  adc0832\Last Loaded 数字电压表.DBK

    .......         0  2011-02-09 11:58  adc0832\qqq_uvproj.bak

    .......     13416  2011-02-09 12:21  adc0832\qqq.uvproj

    .......     55315  2011-02-09 17:30  adc0832\qqq_uvopt.bak

     目录          0  2011-02-09 08:46  adc0832

----------- ---------  ---------- -----  ----

               395535                    19


评论

共有 条评论