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

LCD12864_E=0;//时钟SCLK }

YS_us(5);//给LCD反应的时间 LCD12864_E=1;//时钟SCLK YS_us(1); //给LCD反应的时间 }

while(LCD12864_RW);//判忙只需要取最高位,而不管后面7位

LCD12864_E=0;//时钟SCLK LCD12864_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; //时钟SCLK YS_us(1); //MCU与LCD速率匹配 if(i==7) fs=sj&0xf0; //取数据高四位 if(i==15) fs=sj<<4; //取数据低四位 LCD12864_E=0; //时钟SCLK YS_us(1); //MCU与LCD速率匹配 }

LCD12864_RS=0;///CS片选

LCD12864_E=1;//恢复高电平不影响其他用途 LCD12864_RW=1;//恢复高电平不影响其他用途 }

/********************写命令**********************/ void LCD12864_XZL(unsigned char ml)/*写命令*/ {

LCD12864_CXTX(0xf8,ml);//命令格式11111000B,0xf8

if(ml==0x01|ml==0x02) YS_ms(4);//清屏和地址归位大概需4ms时间处理 YS_us(50);//其他指令大概需50us }

/********************写数据**********************/ void LCD12864_XSJ(unsigned char sj) {

LCD12864_CXTX(0xfa,sj);//命令格式11111010B,0xfa }

/********************初始化**********************/ //复位、通讯方式选择

/************************************************/ void LCD12864_CSH(void) {

P26=0; //通讯方式为串行通信PSB=0,在设计电路时就把PSB端焊好,节省I/O

//LCD12864_XZL(0x34);//34H--扩充指令操作

LCD12864_XZL(0x30); //功能设置,一次送8位数据,基本指令集 LCD12864_XZL(0x0C); //0000,1100 整体显示,游标off,游标位置off

LCD12864_XZL(0x01); //0000,0001 清DDRAM

LCD12864_XZL(0x80); //1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC

LCD12864_XZL(0x06); } #endif

LCD12864显示函数

#ifndef __LCD12864_XSK_C__ #define __LCD12864_XSK_C__

/************************************************ ******* *********

******* 六哥LCD12864显示函数库 ********* ******* *********

************************************************/

//使用请注意定义引脚

#include\包含基础库

//为保证显示数制时的运行效率,制作了0—9,A—F的ascll码表

unsigned char code

ascll12864[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};

/***************************************************** **********LCD12864设置显示地址函数********************* ******************************************************/ unsigned char LCD12864_SZDZ(unsigned char x,y)// { switch(y)

{case 0:x|=0x80;break; case 1:x|=0x90;break; case 2:x|=0x88;break; case 3:x|=0x98;break; default:; } return(x); }

/***************************************************** **********LCD12864数制显示函数************************ ******************************************************

sj:需要显示的数据,取值范围:十进制:-2147483648-2147483647,十六进制:0H-7FFFFFFFH

xsfs:显示方式,进制和小数点的判断依据,