直流电压表.c

来自「基于8位并行AD和12位串行AD的数字直流电压表」· C语言 代码 · 共 90 行

C
90
字号
#include "reg51.h"
sbit START=P3^0;
sbit OE=P3^1;
sbit P3_2=P3^2;
unsigned char Rec_data=0;
code unsigned char display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char count[4]={1,2,3,4};
unsigned char cnt;
void delay(unsigned char j)
{	unsigned char i;
	while(j--)
	{
		for(i=0;i<125;i++)
		{;}
	}
}
void led_display()
{
	unsigned char i,k;	
	k=0x10;
		for(i=0;i<=3;i++)
		{
			if(i==0)
			{	
				P2=k;
				P1=(display[count[i]])|0x80;
				k<<=1;
			}
			else
			{
				P2=k;
				P1=(display[count[i]]);
				k<<=1;
			}
			delay(2);
		}
}

void Process(void)
{
	float temp;
	unsigned int Data_temp;
	temp=(Rec_data/255.0)*5.0;
	temp*=1000;
	Data_temp=(int)temp;
	count[0]=Data_temp/1000;
	count[1]=Data_temp%1000/100;
	count[2]=Data_temp%1000%100/10;
	count[3]=Data_temp%10;
}
void Rec(void) interrupt 0
{	unsigned char i;
	 OE=1;
	 i++;
	 START=0;
	 Rec_data=P0;
	 i++;
	 OE=0;
	 //START=1;
}
void timer0(void)interrupt 1
{
  	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	START=1;
	cnt++;
} 
main()
{	
	P3=0;
	P2=0;
	P3_2=1;
	TMOD=0x01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	ET0=1;
	EX0=1;
	IT0=1;
	EA=1;
	PX0=1;
	TR0=1;
	START=1;
  	while(1)
	{
		Process();
		led_display();
	}
	
}

⌨️ 快捷键说明

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