⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad转换.c

📁 C51 singlechip AD program
💻 C
字号:
  
  
/*************************************
www.neeeu.com 全国电子设计联盟
*************************************/
#include <stdio.h>
#include <reg51.h>
#define  TRUE   1
#define  FALSE   0

#define  DELAY_VALUE  3

#define  ATODHIGH   0x0700 //00000111
#define  ATODLOW    0x0F00 //00001111
#define  DTOAHIGH   0x1100 //00010001
#define  DTOALOW    0x1200 //00010010
#define  ADDARATE 1.1304
#define  STEPLENGTH 3

#define  PinLamp  P1_0  //指示灯驱动管脚
#define  PinSpeaker P1_1  //蜂鸣器驱动管脚
#define  PinADStatus P1_2  //AD的状态显示
#define  PinADCS  P2_4  //AD的选中信号
#define  XBYTE ((unsigned char volatile xdata*) 0)

sbit  P0_0=P0^0;
sbit  P0_1=P0^1;
sbit  P0_2=P0^2;
sbit  P0_3=P0^3;
sbit  P0_4=P0^4;
sbit  P0_5=P0^5;
sbit  P0_6=P0^6;
sbit  P0_7=P0^7;

sbit  P1_0=P1^0;
sbit  P1_1=P1^1;
sbit  P1_2=P1^2;
sbit  P1_3=P1^3;
sbit  P1_4=P1^4;
sbit  P1_5=P1^5;
sbit  P1_6=P1^6;
sbit  P1_7=P1^7;

sbit  P2_0=P2^0;
sbit  P2_1=P2^1;
sbit  P2_2=P2^2;
sbit  P2_3=P2^3;
sbit  P2_4=P2^4;
sbit  P2_5=P2^5;
sbit  P2_6=P2^6;
sbit  P2_7=P2^7;


void initial(void);              //初始化子程序
void delay(unsigned char i);
void sendda(unsigned short ab);
unsigned short getad(void);
unsigned short serdate(void);

void main(void)
{
unsigned short refint=0,aint=0;
initial();   
while(1)
{
refint=serdate();
aint=getad();
if(aint>=refint)
{
 aint-=STEPLENGTH;
 }
else if(aint<refint)
{
 aint+=STEPLENGTH;
 }
sendda(aint);
}
}


void initial(void)
{
P1_0=TRUE;   //发光二极管设为不亮
P1_1=TRUE;   //蜂鸣器不叫
}

void delay(unsigned char i) //延迟子程序
{
  short j=0;
  short k=0;
  k=i*DELAY_VALUE;
  while (j<k)j++;
}

void sendda(unsigned short ab)
{

XBYTE[DTOAHIGH]=(unsigned char)(ab/256);
delay(DELAY_VALUE);
XBYTE[DTOALOW]=ab-(unsigned short)((unsigned char)(ab/256)*256);
delay(DELAY_VALUE);
}

unsigned short getad(void)
{
unsigned short ab;
unsigned char tmp1,tmp2; 
PinADCS=TRUE;
PinADStatus=TRUE;
while(PinADStatus==TRUE);
tmp1=XBYTE[ATODHIGH];
tmp2=XBYTE[ATODLOW];
ab=(unsigned short)tmp1*256+(unsigned short)tmp2;
return ab;
}

unsigned short serdate(void)
{
unsigned short ab;
unsigned char tmp1,tmp2;
tmp1 = XBYTE[DTOAHIGH];
tmp2 = XBYTE[DTOALOW];
ab=(unsigned short)(((float)tmp1*256+(float)tmp2)*ADDARATE);
return ab;
}        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -