最完整的12864测试程序
12864模块ST7565R串口画点画线测试程序

新建文本文档 (2).txt for(z=0;z<5;z++) { DispByte(page,col+z,ASCII_5X8_12864[dat+z]); } } //---------------------------------------------------------void DispStr(Uchar page,Uchar col,Uchar *_char) //指定位 置写5*8字符串 { while(*_char!='\0') { DispChar(page,col,*_char++); col+=5; } } //---------------------------------------------------------void DispHZ(Uchar page,Uchar col,Uchar *charr) //指定位置写 16*16汉字 { Uint z,cc; for(cc=0;cc<2;cc++) { for(z=0;z<16;z++) { DispByte(page,col+z,*charr++); } page++; } } //---------------------------------------------------------//------------------1~64 com, 1~128seg---------------------//-----浮点运算和除法会降低显示速度,此处避开浮点和乘除法------void DrawLines(Uint Hx1,Uint Hy1,Uint Hx2,Uint Hy2) //指定2个坐标点 画线 { Uint temp; Uchar inc,dx,dy; if(Hx2>=Hx1) else dx=Hx2-Hx1; dx=Hx1-Hx2; //x轴方向增量
12864显示

#include "msp430g2553.h"//12864液晶串行显示测试程序//P1.4模拟SID(接第5脚),P1.5模拟SCLK(接第6脚)//4脚(CS信号)接高电平选通,15脚(PSB信号)接地选择串行方式//17脚(RST信号)根据注释提示悬空extern unsigned char table[];void int_port(void) //管脚初始化{P1SEL&=~BIT4 ; //P1.4模拟SID,设置为i/o口输出方向&=~BIT4P1DIR|=BIT4;P1OUT&=~BIT4 ;P1SEL&=~BIT5; //P1.5模拟SCLK,设置为i/o口输出方向P1DIR|=BIT5;P1OUT&=~BIT5;}void delay(unsigned int t) //延时函数{ //粗略延时,满足时序要求unsigned int i,j;for(i=0; i<t; i++)for(j=0; j<10; j++);}void sendbyte(unsigned char zdata) //数据传送函数{unsigned char m;unsigned char n;m=zdata;for(n=0; n<8; n++){if(m&0x80){P1OUT|=BIT4; //SID为1}else{P1OUT&=~BIT4; //SID为0}P1OUT&=~BIT5; //产生时钟信号下沿P1OUT|=BIT5; //产生时钟信号上沿m<<=1; //准备发送下一位数据serial_shift=serial_shift>>1;}}void write_com(unsigned char cmdcode) //写命令函数{ //串口控制格式(11111AB0)//A数据方向控制,A=H时读,A=L时写//B数据类型选择,B=H时为显示数据,B=L 时为命令sendbyte(0xf8); //MCU向LCD发命令1111 1000sendbyte(cmdcode & 0xf0); //发高四位数据(数据格式D7D6D5D4_0000) sendbyte((cmdcode << 4) & 0xf0);//发低四位数据(数据格式D3D2D1D0_0000)delay(2); //延时等待}void write_data(unsigned char Dispdata)//写数据函数{sendbyte(0xfa); //MCU向LCD发数据1111 1010sendbyte(Dispdata & 0xf0); //发高四位数据sendbyte((Dispdata << 4) & 0xf0);//发低四位数据delay(2);}void lcdinit() //LCD初始化{delay(200); //复位等待(内部自带上电复位电路),时间较长write_com(0x30); //功能设定:基本指令集操作delay(1); //延时等待write_com(0x0c); //整体显示,关游标//write_com(0x0f);// delay(50);write_com(0x01); // 清除显示内容,否则刷新时出乱码delay(50);}void display(unsigned char *s) //发送字符串{while(*s > 0) //C语言里字符串末尾自动加“\0”(ASCII码值为0) {write_data(*s); //发送字符对应的ASCII码,12864指针可设置自动指向下一个显示地址s++;delay(50);}}void Test( ){// write_com(0x03); //发指令,地址归位//delay(5); //延时write_com(0x01); // 清除显示内容,否则刷新时出乱码delay(50);write_com(0x80); //第一行首地址0x80display("电压:"); //第一行显示write_com(0x90); //第一行首地址0x80display(table); //第一行显示write_com(0x96);display("V ");write_com(0x98);display("电压正常测试");delay(50);delay(500); //较长时间延时,保证下次操作前LCD完成上述功能处于非忙状态}。
LCD12864液晶屏测试程序

/////LCD12864液晶屏测试程序(已通过)//////////////液晶屏型号:HJ12864M-1//////////#include <reg52.h>#define uchar unsigned char#define uint unsigned int//8bit数据接入IO口#define Part P0 //P0接8位数据线//控制数据端sbit LCD_RS=P2^5; //定义12864液晶RS端,寄存器选择信号 H:数据寄存器 L:指令寄存器sbit LCD_RW=P2^6; //定义12864液晶RW端,读/写信号 H:读 L:写sbit LCD_EN=P2^7; //定义12864液晶LCDEN端, 片选信号下降沿触发,锁存数据sbit LCD_PSB=P3^2; //定义12864液晶PSB端, H:并行 L:串行sbit LCD_RST=P3^4; //定义12864液晶RST端, H:不复位 L:复位uchar code dis1[]={"床前明月光"};uchar code dis2[]={"疑是地上霜"};uchar code dis3[]={"举头望明月"};uchar code dis4[]={"低头思故乡"};//毫秒延时函数void delay(uint xms){uint i,j;for(j=0;i<xms;j++)for(i=0;i<110;i++);}//LCD忙检测函数bit lcd_busy(){bit result;LCD_RS=0;LCD_RW=1;LCD_EN= 1;result=(bit)(Part & 0x80); LCD_EN=0;return result;}//液晶写命令函数void lcd_write_cmd(uchar com) {while(lcd_busy());LCD_RS=0; //选择指令寄存器LCD_RW=0; //写LCD_EN=0;Part=com; //指令值赋给P0口delay(5);LCD_EN=1;delay(5);LCD_EN=0;}//液晶写一个字符数据函数void lcd_write_dat(uchar date){while(lcd_busy());LCD_RS=1; //选择数据寄存器LCD_RW=0; //写LCD_EN=0;P0=date; //数据值赋给P0口delay(5);LCD_EN=1;delay(5);LCD_EN=0;}//液晶写一个字符串函数void lcd_write_string(uchar *str){while(*str!='\0') //未结束{lcd_write_dat(*str++);delay(5);}}//液晶显示位置函数void lcd_pos(uchar x,uchar y) //从第X行的第Y位置开始显示{uchar pos;if(x==1) //第一行{ x=0x80;}else if(x==2) //第二行{ x=0x90;}else if(x==3) //第三行{ x=0x88;}else if(x==4) //第四行{ x=0x98;}pos=x+y-1; //首地址为0X80lcd_write_cmd(pos);}//液晶初始化函数void lcd_init(){LCD_PSB=1; //并行方式LCD_RST=1; //不复位lcd_write_cmd(0x30);delay(5);lcd_write_cmd(0x0c); //开显示,不显示光标delay(5);lcd_write_cmd(0x06); //写一个字符后地址指针自动加1 delay(5);lcd_write_cmd(0x01); //清屏delay(5);}//主函数函数void main(){// uchar i;lcd_init();while(1){lcd_pos(1,1);// lcd_write_string(dis1);lcd_write_string("床前明月光");delay(5);lcd_pos(2,1);// lcd_write_string(dis2);lcd_write_string("疑是地上霜");delay(5);lcd_pos(3,1);// lcd_write_string(dis3);lcd_write_string("举头望明月");delay(5);lcd_pos(4,1);// lcd_write_string(dis4);lcd_write_string("低头思故乡");delay(500);}}。
12864点阵液晶显示测试程序(带字库)

12864点阵液晶显示测试程序(带字库)接口说明1 12864-1测试程序:#include <reg52.h>#define uint unsigned int#define uchar unsigned char#define x1 0x80#define x2 0x88#define y 0x80#define comm 0#define dat 1sbit rs = P1^1; //H=data; L=command;sbit rw = P1^2; //H=read; L=write;sbit e = P1^3; //input enable;sbit psb= P1^4; //H=并口; L=串口;sbit rst= P1^5; //Reset Signal 低电平有效sbit busy=P2^7; //lcd busy bitvoid wr_lcd (uchar dat_comm,uchar content);void chk_busy (void);void delay (uint us);uchar code tab1[]={" 床前明月光, "" 疑是地上霜, ""举头望明月, ""低头思故乡。
"};uchar code tab31[]={"你的选择""没有错"};uchar code tab32[]={/*-- 调入了一幅图像:D:\Backup\桌面\未命名1.bmp --*//*-- 宽度x高度=128x32 --*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x04,0x06,0x06,0xFF,0xFF, 0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x04,0x04,0x02,0xFF,0xFF, 0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x FF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x04,0x04,0x83,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x04,0x06,0x07,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x24,0xE6,0x3F,0xFF,0xFF, 0xFF,0xFD,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x64,0xE4,0x3F,0xFF,0xFF, 0xFF,0x03,0xF7,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE4,0xE4,0x3F,0xFF,0xFF, 0xFF,0x07,0xF0,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE4,0xE4,0x3F,0xFF,0xFF, 0xFF,0x07,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE4,0xE4,0x3F,0xFF,0xFF, 0xFF,0x0F,0xF0,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE4,0x04,0x02,0xFF,0xFF,0xFF,0x1F,0xF0,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE4,0x04,0x82,0xFF,0xFF, 0xFF,0x1F,0xF0,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFC,0xFF,0xFF,0xFF,0xFF, 0xFF,0x3D,0xF0,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0x3D,0xF0,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0x79,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};uchar code tab5[]={/*-- 调入了一幅图像:D:\Backup\桌面\未命名.bmp --*//*-- 宽度x高度=128x64 --*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x04,0x06,0x06,0xFF,0xFF, 0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x04,0x04,0x02,0xFF,0xFF, 0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE4,0xE4,0xF3,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x04,0x04,0x83,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x04,0x06,0x07,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x24,0xE6,0x3F,0xFF,0xFF, 0xFF,0xFD,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x64,0xE4,0x3F,0xFF,0xFF, 0xFF,0x03,0xF7,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE4,0xE4,0x3F,0xFF,0xFF, 0xFF,0x07,0xF0,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE4,0xE4,0x3F,0xFF,0xFF, 0xFF,0x07,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE4,0xE4,0x3F,0xFF,0xFF, 0xFF,0x0F,0xF0,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE4,0x04,0x02,0xFF,0xFF, 0xFF,0x1F,0xF0,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE4,0x04,0x82,0xFF,0xFF, 0xFF,0x1F,0xF0,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFC,0xFF,0xFF,0xFF,0xFF, 0xFF,0x3D,0xF0,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0x3D,0xF0,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0x79,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x79,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFB,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };/*------------------初始化-----------------*/void init_lcd (void){rst=1;psb=1;wr_lcd (comm,0x30); /*30---基本指令动作*/wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/wr_lcd (comm,0x06); /*光标的移动方向*/wr_lcd (comm,0x0c); /*开显示,关游标*/}/*---------------显示汉字或字符----------------*/ void chn_disp (uchar code *chn){uchar i,j;wr_lcd (comm,0x30);wr_lcd (comm,0x80);for (j=0;j<4;j++){for (i=0;i<16;i++)wr_lcd (dat,chn[j*16+i]);}}/*-----------上半屏显示汉字或字符------------*/ void chn_disp1 (uchar code *chn){uchar i,j;wr_lcd (comm,0x30);wr_lcd (comm,0x80);j=0;for (i=0;i<16;i++)wr_lcd (dat,chn[j*16+i]);wr_lcd (comm,0x90);j=1;for (i=0;i<16;i++)wr_lcd (dat,chn[j*16+i]);}/*----------------显示图形-----------------*/void img_disp (uchar code *img){uchar i,j;for(j=0;j<32;j++){for(i=0;i<8;i++){wr_lcd (comm,0x34);wr_lcd (comm,y+j);wr_lcd (comm,x1+i);wr_lcd (comm,0x30);wr_lcd (dat,img[j*16+i*2]);wr_lcd (dat,img[j*16+i*2+1]);}}for(j=32;j<64;j++){for(i=0;i<8;i++){wr_lcd (comm,0x34);wr_lcd (comm,y+j-32);wr_lcd (comm,x2+i);wr_lcd (comm,0x30);wr_lcd (dat,img[j*16+i*2]);wr_lcd (dat,img[j*16+i*2+1]);}}wr_lcd (comm,0x36);}/*-------------下半屏显示图形--------------*/ void img_disp1 (uchar code *img){uchar i,j;for(j=0;j<32;j++){for(i=0;i<8;i++){wr_lcd (comm,0x34);wr_lcd (comm,y+j);wr_lcd (comm,x2+i);wr_lcd (comm,0x30);wr_lcd (dat,img[j*16+i*2]);wr_lcd (dat,img[j*16+i*2+1]);}}wr_lcd (comm,0x36);}/*--------------显示点阵----------------*/void lat_disp (uchar data1,uchar data2) {uchar i,j,k,x;x=x1;for(k=0;k<2;k++){for(j=0;j<16;j++){for(i=0;i<8;i++){wr_lcd (comm,0x34);wr_lcd (comm,y+j*2);wr_lcd (comm,x+i);wr_lcd (comm,0x30);wr_lcd (dat,data1);wr_lcd (dat,data1);}for(i=0;i<8;i++){wr_lcd (comm,0x34);wr_lcd (comm,y+j*2+1);wr_lcd (comm,x+i);wr_lcd (comm,0x30);wr_lcd (dat,data2);wr_lcd (dat,data2);}}x=x2;}wr_lcd (comm,0x36);}/*-----------------------------------------------*///当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl) {uchar i,j;for(j=0;j<yl;j++){for(i=0;i<xl;i++){wr_lcd (comm,0x34);wr_lcd (comm,y0+j);wr_lcd (comm,x0+i);wr_lcd (comm,0x30);wr_lcd (dat,data1);wr_lcd (dat,data2);}}wr_lcd (comm,0x36);}/*--------------清DDRAM------------------*/void clrram (void){wr_lcd (comm,0x30);wr_lcd (comm,0x01);}/*---------------------------------------*/void wr_lcd (uchar dat_comm,uchar content) {chk_busy ();if(dat_comm){rs=1; //datarw=0; //write}else{rs=0; //commandrw=0; //write}P2=content; //output data or comme=1;;e=0;}void chk_busy (void){P2=0xff;rs=0;rw=1;e =1;while(busy==1);e =0;}void delay (uint us) //delay time{while(us--);}void delay1 (uint ms){uint i,j;for(i=0;i<ms;i++)for(j=0;j<15;j++)delay(1);}/*------------------主程序--------------------*/void main (){SP=0x5f;init_lcd ();while (1){lat_disp (0x00,0x00);chn_disp (tab1);con_disp (0xff,0xff,0x8c,0x80,2,16);delay1 (28000);clrram();lat_disp (0xcc,0xcc);delay1 (28000);lat_disp (0x00,0x00);chn_disp1 (tab31);img_disp1 (tab32);delay1 (28000);clrram();lat_disp (0xff,0x00);delay1 (28000);img_disp (tab5);delay1 (28000);}}。
最完整的12864测试程序

以下是RT12864引脚功能定义 引脚号管脚 说明 1Vss 电源地(0V)。
2VDD 电源正(+5V)。
3V0 LCD 驱动电压,应用时在VEE 与V0之间加一20K 可调电阻。
4 D/I 数据\指令选择:高电平:数据D0-D7将送入显示RAM低电平:数据D0-D7将送入指令寄存器执行。
5 R/W 读\写选择:高电平:读数据;低电平:写数据。
6 E 读写使能,高电平有效,下降沿锁定数据。
7 DB0数据输入输出。
8 DB1 9 DB2 10DB3 11DB4 12DB5 13DB6 14DB7 15CS1 片选择信号,低电平时选择前64列。
16CS2 片选择信号,低电平时选择后64列。
17RET 复位信号,低电平有效。
18VOUT LCD 驱动电源(-10V )。
19LED+ 背光电源,LED+(+5V)。
20LED- 背光电源,LED-(0V)。
以下是RT12864引脚功能定义引脚号管脚说明1Vss电源地(0V)。
2VDD电源正(+5V)。
3V0LCD驱动电压,应用时在VEE与V0之间加一20K可调电阻。
4D/I数据\指令选择:高电平:数据D0-D7将送入显示RAM低电平:数据D0-D7将送入指令寄存器执行。
5R/W读\写选择:高电平:读数据;低电平:写数据。
6E读写使能,高电平有效,下降沿锁定数据。
7DB0数据输入输出。
8DB19DB210DB311DB412DB513DB614DB715CS1片选择信号,低电平时选择前64列。
16CS2片选择信号,低电平时选择后64列。
17RET复位信号,低电平有效。
18VOUTLCD驱动电源(-10V )。
19LED+背光电源,LED+(+5V)。
20LED-背光电源,LED-(0V)。
/********************************************/ /* 12864系列测试程序*//********************************************/ #include <reg51.h>#include <ctype.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <math.h>/* LCD寄存器命令代码*/#define Disp_On 0x3f#define Disp_Off 0x3e#define Col_Add 0x40#define Page_Add 0xb8 //每页是8行#define Start_Line 0xc0//LCD和51连接#define Lcd_Bus P0 //MCU P1<------> LCMsbit Mcs=P2^6; //Master chip enablesbit Scs=P2^5; //Slave chip enablesbit Enable=P3^7; //mode Enable singlesbit Di=P2^4; //Data or Instrument Selectsbit RW=P2^3; //Write or Readsbit Lcd_Rst=P1^0; //Lcm resetchar code HANZI[7][32]={{0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00},//"电"{0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04,0x00,0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70,0x00},//"流"{0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00},//"压"{0x00,0xFF,0x11,0x29,0xC7,0x01,0xFE,0x22,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,0x00,0xFF,0x02,0x04,0x43,0x40,0x7F,0x42,0x42,0x42,0x42,0x42,0x7F,0x40,0x40,0x00},//"阻"{0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00},//温{0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00},//度{0x00,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00} //力};char code shu[14][16]={{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},//"0" {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},//"1" {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},//"2" {0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},//"3" {0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},//"4" {0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},//"5" {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},//"6" {0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},//"7" {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},//"8" {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00},//"9" {0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00},//"+"{0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//"-" {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00},//"." {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00}//"v"};/*------------------延时子程序-----------------------------*/void delay(unsigned int t){unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<10;j++);}/**********************************************************************数原型:void write_com(unsigned char cmdcode)入口参数: cmdcode 写入的命令出口参数: 无返回值:无说明:写命令到LCD**********************************************************************/void write_com(unsigned char cmdcode){Di=0;RW=0;Lcd_Bus=cmdcode;delay(0);Enable=1;delay(0);Enable=0;}/**********************************************************************数原型:void write_data(unsigned char Dispdata)入口参数: Dispdata 写入的数据出口参数: 无返回值:无说明:写数据到LCD**********************************************************************/void write_data(unsigned char Dispdata){Di=1;RW=0;Lcd_Bus=Dispdata;delay(0);Enable=1;delay(0);Enable=0;}/**********************************************************************数原型:Clr_Scr()入口参数: 无出口参数: 无返回值:无说明:清除显示内存**********************************************************************/void Clr_Scr(){unsigned char j,k;Mcs=1;Scs=1;write_com(Page_Add+0);write_com(Col_Add+0);for(k=0;k<8;k++){ write_com(Page_Add+k);for(j=0;j<64;j++)write_data(0x00);}}/**********************************************************************数原型:DispChart(unsigned char CharType,unsigned char pag,unsigned char col, unsigned char code *MH)入口参数: CharType: 显示的字符类型1:16x16汉字2:8x16 字符3: 4x16pag :显示在第几行;col :显示在第几列;MH : 显示的内容代码;出口参数: 无返回值:无说明:在指定的行列显示字符,可以跨区域显示**********************************************************************/void DispChart(unsigned char CharType,unsigned char pag,unsigned char col, unsigned char code *MH){ unsigned char tcol,j=0,i=0;unsigned char twidth,tpag;tpag=pag;if (CharType==1){tcol=48; // 16*16 汉字twidth=16;}if (CharType==2){tcol=56; // 8*16 字符twidth=8;}if (col<=tcol) //1区够显示{ Mcs=1;Scs=0;for(j=0;j<2;j++){write_com(Page_Add+tpag+j);write_com(Col_Add+col);for(i=0;i<twidth;i++) write_data(MH[twidth*j+i]);}}if (col>=64) //0区够显示{ Mcs=0;Scs=1;for(j=0;j<2;j++){write_com(Page_Add+tpag+j);write_com(Col_Add+col-64);for(i=0;i<twidth;i++) write_data(MH[twidth*j+i]);}}if ((col>tcol)&&(col<64)) //介于1,0区之间显示{for(j=0;j<2;j++){ Mcs=1;Scs=0;delay(10);write_com(Page_Add+tpag+j);write_com(Col_Add+col);for(i=0;i<(64-col);i++) write_data(MH[twidth*j+i]);Mcs=0;Scs=1;delay(10);write_com(Page_Add+tpag+j);write_com(Col_Add+0);for(i=(64-col);i<twidth;i++) write_data(MH[twidth*j+i]);}}}/********************************************************************** 数原型:void DISP_float(unsigned char pag,unsigned char col, float fData)入口参数: pag :显示在第几行;col :显示在第几列;fData : 显示的数据;出口参数: 无返回值:无说明:在指定的行列上显示数据,可以跨区域显示**********************************************************************/ void DISP_float(unsigned char pag,unsigned char col, float fData){ unsigned long int tData;unsigned char wei,i,j,tbit,fuhao,dai;unsigned char wei_shu[5];if (fData>0)fuhao=1;elsefuhao=0;if ((fData<1) &&(fData>-1))dai=1;elsedai=0;tData=(unsigned int)(abs(fData*10));if (tData<=9) wei=1;if ((tData>9) && (tData<=99)) wei=2;if ((tData>99) && (tData<=999)) wei=3;if ((tData>999) && (tData<=9999)) wei=4;if ((tData>9999) && (tData<=99999)) wei=5;for(i=wei;i>=1;i--){ tbit=tData%10;wei_shu[i-1]=tbit;tData/=10;}if (fuhao==0) //显示0>x{DispChart(2,pag,col,shu[11]);if (dai==1) //显示0>x>-1{DispChart(2,pag,col+8,shu[0]); DispChart(2,pag,col+16,shu[12]);j=3;}else j=1;}elseif (fuhao==1)//显示x>0{if (dai==1)//显示1>x>0{DispChart(2,pag,col,shu[0]);DispChart(2,pag,col+8,shu[12]);j=2;}else j=0;}for (i=0;i<wei;i++){ DispChart(2,pag,col+j*8,shu[wei_shu[i]]);if ((i==(wei-1))&&(dai==0)){DispChart(2,pag,col+j*8,shu[12]); DispChart(2,pag,col+(j+1)*8,shu[wei_shu[i]]); goto bbreak;}j=j+1;}bbreak:;}/********************************************************************** 数原型:void init_lcd()入口参数: 无出口参数: 无返回值:无说明:初始化LCD屏**********************************************************************/ void init_lcd(){Lcd_Rst=0;delay(100);Lcd_Rst=1;delay(100);Mcs=1; Scs=1;delay(100);write_com(Disp_Off);write_com(Page_Add+0);write_com(Start_Line+0);write_com(Col_Add+0);write_com(Disp_On);}//主程序main(){unsigned char i=0;float ff;init_lcd();Clr_Scr();ff=-0.9;// ff=0.4;//ff=2121.4;//ff=-1452;DISP_float(0,55,ff);while(1){ DispChart(1,2,0,HANZI[4]);DispChart(1,2,15+10,HANZI[0]); DispChart(1,2,31+10,HANZI[1]);DispChart(2,2,47+10,shu[8]); DispChart(2,2,55+10,shu[4]);DispChart(2,2,63+10,shu[2]); DispChart(2,2,71+10,shu[4]);DispChart(2,2,79+10,shu[1]);DispChart(2,2,87+10,shu[0]); delay(1000);}}。
12864程序

