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

📄 da.c

📁 用汇编语言实现51单片机的ADC0808的AD转换 精确到小数点两位.
💻 C
字号:
#include<reg51.h>
#include<stdio.h>
sbit SEL1=P3^4; 
sbit SEL2=P3^5;
sbit SEL3=P3^6;
sbit SEL4=P3^7;
sbit OE=P2^4;
unsigned char ADC0808;

unsigned char ledmap[20]=		 	   //  共阴数码管
{	
	0x3f,0x06,0x5b,0x4f,0x66,		   //  0,1,2,3,4,
	0x6d,0x7d,0x07,0x7f,0x6f,		   // 5,6,7,8,9
	0xbf,0x86,0xdb,0xcf,0xe6,		   //  带点的0——9
	0xed,0xfd,0x87,0xff,0xef,		   //
};
unsigned int getdata;
void ext_int0_init(void);
void delay(unsigned int t);
void disp();

void main(void)
{
	ext_int0_init();		   //	  外部中断初始化
	EA=1;
	while(1)
	{
		P2=0x00;			  //   0808初始化
		delay(10);
		P2=0x08;			  //	 通道琐存 0808所有的寄存器清零
		delay(10);
		P2=0x00;			 //		开始AD转换
		delay(10);			//	  等待转换
		disp();
	}
}

void ext_int0_init(void)	 //
{
	IT0=1;
	EX0=1;
}
void disp()
{
	P1=getdata;

	P1=ledmap[0];						//	   通道显示	  
	SEL1=0;
	delay(10);
	SEL1=1;

	delay(10);
	P1=ledmap[getdata*100/51/100%10+10];	//	百位 (小数点位)    
	SEL2=0;

	delay(10);
	SEL2=1;
	 delay(10);
	P1=ledmap[getdata*100/51/10%10];		 //	   十位
	SEL3=0;

	delay(10);
	SEL3=1;
	 delay(10);
	P1=ledmap[getdata*100/51%10];			//	 个位
	SEL4=0;
	  
	delay(10);
	SEL4=1;
    delay(10);
}  
void ext_int0(void) interrupt 0 using 1		  //   读转换的数据
{
	OE=1;
	getdata=P0;
	OE=0;
}
void delay(unsigned int t)
{
	
	while(--t);
}

⌨️ 快捷键说明

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