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

📄 ad0809.c

📁 基于8051+ADC0809设计数字电压表的电路原理图
💻 C
字号:
#include <AT89X52.H> 
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 
0xef,0xdf,0xbf,0x7f}; 
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 
                           0x6d,0x7d,0x07,0x7f,0x6f,0x00}; 
unsigned char dispbuf[8]={10,10,10,10,10,0,0,0}; 
unsigned char code tab[]={0,0,  0,	1,	0,	2,	0,	0,	3,	0 ,
                         4,	0,	0,	5,	0,	6,	0,	0,	7,	0 ,
                         8,	0,	0,	9,	0,	0,	10,	0,	11,	0 ,
                         0,	12,	0,	13,	0,	0,	14,	0,	15,	0 ,
                         0,	16,	0,	17,	0,	0,	18,	0,	19,	0,
                         0,	20,	0,	0,	21,	0,	22,	0,	0,	23,
                         0,	24,	0,	0,	25,	0,	26,	0,	0,	27,
                         0,	28,	0,	0,	29,	0,	0,	30,	0,	31,
                         0,	0,	32,	0,	33,	0,	0,	34,	0,	35,
                         0,	0,	36,	0,	37,	0,	0,	38,	0,	39,
                         0,	0,	40,	0,	0,	41,	0,	42,	0,	0,
                         43,0,	44,	0,	0,	45,	0,	46,	0,	0,
                         47,0,	48,	0,	0,	49,	0,	50,	0,	0,
                         51,0,	0,	52,	0,	53,	0,	0,	54,	0 ,
                         55,0,	0,	56,	0,	57,	0,	0,	58,	0,
                         59,0,	0,	60,	0,	0,	61,	0,	62,	0,
                         0,	63,	0,	64,	0,	0,	65,	0,	66,	0,
                         0,	67,	0,	68,	0,	0,	69,	0,	70,	0,
                         0,	71,	0,	0,	72,	0,	73,	0,	0,	74,
                         0,	75,	0,	0,	76,	0,	77,	0,	0,	78,
                         0,	79,	0,	0,	80,	0,	0,	81,	0,	82,
                         0,	0,	83,	0,	84,	0,	0,	85,	0,	86,
                         0,	0,	87,	0,	88,	0,	0,	89,	0,	90,
                         0,	0,	91,	0,	0,	92,	0,	93,	0,	0,
                         94,0,	95,	0,	0,	96,	0,	97,	0,	0,
                         98,0,	99,	0,	0,	100,0,	0,	0};
unsigned char dispcount; 

unsigned int R1;

sbit ST=P3^0; 
sbit OE=P3^1; 
sbit EOC=P3^2; 
unsigned char channel=0xbc; //1011 1100,ABC=110选择第三通道同时使ST=0,OE=0输出数据线呈高阻状态,EOC=1。
unsigned char getdata;   
void main(void) 
{ 
  TMOD=0x01; 
  TH0=(65536-4000)/256; 
  TL0=(65536-4000)%256; 
  TR0=1; 
  ET0=1; 
  EA=1; 
  P3=channel; 
  
  while(1) 
    { 
      ST=0; 
      ST=1; 
      ST=0; 
      while(EOC==0); 
      OE=1; 
      getdata=P0; 
      OE=0;	
	  getdata=tab[getdata];
	  R1=getdata%2;
      getdata=getdata/2;    
      dispbuf[5]=getdata/10; 
      dispbuf[6]=(getdata%10);
	  if(R1==1)
	    dispbuf[7]=5;
	  else
	    dispbuf[7]=0;  
    } 
}   
void t0(void) interrupt 1 using 0 
{ 
  TH0=(65536-350)/256; 
  TL0=(65536-350)%256; 
  P2=0xff;
  if(dispcount==5)
  {P1=dispcode[dispbuf[dispcount]]|0x80; 
  P2=dispbitcode[dispcount]; }
  else
  {P1=dispcode[dispbuf[dispcount]]; 
  P2=dispbitcode[dispcount]; }
  dispcount++; 
  if(dispcount==8) 
    { 
      dispcount=0; 
    } 
} 

⌨️ 快捷键说明

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