硬件连接方式是:并口直接访问。
这是汉字显示程序:#include<reg51.h>#include<absacc.h>#define uchar unsigned char#define datawr 0x1200 //写数据通道#define comwr 0x1000 //写控制命令通道#define datare 0x1300 //读数据通道#define comre 0x1100 //读忙通道uchar code disp_data[]={" 浙江大学" //第一行,第一页"04级通信工程一班" //第三行" 宁波理工学院" //第二行" 竞赛小组" //第四行"128X64液晶显示器" //第一行,第二页" 测试程序" //第三行" 07年07月25日" //第二行" Tornado "}; //第四行void set12864();void write_command(uchar command);void write_page(uchar data_add);void read_page(uchar data_add);void delays(uchar cont);void main(){while(1){set12864(); //初始化12864write_page(0); //写入一页数据read_page(0x30); //读出一页数据到内部RAMdelays(2); //延时2swrite_page(64); //写入下一页数据delays(2); //延时2s}}//初始化12864子程序void set12864(){write_command(0x30); //功能设定控制字write_command(0x0c); //显示开关控制字write_command(0x01); //清除屏幕控制字write_command(0x06); //进入设定点控制字}//写控制命令子程序void write_command(uchar command){bit flag=1; //12864空闲标志位while(flag) //检查12864是否空闲flag="XBYTE"[comre]&0x80;XBYTE[comwr]=command; //空闲传送控制字}//写一页子程序void write_page(uchar data_add){bit flag=1; //12864空闲标志位uchar num=64; //64个循环,连续写入32个汉字或是64个西文字符write_command(0x80);for(;num>0;num--){while(flag) //检查12864是否空闲flag="XBYTE"[comre]&0x80;XBYTE[datawr]=disp_data[data_add++]; //空闲传送数据}}//读一页子程序void read_page(uchar data_add){bit flag=1; //12864空闲标志位uchar num=64; //64个循环,连续写入32个汉字或是64个西文字符write_command(0x80);for(;num>0;num--){while(flag) //检查12864是否空闲flag="XBYTE"[comre]&0x80;DBYTE[data_add++]=XBYTE[datare]; //空闲传送数据}}//延时cont秒子程序void delays(uchar count){unsigned char h,i,j,k;do{for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;j>0;j--)for(k=214;k>0;k--);}while(--count);}这是图象显示程序:#include<reg51.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int#define datawr 0x1200 //写数据通道#define comwr 0x1000 //写控制命令通道#define datare 0x1300 //读数据通道#define comre 0x1100 //读忙通道uchar code disp_data[] = // 数据表{0x00,0x01,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00 ,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00 ,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00 ,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00 ,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00 ,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00 ,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x0 0,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x8 0,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0 3,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0 0,0x07,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8 0,0x00,0x0B,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8 0,0x00,0x00,0x1F,0x01,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC 0,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xF3,0x79,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC 0,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xE6,0x62,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE 1,0x60,0x00,0x68,0x01,0xFF,0xFF,0xFE,0x00,0x60,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1 ,0x00,0x00,0x0E,0x01,0xFF,0xFF,0xF8,0x00,0x4B,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0 ,0x8E,0x08,0x79,0x07,0xFF,0xFF,0xF0,0x00,0x41,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE6 ,0xC0,0x07,0x61,0xC3,0xFF,0xFE,0xC0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xED,0xEF,0x3F,0x83,0xFF,0xFE,0x60,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF,0xFF,0xC0,0xFF,0xFD,0xFC,0x6C,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xF0,0x7F,0xF3,0xFF,0xFE,0x60,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xFF,0x50,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xC9,0xFB,0xFF,0xF1,0xF8,0x8C,0xD8,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFB,0x6F,0xD9,0xC2,0x3F,0xF8,0x40,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF6 ,0xDF,0x1E,0xFF,0xFF,0x7F,0xFC,0x38,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x64 ,0x2F,0x6F,0xFF,0xFD,0x7B,0xFC,0x1F,0xE0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x5 F,0x7C,0xEE,0xFF,0xC7,0xFF,0xBC,0x0F,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xD F,0xFE,0xEF,0xFF,0xFF,0xE7,0xDC,0x07,0xE7,0xF8,0x12,0x7F,0xFF,0xFF,0xFF,0xFF,0x4 7,0xFF,0xFF,0xFF,0xFF,0xE7,0x80,0x03,0xF4,0x00,0x00,0x5F,0xFF,0xFF,0xFE,0xFE,0xE3 ,0xFF,0xFF,0xFF,0xFF,0xFE,0xC0,0x01,0xC0,0x00,0x00,0x1B,0xFF,0xFF,0xFB,0xFF,0xF F,0xFF,0xFF,0xFF,0x7F,0xEE,0xC0,0x00,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF,0xFF,0xFE,0x98,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xEF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x20,0x0E,0x60,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x8F,0xFF,0xFF, 0xFF,0xFF,0xFF,0x05,0x80,0xE0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFD,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x09,0x80,0xA0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x7F,0xFF,0xFF, 0xFF,0xFF,0xFF,0x85,0x2A,0xC0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFB,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFE,0xBF,0xF3,0xC0,0x00,0x00,0x00,0x00,0x00,0xFF,0xF7,0xFF,0xFF,0xFF, 0xFF,0xFF,0xF8,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xE0,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0xFF,0xFF,0xFF, 0xFF,0xC0,0x1F,0xFF,0xFF,0x80,0x00,0x40,0x00,0x00,0x00,0xFF,0x80,0xFF,0xFF,0xFF, 0x80,0x07,0xFF,0xFF,0xFF,0xC0,0x00,0xC0,0x00,0x00,0x01,0xFF,0x01,0xFF,0xFF,0xF8 ,0x00,0xFF,0xFF,0xFF,0xFF,0xE0,0x63,0x80,0x00,0x00,0x01,0xFE,0x01,0xFF,0x18,0x00, 0x3F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x01,0xCC,0x01,0xFE,0x00,0x07, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x07,0xA0,0x03,0xFC,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x05,0xC0,0x03,0xC8,0x00,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x88,0x0C,0x07, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0C,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0xC0, 0x7F,0xFF,0xFF,0xFF,0xFF,0xF8,0x07,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0 x0F,0xFF,0xFE,0xFF,0xFF,0xD0,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F, 0x03,0xFF,0xF8,0xFF,0xFC,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x3F,0xFF,0xC0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0 x00,0xFF,0xF8,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0 x00,0x1F,0xFE,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x78,0x02,0x00,0x00,0x00,0x00,0 x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x78,0x00,0x00,0x00,0x00,0 x00,0x02,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00, 0x00,0x00,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x80,0x00,0x00,0x00,0x00,0 x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x27,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x01};void set12864();void setxy(uchar x,uchar y);void write_command(uchar command);void write_16byte(uint data_add);void delays(uchar count);void main(){uchar x,y,i;while(1){y="0x80"; //设置液晶上半部分坐标x="0x80";delays(2); //延时2sset12864(); //初始化12864delays(2);for(i=0;i<32;i++) //写入液晶上半图象部分{ //写入坐标setxy(x,y);write_16byte(i*16); //连续写入16字节数据y++; //y轴地址加1}y="0x80"; //设置液晶下半部分坐标x="0x88";for(i=0;i<32;i++) //写入液晶下半图象部分{setxy(x,y); //写入坐标write_16byte((32+i)*16);//连续写入16字节数据y++; //y轴地址加1}write_command(0x34); //写入扩充指令命令write_command(0x36); //显示图象}}//初始化12864子程序void set12864(){write_command(0x30); //功能设定控制字write_command(0x0c); //显示开关控制字write_command(0x01); //清除屏幕控制字write_command(0x06); //进入设定点控制字}//设置绘图坐标void setxy(uchar x,uchar y){write_command(0x34); //写入扩充指令命令write_command(y); //写入y轴坐标write_command(x); //写入x轴坐标write_command(0x30); //写入基本指令命令}//写控制命令子程序void write_command(uchar command){bit flag="1"; //12864空闲标志位while(flag) //检查12864是否空闲flag="XBYTE"[comre]&0x80;XBYTE[comwr]=command; //空闲传送控制字}void write_16byte(uint data_add){bit flag="1"; //12864空闲标志位uchar num="16"; //16个循环,连续写入16个字节for(;num>0;num--){while(flag) //检查12864是否空闲flag="XBYTE"[comre]&0x80;XBYTE[datawr]=disp_data[data_add++]; //空闲传送数据}}//延时count秒子程序void delays(uchar count){unsigned char h,i,j,k;do{for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;j>0;j--)for(k=214;k>0;k--);}while(--count);}程序代码如下:#include <reg52.h>#include"INTRINS.H"#define uint unsigned int#define uchar unsigned char#define x1 0x80#define x2 0x88#define y 0x80#define comm 0#define dat 1sbit cs = P0^0;sbit std = P0^1;sbit sclk = P0^2;//sbit rst = P0^3; //Reset Signal 低电平有效void wr_lcd (uchar dat_comm,uchar content);void delay (uint us);void lcd_char(uchar x0,uchar y0,uchar k,uchar *chn); void init_lcd (void);void lcd_string(uchar x0,uchar y0,uchar k,uchar *chn);/*------------------初始化-----------------*/void init_lcd (void){// rst=1;wr_lcd (comm,0x30); /*30---基本指令动作*/wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/delay (100);wr_lcd (comm,0x06); /*光标的移动方向*/wr_lcd (comm,0x0c); /*开显示,关游标*/}/*--------------清DDRAM------------------*/void clrram (void){wr_lcd (comm,0x30);wr_lcd (comm,0x01);delay (180);}/*---------------------------------------*/void wr_lcd (uchar dat_comm,uchar content){uchar a,i,j;delay (500);a=content;cs=1;_nop_();sclk=0;_nop_();std=1;_nop_();for(i=0;i<5;i++){sclk=1;_nop_();_nop_();_nop_();sclk=0;}std=0;_nop_();sclk=1;_nop_();_nop_();_nop_();sclk=0;_nop_();if(dat_comm)std=1; //data elsestd=0; //command sclk=1;_nop_();_nop_();_nop_();sclk=0;std=0;_nop_();sclk=1;_nop_();_nop_();_nop_();sclk=0;for(j=0;j<2;j++){for(i=0;i<4;i++) {a=a<<1;std=CY;sclk=1;_nop_();_nop_();_nop_();sclk=0;}std=0;for(i=0;i<4;i++) {sclk=1;_nop_();_nop_();_nop_();sclk=0;}}}/*-----------------------------------*/void delay (uint us) //delay time{while(us--);}void delay1 (uint ms){uint i,j;for(i=0;i<ms;i++)for(j=0;j<15;j++)delay(1);}/*-------在任意位置显示一串汉字------X0为行,Y0为列,chn为所要显示的汉字串 ,k为汉字个数*/void lcd_char(uchar x0,uchar y0,uchar k,uchar *chn) {uchar adr,i;switch(x0){case 0: adr = 0x80 + y0;break; //在第1行y列显示case 1: adr = 0x90 + y0;break; //在第2行y列显示case 2: adr = 0x88 + y0;break; //在第3行y列显示case 3: adr = 0x98 + y0;break; //在第4行y列显示default: ;}wr_lcd (comm,0x30);wr_lcd (comm,adr);for(i=0;i<2*k;i++)wr_lcd (dat,chn[i]);}//在任意位置显示字符串,k为字符个数void lcd_string(uchar x0,uchar y0,uchar k,uchar *chn){uchar adr,i;switch(x0){case 0: adr = 0x80 + y0;break; //在第1行y列显示case 1: adr = 0x90 + y0;break; //在第2行y列显示case 2: adr = 0x88 + y0;break; //在第3行y列显示case 3: adr = 0x98 + y0;break; //在第4行y列显示default: ;}wr_lcd (comm,0x30);wr_lcd (comm,adr);for(i=0;i<k;i++)wr_lcd (dat,chn[i]);}/*------------------主程序--------------------*/ void main (){ uchar chn[4]={0x31,0x32,0x35,0x36};uchar b[]={"欢迎使用本程序"};init_lcd ();while (1){clrram();lcd_char(0,0,7,b);lcd_string(1,0,4,chn);delay1 (8000);}}/*********************************************************************//*文件名称:12864-01-8x8.asm SIDE: 128 X 64 DOTS */ /*模块名:12864-1 模块CONTROLLER: KS0108 */ /*创建人:zmlceo 日期:2008-12-01 *//*QQ:527717539 日期:2008-12-01 *//*功能描述:*//*其他说明:*//*版本:V1.0 *//*********************************************************************///显示/*****************//* *//* 12864lcd *//* *//* *//*****************/#include <reg52.h>#include <ctype.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <math.h>/* Define the register command code */#define Disp_On 0x3f#define Disp_Off 0x3e#define Col_Add 0x40#define Page_Add 0xb8#define Start_Line 0xc0#define Lcd_Bus P0 //MCU P1 LCM/*sbit Mcs="P2"^3; //Master chip enablesbit Scs="P2"^4; //Slave chip enablesbit Enable="P2"^0; //6800 mode Enable singlesbit Di="P2"^5; //Data or Instrument Selectsbit RW="P2"^6; //Write or Readsbit Lcd_Rst=P2^2; //Lcm resetsbit Test_Key=P2^1;*/sbit Mcs="P2"^3; //Master chip enablesbit Scs="P2"^4; //Slave chip enablesbit Enable="P2"^2; //6800 mode Enable singlesbit Di="P2"^0; //Data or Instrument Selectsbit RW="P2"^1; //Write or Readsbit Lcd_Rst=P2^5; //Lcm resetsbit Test_Key=P1^0;//;****************************************************************/*;RS REG P2.0 DEFINE LCM DATA/INSTRUCTION PIN ;R/W REG P2.1 DEFINE LCM READ/WRITE PIN;E REG P2.2 DEFINE LCM CHIP ENABLE PIN;CS1 REG P2.3 DEFINE LCM CHIP 1 SELECT PIN;CS2 REG P2.4 DEFINE LCM CHIP 2 SELECT PIN;RSTB REG P2.5 DEFINE LCM /RESET PIN*/char code SHU1[]={/*-- 文字: 1 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20, 0x00,0x00};char code SHU2[]={/*-- 文字: 2 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21, 0x30,0x00};char code SHU8[]={/*-- 文字: 8 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22, 0x1C,0x00};char code SHU6[]={/*-- 文字: 6 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11, 0x0E,0x00};char code SHU4[]={/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F, 0x24,0x00};char code L[]={/*-- 文字: L --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20, 0x30,0x00};char code C[]={/*-- 文字: C --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00};char code D[]={/*-- 文字: D --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10, 0x0F,0x00};/*****************//* *//* 12864LCD *//* *//* *//*****************//*------------------延时子程序-----------------------------*/void delay(unsigned int t){unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<10;j++);}/*------------------写命令到LCD------------------------------*/void write_com(unsigned char cmdcode){Di=0;RW=0;Lcd_Bus=cmdcode;delay(0);Enable=1;delay(0);Enable=0;}/*-------------------写数据到LCD----------------------------*/ void write_data(unsigned char Dispdata){Di=1;RW=0;Lcd_Bus=Dispdata;delay(0);Enable=1;delay(0);Enable=0;}/*-------------------读LCD数据----------------------------*/ unsigned char read_data(){unsigned char tmpin;Di=1;RW=1;delay(0);Enable=1;delay(0);Enable=0;tmpin=Lcd_Bus;return tmpin;}/*------------------清除内存---------------*/void Clr_Scr(){unsigned char j,k;Mcs=1;Scs=1;write_com(Page_Add+0);write_com(Col_Add+0);for(k=0;k<8;k++){write_com(Page_Add+k);for(j=0;j<64;j++)write_data(0x00);}}/*---------------------指定位置显示字符8*16-----------------------*/void hz_disp816(unsigned char pag,unsigned char col, unsigned char cod e *hzk){unsigned char j="0",i=0;for(j=0;j<2;j++){write_com(Page_Add+pag+j);write_com(Col_Add+col);for(i=0;i<8;i++) write_data(hzk[8*j+i]);}}。
12864串口测试程序

