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

📄 ad0809.c

📁 ADC0809
💻 C
字号:
#include <reg51.h>    /*头文件*/

sbit  LCD_RS= P2^0;    /*定义引脚*/
sbit  LCD_RW= P2^1;
sbit  LCD_E= P2^2;
sbit  Busy=P3^7;
sbit  AD_EOC= P2^4;
sbit  AD_ALE_START= P2^5;

int c1;
int ss;
char k0,k1,k2;
char LCD_MB(char t);

void QUWEI(int xx);   
void WR_COMM();
void DISPLY();
void CHECK_BF(); 
void PLAY_LCD();     /*函数声明*/

#define Data P3     //P3 数据IO
#define ru P1       //P1 数据IO

main()
{   ru=0xff;		/*P1口设为输入*/
	for(c1=0;c1<2000;c1++);
	loop:
  		AD_ALE_START=0;
  		AD_ALE_START=1;
  		AD_ALE_START=0;				/*开始采样*/
  		for(c1=0;c1<2000;c1++); 	/*延时,等待AD转换完成*/
  	if(AD_EOC==0) goto loop;

    ss=ru;				/*读入AD转换完成的数据*/
    QUWEI(ss);			/*取出个位,十位,百位数字*/
	k0=LCD_MB(k0);		/*百位数字的LCD码表值*/
	k1=LCD_MB(k1);		/*十位数字的LCD码表值*/
	k2=LCD_MB(k2);		/*个位数字的LCD码表值*/

	PLAY_LCD();     	/*LCD初始化子程序*/
	Data=k0;			/* 将需要显示的数据送入LCD */
	DISPLY();			/*调用显示执行子程序*/
	Data=k1;
	DISPLY();
	Data=k2;
	DISPLY();

	for(c1=0;c1<5000;c1++);		/*延时*/
	for(c1=0;c1<5000;c1++);		/*延时*/
	
}

void QUWEI(int xx)             /*取出个位,十位,百位数字子程序*/
    {   
	      k0=xx/100;                    /*取出百分位数字*/ 
          k1=xx%100/10;                 /*取出十分位数字*/ 
          k2=xx%10;                     /*取出个位数字*/       
	}

char LCD_MB(char t)                 /*各个数字所对应的LCD码表子程序 */
    {   switch(t)
	      {  case 0: t=0x30;        /*数字 0 所对应的LCD码表值 0x30 */
                      break;
		     case 1: t=0x31;        /*数字 1 所对应的LCD码表值 0x31 */
                      break;
             case 2: t=0x32;        /*数字 2 所对应的LCD码表值 0x32 */
                      break;
			 case 3: t=0x33;        /*数字 3 所对应的LCD码表值 0x33 */
                      break;
			 case 4: t=0x34;        /*数字 4 所对应的LCD码表值 0x34 */
                      break;
			 case 5: t=0x35;        /*数字 5 所对应的LCD码表值 0x35 */
                      break;
			 case 6: t=0x36;        /*数字 6 所对应的LCD码表值 0x36 */
                      break;
			 case 7: t=0x37;        /*数字 7 所对应的LCD码表值 0x37 */
                      break;
			 case 8: t=0x38;        /*数字 8 所对应的LCD码表值 0x38 */
                      break;
			 case 9: t=0x39;        /*数字 9 所对应的LCD码表值 0x39 */
                      break;
             default: break;
		  }
        return(t);
	}
	
/*..................LCD子函数...........................*/

void PLAY_LCD()           //LCD初始化子程序
  {
    Data=0x01;            //00000001B 清屏并光标复位
  	WR_COMM();            //调用写入命令子程序 
 	Data=0x30;            //00110000B 设置:8位总线、1行、5x7点阵方式 
  	WR_COMM();            //调用写入命令子程序 
  	Data=0x0F;            //00001111B 显示器开、光标开、光标允许闪烁
  	WR_COMM();            //调用写入命令子程序
  	Data=0x14;            //00010100B 文字不动,光标自动右移 
  	WR_COMM();            //调用写入命令子程序
  	Data=0x00;            //H 写入显示起始地址(第1行第1个位置)
  	WR_COMM();            //调用写入命令子程序
  }

void  WR_COMM()              /*写入命令子程序*/
    {   LCD_RS=0;            //写入控制命令的子程序
        LCD_RW=0;
        LCD_E=0;
        CHECK_BF();          /*判断LCD是否忙碌*/     
        LCD_E=1;                  
    }

void  CHECK_BF()             /*判断LCD是否忙碌子程序*/
    {   loop:
      		Data=0xff;      //判断液晶显示器是否忙的子程序
     		LCD_RS=0; 
      		LCD_RW=1;
      		LCD_E=0;
      		LCD_E=0;            //相当于NOP
      		LCD_E=1; 
      		if(Busy==1) goto loop;      //如果P1.7为高电平表示忙就循环等待 
    }

void DISPLY()			//显示执行子程序
	{
	  LCD_RS=1;        //RS=1 
	  LCD_RW=0;        //RW=0 准备写入数据
	  LCD_E=0;         //E=0 执行显示命令
	  CHECK_BF();      //判断液晶模块是否忙?
	  LCD_E=1;         //E=1 ;显示完成,程序停车
	}



⌨️ 快捷键说明

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