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

📄 7135.c

📁 基于AT89C52及ICL7135的4位半数字电压表源代码
💻 C
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar addr[6]={0x06,0x05,0x04,0x03,0x02,0x01};
uchar code d1[6]={0x02,0x00,0x00,0x07,0x00,0x09};
uchar code d2[6]={0xff,0x0c,0x0b,0x0d,0x0d,0x00};
uchar idata adc[6]={0,0,0,0,0,0};
sbit DIN = P2^5;
sbit CLK = P2^6;
sbit LOAD = P2^7;
sbit STR = P3^3;
sbit BUSY = P3^2;
sbit URAN = P1^4;
sbit ORAN = P1^5;
sbit RH = P1^6;
sbit POL = P1^7;
bit FLAG;
void delay(uint x);
void clr(void);
void bytedin(uchar x);
void sdin(uchar a,uchar d);
void ini7219(void);

void ini(void)
{	P0 = 0xff;
	P1 = 0xff;
	P2 = 0xff;
	ini7219();
	IT1 = 1;
	EX0 = 0;
	EX1 = 1;
	FLAG = 0;
	RH = 1;
	EA = 1;
}

void disp(void)
{	uchar i;
	for(i = 0;i < 6;i++)
	sdin(addr[i],adc[5-i]);
}

void main(void) using 0
{	ini();
	for(;;)
	{	do{	if(!POL) adc[5] = 0x0a;
			else	 adc[5] = 0xff;
			if(URAN | ORAN)
			{	adc[0] = 0x0d;
				adc[1] = 0x00; 
				adc[2] = 0xff;
				adc[3] = 0xff;
				adc[4] = 0xff;
			}
			disp();
		   }	while(!FLAG);
        FLAG = 0;
		disp();      
	}
}

void intx1 (void) interrupt 2 using 1
{	uchar temp;
	EA = 0;		
	do{temp = P0;}while((temp & 0xf0) != 0x00);
	adc[4] = (temp & 0x01);	
	do{temp = P0;}while((temp & 0x10) != 0x10);
	adc[3] = (temp & 0x0f);
	do{temp = P0;}while((temp & 0x20) != 0x20);
	adc[2] = (temp & 0x0f);
	do{temp = P0;}while((temp & 0x40) != 0x40);
	adc[1] = (temp & 0x0f);
	do{temp = P0;}while((temp & 0x80) != 0x80);
	adc[0] = (temp & 0x0f);	
	if(!POL) adc[5] = 0x0a;
	else	 adc[5] = 0xff;
	if(URAN | ORAN)
	{	adc[0] = 0x0d;
		adc[1] = 0x00; 
		adc[2] = 0xff;
		adc[3] = 0xff;
		adc[4] = 0xff;
  	}
	FLAG = 1;
 	EA = 1;
}

void ini7219(void)
{	uchar i;
	sdin(0x09,0xff);
	sdin(0x0a,0x07);
	sdin(0x0b,0x05);
	sdin(0x0c,0x01);	
	sdin(0x0f,0x01);
	delay(10000);
	sdin(0x0f,0x00);
	clr();
    delay(20000);
	for(i = 0;i < 6;i++)
	sdin(addr[i],d1[i]);
	delay(30000);
	clr();
	delay(20000);
	for(i = 0;i < 6;i++)
	sdin(addr[i],d2[i]);
	delay(30000);
    clr();
    delay(20000);
}

void bytedin(uchar x)
{	uchar i,a;
	a = x;
	for(i = 0;i < 8;i++)
	{
		DIN = (bit)(a & 0x80);
		a <<= 1;
		CLK = 0;
		CLK = 1;
      	}
}

void sdin(uchar a,uchar d)
{	bytedin(a);
	bytedin(d);
	LOAD = 0;
	LOAD = 1;
}

void clr(void)                      /*清max7219显示*/
{	uchar j;
 	for(j=0;j<6;j++)
 	{sdin(addr[j],0xff);}
}

void delay(uint x)
{	uint i;
	for(i = 0;i < x ;i++){;}
}

⌨️ 快捷键说明

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