#include <reg51.h>#include <intrins.h>typedef unsigned char u8;typedef unsigned int u16;typedef unsigned long u32;#define uchar unsigned char#define uint unsigned int#define nop _nop_()#define xtal 11.0592 //11.0592M//==========================================================//函数声明void Delay(uint ms); //延时子程序sfr INT_CLKO = 0x8F;sfr WDT_CONTR = 0xC1; //看门狗sfr P4 = 0xC0;sfr P5 = 0xC8;sfr P6 = 0xE8;sfr P7 = 0xF8;sfr P1M1 = 0x91; //PxM1.n,PxM0.n =00--->Standard, 01--->push-pull sfr P1M0 = 0x92; // =10--->pure input, 11--->open drain sfr P0M1 = 0x93;sfr P0M0 = 0x94;sfr P2M1 = 0x95;sfr P2M0 = 0x96;sfr P3M1 = 0xB1;sfr P3M0 = 0xB2;sfr P4M1 = 0xB3;sfr P4M0 = 0xB4;sfr P5M1 = 0xC9;sfr P5M0 = 0xCA;sfr P6M1 = 0xCB;sfr P6M0 = 0xCC;sfr P7M1 = 0xE1;sfr P7M0 = 0xE2;sfr P1ASF = 0x9D; //只写,模拟输入(AD或LVD)选择sfr ADC_CONTR = 0xBC; //带AD系列sfr AUXR = 0x8E;sbit CS= P4^3; //CS=RSsbit SID = P3^6; //RW=SIDsbit SCLK =P3^4; //E=SCLK//==========================================================/********** 12864LCD引脚定义**********//* sbit CS = P4^3; //4脚--VCC, 片选高电平有效单片LCD使用时可固定高电平RS P4.3 CS = P3^5;sbit SID = P3^6; //5脚,数据WR(SID) P4.5 SID = P3^6;sbit SCLK = P3^4; //6脚,时钟E(CLK) P4.6 SCLK = P3^4;sbit PSB = P3^7; //15脚--GND,低电平时表示用串口驱动,可固定低电平//sbit RESET = P2^5; //LCD复位,LCD模块自带复位电路。
12864液晶测试程序

