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

📄 ad0809.c

📁 用0809 和单片机开发的一个电要表的程序为共阳数码管显示
💻 C
字号:
#include<reg51.h>
#include"AD0809.h"



uchar WordCode[]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,
				  0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,	//0~F分别是数字0~15
				  0xFF,0xFF,0xFF,0x42,0x41,0x06,0x4E,		//16~18 19~22分别是X X X G.U.E.T.
				  0x7F,0xFF};								//23是小数点//24是全灭
uchar SelectCode[]={0x0E,0x0D,0x0B,0x07,0xFF};
uchar LED[4] = {0};

void DisplaySingleLED(uchar NO, uchar WORD)
{
	WORDPORT   =  0xFF;
	WORDPORT   =  WordCode[WORD];
	SELECTPORT =  SelectCode[NO];
	Delay5ms();
}

void Display(void)
{
	uchar i;
	bit flag = 0;	//flag为零表示待显示的是数据的第一位

	uint AMPtemp = 0;
//	drop  = 0;
	AMPtemp = AMPIN0;
/*
	if(!AMPtemp)
	{
		DisplaySingleLED(3,0);
	}
*/
	for(i=4; i>0; i--)
	{
		LED[i-1] = AMPtemp%10;
		AMPtemp = AMPtemp/10;
	}

	

	for(i=0; i<4; i++)
	{	
//		if(drop)
//		{
//			DisplaySingleLED(0,23);
//			flag = 1;
//		}

//		if(LED[i] | flag)
//		{
			DisplaySingleLED(i,LED[i]);
//			flag = 1;
//		}
	}
}

void ReadAD0809(void)
{
	uchar i;
	uint  AMP = 0;
	ST = 0;
	ST = 0;
	ST = 1;
	for(i=200; i>0; i--)
	{;}
	ST = 1;
	ST = 1;
	ST = 0;
	EOC = 0;
	i = 100;
	while((!EOC) & (i>0))//等待转换完成
//	while(!EOC)
	{
		i--;
	}
	OE = 1;
	DATAPORT   =  0xFF;
	AMP = DATAPORT;
	OE = 0;
	EOC = 0;
	AMPIN0 = AMP;
//	AMPIN0 = 0;
	AMPIN0 = AMP*20;//转换出来的单位为MV,最大值为5000,最小值为20(1/51*1000=19.6
}

void SystemTest(void)
{

	uchar i,j;
	j = 0;
//	WORDPORT = 0xFF;
//	SELECTPORT = 0xFF;

	while(j<4)
	{
		i = 100;
		while(i--)
		{
			DisplaySingleLED(0,16+j);
			DisplaySingleLED(1,17+j);
			DisplaySingleLED(2,18+j);
			DisplaySingleLED(3,19+j);
		}
		j++;
	}

}


void Delay5ms(void)
{
	unsigned char i,j,k;
	for(i=5; i>0; i--)
	for(j=2;j>0;j--)
	for(k=124;k>0;k--);
} 

void AD0809Init(void)
{
	ST = 0;
	EOC = 0;
	OE = 0;
}

void keyscan(void)
{
	KEY1 = 1;
	KEY2 = 1;
	if(!KEY1)
	{
		while(!KEY1)
			{
				KEY1 = 1;
			}
		drop = !drop;	
	}

	if(!KEY2)
	{
		AMPIN0 = 0;
	}

}

uchar i;
void main(void)
{
	SystemTest();
	AD0809Init();
 	while(1)
	{
		ReadAD0809();
		for(i=25;i>0;i--)
		{	
//			keyscan();
			Display();
		}
//	DisplaySingleLED(0,13);
//	DisplaySingleLED(1,14);
//	DisplaySingleLED(2,15);
//	DisplaySingleLED(3,12);
	}
}

⌨️ 快捷键说明

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