LCD1602和LCD12864程序-并行与串行_第1页
LCD1602和LCD12864程序-并行与串行_第2页
LCD1602和LCD12864程序-并行与串行_第3页
LCD1602和LCD12864程序-并行与串行_第4页
LCD1602和LCD12864程序-并行与串行_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.LCD1602和LCD12864的函数库,包括并行与串行LCD1602基础函数#ifndef__LCD1602_JCK_C__#define__LCD1602_JCK_C__/************************************************感谢阅读******六哥LCD1602基础函数库****精品文档放心下载

****************************************************/感谢阅读//使用请注意定义引脚#include"yscx.c"/*****************************************************************LCD1602判忙函数谢谢阅读.******************************************************************/感谢阅读voidLCD1602_PM(void){unsignedchartemp1;//状态信息(判断是否忙)LCD1602_SJ=0xFF;//记得在包含该头文件前,定义引脚LCD1602_RS=0;//记得在包含该头文件前,定义引脚LCD1602_RW=1;//记得在包含该头文件前,定义引脚LCD1602_E=1;//记得在包含该头文件前,定义引脚do感谢阅读{temp1=LCD1602_SJ;//记得在包含该头文件前,定义引脚精品文档放心下载LCD1602_SJ=0xFF;}while(temp1&0x80);LCD1602_E=0;//记得在包含该头文件前,定义引脚精品文档放心下载YS_us(1); //}/*------------------------------------------------谢谢阅读LCD1602写入命令函数------------------------------------------------*/感谢阅读voidLCD1602_XZL(unsignedcharml)谢谢阅读{LCD1602_PM();//忙则等待LCD1602_RS=0;//记得在包含该头文件前,定义引脚LCD1602_RW=0;//记得在包含该头文件前,定义引脚谢谢阅读.LCD1602_E=1;//记得在包含该头文件前,定义引脚精品文档放心下载LCD1602_SJ=ml;//记得在包含该头文件前,定义引脚谢谢阅读YS_us(1);//稍作延时给LCD反应的时间感谢阅读LCD1602_E=0;//记得在包含该头文件前,定义引脚感谢阅读if(ml==0x01|ml==0x02)YS_ms(2);//清屏和地址归位大概需2ms时间处理谢谢阅读YS_us(35);//其他指令大概需35us}/*------------------------------------------------感谢阅读LCD1602写入数据函数------------------------------------------------*/感谢阅读voidLCD1602_XSJ(unsignedcharsj)谢谢阅读{LCD1602_PM();//忙则等待LCD1602_RS=1;//记得在包含该头文件前,定义引脚谢谢阅读LCD1602_RW=0;//记得在包含该头文件前,定义引脚精品文档放心下载LCD1602_E=1;//记得在包含该头文件前,定义引脚感谢阅读LCD1602_SJ=sj;//记得在包含该头文件前,定义引脚谢谢阅读YS_us(1);//稍作延时给LCD反应的时间精品文档放心下载LCD1602_E=0;//记得在包含该头文件前,定义引脚谢谢阅读}/*------------------------------------------------精品文档放心下载LCD1602初始化函数------------------------------------------------*/精品文档放心下载.voidLCD1602_CSH(void){LCD1602_XZL(0x38); /*显示模式设置*/精品文档放心下载LCD1602_XZL(0x08); /*显示光标移动设置*/谢谢阅读LCD1602_XZL(0x01); /*显示开及光标设置*/精品文档放心下载LCD1602_XZL(0X06);LCD1602_XZL(0X0c);}#endifLCD1602显示函数#ifndef__LCD1602_XSK_C__#define__LCD1602_XSK_C__/************************************************谢谢阅读***********************六哥LCD1602显示函数库精品文档放心下载