#include <REG52.h>#define uint unsigned int#define uchar unsigned charsbit CS=P2^0;sbit SID=P2^1;sbit SCLK=P2^2;sbit PSB=P2^3;void delay_1ms(uint x)//延时xms{uint i,j;for(j=0;j<x;j++)for(i=0;i<110;i++);}void send_command(uchar command_data){uchar i;uchar i_data;i_data=0xf8;CS=1;SCLK=0;for(i=0;i<8;i++) //第一字节,发送命令,11111000-些指令{SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data; /*获取命令的高四位,低四位补零*/ i_data&=0xf0;for(i=0;i<8;i++) //第二字节{SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data<<=4;for(i=0;i<8;i++) //第三字节{SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}CS=0;delay_1ms(10);}void send_data(uchar command_data){uchar i;uchar i_data;i_data=0xfa;CS=1;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data&=0xf0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data<<=4;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}CS=0;delay_1ms(10);}void lcd_init(){ PSB=0;delay_1ms(100);send_command(0x30); /*设置8位数据接口,基本指令模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以下是RT12864引脚功能定义 引脚号管脚 说明 1Vss 电源地(0V)。
2VDD 电源正(+5V)。
3V0 LCD 驱动电压,应用时在VEE 与V0之间加一20K 可调电阻。
4 D/I 数据\指令选择:高电平:数据D0-D7将送入显示RAM低电平:数据D0-D7将送入指令寄存器执行。
5 R/W 读\写选择:高电平:读数据;低电平:写数据。
6 E 读写使能,高电平有效,下降沿锁定数据。
7 DB0数据输入输出。
8 DB1 9 DB2 10DB3 11DB4 12DB5 13DB6 14DB7 15CS1 片选择信号,低电平时选择前64列。
16CS2 片选择信号,低电平时选择后64列。
17RET 复位信号,低电平有效。
18VOUT LCD 驱动电源(-10V )。
19LED+ 背光电源,LED+(+5V)。
20LED- 背光电源,LED-(0V)。
以下是RT12864引脚功能定义引脚号管脚说明1Vss电源地(0V)。
2VDD电源正(+5V)。
3V0LCD驱动电压,应用时在VEE与V0之间加一20K可调电阻。
4D/I数据\指令选择:高电平:数据D0-D7将送入显示RAM低电平:数据D0-D7将送入指令寄存器执行。
5R/W读\写选择:高电平:读数据;低电平:写数据。
6E读写使能,高电平有效,下降沿锁定数据。
7DB0数据输入输出。
8DB19DB210DB311DB412DB513DB614DB715CS1片选择信号,低电平时选择前64列。
16CS2片选择信号,低电平时选择后64列。
17RET复位信号,低电平有效。
18VOUTLCD驱动电源(-10V )。
19LED+背光电源,LED+(+5V)。
20LED-背光电源,LED-(0V)。
/********************************************/ /* 12864系列测试程序*//********************************************/ #include <reg51.h>#include <ctype.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <math.h>/* LCD寄存器命令代码*/#define Disp_On 0x3f#define Disp_Off 0x3e#define Col_Add 0x40#define Page_Add 0xb8 //每页是8行#define Start_Line 0xc0//LCD和51连接#define Lcd_Bus P0 //MCU P1<------> LCMsbit Mcs=P2^6; //Master chip enablesbit Scs=P2^5; //Slave chip enablesbit Enable=P3^7; //mode Enable singlesbit Di=P2^4; //Data or Instrument Selectsbit RW=P2^3; //Write or Readsbit Lcd_Rst=P1^0; //Lcm resetchar code HANZI[7][32]={{0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00},//"电"{0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04,0x00,0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70,0x00},//"流"{0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00},//"压"{0x00,0xFF,0x11,0x29,0xC7,0x01,0xFE,0x22,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,0x00,0xFF,0x02,0x04,0x43,0x40,0x7F,0x42,0x42,0x42,0x42,0x42,0x7F,0x40,0x40,0x00},//"阻"{0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00},//温{0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00},//度{0x00,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00} //力};char code shu[14][16]={{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},//"0" {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},//"1" {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},//"2" {0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},//"3" {0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},//"4" {0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},//"5" {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},//"6" {0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},//"7" {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},//"8" {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00},//"9" {0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00},//"+"{0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//"-" {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00},//"." {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00}//"v"};/*------------------延时子程序-----------------------------*/void delay(unsigned int t){unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<10;j++);}/**********************************************************************数原型:void write_com(unsigned char cmdcode)入口参数: cmdcode 写入的命令出口参数: 无返回值:无说明:写命令到LCD**********************************************************************/void write_com(unsigned char cmdcode){Di=0;RW=0;Lcd_Bus=cmdcode;delay(0);Enable=1;delay(0);Enable=0;}/**********************************************************************数原型:void write_data(unsigned char Dispdata)入口参数: Dispdata 写入的数据出口参数: 无返回值:无说明:写数据到LCD**********************************************************************/void write_data(unsigned char Dispdata){Di=1;RW=0;Lcd_Bus=Dispdata;delay(0);Enable=1;delay(0);Enable=0;}/**********************************************************************数原型:Clr_Scr()入口参数: 无出口参数: 无返回值:无说明:清除显示内存**********************************************************************/void Clr_Scr(){unsigned char j,k;Mcs=1;Scs=1;write_com(Page_Add+0);write_com(Col_Add+0);for(k=0;k<8;k++){ write_com(Page_Add+k);for(j=0;j<64;j++)write_data(0x00);}}/**********************************************************************数原型:DispChart(unsigned char CharType,unsigned char pag,unsigned char col, unsigned char code *MH)入口参数: CharType: 显示的字符类型1:16x16汉字2:8x16 字符3: 4x16pag :显示在第几行;col :显示在第几列;MH : 显示的内容代码;出口参数: 无返回值:无说明:在指定的行列显示字符,可以跨区域显示**********************************************************************/void DispChart(unsigned char CharType,unsigned char pag,unsigned char col, unsigned char code *MH){ unsigned char tcol,j=0,i=0;unsigned char twidth,tpag;tpag=pag;if (CharType==1){tcol=48; // 16*16 汉字twidth=16;}if (CharType==2){tcol=56; // 8*16 字符twidth=8;}if (col<=tcol) //1区够显示{ Mcs=1;Scs=0;for(j=0;j<2;j++){write_com(Page_Add+tpag+j);write_com(Col_Add+col);for(i=0;i<twidth;i++) write_data(MH[twidth*j+i]);}}if (col>=64) //0区够显示{ Mcs=0;Scs=1;for(j=0;j<2;j++){write_com(Page_Add+tpag+j);write_com(Col_Add+col-64);for(i=0;i<twidth;i++) write_data(MH[twidth*j+i]);}}if ((col>tcol)&&(col<64)) //介于1,0区之间显示{for(j=0;j<2;j++){ Mcs=1;Scs=0;delay(10);write_com(Page_Add+tpag+j);write_com(Col_Add+col);for(i=0;i<(64-col);i++) write_data(MH[twidth*j+i]);Mcs=0;Scs=1;delay(10);write_com(Page_Add+tpag+j);write_com(Col_Add+0);for(i=(64-col);i<twidth;i++) write_data(MH[twidth*j+i]);}}}/********************************************************************** 数原型:void DISP_float(unsigned char pag,unsigned char col, float fData)入口参数: pag :显示在第几行;col :显示在第几列;fData : 显示的数据;出口参数: 无返回值:无说明:在指定的行列上显示数据,可以跨区域显示**********************************************************************/ void DISP_float(unsigned char pag,unsigned char col, float fData){ unsigned long int tData;unsigned char wei,i,j,tbit,fuhao,dai;unsigned char wei_shu[5];if (fData>0)fuhao=1;elsefuhao=0;if ((fData<1) &&(fData>-1))dai=1;elsedai=0;tData=(unsigned int)(abs(fData*10));if (tData<=9) wei=1;if ((tData>9) && (tData<=99)) wei=2;if ((tData>99) && (tData<=999)) wei=3;if ((tData>999) && (tData<=9999)) wei=4;if ((tData>9999) && (tData<=99999)) wei=5;for(i=wei;i>=1;i--){ tbit=tData%10;wei_shu[i-1]=tbit;tData/=10;}if (fuhao==0) //显示0>x{DispChart(2,pag,col,shu[11]);if (dai==1) //显示0>x>-1{DispChart(2,pag,col+8,shu[0]); DispChart(2,pag,col+16,shu[12]);j=3;}else j=1;}elseif (fuhao==1)//显示x>0{if (dai==1)//显示1>x>0{DispChart(2,pag,col,shu[0]);DispChart(2,pag,col+8,shu[12]);j=2;}else j=0;}for (i=0;i<wei;i++){ DispChart(2,pag,col+j*8,shu[wei_shu[i]]);if ((i==(wei-1))&&(dai==0)){DispChart(2,pag,col+j*8,shu[12]); DispChart(2,pag,col+(j+1)*8,shu[wei_shu[i]]); goto bbreak;}j=j+1;}bbreak:;}/********************************************************************** 数原型:void init_lcd()入口参数: 无出口参数: 无返回值:无说明:初始化LCD屏**********************************************************************/ void init_lcd(){Lcd_Rst=0;delay(100);Lcd_Rst=1;delay(100);Mcs=1; Scs=1;delay(100);write_com(Disp_Off);write_com(Page_Add+0);write_com(Start_Line+0);write_com(Col_Add+0);write_com(Disp_On);}//主程序main(){unsigned char i=0;float ff;init_lcd();Clr_Scr();ff=-0.9;// ff=0.4;//ff=2121.4;//ff=-1452;DISP_float(0,55,ff);while(1){ DispChart(1,2,0,HANZI[4]);DispChart(1,2,15+10,HANZI[0]); DispChart(1,2,31+10,HANZI[1]);DispChart(2,2,47+10,shu[8]); DispChart(2,2,55+10,shu[4]);DispChart(2,2,63+10,shu[2]); DispChart(2,2,71+10,shu[4]);DispChart(2,2,79+10,shu[1]);DispChart(2,2,87+10,shu[0]); delay(1000);}}。