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

📄 8路数字电压表的设计.c

📁 8路AD采集系统
💻 C
字号:
#include<reg51.h>
#include<DEFINE.h>
#include<intrins.h>
void delay1(unsigned int z)
{
    unsigned int x	;
	for(x=z;x>0;x--);
}
void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
void write_com(uchar com) //以后,养成习惯先把数据或命令发往端口,再控制时序 
{
	P1=com;	 //送命令码 
	lcdrs=0;  //RS拉低,写命令状态 。RW接地,恒为低,处于写状态 

	delay(5); //根据时序图,要加相应的延时,芯片才有时间能读到相应的操作 
	lcden=1; //使能端E的高脉冲 
	delay(5);//	使能端E的高脉冲 
	lcden=0;//	使能端E的高脉冲 
}

void write_date(uchar date)	//以后,养成习惯先把数据或命令发往端口,再控制时序 
{
    P1=date;//送数据 
	lcdrs=1;//RS置高,写数据状态 。RW接地,恒为低,处于写状态 
	
	delay(5);
	lcden=1;//使能端E的高脉冲 
	delay(5);//	使能端E的高脉冲 
	lcden=0;//	使能端E的高脉冲 
	
}


void init()
{
	flag=0;
}

//***************************************************
//                   LCD初始化子程序 
//*************************************************
void LCD_init()
{
	lcden=0;
	write_com(0x38);//显示模式设置 ,16*2显示,5*7点阵,8位数据接口 
	write_com(0x0C);//开显示,设置光标是否显示和闪动 (见指令表)	 
	write_com(0x06);//设置写一个数后,光标加一还是减一。和整屏是否移动 	,为0x06整屏不移动 
	write_com(0x01);//清屏幕 
	 write_com(0x80);
	 for(i=0;i<12;i++)
	 {
	 	write_date(table[i]);
	 }
	
}

void kou_xuan()
{
	if(flag==0)
	{
   adc0808_add_a=0;
   adc0808_add_b=0;
   adc0808_add_c=0;
	}
		if(flag==1)
	{
   adc0808_add_a=1;
   adc0808_add_b=0;
   adc0808_add_c=0;
	}
		if(flag==2)
	{
   adc0808_add_a=0;
   adc0808_add_b=1;
   adc0808_add_c=0;
	}
		if(flag==3)
	{
   adc0808_add_a=1;
   adc0808_add_b=1;
   adc0808_add_c=0;
	}
		if(flag==4)
	{
   adc0808_add_a=0;
   adc0808_add_b=0;
   adc0808_add_c=1;
	}
		if(flag==5)
	{
   adc0808_add_a=1;
   adc0808_add_b=0;
   adc0808_add_c=1;
	}
		if(flag==6)
	{
   adc0808_add_a=0;
   adc0808_add_b=1;
   adc0808_add_c=1;
	}
		if(flag==7)
	{
   adc0808_add_a=1;
   adc0808_add_b=1;
   adc0808_add_c=1;
	}
} 

void datedeal()
{
     wei1=temp/16;
	 wei2=temp%16;
	 D=wei1*16+wei2;
	 sum=(D*Vref*1000)/N8;
	 sum=sum+5;
	 if(sum<1000)
	 {
	 w2=sum/100;
	 w3=sum%100/10;
	 table1[0]=table2[0];
	 table1[1]=table2[10];
	 table1[2]=table2[w2];
	 table1[3]=table2[w3];
	 }
	 else
	 {
	 	w1=sum/1000;
		w2=sum%1000/100;
		w3=sum%100/10;
		table1[0]=table2[w1];
		table1[1]=table2[10];
		table1[2]=table2[w2];
		table1[3]=table2[w3];
	 }
	 //w1=(sum/1000);
	 
	 //sum=sum+0.005;
	 
	 	
} 
//*********************************************************
//                      开始AD转换子程序 
//**********************************************************
void AD_0808()
{
   adc0808_oe=0;
   adc0808_eoc=1;
   adc0808_ale=0;
   adc0808_start=0;
   adc0808_add_a=0;
   adc0808_add_b=0;
   adc0808_add_c=0;
  // kou_xuan();
   adc0808_ale=1;
   adc0808_start=1;
   adc0808_ale=0;
   _nop_();
   _nop_();
   adc0808_start=0;
   _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
   adc0808_eoc=0;
   delay1(9);
   adc0808_eoc=1;
   adc0808_oe=1;
   //flag++;
   //if(flag==7)
   // flag=0;
   delay(100);	
}
//*********************************************************
//                        lcd 显示子程序 
//*******************************************************
void LCD_display()
{
	     write_com(0x80+0x40);
	   for(i=0;i<5;i++)
	    {
			write_date(table1[i]);
		}
}

//***************************************************
//                   主程序 
//*************************************************
void main()
{
   LCD_init();
   while(1)
   {
       AD_0808();
	   P0=0xff;
	   temp=P0;
	   datedeal();
       LCD_display();

   }
   
  
   	
}











⌨️ 快捷键说明

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