*********.******* *********************************************************/谢谢阅读#include"yscx.C"#include"LCD1602_JCK_cx.C"感谢阅读//为保证显示数制时的运行效率,制作了0—9,A—F的ascll码表精品文档放心下载unsignedcharcodeascll1602[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x感谢阅读43,0x44,0x45,0x46};/******************************************************谢谢阅读***************LCD1602数制显示(十或十六)************谢谢阅读*******************************************************谢谢阅读sj:需要显示的数据ml:显示地址设定xsfs:显示方式,进制和小数点的判断依据,*/voidLCD1602_SZXS(signedlongsj,unsignedcharxsfs,ml)///wei为1输出十六进制,否则输出十进制精品文档放心下载{unsignedlongxc; //显示缓存unsignedchara;.bitxsd,fs,bf=0;xsd=0;fs=0;LCD1602_XZL(0x04);//设置光标向左移精品文档放心下载LCD1602_XZL(ml);if(xsfs>10){a=16; //输出十六进制LCD1602_XSJ(0x48);//显示Hxsfs=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; //取剩下的数}elseif(bf)LCD1602_XSJ(0x30);//判是否需要补0谢谢阅读else; //小数部分无效,不需要补0xsfs--;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字符显示程序*********************************/精品文档放心下载voidLCD1602_ZFXS(unsignedchar*SJ,t,ml)/*h:行,SJ:字符串指针,t:间隔时间*/精品文档放心下载{LCD1602_XZL(ml);//写指令while(*SJ)//是否显示完{LCD1602_XSJ(*SJ);//写数据SJ++; //取下一个字符YS_ms(t); //延时}}.#endifLCD12864基础函数—并行#ifndef__LCD12864_JCK_C__精品文档放心下载#define__LCD12864_JCK_C__精品文档放心下载/************************************************感谢阅读** **** 六哥LCD12864基础函数库** **

****************************************************/精品文档放心下载//使用请注意定义引脚#include"yscx.c"/********************测忙碌**********************/感谢阅读//测忙碌子程序//RS=0,RW=1,E=H,D0-D7=状态字./************************************************/voidLCD12864_PM(void){感谢阅读unsignedchartemp1;//状态信息(判断是否忙)LCD12864_RS=0;//记得在包含该头文件前,定义引脚LCD12864_RW=1;//记得在包含该头文件前,定义引脚LCD12864_E=1;//记得在包含该头文件前,定义引脚do精品文档放心下载{temp1=LCD12864_SJ;//记得在包含该头文件前,定义引脚感谢阅读LCD12864_SJ=0xFF;}while(temp1&0x80);LCD12864_E=0; //记得在包含该头文件前,定义引脚精品文档放心下载YS_us(1); //}/********************写命令**********************/谢谢阅读//写命令子程序///************************************************/精品文档放心下载voidLCD12864_XZL(unsignedcharml)/*写命令*/感谢阅读{LCD12864_PM();LCD12864_RS=0;//记得在包含该头文件前,定义引脚精品文档放心下载.LCD12864_RW=0;//记得在包含该头文件前,定义引脚感谢阅读LCD12864_E=1;//记得在包含该头文件前,定义引脚谢谢阅读LCD12864_SJ=ml;//记得在包含该头文件前,定义引脚精品文档放心下载YS_us(0);//稍作延时给LCD反应的时间精品文档放心下载LCD12864_E=0;//记得在包含该头文件前,定义引脚感谢阅读if(ml==0x01|ml==0x02)YS_ms(3);//清屏和地址归位大概需3ms时间处理谢谢阅读YS_us(50);//其他指令大概需50us}/********************写数据**********************/精品文档放心下载//写数据子程序///************************************************/精品文档放心下载voidLCD12864_XSJ(unsignedcharsj)谢谢阅读{LCD12864_PM();LCD12864_RS=1;//记得在包含该头文件前,定义引脚精品文档放心下载LCD12864_RW=0;//记得在包含该头文件前,定义引脚精品文档放心下载LCD12864_E=1;//记得在包含该头文件前,定义引脚感谢阅读LCD12864_SJ=sj;//记得在包含该头文件前,定义引脚感谢阅读YS_us(0);//稍作延时给LCD反应的时间精品文档放心下载LCD12864_E=0;//记得在包含该头文件前,定义引脚谢谢阅读}/********************初始化**********************/感谢阅读.//复位、通讯方式选择/************************************************/谢谢阅读voidLCD12864_CSH(void){P26=1;I/O

