08092.c

来自「这个是我写的一个基于8051的电气测试仪的原代码!」· C语言 代码 · 共 81 行

C
81
字号
#include <reg52.H>
#include <intrins.h>
#include <wait.h>

unsigned char code led_dispcode[]={ 0x3f,0x06,0x5b,0x4f,0x66, 
                               		0x6d,0x7d,0x07,0x7f,0x6f};
unsigned dispbit_select[4]={0xfe,0xfd,0xfb,0xf7};
unsigned data dis[5]={0x00,0x00,0x00,0x00,0x00};
unsigned char getdata;
unsigned int count = 0;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;

void  read_adc0809(void)
{
	P0 = 0XFF;
	ST = 1;
	ST = 0;
	_nop_();
	while(EOC == 0);
	OE = 1;
	getdata = P0;
	OE = 0;
}

void display(void)
{
	unsigned char k;

	dis[4]=getdata;
	dis[3]=dis[4]/51;  
	dis[4]=dis[4]%51;
	dis[4]=dis[4]*10;
	dis[2]=dis[4]/51;
	dis[4]=dis[4]%51;
	dis[4]=dis[4]*10;
	dis[1]=dis[4]/51;
	dis[4]=dis[4]%51;
	dis[4]=dis[4]*10;
	dis[0]=dis[4]/51;

	for(k = 0;k < 4;k++)
	{
		P1=led_dispcode[dis[k]];
		if(k == 3){P1 = P1|0x80;}  
		P2 = dispbit_select[k];
		Delay8us();
		P2 = 0xff;
	}  
}

void main(void) 
{
	TMOD = 0x02;
	TH0 = 246;
	TL0 = 246;
	ET0 = 1;
	TR0 = 1;
	EA = 1;		
	ST = 0;
	OE = 0;

  	while(1)
  	{
		if(count-- == 0)
		{
			read_adc0809();
			count = 200;
		}
		display();
	} 
} 
void t0(void) interrupt 1 //using 0
{
	CLK = CLK^0x01;
}

⌨️ 快捷键说明

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