JLX12864例程
- 格式:pdf
- 大小:55.84 KB
- 文档页数:8
12864液晶显示资料及程序控制器2010-12-30 10:39:29 阅读36 评论0 字号:大中小订阅硬件连接方式是:并口直接访问。
这是汉字显示程序:#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(uchardata_add);void read_page(uchardata_add);void delays(ucharcont);void main(){while(1){set12864(); //初始化12864write_page(0); //写入一页数据read_page(0x30); //读出一页数据到内部RAMdelays(2); //延时2swrite_page(64); //写入下一页数据delays(2); //延时2s}}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(uchardata_add){bit flag=1; //12864空闲标志位ucharnum=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(uchardata_add){bit flag=1; //12864空闲标志位ucharnum=64; //64个循环,连续写入32个汉字或是64个西文字符write_command(0x80);for(;num>0;num--){while(flag) //检查12864是否空闲flag="XBYTE"[comre]&0x80;DBYTE[data_add++]=XBYTE[datare]; //空闲传送数据}}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,0x00,0x00,0x00,0x00, 0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x80,0x00,0x00,0x00, 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x07,0xFF,0xFF, 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x0B,0xFF, 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x1F, 0x01,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00, 0x01,0xFF,0xFF,0xFF,0xF3,0x79,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00, 0x03,0xFF,0xFF,0xFF,0xE6,0x62,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,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,0xFF,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,0xFF,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,0xFF,0xFF,0xFF,0xC9, 0xFB,0xFF,0xF1,0xF8,0x8C,0xD8,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x5F,0x7C,0xEE,0xFF, 0xC7,0xFF,0xBC,0x0F,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFE,0xEF,0xFF, 0xFF,0xE7,0xDC,0x07,0xE7,0xF8,0x12,0x7F,0xFF,0xFF,0xFF,0xFF,0x47,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,0xFF,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,0x0F,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,0x3F,0xFF,0xC0, 0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0xFF,0xF8,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x1F,0xFE,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x78,0x02,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01 };void set12864();void setxy(ucharx,uchar y);void write_command(uchar command);void write_16byte(uintdata_add);void delays(uchar count);void main(){ucharx,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(ucharx,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(uintdata_add){bit flag="1"; //12864空闲标志位ucharnum="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);}。
12864串口程序#ifndef lcd12864_H#define lcd12864_H#includesbit SCLK=P2^4; //E :使能信号;串行时钟输入sbit SID=P2^5; //RW :读/写选择端:H 读; L 写; 串行数据线sbit CS=P2^6; //RS :寄存器选择端:H 数据; L 指令; 片选,低有效extern void LCDsendb(uint8 tdata) //一个发送8bit{uint8 i;for(i=0;i<8;i++){SID=tdata&0x80;tdata<<=1;_delay_us(1);SCLK=0;_delay_us(1);SCLK=1;_delay_us(1);}}extern void LCDsendcm(uint8 command) //写命令{CS=1;LCDsendb(0xf8);LCDsendb(command&0xf0);LCDsendb((command<<4)&0xf0);CS=0;}extern void LCDsendda(uint8 w_data) //写数据{CS=1;LCDsendb(0xfa);LCDsendb(w_data&0xf0);LCDsendb((w_data<<4)&0xf0);CS=0;}extern void outstr(uint8 *p) //输出字符串{while(*p>0)LCDsendda(*p++);}/*extern void LCDinch(uint32 num) //int转化为char {uint8 a[11]={'0'};int i=0;if(num==0) LCDsendda('0');while(num){a[i++]=num%10+48; num/=10;}while(i) LCDsendda(a[--i]);}*/extern void LCDflch(float number) //float转化为char { floatnum=number;uint8 a[11]={'0'};int i=0; uint32 num1;num1=(uint32)num;if(num1==0) LCDsendda('0');while(num1){a[i++]=num1%10+48; num1/=10;}while(i) LCDsendda(a[--i]);LCDsendda('.');LCDsendda((uint16)((uint32)(10*num)%10)+48);LCDsendda((uint16)((uint32)(100*num)%10)+48);LCDsendda((uint16)((uint32)(1000*num)%10)+48);LCDsendda((uint16)((uint32)(10000*num)%10)+48);}extern void LCDinit() //LCD12864初始化{_delay_ms(200);LCDsendcm(0x30); //选择基本指令集,选择8bit数据流_delay_us(1);LCDsendcm(0x0d); //开显示(有游标、反白)_delay_us(1);LCDsendcm(0x01); //清除显示,并且设定地址指针为00H _delay_ms(5);LCDsendcm(0x06); //设定游标的移动方向及指定显示的移位_delay_us(1);LCDsendcm(0x80);_delay_us(1);}#endif。
此文档,是本人根据12864资料编写而成,在51单片机上面调试通过成功,,由于51的内存有限,后续两幅图占用内存太大,所以注释。
#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit SID=P1^1; //RWsbit SCLK=P1^0;//Eint i,j,k,len;unsigned char code pic[];unsigned char code pic1[];unsigned char code IDA T[]={"陕西理工电子科技""单片机小液晶系列""中文字库测试程序""恭喜发财工作顺利"};void DisPhoto(unsigned char code *adder) ;void lcd_chine(unsigned char code *adder1);void Draw_Point(int x,int y,int z,int type); //画点坐标点,修正位,及是否为画点,还是消除void Draw_Line(int x,int y,int len,int typ);void delay_ms(uint x){uint i,j;for(j=0;j<x;j++)for(i=0;i<110;i++);}void write_lcd(uchar date,uint type) //type 0为命令,1为数据{switch(type){case 0:{uchar i;uchar i_data;i_data=0xf8;// CS=1;SCLK=0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data<<=1;}i_data=date;i_data&=0xf0;//先传送高四位,屏弊低四位for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data<<=1;}i_data=date;i_data<<=4; //将低四位移向高四位并传送for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data<<=1;}// CS=0;}break;case 1:{uchar i;uchar i_data;i_data=0xfa;// CS=1;SCLK=0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data<<=1;}i_data=date;i_data&=0xf0;//先传送高四位,屏弊低四位for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0; //给一个脉冲SCLK=1;i_data<<=1;}i_data=date;i_data<<=4; //将低四位移向高四位并传送for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data<<=1;}// CS=0;}break;}}/***********************************************************************/ /* 图形显示清屏*/ /*************************************************************************/ void clear_lcd(){for(k=0;k<2;k++){for(i=0;i<32;i++) //{write_lcd((0x80 + i),0); //SET 垂直地址VERTICAL ADD 高度if(!k)write_lcd(0x80,0);elsewrite_lcd(0x88,0); //SET 水平地址HORIZONTAL ADD 宽首地址for(j=0;j<16;j++) // 共左向右共十条竖线write_lcd(0x00,1); //线宽四位二进制表示}}}/******************************************************************//* 液晶初始化-字库*//******************************************************************/void lcd_init1(){write_lcd(0x30,0);write_lcd(0x30,0); //基本指令集write_lcd(0x06,0); //显示右移一位write_lcd(0x0c,0); //显示开,游标关,反白关write_lcd(0x01,0); //清屏}/******************************************************************//* 液晶初始化-图形*//******************************************************************/void lcd_init2(void) //LCD显示图片(扩展)初始化程序{ write_lcd(0x34,0);write_lcd(0x36,0); //扩充指令集write_lcd(0x3E,0); //(DL=8BITS,RE=1,G=1)write_lcd(0x02,0); //清DDRAM}/***************************************************************************/ /* 主函数**/ /***************************************************************************/void main(){lcd_init2(); //初使化图片指令集clear_lcd();// 清屏while(1){Draw_Point(0,40,7,1); //画点delay_ms(3000);Draw_Point(0,40,7,0); //取消点的绘制//DisPhoto(pic);Draw_Line(0,42,10,1) ; //画线delay_ms(3000);Draw_Line(0,42,10,0) ; //消线/* lcd_init1();lcd_chine(IDAT);delay_ms(2000);write_lcd(0x01,0); //清屏*/}}void lcd_chine(unsigned char code *adder1){uchar i;write_lcd(0x80,0); //Set Graphic Display RAM Addressdelay_ms(1);for(i=0;i<32;i++){write_lcd(*adder1,1);adder1++;}write_lcd(0x90,0); //Set Graphic Display RAM Addressfor(i=32;i<64;i++){write_lcd(*adder1,1);adder1++;}}/************************************************************************/ /* 显示图形点阵*/ /************************************** *********************************/void DisPhoto(unsigned char code *adder){//*******显示上半屏内容设置for(i=0;i<32;i++) //{write_lcd((0x80 + i),0); //SET 垂直地址VERTICAL ADD 高度write_lcd(0x80,0); //SET 水平地址HORIZONTAL ADD 宽for(j=0;j<16;j++){write_lcd(*adder,1);adder++;}}//*******显示下半屏内容设置for(i=0;i<32;i++) // 竖直高度是两个32点2X32{write_lcd((0x80 + i),0); //SET 垂直地址VERTICAL ADDwrite_lcd(0x88,0); //SET 水平地址HORIZONTAL ADDfor(j=0;j<16;j++){write_lcd(*adder,1);adder++;}}}/*************************************************************************/ /* 画图*/ /***********************************************************************/ void Draw_Point(int x,int y,int z,int type) //z为修正量,向右移动的位数{switch (z){case 0:z=1; break;case 1:z=2; break;case 2:z=4;break;case 3:z=8;break;case 4:z=0x10; break;case 5:z=0x20; break;case 6:z=0x40;break;case 7:z=0x80;break;}if (y>32){y-=32;x=x+8;}write_lcd(0x80+y,0); //Y坐标write_lcd(0x80+x,0); //X坐标switch(type){ case 1:write_lcd(0x00+z,1);break;case 0:write_lcd(0x00,1);break;}}/******************************************************************** **//* 画直线*//*********************************************************************/ void Draw_Line(int x,int y,int len,int type){ if (y>32){y-=32;x=x+8;}write_lcd(0x80+y,0);write_lcd(0x80+x,0);switch(type){ case 1:for(i=0;i<len;i++){write_lcd(0xff,1);}break;case 0:for(i=0;i<len;i++){write_lcd(0x00,1);}break;}}/*unsigned char code pic[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x6E,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x81,0x00,0x00,0x27,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x83,0x00,0x00,0xC2,0xE0,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00, 0x00,0x00,0x8E,0x00,0x00,0x83,0x80,0xF8,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00, 0x00,0x00,0xF0,0x00,0x00,0x7E,0x06,0x0C,0x00,0x00,0xFE,0x00,0x10,0x00,0x00,0x00, 0x00,0x3B,0x80,0x00,0x00,0x3F,0xE3,0x84,0x00,0x20,0x06,0x00,0x10,0x00,0x00,0x00, 0x00,0x00,0x80,0x00,0x00,0x05,0x00,0x7C,0x00,0x18,0x1C,0x00,0x10,0x00,0x00,0x00, 0x00,0x00,0x80,0x00,0x00,0x0D,0x80,0x00,0x00,0x0C,0x70,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x00, 0x00,0x00,0x80,0x00,0x00,0x00,0x60,0x00,0x00,0x41,0x80,0x80,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x20,0x00,0x00,0x00, 0x00,0x00,0x80,0x00,0x00,0x00,0x3F,0xE0,0x00,0x06,0x40,0x00,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x04,0x40,0x00,0x20,0x00,0x00,0x00, 0x00,0x00,0x80,0x00,0x00,0x04,0x00,0x20,0x00,0x18,0x40,0x00,0x20,0x00,0x00,0x00, 0x0F,0x76,0xEF,0xFF,0x00,0x02,0x7E,0x20,0x00,0x70,0x40,0x80,0x20,0x00,0x00,0x00, 0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x20,0x00,0x41,0x40,0x20,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x40,0x00,0x00,0xC0,0x00,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x0A,0x40,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0xE8,0x00,0x3C,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x18,0x80,0x00,0x02,0x3F,0x08,0x00,0xF8,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0xFF,0x00,0x02,0x00,0x08,0x00,0x0C,0x81,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x02,0x08,0x00,0x00,0x81,0x00,0x07,0x80,0x00, 0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x1E,0x10,0x03,0x39,0x81,0x10,0x00,0xC0,0x00, 0x00,0x00,0x00,0x0F,0xB0,0x00,0x01,0x04,0x20,0x01,0x88,0x00,0x10,0x00,0x40,0x00, 0x00,0x00,0x00,0x01,0x0C,0x00,0x00,0x44,0x60,0x00,0x08,0x00,0x10,0x00,0xC0,0x00, 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3D,0xF8,0x00,0x3B,0xD0,0x20,0x00,0x80,0x00, 0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00, 0x00,0x00,0x00,0x0D,0xE0,0x00,0x00,0x04,0x00,0x00,0x17,0x00,0x10,0x01,0x00,0x00, 0x00,0x00,0x00,0x3C,0x20,0x00,0x00,0x04,0x00,0x08,0x11,0x00,0x30,0x01,0x00,0x00, 0x00,0x00,0x00,0x05,0xA0,0x00,0x00,0x04,0x00,0x08,0x1F,0x00,0x20,0x01,0x80,0x00, 0x00,0x00,0x00,0x02,0xA0,0x00,0x00,0x03,0x80,0x08,0x86,0x01,0xC0,0x20,0x80,0x00, 0x00,0x00,0x00,0x03,0xA0,0x00,0x00,0x00,0x6D,0xB8,0x02,0x20,0x00,0x0B,0x80,0x00, 0x00,0x00,0x00,0x02,0xA0,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x87,0x80,0x00, 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x10,0xC4,0xC0,0x00, 0x00,0x00,0x00,0x20,0x20,0x7F,0xF0,0x0F,0x00,0x06,0x00,0x00,0x10,0x4D,0x20,0x00, 0x00,0x00,0x03,0xFF,0xFF,0xFE,0x00,0x11,0xC0,0xE4,0x00,0x00,0x10,0x4D,0x20,0x00, 0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x10,0x40,0x1F,0xE0,0x00,0x00,0xCF,0x20,0x00, 0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x10,0x40,0x0C,0x20,0x00,0x0F,0x88,0x20,0x80, 0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x10,0x4E,0x1C,0x0C,0x00,0x00,0x08,0x00,0x80, 0x00,0x00,0x00,0x3D,0xFE,0x08,0x00,0x10,0x5A,0x2F,0x1A,0x00,0x00,0x08,0x01,0x00, 0x00,0x00,0x00,0x00,0x40,0xF8,0x00,0x10,0xDE,0x43,0x9F,0x00,0x00,0x08,0x01,0x00, 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x1F,0x9D,0x80,0x04,0x00,0x00,0x0E,0x01,0x00, 0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,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,};unsigned char code pic[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x02,0xFF,0xFF, 0xBF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x1F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x7F,0xE0,0x7F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x3F,0xC0,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0x81,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x03,0xFF,0x81,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x3F,0xFF,0xBF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x40,0x00,0xFF,0xF7,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x3F,0x3F,0xE7,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x0F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFC,0x27,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xFF,0xC7,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0x7F,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFE,0x07,0xFE,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x07,0xFE,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x01,0xF8,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x79,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x3D,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF, 0x07,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x33,0xFF,0xFF, 0x07,0xFF,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x3B,0xFF,0xFF, 0x00,0xFF,0xD0,0x06,0x04,0x06,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xE0,0x1E,0x3F,0xFF, 0x80,0x7E,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0x00,0x07,0x0F,0xFF, 0xC0,0x7E,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0x80,0x00,0x0F,0xFF, 0xE0,0x3E,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xBC,0xE0,0x00,0x0F,0xFF, 0xFC,0x1C,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0x3C,0x00,0x0F,0xFF, 0xFC,0x38,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x0C,0x00,0x0F,0xFF, 0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x1F,0x00,0x3F,0xFF, 0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x1F,0x80,0xFF,0xFF, 0xFE,0x80,0x00,0x00,0x01,0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xE0,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xF0,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xF8,0x00,0x00,0x00,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFC,0x00,0x03,0xFE,0xF8,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xF8,0xFE,0x00,0x00,0x07,0xF8,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x60,0x41,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xC0,0x00,0x03,0xC0,0x80,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0, 0xFF,0xFF,0xE0,0x00,0x07,0x80,0x80,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x73,0x7F,0xF8,0x00,0x03,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00, 0x00,0x07,0xFE,0x00,0x02,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x40,0x00, 0x00,0x00,0xFF,0x80,0x02,0x01,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x80,0x00, 0x30,0x3F,0xFF,0xE0,0x04,0x02,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFB,0x00,0x00, 0x38,0x3F,0xFF,0xF0,0x0C,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00, 0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00, 0xFF,0xFF,0xFC,0x00,0x00,0x70,0x00,0x00,0x7F,0xFF,0xFF,0xF3,0xFF,0xFC,0x00,0x00, 0xFF,0xFF,0x98,0x00,0x00,0x30,0x00,0x00,0xFF,0xFF,0xFF,0x93,0xFF,0xF0,0x00,0x00, 0xFF,0xFF,0xE4,0x00,0x00,0x70,0x00,0x30,0xFF,0xFF,0xFF,0xF3,0x2A,0x58,0x00,0x00, 0xFF,0xFF,0xF8,0x00,0x00,0xE0,0x00,0x00,0x03,0xFF,0xFE,0x3D,0xFF,0xF8,0x00,0x00, 0xFF,0xFF,0xFE,0x00,0x00,0xE0,0x00,0x00,0x00,0x7F,0xFF,0xFB,0xFF,0xF0,0x00,0x00, 0xFF,0x80,0x7F,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x7F,0x80,0x03, 0xFE,0xFF,0x9F,0x80,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3F,0xC0,0x3F, 0xFE,0x7F,0xFF,0xF8,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x70, 0xF8,0x3F,0xFF,0xFF,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00, 0xC0,0x0F,0xF0,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,}; */。
头文件:#ifndef _jlx_#define _jlx_#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define lcd12864_rs 2 /*接口定义:lcd_rs 就是LCD 的rs*/#define lcd12864_sclk 4 /*接口定义:lcd_sclk 就是LCD 的sclk*/#define lcd12864_sid 3 /*接口定义:lcd_sid 就是LCD 的sid*/#define lcd12864_reset 1 /*接口定义:lcd_reset 就是LCD 的reset*/#define lcd12864_cs1 0 /*接口定义:lcd_cs1 就是LCD 的cs1*/#define rom12864_out 1 /*字库IC 接口定义:Rom_OUT 就是字库IC 的SO*/#define rom12864_in 0 /*字库IC 接口定义:Rom_IN 就是字库IC 的SI*/#define rom12864_sck 2 /*字库IC 接口定义:Rom_SCK 就是字库IC 的SCLK*/#define rom12864_cs 3 /*字库IC 接口定义Rom_CS 就是字库IC 的CS#*/#define lcd12864_rs_1() P0|=(1<<lcd12864_rs) //接口#define lcd12864_rs_0() P0&=~(1<<lcd12864_rs)#define lcd12864_sclk_1() P0|=(1<<lcd12864_sclk)#define lcd12864_sclk_0() P0&=~(1<<lcd12864_sclk)#define lcd12864_sid_1() P0|=(1<<lcd12864_sid)#define lcd12864_sid_0() P0&=~(1<<lcd12864_sid)#define lcd12864_reset_1() P0|=(1<<lcd12864_reset)#define lcd12864_reset_0() P0&=~(1<<lcd12864_reset)#define lcd12864_cs1_1() P0|=(1<<lcd12864_cs1)#define lcd12864_cs1_0() P0&=~(1<<lcd12864_cs1)#define rom12864_out_1() P2|=(1<<rom12864_out) //字库#define rom12864_out_0() P2&=~(1<<rom12864_out)#define rom12864_in_1() P2|=(1<<rom12864_in)#define rom12864_in_0() P2&=~(1<<rom12864_in)#define rom12864_sck_1() P2|=(1<<rom12864_sck)#define rom12864_sck_0() P2&=~(1<<rom12864_sck)#define rom12864_cs_1() P2|=(1<<rom12864_cs)#define rom12864_cs_0() P2&=~(1<<rom12864_cs)#define rom12864_ifout_1 (P2&(1<<rom12864_out)) //字库读取判断/*写指令到LCD 模块*/void transfer_command_lcd(int data1);/*写数据到LCD 模块*/void transfer_data_lcd(int data1);/*延时*/void delay(int i);/*LCD 模块初始化*/void initial_lcd();/*全屏清屏*/void clear_screen();//地址void lcd_address(uint page,uint column);/****送指令到晶联讯字库IC***/void send_command_to_ROM( uchar datu );/****从晶联讯字库IC 中取汉字或字符数据(1 个字节)***/static uchar get_data_from_ROM( );/*从相关地址(addrHigh:地址高8 位,addrMid:地址中8 位,addrLow:地址8 位,共24 位)中连续读出DataLen 个字节的数据到pBuff 的地址*/void get_n_bytes_data_from_ROM(uchar addrHigh,uchar addrMid,uchar addrLow,uchar*pBuff,uchar DataLen );/*显示16x16 点阵图像、汉字、生僻字或16x16 点阵的其他图标*/void display_graphic_16x16(uint page,uint column,uchar *dp);/*显示8x16 点阵图像、ASCII, 或8x16 点阵的自造字符、其他图标*/void display_graphic_8x16(uint page,uchar column,uchar *dp);/*显示5*7 点阵图像、ASCII, 或5x7 点阵的自造字符、其他图标*/void display_graphic_5x7(uint page,uchar column,uchar *dp);/*显示一串16x16点阵汉字或8x16的ASCII字(静态)*/void display_GB2312_string(uchar y,uchar x,uchar *text);/*显示一串5x7点阵的ASCII 字(静态)*/void display_string_5x7(uchar y,uchar x,uchar *text);///*显示128x64点阵图像*///void display_128x64(uchar *dp);void lcd_int(uchar y,uchar x ,int dat);//extern ulong fontaddr;#endif.C文件:#include <reg52.h>#include "jlx.h"/*写指令到LCD 模块*/void transfer_command_lcd(int data1) {char i;lcd12864_rs_0();for(i=0;i<8;i++){lcd12864_sclk_0();if(data1&0x80){lcd12864_sid_1();}else{lcd12864_sid_0();}lcd12864_sclk_1();data1<<=1;//=data1}}/*写数据到LCD 模块*/void transfer_data_lcd(int data1) {char i;lcd12864_rs_1();for(i=0;i<8;i++){lcd12864_sclk_0();if(data1&0x80){lcd12864_sid_1();}else{lcd12864_sid_0();}lcd12864_sclk_1();data1<<=1;//=data1}}/*延时*/void delay(int i){int j,k;for(j=0;j<i;j++)for(k=0;k<500;k++);}/*LCD 模块初始化*/void initial_lcd(){lcd12864_cs1_0();rom12864_cs_1();lcd12864_reset_0(); /*低电平复位*/delay(20);lcd12864_reset_1(); /*复位完毕*/delay(20);transfer_command_lcd(0xe2); /*软复位*/delay(5);transfer_command_lcd(0x2c); /*升压步聚1*/delay(5);transfer_command_lcd(0x2e); /*升压步聚2*/delay(5);transfer_command_lcd(0x2f); /*升压步聚3*/delay(5);transfer_command_lcd(0x24); /*粗调对比度,可设置范围0x20~0x27*/transfer_command_lcd(0x81); /*微调对比度*/transfer_command_lcd(0x1a); /*0x1a,微调对比度的值,可设置范围0x00~0x3f*/ transfer_command_lcd(0xa2); /*1/9 偏压比(bias)*/transfer_command_lcd(0xc8); /*行扫描顺序:从上到下*/transfer_command_lcd(0xa0); /*列扫描顺序:从左到右*/transfer_command_lcd(0x40); /*起始行:第一行开始*/transfer_command_lcd(0xaf); /*开显示*/lcd12864_cs1_1();}/*全屏清屏*/void clear_screen(){unsigned char i,j;lcd12864_cs1_0();rom12864_cs_1();for(i=0;i<9;i++){transfer_command_lcd(0xb0+i);transfer_command_lcd(0x10);transfer_command_lcd(0x00);for(j=0;j<132;j++){transfer_data_lcd(0x00);}}lcd12864_cs1_1();}/*显示16x16 点阵图像、汉字、生僻字或16x16 点阵的其他图标*/void display_graphic_16x16(uint page,uint column,uchar *dp){uint i,j;uchar page_address;uchar column_address_L,column_address_H;page_address = 0xb0+page-1;column_address_L =column&0x0f;column_address_H =((column>>4)&0x0f)+0x10;lcd12864_cs1_0();rom12864_cs_1();for(j=0;j<2;j++){transfer_command_lcd(page_address+j); /*设置页地址*/transfer_command_lcd(column_address_H); /*设置列地址的高4 位*/transfer_command_lcd(column_address_L); /*设置列地址的低4 位*/for (i=0;i<16;i++){transfer_data_lcd(*dp); /*写数据到LCD,每写完一个8 位的数据后列地址自动加1*/dp++;}}lcd12864_cs1_1();}/*显示8x16 点阵图像、ASCII, 或8x16 点阵的自造字符、其他图标*/void display_graphic_8x16(uint page,uchar column,uchar *dp){uint i,j;uchar page_address;uchar column_address_L,column_address_H;lcd12864_cs1_0();page_address = 0xb0+page-1;column_address_L =column&0x0f;column_address_H =((column>>4)&0x0f)+0x10;for(j=0;j<2;j++){transfer_command_lcd(page_address+j); /*设置页地址*/transfer_command_lcd(column_address_H); /*设置列地址的高4 位*/transfer_command_lcd(column_address_L); /*设置列地址的低4 位*/for (i=0;i<8;i++){transfer_data_lcd(*dp); /*写数据到LCD,每写完一个8 位的数据后列地址自动加1*/dp++;}}lcd12864_cs1_1();}/*显示5*7 点阵图像、ASCII, 或5x7 点阵的自造字符、其他图标*/void display_graphic_5x7(uint page,uchar column,uchar *dp){uint col_cnt;uchar page_address;uchar column_address_L,column_address_H;page_address = 0xb0+page-1;lcd12864_cs1_0();column_address_L =column&0x0f;column_address_H =((column>>4)&0x0f)+0x10;transfer_command_lcd(page_address); /*Set Page Address*/transfer_command_lcd(column_address_H); /*Set MSB of column Address*/transfer_command_lcd(column_address_L); /*Set LSB of column Address*/for (col_cnt=0;col_cnt<8;col_cnt++){transfer_data_lcd(*dp);dp++;}lcd12864_cs1_1();}/****送指令到晶联讯字库IC***/void send_command_to_ROM( uchar datu ){uchar i;for(i=0;i<8;i++ ){if(datu&0x80){rom12864_in_1();}else{rom12864_in_0();}datu = datu<<1;rom12864_sck_0();rom12864_sck_1();}}/****从晶联讯字库IC 中取汉字或字符数据(1 个字节)***/static uchar get_data_from_ROM( ){uchar i;uchar ret_data=0;rom12864_sck_1();for(i=0;i<8;i++){rom12864_out_1();rom12864_sck_0();ret_data=ret_data<<1;if( rom12864_ifout_1 ){ret_data=ret_data+1;}else{ret_data=ret_data+0;}rom12864_sck_1();}return(ret_data);}/*从相关地址(addrHigh:地址高8 位,addrMid:地址中8 位,addrLow:地址8 位,共24 位)中连续读出DataLen 个字节的数据到pBuff 的地址*//*连续读取*/void get_n_bytes_data_from_ROM(uchar addrHigh,uchar addrMid,uchar addrLow,uchar*pBuff,uchar DataLen){uchar i;rom12864_cs_0();lcd12864_cs1_1();rom12864_sck_0();send_command_to_ROM(0x03);send_command_to_ROM(addrHigh);send_command_to_ROM(addrMid);send_command_to_ROM(addrLow);for(i = 0; i < DataLen; i++ ){*(pBuff+i) =get_data_from_ROM();}rom12864_cs_1();}/******************************************************************//******************************************************************/ulong fontaddr=0;//显示一串16x16点阵汉字或8x16的ASCII字void display_GB2312_string(uchar y,uchar x,uchar *text){uchar i= 0;uchar addrHigh,addrMid,addrLow ;uchar fontbuf[32];while((text[i]>0x00)){if(((text[i]>=0xb0) &&(text[i]<0xf7))&&(text[i+1]>=0xa1)){/*国标简体(GB2312)汉字在高通字库IC 中的地址由以下公式来计算:*//*Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0*//*由于担心8 位单片机有乘法溢出问题,所以分三部取地址*/fontaddr = (text[i]- 0xb0)*94;fontaddr += (text[i+1]-0xa1)+846;fontaddr = (ulong)(fontaddr*32);addrHigh = (fontaddr&0xff0000)>>16; /*地址的高8 位,共24 位*/addrMid = (fontaddr&0xff00)>>8; /*地址的中8 位,共24 位*/addrLow = fontaddr&0xff; /*地址的低8 位,共24 位*/get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32 );/*取32 个display_graphic_16x16(y,x,fontbuf); /*显示汉字到LCD 上,y 为页地址,x 为列地址,fontbuf[]为数据*/i+=2;x+=16;}else if((text[i]>=0x20) &&(text[i]<=0x7e)){unsigned char fontbuf[16];fontaddr = (text[i]- 0x20);fontaddr = (unsigned long)(fontaddr*16);fontaddr = (unsigned long)(fontaddr+0x3b7c0);addrHigh = (fontaddr&0xff0000)>>16;addrMid = (fontaddr&0xff00)>>8;addrLow = fontaddr&0xff;get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,16 );/*取16 个字节的数据,存到"fontbuf[32]"*/display_graphic_8x16(y,x,fontbuf);/*显示8x16 的ASCII 字到LCD 上,y 为页地址,x 为列地址,fontbuf[]为数据*/i+=1;x+=8;}elsei++;}}//显示一串5x7点阵的ASCII 字void display_string_5x7(uchar y,uchar x,uchar *text){unsigned char i= 0;unsigned char addrHigh,addrMid,addrLow ;while((text[i]>0x00)){if((text[i]>=0x20) &&(text[i]<=0x7e)){unsigned char fontbuf[8];fontaddr = (text[i]- 0x20);fontaddr = (unsigned long)(fontaddr*8);fontaddr = (unsigned long)(fontaddr+0x3bfc0);addrHigh = (fontaddr&0xff0000)>>16;addrMid = (fontaddr&0xff00)>>8;addrLow = fontaddr&0xff;get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,8); /*取8display_graphic_5x7(y,x,fontbuf); /*显示5x7 的ASCII 字到LCD 上,y 为页地址,x 为列地址,fontbuf[]为数据*/i+=1;x+=8;}elsei++;}}//地址void lcd_address(uint page,uint column){column=column-0x01;transfer_command_lcd(0xb0+page-1); /*设置页地址*/transfer_command_lcd(0x10+(column>>4&0x0f)); /*设置列地址的高4位*/transfer_command_lcd(column&0x0f); /*设置列地址的低4位*/}///*显示128x64点阵图像*///void display_128x64(uchar *dp)//{// uint i,j;// lcd12864_cs1_0();// for(j=0;j<8;j++)// {// lcd_address(j+1,1);// for (i=0;i<128;i++)// {// transfer_data_lcd(*dp); /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/// dp++;// }// }// lcd12864_cs1_1();//}void lcd_int(uchar y,uchar x ,int dat){uchar i=0,j=0,m=0; // ,t=0uchar xx=0,yy=0;uchar string[5]={0},a[5]={0};//uchar b[1]={0};xx=x;yy=y;if(dat>=0){if(dat==0){display_string_5x7(yy,xx,"0");}else{for(i=1;dat>0;i++){string[i]=dat%10;dat=dat/10;}if(i!=0){for(m=i-1,j=0;m>0;m--,j++){a[j]=0x30+string[m];}}display_string_5x7(yy,xx,a);}}else{display_string_5x7(yy,xx,"-");dat=-dat;xx=xx+8;for(i=1;dat>0;i++){string[i]=dat%10;dat=dat/10;}if(i!=0){for(m=i-1,j=0;m>0;m--,j++){a[j]=0x30+string[m];}}if(i==0){display_string_5x7(yy,xx,"0");}else{display_string_5x7(yy,xx,a);}}}。
随着工业控制可视化的提高,液晶已经逐步成为数码管的代替者。
为了使大家能够更好更快的掌握12864的控制技术,我们实验室在A VR开发板的基础上编写一下例程,以供大家学习参考。
当然,您为了学习该程序,应该不会吝啬那么几枚金币,也当是给我们的工作一点点酬劳罢了。
该工程是基于A VRmega16单片机的,ICC开发环境,为了使程序完整,特此将两个头文件也添加在文档中。
1、程序主函数体,包括端口的连接序号,大家可以根据提示连接,下载程序后可直接使用/**********************************************液晶12864实验型号:JCM12864M晶振: 内部1.0000Mhz连接:RS PC6,RW PC5,EN PC4,DATA PD0-7***********************************************//******************头文件**********************/#include <iom16v.h>#include <macros.h>#include "pic.h" //图片的文件#include "delay.h" //延时函数的文件/******************宏定义**********************/#define uchar unsigned char#define uint unsigned int#define j_com 0x30 //功能设定,基本指令#define k_com 0x34 //功能设定,扩展指令#define t_com 0x36 //功能设定,图形指令#define show_on 0x0e //显示开关,整体显示on,游标on,游标位on#define clean 0x01 //清屏,AC归0#define AC_0 0x03 //AC归0,不改变DDRAM内容#define cursor 0x06 //进入设定点,写入时,游标右移动#define RS_H PORTA|=BIT(5) //RS=1,选择命令#define RS_L PORTA&=~BIT(5) //RS=0,选择数据#define RW_H PORTA|=BIT(6) //R/W=1,读#define RW_L PORTA&=~BIT(6) //R/W=0,写#define EN_H PORTA|=BIT(7) //EN=1,使能关#define EN_L PORTA&=~BIT(7) //EN=0,使能开const uchar AC[]={ //基本指令下屏幕中各行列的寄存器地址(显示汉字时)0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,};/************************函数声明**************************/void delay_1us(void);void delay_nus(uint n);void delay_1ms(void);void delay_nms(uint n);void Lcd_init(void);void M16_init(void);void send_c_d(uchar com_dat,uchar c_d); //写指令或数据void set_xy(uchar x,uchar y); //设定显示位置void show_str(uchar x,uchar y,uchar *str); //显示字符串void show_num(uchar x,uchar y,int num); //显示数字int范围-32767~32767void show_pic(const uchar pic1[]); //显示图片void show_2pic(const uchar pic1[],const uchar pic2[]); //图片叠加void lcdtest(void);void lcdcls(void);/**********************************************************//******************主函数**********************/void main(void){int a=0,i;M16_init();Lcd_init();delay_nms(5); //Lcd初始化中清屏需4.6mswhile(1){lcdtest(); //黑屏可以检测是否有坏点,呵呵,一般没必要delay_nms(1000);lcdcls(); //清屏show_pic(qingyuan); //开机画面delay_nms(1000);lcdcls(); //清屏show_str(1,1,"欢* 28℃");show_str(2,1,"迎* 技术物理系");show_str(3,1,"光* 507实验室");show_str(4,1,"临* ");show_pic(wenduji);delay_nms(2000);send_c_d(clean,1); //清除汉字delay_nus(200); //清除汉字的延时,至少150us,否则乱码}}/**********************************************//*******************M16初始化******************/void M16_init(void){PORTA = 0x00;DDRA = 0xFF;PORTB = 0x00;DDRB = 0xFF;PORTC = 0x00;DDRC = 0xFF;PORTD = 0x00;DDRD = 0xFF;}/**********************************************//*******************lcd初始化******************/void Lcd_init(void){send_c_d(j_com,1); //功能设定,基本指令send_c_d(show_on,1); //显示开关,整体显示on,游标on,游标位onsend_c_d(clean,1); //清屏,AC归0send_c_d(cursor,1); //进入设定点,写入时,游标右移动}/**********************************************//*****************写指令或数据*****************/void send_c_d(uchar com_dat,uchar c_d){if(c_d==1){RS_L;} //c_d=0时选择指令else {RS_H;} //c_d=1时选择数据RW_L; //写PORTD=com_dat; //指令或数据送到PD端口EN_H;delay_1us(); //在晶振为1MHz的最佳延时,晶振为8MHz时,需要仔细调试EN_L; //下降沿写入}/**********************************************//*******************设定显示位置***************/void set_xy(uchar x,uchar y) //行x从1-4,列y从1-8{uchar a;a=8*x+y-9; //对x,y调整send_c_d(AC[a],1); //查表AC的实际寄存器地址/* //第二种方法不查表直接计算if((x==1)||(x==3))a=8*x+y-9;if((x==2)||(x==4))a=8*x+y-1;send_c_d(0x80+a,1);*/}/**********************************************//****************显示字符串*show_str***********/void show_str(uchar x,uchar y,uchar *str){uchar *p; //定义一个指针p=str; //指针指向字符串在M16内存中的地址set_xy(x,y); //将要放入液晶的寄存器地址while (*p!=0) //判断指针是否到了字符串的末尾{send_c_d(*p,0); //写入指针指向的字符p=++str; //str地址加1后给指针}}/**********************************************//****************显示数字*show_num*************/void show_num(uchar x,uchar y,int num){uchar temp=0,flag=0; //设置一个标志set_xy(x,y);if(num<0){send_c_d(0x2d,0); //显示负号num=-num;}temp=num/10000; //整除取万位值=tempif(flag|temp) //若万位值=0则不执行显示万位值,否则会显示万位值为0{ //若万位值!=0则发送万位值的ASCII 码send_c_d(0x30+temp,0);flag = 1; //若执行显示了万位,说明num为5位数,标志=1,千百十个位全部显示}num-=temp*10000; //num=去除万位后的余数temp=num/1000; //整除取千位值=tempif(flag|temp) //若flag=0千位值=0则不执行显示千位值,否则会显示千位值为0{ //若千位值!=0则发送千位值的ASCII 码send_c_d(0x30+temp,0);flag = 1;}num-=temp*1000;temp=num/100;if(flag|temp){send_c_d(0x30+temp,0);flag = 1;}num-=temp*100;temp=num/10;if(flag|temp){send_c_d(0x30+temp,0);flag = 1;}num-=temp*10;temp=num;if(flag|temp){send_c_d(0x30+temp,0);flag = 1;}if(!flag) //flag=1则以上步骤有执行,则不执行以下send_c_d(0x30,0); //flag=0则以上步骤没有执行,说明num=0,发送"0"的ASCII码}/**********************************************//*****************显示图片*show_pic************/void show_pic(const uchar pic[]){uchar i,j,k;//send_c_d(0x08,1); //把游标关了send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++) //上半屏32行{send_c_d(0x80+i,1); //设定绘图GDRAM的行Y地址(0x80--0x9F)send_c_d(0x80,1); //设定绘图GDRAM的列X地址(0x80--0x87)for(j=0;j<16;j++) //绘图第i行(此处的行实际包括1行像素){k=pic[16*i+j]; //第i行第j列的数据(此处的列实际包括8列像素点)send_c_d(k,0); //写入后X地址自动+1,从0x80--0x87}}for(i=0;i<32;i++) //下半屏32行{send_c_d(0x80+i,1); //设定绘图GDRAM的行Y地址(0x80--0x9F)send_c_d(0x88,1); //设定绘图GDRAM的列X地址(0x88--0x8F)for(j=0;j<16;j++){k=pic[16*i+j+512]; //+512后是下半屏数据send_c_d(k,0); //写入后X地址自动+1,从0x88--0x8F}}send_c_d(j_com,1); //返回基本指令}/**********************************************//**************两幅图叠加*show_2pic************/void show_2pic(const uchar pic1[],const uchar pic2[]){uchar i,j,k;send_c_d(0x08,1); //把游标关了send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x80,1);for(j=0;j<16;j++){k=pic1[16*i+j]|pic2[16*i+j];//两幅图对应处数据相与,实现叠加send_c_d(k,0);}}for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x88,1);for(j=0;j<16;j++){k=pic1[16*i+j+512]|pic2[16*i+j+512];send_c_d(k,0);}}send_c_d(j_com,1); //返回基本指令}/**********************************************//***************图形方式下屏幕全黑*************/void lcdtest(void){uchar i,j;send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x80,1);for(j=0;j<16;j++){send_c_d(0xff,0);}//像素数据为0xFF,全黑}for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x88,1);for(j=0;j<16;j++){send_c_d(0xff,0);}}send_c_d(j_com,1);}/**********************************************//*****************图形方式下清屏***************/void lcdcls(void){uchar i,j;send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x80,1);for(j=0;j<16;j++) send_c_d(0x00,0);//像素数据为0x00,清屏}for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x88,1);for(j=0;j<16;j++) send_c_d(0x00,0);}send_c_d(j_com,1); //返回基本指令}/**********************************************//**********************************************//**********************************************//**********************************************/2、图形代码头文件(我们是郑州轻工业学院的,请尊重我们的知识,当然在大家学会之后,可以随便更改图形代码,但不可以用于其他任何有辱我校声誉的创作之中!)#ifndef _PIC_H_#define _PIC_H_#define uchar unsigned char#define uint unsigned intconst uchar qingyuan[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCD,0xFF,0xFC,0xFF,0xFC,0x1F,0xFF,0xFF,0x3F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0xFF,0xCE,0x7F,0xFE,0x30,0x7F,0xFF,0x3F,0xD7,0x1F,0xFF,0xFF,0xFF,0x8F,0xFF,0x4B,0xFF,0x8E,0x0F,0xFE,0x30,0x7F,0x7B,0x7F,0x86,0x3F,0xFF,0xBF,0xFF,0xCF,0xFF,0x73,0xFF,0xC0,0xC7,0xF8,0x32,0xFF,0x7A,0x7F,0x1F,0x3F,0xFE,0x0F,0xFC,0xC7,0xFF,0x00,0xFF,0x03,0xCF,0xF8,0x60,0xFF,0x5A,0x7F,0x2E,0x7F,0xF8,0x0F,0xFE,0x0B,0xFC,0x1E,0x7F,0x24,0x3F,0xFE,0x00,0xF9,0x18,0x7F,0x6E,0x8F,0xFC,0x7F,0xF6,0x41,0xFD,0x78,0xFF,0x0C,0x7F,0xF8,0x33,0x79,0x14,0x7E,0x0C,0x1F,0xFE,0x3F,0xF0,0x43,0xFC,0xC3,0xFF,0x1D,0x3F,0xE0,0x33,0x3D,0x57,0x7E,0x11,0xFF,0xFE,0x7F,0xF2,0x47,0xF9,0x97,0xFF,0x50,0x3F,0xC4,0xB8,0x3F,0x77,0x7F,0xCE,0x3F,0xFE,0x7F,0xFA,0x1F,0xFB,0xE1,0xFF,0x50,0x3F,0xFD,0xD8,0x7C,0xF7,0x7F,0x9E,0x3F,0xF8,0x01,0xFE,0x40,0x7F,0x81,0xFF,0x39,0x7F,0xF9,0xFB,0xFC,0xF7,0x7E,0x1F,0x7F,0x81,0xF9,0xF0,0x00,0x3F,0x3B,0xFF,0x32,0x7B,ca 0xFF,0xFB,0xFE,0xFF,0x7F,0x5C,0x0F,0xCF,0xFF,0xE1,0xFF,0xFF,0x7B,0xFF,0x26,0xF3,0xFF,0xFB,0xFF,0xFF,0x7F,0x9D,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xBB,0xFF,0xBE,0x03,0xFF,0xFB,0xFF,0xFF,0x3F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0xFF,0xFF,0xDF,0xFF,0xFB,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEC,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCC,0x63,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8C,0x47,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0C,0x47,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0C,0x44,0x3F,0xFF,0xDD,0xFF,0xAF,0xEE,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0xDD,0xFF,0xB7,0xEE,0xFF,0x03,0xC3,0xFF,0xFF,0x7F,0xFF,0xFF,0x0C,0x46,0x1F,0xFF,0xDC,0x7F,0xBF,0xED,0xF8,0x5B,0xF6,0xFF,0x9C,0xB0,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0xC9,0xFF,0x87,0xA4,0x1D,0x0B,0xED,0xFF,0x7D,0xBD,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0x1D,0xF8,0x3F,0x8B,0x5C,0x57,0xC3,0xFF,0x1D,0xBD,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0xCC,0x7F,0x1F,0x65,0x59,0x87,0xF6,0xFF,0xDD,0xBD,0xFF,0xFF,0x0C,0x46,0x1F,0xFF,0x92,0xFE,0xAF,0xCA,0xDC,0xDF,0xC1,0x7F,0xED,0xBD,0xFF, 0xFF,0x0C,0x06,0x1F,0xFF,0x5D,0xFD,0xB7,0x25,0xBD,0x8F,0xFB,0xFF,0xED,0xBB,0xFF, 0xFF,0x0E,0x06,0x1F,0xFF,0xDA,0xF3,0xB9,0xEA,0xB3,0xDF,0xDB,0x7F,0xDE,0xBB,0xFF, 0xFF,0x0F,0x0E,0x1F,0xFF,0x97,0x1F,0xBF,0xEF,0x7E,0x03,0xB3,0xBF,0x3F,0x7B,0xFF,0xFF,0x0F,0x9E,0x1F,0xFF,0xDF,0xFF,0xBF,0xEF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0xFE,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0xFC,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//郑州轻工业学院};const uchar wenduji[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//温度计};#endif3、延时函数头文件#ifndef _DELAY_H_#define _DELAY_H_#define uchar unsigned char#define uint unsigned int#define XTAL 1 //晶振频率,单位MHz/*****************延时程序******************网上流行的延时程序,可大致延时,实际上不准确/*******************************************/void delay_1us() //延时1微妙{asm("nop"); //执行空指令(内嵌汇编指令)}void delay_nus(uint n) //延时n微妙{uint i=0;for(i=0;i<n;i++)delay_1us();}void delay_1ms() //延时1毫秒{uint i;for(i=0;i<(uint)(XTAL*143-2);i++);}void delay_nms(uint n) //延时n毫秒{uint i=0;for(i=0;i<n;i++){delay_1ms();}}/*******************************************/#endif/*********************************************//*********************************************//*********************************************//*********************************************/在使用程序的时候,新建一个工程项目,然后创建两个头文件和一个C文件,然后包含到工程项目中即可。
/***************************************************************************** ///头文件#include <AT89X52.h>#include <string.h>#include <intrins.h>#include "SoundPlay.h"//音乐文件#define uchar unsigned char#define uint unsigned int/***************************************************************************** ///扬声器定义sbit beep = P3^7;//扬声器/***************************************************************************** ///温度传感器定义sbit DQ = P2 ^ 0;//ds18B20uint tvalue;//温度值uchar tflag,flagdat,t,hh1;//温度正负标志/***************************************************************************** ///键盘引脚定义//sbit KEY_1 = P2^7; //左上sbit KEY_2 = P2^6; //左下sbit KEY_3 = P2^5; //右上sbit KEY_4 = P2^4; //右下/****************************************************************************/ //LCD接口定义sbit RS = P1^5;//模式位,为0输入指令,为1输入数据sbit RW = P1^6;//读写位,为0读,为1写sbit E = P1^7;//使能位#define Lcd_Bus P0 //数据总线/***************************************************************************** ///定义DS1302时钟接口sbit clock_clk = P2 ^ 1;//ds1302_clk(时钟线)sbit clock_dat = P2 ^ 2;//ds1302_dat(数据线)sbit clock_Rst = P2 ^ 3;//ds1302_Rst(复位线)//定义累加器A中的各位sbit a0 = ACC ^ 0;sbit a1 = ACC ^ 1;sbit a2 = ACC ^ 2;sbit a3 = ACC ^ 3;sbit a4 = ACC ^ 4;sbit a5 = ACC ^ 5;sbit a6 = ACC ^ 6;sbit a7 = ACC ^ 7;/****************************************************************************/ //定义全局变量unsigned char yy,mo,dd,xq,hh,mm,ss,n,n1,n2,hh1,mm1,year,year1;//定义时间映射全局变量(专用寄存器)unsigned char shi,ge,sec_temp,min_temp,hour_temp,secl,selx,e=0;bit w = 0; //调时标志位static unsigned char menu = 0;//定义静态小时更新用数据变量static unsigned char keys = 0;//定义静态小时更新用数据变量static unsigned char timecount = 0;//定义静态软件计数器变量/****************************************************************************/ /***************************************************************************** *///LCD驱动(DY12864CBL液晶显示屏并口驱动程序)/***************************************************************************** */void chk_busy(){//检查忙位(底层)RS=0;RW=1;E=1;Lcd_Bus=0xff;while((Lcd_Bus&0x80)==0x80);E=0;}/***************************************************************************** */void write_com(unsigned char cmdcode){//写命令到LCD(底层)chk_busy();RS=0;RW=0;E=1;Lcd_Bus=cmdcode;E=0;}/***************************************************************************** */void write_data(unsigned char Dispdata){ //写数据到LCD(底层)chk_busy();RS=1;RW=0;E=1;Lcd_Bus=Dispdata;E=0;}/***************************************************************************** */void lcm_init(){//初始化LCD屏(被调用层)write_com(0x30); //选择8bit数据流write_com(0x0c); //开显示(无游标、不反白)write_com(0x01); //清除显示,并且设定地址指针为00H}/***************************************************************************** /void lcm_w_word(unsigned char *s){//向LCM发送一个字符串,长度64字符之内。