//通讯方式为并口PSB=1,在设计电路时就把PSB端焊好,节省谢谢阅读//LCD12864_XZL(0x34);//34H--扩充指令操作感谢阅读LCD12864_XZL(0x30);//功能设置,一次送8位数据,基本指令集LCD12864_XZL(0x0C);//0000,1100整体显示,游标off,游标位置offLCD12864_XZL(0x01);//0000,0001清DDRAMLCD12864_XZL(0x02);//0000,0010DDRAM地址归位谢谢阅读LCD12864_XZL(0x80);//1000,0000设定DDRAM7位地址000,0000到地址计数器AC精品文档放心下载LCD12864_XZL(0x06);}#endifLCD12864基础函数—串行.#ifndef__LCD12864_JCK_CX_C__感谢阅读#define__LCD12864_JCK_CX_C__谢谢阅读/************************************************感谢阅读** **** 六哥LCD12864基础函数库** 串行 **

****************************************************/精品文档放心下载//使用请注意定义引脚#include"yscx.c"/*******************串行通信*********************谢谢阅读分别发送三个字节,11111AB0,DDDD0000,SSSS000,精品文档放心下载A:即表示并行的RW,1为读,0为写B:即表示并行的RS,1为数据,0为指令D:即表示并行的高四位数据S:即表示并行的低四位数据注:串行要把PSB端为低电平*************************************************/谢谢阅读voidLCD12864_CXTX(unsignedcharfs,sj)感谢阅读{unsignedchari;LCD12864_E=0;//时钟SCLK.LCD12864_RS=1;///CS片选do ////LCD判忙=============谢谢阅读{for(i=0;i<8;i++){YS_us(1);//MCU与LCD速率匹配if(i<6)LCD12864_RW=1;//读LCD数据,前6位为1;后两位为0elseLCD12864_RW=0;//命令格式11111100B,0xfc感谢阅读YS_us(1);//MCU与LCD速率匹配LCD12864_E=1;//时钟SCLKYS_us(1);//MCU与LCD速率匹配LCD12864_E=0;//时钟SCLK}YS_us(5);//给LCD反应的时间LCD12864_E=1;//时钟SCLKYS_us(1);//给LCD反应的时间}while(LCD12864_RW);//判忙只需要取最高位,而不管后面7位谢谢阅读LCD12864_E=0;//时钟SCLKLCD12864_RS=0;///CS片选YS_us(1);//给LCD反应的时间.LCD12864_RS=1;///CS片选for(i=0;i<24;i++)//、、、、送3字节精品文档放心下载{LCD12864_RW=fs&0x80;//数据SID精品文档放心下载fs<<=1;YS_us(1); //MCU与LCD速率匹配精品文档放心下载LCD12864_E=1; //时钟SCLKYS_us(1); //MCU与LCD速率匹配谢谢阅读if(i==7)fs=sj&0xf0;//取数据高四位谢谢阅读if(i==15)fs=sj<<4;//取数据低四位谢谢阅读LCD12864_E=0; //时钟SCLKYS_us(1); //MCU与LCD速率匹配谢谢阅读}LCD12864_RS=0;///CS片选LCD12864_E=1;//恢复高电平不影响其他用途谢谢阅读LCD12864_RW=1;//恢复高电平不影响其他用途精品文档放心下载}/********************写命令**********************/精品文档放心下载voidLCD12864_XZL(unsignedcharml)/*写命令*/谢谢阅读{LCD12864_CXTX(0xf8,ml);//命令格式11111000B,0xf8if(ml==0x01|ml==0x02)YS_ms(4);//清屏和地址归位大概需4ms时间处理YS_us(50);//其他指令大概需50us谢谢阅读.}/********************写数据**********************/感谢阅读voidLCD12864_XSJ(unsignedcharsj)精品文档放心下载{LCD12864_CXTX(0xfa,sj);//命令格式11111010B,0xfa精品文档放心下载}/********************初始化**********************/谢谢阅读//复位、通讯方式选择/************************************************/感谢阅读voidLCD12864_CSH(void){P26=0; //通讯方式为串行通信PSB=0,在设计电路时就把PSB端焊好,节感谢阅读省I/O//LCD12864_XZL(0x34);//34H--扩充指令操作感谢阅读LCD12864_XZL(0x30);//功能设置,一次送8位数据,基本指令集LCD12864_XZL(0x0C);//0000,1100整体显示,游标off,游标位置offLCD12864_XZL(0x01);//0000,0001清DDRAM谢谢阅读LCD12864_XZL(0x80);//1000,0000设定DDRAM7位地址000,0000到地址计数器AC谢谢阅读LCD12864_XZL(0x06);}#endif.LCD12864显示函数#ifndef__LCD12864_XSK_C__谢谢阅读#define__LCD12864_XSK_C__精品文档放心下载/************************************************谢谢阅读***********************六哥LCD12864显示函数库****************谢谢阅读

