***************LCD1602数制显示(十或十六)************ ******************************************************* sj:需要显示的数据 ml:显示地址设定
xsfs:显示方式,进制和小数点的判断依据, */
void LCD1602_SZXS(signed long sj,unsigned char xsfs,ml)///wei为1输出十六进制,否则输出十进制 {
unsigned long xc; //显示缓存 unsigned char a; bit xsd,fs,bf=0; xsd=0; fs=0;
LCD1602_XZL(0x04);//设置光标向左移 LCD1602_XZL(ml);
if(xsfs>10)
{a=16; //输出十六进制 LCD1602_XSJ(0x48);//显示H xsfs=0;} // else
{a=10; //否则输出十进制
if(xsfs!=0) xsd=1;//显示小数点使能 if(sj<0) {sj=~sj+1;
fs=1;} //显示负号使能 } xc=sj;
if(xc!=0) //显示数据不为0;则显示 {while(xsd) //判是否需要显示小数 {if(xc!=0) //是否还需要计算 {ml=xc%a;
if(bf|ml!=0) //小数部分为0不需要显示
{LCD1602_XSJ(ascll1602[ml]); //取数的ascll码并显示 bf=1; //小数部分不为0标志,小数部分数字有效 }
xc/=a; //取剩下的数 }
else if(bf) LCD1602_XSJ(0x30);//判是否需要补0 else; //小数部分无效,不需要补0
xsfs--;
if(xsfs==0) //小数点位数减一 {xsd=0; //小数计算部分结束标志
if(bf) LCD1602_XSJ(0x2e); //小数部分存在有效数字则显示小数点 } } }
////////////整数显示部分//////////////////////////////////////////// do
{LCD1602_XSJ(ascll1602[xc%a]); //取数的ascll码并显示 xc/=a; }
while(xc!=0);
if(fs) LCD1602_XSJ(0x2d);//判是否需要显示负号
LCD1602_XZL(0x06);//还原光标移动方向 }
/******************************** LCD1602LCD1602字符显示程序 *********************************/
void LCD1602_ZFXS(unsigned char *SJ,t,ml)/*h:行,SJ:字符串指针,t:间隔时间*/ {
LCD1602_XZL(ml); //写指令
while(*SJ)//是否显示完 {
LCD1602_XSJ(*SJ);//写数据 SJ++; //取下一个字符 YS_ms(t); //延时 }
} #endif
LCD12864基础函数—并行
#ifndef __LCD12864_JCK_C__ #define __LCD12864_JCK_C__
/************************************************ ** **
** 六哥LCD12864基础函数库 ** ** **
**************************************************/
//使用请注意定义引脚
#include\
/********************测忙碌**********************/ //测忙碌子程序
//RS=0,RW=1,E=H,D0-D7=状态字
/************************************************/ void LCD12864_PM(void)