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

📄 disp_b.c

📁 进行单片机与LCD的接口通讯与显示。使用清华的液晶。
💻 C
字号:
#include <reg51.h>
#include <math.h>
#include <absacc.h>
#include <string.h>

#define uchar unsigned char
#define uint unsigned int

//extern void CCW_PR();
extern void CW2_PR();
extern void CW2_PR_F();
extern O_X,O_Y,code_1;

uchar dispint(uchar position1,uchar position2,int value)
			  /*用于显示整数(包括负数),第一参数为显示位置(最后一位).
				 用到dispch函数.
				 显示整数前不显示空格*/
  {	uchar temp,is_neg=0;
       	if (value<0)
	  {
		value=-value;
		is_neg=1;
	  }
	do
	  {     O_X=position1;
                O_Y=position2;
		temp=value%10;
                code_1=temp+16;
       		CW2_PR();
		position1=position1-1;
		value=(value-temp)/10;
	  }
	while (value);
	if (is_neg)
	  {
                O_X=position1;
                O_Y=position2;
		code_1='-'-0x20;
		CW2_PR();
		position1=position1-1;
	  }
	return(position1);
  }

uchar dispint_f(uchar position1,uchar position2,int value)
			  /*用于显示整数(包括负数),第一参数为显示位置(最后一位).
				 用到dispch函数.
				 显示整数前不显示空格*/
  {	uchar temp,is_neg=0;
       	if (value<0)
	  {
		value=-value;
		is_neg=1;
	  }
	do
	  {     O_X=position1;
                O_Y=position2;
		temp=value%10;
                code_1=temp+16;
       		CW2_PR_F();
		position1=position1-1;
		value=(value-temp)/10;
	  }
	while (value);
	if (is_neg)
	  {
                O_X=position1;
                O_Y=position2;
		code_1='-'-0x20;
		CW2_PR_F();
		position1=position1-1;
	  }
	return(position1);
  }

void dispf(uchar position1,uchar position2,float value,uchar preci)
 /*用于显示实数(包括负数),第一参数为显示位置(最后一位),
  第三参数为显示精度。用到dispch dispint函数.	显示实数前不显示空格*/
  {
	int v1,v2;
	uchar  i,cint,is_neg=0;
	float idata temp;
	if (value<0)
	  {
		value=-value;
		is_neg=1;
	  }
       	v1=(int)value;
	temp=value-v1;
	for (i=0;i<preci;i++)
	  {
		temp*=10;
           /*     O_X=position1;
                O_Y=position2;
		code_1='0'-0x20;
		CW_PR();
		position1=position1-6;    */
	  }
	v2=(int)(temp+0.5);
	dispint(position1,position2,v2);
        O_X=position1-preci*1;
        O_Y=position2;
	code_1='.'-0x20;
	CW2_PR();
	position1=position1-1-preci*1;
	position1=dispint(position1,position2,v1);
	if (is_neg){
         O_X=position1;
         O_Y=position2;
	 code_1='-'-0x20;
	 CW2_PR();
       }
 }

void dispf_f(uchar position1,uchar position2,float value,uchar preci)
 /*用于显示实数(包括负数),第一参数为显示位置(最后一位),
  第三参数为显示精度。用到dispch dispint函数.	显示实数前不显示空格*/
  {
	int    v1,v2;
	uchar  i,cint,is_neg=0;
	float  temp;
	if (value<0)
	  {
		value=-value;
		is_neg=1;
	  }
	v1=(int)value;
	temp=value-v1;
	for (i=0;i<preci;i++)
	  {
		temp*=10;
           /*     O_X=position1;
                O_Y=position2;
		code_1='0'-0x20;
		CW_PR();
		position1=position1-6;    */
	  }
	v2=(int)(temp+0.5);
	dispint_f(position1,position2,v2);
        O_X=position1-preci*1;
        O_Y=position2;
	code_1='.'-0x20;
	CW2_PR_F();
	position1=position1-1-preci*1;
	position1=dispint_f(position1,position2,v1);
	if (is_neg){
         O_X=position1;
         O_Y=position2;
	 code_1='-'-0x20;
	 CW2_PR_F();
       }
 }

/*显示英文*/
void dispes(uchar position1,uchar position2,uchar chanum,uchar* p)
  {
	uchar idata i;
	for(i=0;i<chanum;i++)
	  {
		position1=position1+1;
		if(*(p+i)==0)code_1=0;
		else code_1=*(p+i)-0x20;
             //    code_1=0x37;
                O_X=position1;
                O_Y=position2;
		CW2_PR();
	  }
  }
/*显示反白英文*/
void dispes_f(uchar position1,uchar position2,uchar chanum,uchar* p)
  {
	uchar idata i;
	for(i=0;i<chanum;i++)
	  {
		position1=position1+1;
		if(*(p+i)==0)code_1=0;
		else code_1=*(p+i)-0x20;
                O_X=position1;
                O_Y=position2;
		CW2_PR_F();
	  }
  }
/*显示中文*/
/*void dispcs(uchar position1,uchar position2,uchar chanum,uchar* p)
  {
	uint idata i;
	for(i=0;i<chanum;i++)
	  {
		position1=position1+16;
                code_1=*(p+i);
                O_X=position1;
                O_Y=position2;
		CCW_PR();
	  }
	  if(chanum==7){
	    dispes(0x2e,1," ");
	    dispes(0x3e,1," ");
	  }
  }       */

void  blank_point(uchar position1,uchar position2,uchar chanum)
   {
        uchar i;
        for(i=0;i<chanum;i++)
         {
           dispes(position1+i*1,position2,1," ");
         }
    }

void blank_line(uchar position)
   {
       uchar i;
  //     for (i=0;i<30;i++)
       {
           dispes(0,position,30,"                             ");
       }

   }

⌨️ 快捷键说明

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