*********************************************************/精品文档放心下载//使用请注意定义引脚#include"LCD12864_JCK_cx.C"//包含基础库精品文档放心下载//为保证显示数制时的运行效率,制作了0—9,A—F的ascll码表精品文档放心下载unsignedcharcodeascll12864[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0谢谢阅读x43,0x44,0x45,0x46};./*****************************************************感谢阅读**********LCD12864设置显示地址函数*********************谢谢阅读******************************************************/感谢阅读unsignedcharLCD12864_SZDZ(unsignedcharx,y)//精品文档放心下载{switch(y){case0:x|=0x80;break;case1:x|=0x90;break;case2:x|=0x88;break;case3:x|=0x98;break;default:;}return(x);}/*****************************************************感谢阅读**********LCD12864数制显示函数************************精品文档放心下载******************************************************精品文档放心下载sj:需要显示的数据,取值范围:十进制:-2147483648-2147483647,十六进制:0H-7FFFFFFFH谢谢阅读xsfs:显示方式,进制和小数点的判断依据,.x:显示列,取值范围0-7y:显示行,取值范围0-3*/voidLCD12864_SZXS(signedlongsj,unsignedcharxsfs,x,y)感谢阅读{unsignedlongxc; //显示缓存unsignedchard[13];bitxsd,fs,bf=0;xsd=0;fs=0;LCD12864_XZL(0x04);//设置光标左移精品文档放心下载LCD12864_XZL(LCD12864_SZDZ(x,y));//写入显示地址谢谢阅读y=0;if(xsfs>10){x=16; //输出十六进制d[y]=0x48; //十六进制显示Hy++;} //else{if(sj<0) //十进制正负数判断{sj=~sj+1;.fs=1;} //负号显示使能if(xsfs!=0)xsd=1;//小数点显示使能谢谢阅读x=10;} //xc=sj;if(xc!=0) //显示数据不为0;则显示{while(xsd) //判是否需要显示小数{if(xc!=0) //是否还需要计算{sj=xc%x;if(bf|sj!=0) //小数部分为0不需要显示谢谢阅读{d[y]=ascll12864[xc%x];y++; //取数的ascll码并显示bf=1; //小数部分不为0标志,小数部分数字有效感谢阅读}xc/=x; //取剩下的数}elseif(bf){d[y]=0x30; //判是否需要补0y++;}else; //小数部分无效,不需要补0xsfs--;if(xsfs==0) //小数点位数减一.{xsd=0; //小数计算部分结束标志if(bf){d[y]=0x2e;//小数部分存在有效数字则显示小数点y++;}精品文档放心下载}}}do{d[y]=ascll12864[xc%x]; //取数的ascll码谢谢阅读y++;xc/=x;}while(xc!=0);if(fs){d[y]=0x2d;//取负号ascll码y++;}if(y&&0x01) //如果显示的位数为奇数{d[y]=0x20; //显示一个空格y++;}x=y;.y=1;///////////////显示数据//////////////精品文档放心下载do{LCD12864_XSJ(d[y]);//显示一个地址的前一个字符感谢阅读y--;LCD12864_XSJ(d[y]);//显示一个地址的后一个字符精品文档放心下载y+=3; //跳到下一个要显示的两个字符}while(y<x); //判断是否显示完毕LCD12864_XZL(0x06);//设置光标右移精品文档放心下载}/*****************************************************感谢阅读**********LCD12864字符显示函数************************精品文档放心下载******************************************************精品文档放心下载*zfc:需要显示的字符串指针,字符数不得超过64个谢谢阅读x:显示列,取值范围0-7y:显示行,取值范围0-3*/voidLCD12864_ZFXS(unsignedchar*zfc,x,y)谢谢阅读.{unsignedchark1,k2,k3;k3=x*2;k1=16-k3;k2=32-k3;k3=48-k3;switch(y) //设置显示地址x和换行标志y谢谢阅读{case0:x|=0x80;y=0;break;精品文档放心下载case1:x|=0x90;y=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论