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

📄 text1.c

📁 基于C的模数转换
💻 C
字号:
#include <AT89X52.h>
#include <intrins.h>

#define  ADCS   P1_0	//我比较喜欢宏定义	 这样可一适应硬件
#define  ADCLK  P1_1
#define  ADDO   P1_2

unsigned char code tab []={0xc0,	      //不带点的共阳极数码管
0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90};
unsigned char code tab2 [10]={0x40,     //带点的共阳极数码管
0x79,0x24,0x30,0x19,0x12,0x02,0x78,
0x00,0x10};


/******************1ms延时函数************/
delay1ms(int t)
{
	int i,j;
	for(i=0;i<t;i++)
		for(j=0;j<120;j++) 	;
}
 
/************************************************
LED数码管(显示)功能子函数
*************************************************/
void display (int k)
{
		P2=0X00;
		P0=tab[k%10];
		P2_3=1;	          //个位 
		delay1ms(1);

		P2=0X00;
		P0=tab[k%100/10];        //十位 	
		P2_2=1;	
		delay1ms(1);

		P2=0X00;
		P0=tab2[k%1000/100];	   //百位
		P2_1=1;		
		delay1ms(1);

		P2=0X00;
		P0=tab[k/1000];	       //千位 
		P2_0=1;
		delay1ms(1);
		P2=0X00;
}
/***************************************/
/*************ADC0831驱动***************/
/***********入口参数无******************/
/*************返回值   (ADValue)********/

unsigned  int ADConv()
{
	unsigned char i;  int ADValue=0;
	ADCS= 0;
	_nop_();
	_nop_();
	ADCLK=1;
	_nop_();
	_nop_();
	ADCLK=0;
	_nop_();
	_nop_();
	ADCLK=1;
	_nop_();
	_nop_();
	ADCLK=0;
	_nop_();
	_nop_();
	for(i=0;i<=8;i++)       //准备送后 8个时钟脉冲
	{
		if(ADDO)            
		ADValue|=0x01;        //末尾置1
		ADValue=ADValue<<1;   //右移一位
			ADCLK=1;
			_nop_();
			_nop_();
			ADCLK=0;
			_nop_();
			_nop_();
	}
	ADCS=1;                 //拉高C|S|端
	ADCLK=0;                //拉低CLK
	ADDO=1;                 //拉高ADDO 回到初始状态
	
	return(ADValue);

}

/************主函数开始************/
main()
{
		unsigned   int ADValue;

		ADValue=ADConv()/2.04;	  //这里我不知道什么返回的值不对,我加/
							    	//2.04是为了软件校正	,那位有更加好方法和我聊聊哦

		display(ADValue);	  //调用显示 函数

} 


⌨️ 快捷键说明

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