LCD1602和LCD12864程序-并行与串行 下载本文

***************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)