【求助51单片机】lcd12864液晶屏无法读取指定地址数据?

查看: 197|回复: 0
新人求助,51单片机控制LCD12864显示学号
要求是利用单片机控制LCD12864滚动显示学号,名字。程序的显示方法已经写好了,就是不知道主程序里面该怎么写,初始位置怎么定
以下是程序:
#include&reg52.h&
#define uchar unsigned char
#define uint&&unsigned int
sbit p_rst=P2^5;
sbit p_csl=P2^4;
sbit p_csr=P2^3;
sbit p_di=P2^2;
sbit p_rw=P2^1;
sbit p_e=P2^0;
uchar code xingming[]=
0x20,0x82,0x20,0x82,0x2A,0x45,0x2A,0x45,0xAA,0x25,0x6A,0x15,0x3E,0x0D,0x2B,0xFF,
0xAA,0x04,0xAA,0x0C,0xEA,0x14,0xAA,0x24,0x2A,0x65,0x22,0xC2,0x20,0x42,0x00,0x00,
0x08,0x01,0x08,0x41,0x88,0x80,0xFF,0x7F,0x48,0x42,0x8C,0x24,0xE4,0x18,0x9C,0x16,
0x80,0x21,0x44,0x48,0x44,0x48,0xFC,0x4F,0x42,0x48,0x42,0x48,0x42,0x40,0x00,0x00,
uchar code xuehao[]=
0x00,0x00,0x10,0x20,0xF0,0x3F,0x00,0x20,//1//0
0x00,0x00,0x10,0x20,0xF0,0x3F,0x00,0x20,//1//1
0x30,0x38,0x88,0x20,0x70,0x1F,0x00,0x00,//3//2
0x00,0x00,0x10,0x20,0xF0,0x3F,0x00,0x20,//1//3
0xF0,0x1F,0x08,0x21,0x98,0x20,0x00,0x1F,//6//4
0xF0,0x1F,0x08,0x20,0xF0,0x1F,0x00,0x00,//0//5
0x30,0x38,0x88,0x20,0x70,0x1F,0x00,0x00,//3//6
0xF0,0x1F,0x08,0x20,0xF0,0x1F,0x00,0x00,//0//7
0x70,0x38,0x08,0x27,0xF0,0x30,0x00,0x00,//2//8
0x70,0x38,0x08,0x27,0xF0,0x30,0x00,0x00,//2//9
0xF0,0x1F,0x08,0x21,0x98,0x20,0x00,0x1F,//6//10
void delay(unsigned int k) //延时函数
&&unsigned int a,b;
&&for(a=0;a&k;a++) ;
&&for(b=0;b&20;b++)& & & & ;
//复位子函数
void reset()
{& && & & &
& & p_rst=0;
& & delay(20);
& & p_rst=1;
& &delay(20);
void lcd_busy(void)& & & & //忙检测
& & & & P0=0x00;
& & & & p_di=0;
& & p_rw=1;
& & & & p_e=1;
& & & & while(P0 & 0x80);
& & & & p_e=0;
//写指令到LCM
void wcode(uchar c,uchar csl,uchar csr)
{& & & && &
& & p_csl=
& & p_csr=
& & lcd_busy();
& & p_di=0;
& & p_rw=0;
& & P0=c;//将变量C赋予LCM
& & p_e=1;
& & p_e=0;
//写数据到LCM子函数
void wdata(uchar c,uchar csl,uchar csr)
{& & & &&&
& & p_csl=
& & p_csr=
& & lcd_busy();
& & p_di=1;
& & p_rw=0;
& & P0=c;//将变量C赋予LCM
& & p_e=1;
& & p_e=0;
//设定起始行
void set_startline(uchar i)
{& & & && &
& & i=0xc0+i;
& & wcode(i,1,1);
//定位x,y方向
void set_xy(uchar x,uchar y)
{& & & && &
& & x=x+0x40;
& & y=y+0xb8;& & & && &
& & wcode(x,1,1);
& & wcode(y,1,1);
////屏幕开启、关闭
void dison_off(uchar o)
{& & & && &
& & o=o+0x3e;&&//o为1为开,为0是关
& & wcode(o,1,1);
//写数据到LCM
void lw(uchar x,uchar y,uchar dd)
{& & & &&&
& &&&if(x&=64)
& &&&{ set_xy(x-64,y);
& && & wdata(dd,0,1);
& & & &&&{ set_xy(x,y);
& & & && & wdata(dd,1,0);
& & & &&&}
//LCM初始化
void lcd_init(void)
{& & & && &
& & uchar x,y;
& & reset();
& & dison_off(0);
& & for(y=0;y&8;y++)
& &&&{ for(x=0;x&128;x++)
& && && &lw(x,y,0);
& & dison_off(1);
& &set_startline(0);
void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb)//xx为该行第xx个字,共8字,yy为第几行,共8行。
& & & & uchar i,& &
& & for(i=0;i&16;i++)
& & & &&&{& & & & dx=xingming[2*i+n*32]; //2*i为选择偶数行,因其为列扫描
& & & && & if(fb)
& & & & & & & && &dx=255-//反白显示
& & & & & & & & lw(xx*16+i,yy,dx);
& & & & & & & & dx=xingming[(2*i+1)+n*32];
& & & & & & & & if(fb)
& & & & & & & &&&dx=255-
& & & & & & & & lw(xx*16+i,yy+1,dx);
& & & && &}
void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb)//显示数字或英语
{&&uchar i,
& & for(i=0;i&8;i++)
& &&&{& & & & dx=xuehao[2*i+n*16];
& & & && &&&& & & & if(fb)
& & & && && & & & & & & & dx=255-
& & & & & & & & & & & & lw(xx*8+i,yy,dx);//
& && && & & & dx=xuehao[(2*i+1)+n*16];
& & & & & & & & & & & & if(fb)
& & & & & & & & & & & &&&dx=255-
& & & & & & & & & & & & lw(xx*8+i,yy+1,dx);
& & & && &}
&&void main()
& & lcd_busy();
& & reset();
& & & & lcd_init();
& & & & while(1)& &//就是不知道这里改怎么写,试着写过,但是显示的位置有问题
& & & &&&for(t=0;t&64;t++)
由于初学,知道实际问题应该比较简单,,但是······,希望大神帮忙写一下最后的部分,最好给点注释。非常非常感谢
Powered by51单片机12864液晶字符显示
10:33:48&&&来源:eefocus &&
& &的,采用液晶的并行接法
#define uchar unsigned char
#define uint& unsigned int
#define LCD_data P0&& //定义数据口
sbit LCD_RS=P3^5; //数据命令选择端,高电平为写数据,低电平写命令
sbit LCD_RW=P3^6;//读写控制端,高电平读信息,低电平写信息
sbit LCD_EN=P3^7; // 使能端
sbit LCD_PSB=P3^4;& //拉高 ,选择并行
&//特殊功能位声明
uchar code dis1[]={"姓名:浩泉"};&&
uchar code dis2[]={"性别:男"};
uchar code dis3[]={"卡号:050817"};
uchar code dis4[]={"www."};
void delay_1ms(uint x)&& //延时函数1ms
&&& uint i,j;
&&& for(j=0;j<x;j++)
&&& for(i=0;i<148;i++);
void write_cmd(uchar cmd)& //写命令函数,请参考液晶手册
&&&& LCD_RS=0;& //低电平,写入命令
&&&&&LCD_RW=0;
&&& P0=& // 赋值
&&& delay_1ms(5);
&&&& LCD_EN=1;//使能端拉高送入命令
&&& delay_1ms(5);
&&& LCD_EN=0;
void write_date(uchar date) //写数据
&&&& LCD_RS=1;
&&&& LCD_RW=0;
&&& &delay_1ms(5);
&&&& &LCD_EN=1; //使能端拉高送入数据
&&&& delay_1ms(5);
&&&& LCD_EN=0;
void lcd_pose(uchar X,uchar Y) //液晶显示位置函数
&&& &uchar S,
&&& &switch (X)
&&&&&&&& case 0:
&&&&&&&& S=0x80; //液晶第一行显示
&&&&&&&& &
&&&&&&&&& case 1:
&&&&&&& &S=0x90; //第二行显示
&&&&&&& &case 2: //第三行显示
&&&&&&&&&S=0x88;
&&&&&&&& case 3: //第四行显示
&&&&&& &S=0x98;
&&&& pose=S+Y;
&&&& write_cmd(pose);
void lcd_init() //液晶初始化函数
&&&& &LCD_PSB=1; // 并行选择,请参考液晶指令表
&&&&& write_cmd(0x01);
&&& &delay_1ms(5);
&&& &write_cmd(0x30);
&&& &delay_1ms(5);
&&& &write_cmd(0x0C);
&&& &delay_1ms(5);
&&&& write_cmd(0x06);
&&&& delay_1ms(5);&
&&&& lcd_init();
&&&& lcd_pose(0,0); //液晶第一行第一列的第一个字符显示
&&& while(dis1[i]!=&#39;/0&#39;)&//查询没有到字符串末尾
&&& &&&& &write_date(dis1[i]); //写入字符
&&&&&&&&& &i++;
&& lcd_pose(1,0);&//第2行
&& while(dis2[i]!=&#39;/0&#39;)
&&&&&& &write_date(dis2[i]);
&&&&& &&i++;
&& lcd_pose(2,0); //第3行
& while(dis3[i]!=&#39;/0&#39;)
&&&& &write_date(dis3[i]);
&&&& &i++;
& lcd_pose(3,0); //第4行
&&while(dis4[i]!=&#39;/0&#39;)
&&&&& write_date(dis4[i]);
&&&&&& i++;
& while(1);
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
特斯拉相关资源
编辑:什么鱼
本文引用地址:
本周热门资源推荐
EEWORLD独家&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
硅谷芯微——芯片级IT教育第一品牌。
&#xe602; 下载此文档
正在努力加载中...
51单片机12864LCD显示
下载积分:0
内容提示:51单片机12864LCD显示
文档格式:PPT|
浏览次数:302|
上传日期: 14:23:12|
文档星级:&#xe60b;&#xe60b;&#xe60b;&#xe612;&#xe612;
该用户还上传了这些文档
51单片机12864LCD显示
官方公共微信12864出问题了。。。。。。_51单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:33,878贴子:
12864出问题了。。。。。。收藏
这是文字的文件.h的
其他应该没问题 但烧录出来就成上图了#ifndef __CHARCODE_H#define __CHARCODE_H#ifdef CHAR_CODE// ------------------
汉字字模的数据结构定义 ------------------------ //struct Cn16CharTypeDef
// 汉字字模数据结构 {unsigned char
// 汉字内码索引,一个汉字占两个字节unsigned char
// 点阵码数据(24*20有60个数据) };struct Cn16CharTypeDef code CN16CHAR[]={/*--
此字体下对应的点阵为:宽x高=20x20
宽度不是8的倍数,现调整为:宽度x高度=24x20
--*/&去&,0x00,0x00,0x40,0x60,0x30,0x30,0x20,0x20,0x22,0xFE,0xFE,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x06,0x06,0x86,0x86,0xC4,0xE4,0x64,0x24,0x0F,0x1F,0x3C,0x74,0xE4,0x84,0x84,0x04,0x04,0x04,0x00,0xFF,0xFF,0xA0,0x20,0x20,0x20,0x20,0x20,0x30,0x31,0x30,0x70,0x60,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,/*--
此字体下对应的点阵为:宽x高=20x20
宽度不是8的倍数,现调整为:宽度x高度=24x20
--*/&你&,0x20,0x30,0x70,0xF0,0xA0,0xA0,0xA0,0xE4,0xEE,0x3E,0x7C,0xE0,0x86,0x8E,0xFE,0xF8,0xE0,0x80,0x00,0x00,0x40,0xF0,0xF8,0x3C,0x0E,0x06,0xFF,0xFF,0x04,0x0E,0x1E,0x7F,0xF3,0xC3,0xFF,0xFF,0x01,0x03,0x06,0x04,0xFF,0xFF,0xA0,0x20,0x20,0x20,0x20,0x20,0x30,0x31,0x30,0x70,0x60,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,/*--
此字体下对应的点阵为:宽x高=20x20
宽度不是8的倍数,现调整为:宽度x高度=24x20
--*/&妹&,0x00,0x20,0x30,0x30,0x30,0x22,0xFE,0xFE,0x20,0x20,0x20,0x60,0xE0,0xE6,0x5E,0xFE,0xFC,0xC0,0x40,0x40,0x02,0x83,0xC1,0xE1,0x79,0x1F,0xFF,0xFF,0x3F,0x79,0xE1,0xC1,0xCF,0xFF,0xFC,0xE0,0xBF,0x3F,0x1C,0x00,0xFF,0xFF,0xA0,0x20,0x20,0x20,0x20,0x20,0x30,0x31,0x30,0x70,0x60,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,};#endif//end of CHAR_CODE#endif
和张大佛爷、二月红一起去探秘矿洞墓穴!
这是普中科技的板子………
这不是12864&#xF628;
下方是显示16*16汉字的函数,我做了轻微改动发现,液晶上显示字好一点了但是问题还有在/*-----
下面便是我更改的地方并且还改了此处:32改成了60 ;该语句出自该贴// ----- 汉字字模的数据结构定义 ---- // 处
unsigned char Msk[60]; // 点阵码数据(24*20有60个数据) 希望大家能看出点什么问题。。。。。。。/*-----------------汉字函数---------------------*/uchar Lcd12864_Write16CnCHAR(uchar x, uchar y, uchar *cn)
{uchar j, x1, x2, wordN//--Y的坐标只能从0到7,大于则直接返回--//if(y & 7){return 0;}//--X的坐标只能从0到128,大于则直接返回--//if(x & 128)
/**/{return 0;}y += 0xB0;
//求取Y坐标的值//--设置Y坐标--//LcdSt7565_WriteCmd(y);while ( *cn != &#39;\0&#39;) //在C语言中字符串结束以‘\0’结尾{//--设置Y坐标--//LcdSt7565_WriteCmd(y);x1 = (x && 4) & 0x0F;
//由于X坐标要两句命令,分高低4位,所以这里先取出高4位x2 = x & 0x0F;
//去低四位//--设置X坐标--//LcdSt7565_WriteCmd(0x10 + x1);
//高4位LcdSt7565_WriteCmd(0x04 + x2);//低4位for (wordNum=0; wordNum&50; wordNum++){
//--查询要写的字在字库中的位置--//if ((CN16CHAR[wordNum].Index[0] == *cn)
&&(CN16CHAR[wordNum].Index[1] == *(cn+1))){for (j=0; j&60; j++) /**/
//写一个字 {/*--------------------------------------此处本来j==16--------------------------------------------------*/if (j == 20)/**/ //由于16X16用到两个Y坐标,当大于等于16时,切换坐标
{//--设置Y坐标--//
LcdSt7565_WriteCmd(y + 1);//--设置X坐标--//LcdSt7565_WriteCmd(0x10 + x1);
//高4位LcdSt7565_WriteCmd(0x04 + x2);//低4位}LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]);} /*----------------------------------------此处本来x+=16*/--------------------------------------*/x += 24; }//if查到字结束} //for查字结束cn += 2;}//while结束return 1;}
汉字取模不是只有16x16 32x32等几种吗
卧槽,为什么我的不是彩屏!被坑了!!!
哎,这种12864,与普通的差别大,没自带字库,很多功能都没有,提供的程序才给3个,网上搜不到这种的程序,头大了,实在看不懂,难学啊,还是学常用的12864好啊,我的也是普中科技的
普中的?算了吧,12864有问题
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或51单片机—LCD12864液晶显示—02
  感觉没什么意思,上网也不知道干什么,哎~~可悲,也就是看看自己的微博,看看那几个经常去的网站,快考试了,还是扯淡的电磁测量(我一直希望他能讲那个智能电表,可是刚到那你就他妈节课了~~算了,还是自己一步步学吧,擦,还不会,千万不能挂科,虽然处女挂献给了可恶的反馈学~~听说考研必考,哎~~这回我得好好考虑了)
  既然这么没意思,我就把我以前的那个写的LCD12864给发出来,纯属蛋疼~~~
  我这个就用来显示一下自己的签名吧,这个可是我自己在~~高中花一个月设计出来的(差点被老师抓),呵呵,表示无压力,哈哈
 然后就是12864的引脚驱动功能了
这里有几个重要而指令,看看~~
然后就是代码了,我用的几个C文件写的,还有h文件(这里我就不贴出来了,只把C文件贴出来吧)
当然这个是.h文件了,我的名字的签名吗,得要的~~~
#ifndef _ZIMO_H_
#define _ZIMO_H_
uchar code
qianming[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xF8,0xFC,0xFE,0xFE,0xFE,0xFE,0xFE,0xFC,0xFC,
&&&&&0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF8,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF8,0xFC,0xFC,
&&&&&0xFE,0xFF,0x7F,0x7F,0x3F,0x1F,0x1F,0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0xC0,0xF0,0xFC,0xFC,0xF8,0xF8,0xF0,0x10,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0xE0,
&&&&&0xF0,0xF0,0xF8,0xFC,0xFC,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x0F,0x0F,0x07,0x03,0x01,
&&&&&0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0,0xF0,0xF0,0x60,
&&&&&0x00,0x80,0xE0,0xFC,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,
&&&&&0x80,0xC0,0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,
&&&&&0xE0,0xE0,0xF0,0xF8,0xF8,0xF8,0xFC,0xFC,0xFE,0xFE,0x7F,0x7F,0x3F,0x3F,0x1F,0x0F,
&&&&&0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xF8,
&&&&&0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xF0,0xE0,0xE0,0xF0,0xF8,
&&&&&0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFC,0xFC,0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x3E,0x1F,0x1F,0x1F,0x1F,
&&&&&0x0F,0x0F,0x07,0x07,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFC,
&&&&&0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,
&&&&&0x1F,0x07,0x03,0x03,0x07,0x07,0x03,0x03,0x03,0x03,0x07,0x0F,0x0F,0x0F,0x0F,0x0F,
&&&&&0x07,0x03,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xFE,0xFF,0xFF,
&&&&&0xFF,0xFF,0xFF,0xE3,0xE0,0xE0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
&&&&&0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,
&&&&&0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7E,0x7E,0x7E,0x7E,
&&&&&0x3E,0x3E,0x3C,0x3C,0x38,0x00,0x07,0x0F,0x0F,0x0F,0x07,0x07,0x03,0x01,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0xF0,0xFC,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
&&&&&0x1F,0x1F,0x0F,0x0F,0x0F,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x03,0x03,0x03,
&&&&&0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x01,0x01,
&&&&&0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x01,0x03,0x03,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x3F,0x1F,0x01,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
&&&&&0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};&&//我的签名&&&
这里就开始c文件了,(*^__^*) 嘻嘻……
1、延时函数
#include&reg52.h&
#include"MacroAndConst.h"
void delay(uint z)
&uint x,y;
&for(x=z;x&0;x--)
&&for(y=110;y&0;y--);
2、12864初始化函数
#include&reg52.h&
#include&intrins.h&
#include"MacroAndConst.h"
#include"Delay.h"
#include"Foot.h"
#define lcd_databus P0
void read_busy()
&while(P0&0x80);
void write_lcd_com(uchar com)
&read_busy();
&lcd_databus=
void write_lcd_dat(uchar dat)
&read_busy();
&lcd_databus=
void set_page(uchar page)
&page=0xb8|
&write_lcd_com(page);
void set_startline(uchar startline)
&startline=0xc0|
&write_lcd_com(startline);
void set_column(uchar column)
&column=0x40|
&write_lcd_com(column);
void set_on_off(uchar on_off)
&on_off=0x3e|on_
&write_lcd_com(on_off);
void select_screen(uchar screen)
&switch(screen)
&&case 0: cs1=0; cs2=0;
&&case 1: cs1=0; cs2=1;
&&case 2: cs1=1; cs2=0;
&&default:
void clear_screen(uchar screen)
&uchar i,j;
&select_screen(screen);
&for(i=0;i&8;i++)
&&set_page(i);
&&set_column(0);
&&for(j=0;j&64;j++)
&&&write_lcd_dat(0x00);
void init_lcd()
&read_busy();
&select_screen(0);
&set_on_off(0);
&select_screen(0);
&set_on_off(1);
&select_screen(0);
&clear_screen(0);
&set_startline(0);&&&&
//开始行:0&
3、12864显示函数(这里有两种方法,都用过了,没问题,哈哈)
#include&reg52.h&
#include"LcdInit.h"
#include"MacroAndConst.h"
#include"Delay.h"&&
void lcd_display_01(uchar *p)
&uchar i,j;
&for(page=0;page&8;page++)
&&select_screen(1);
&&set_page(page);
&&set_column(0);
&&for(i=0;i&64;i++)
&&&write_lcd_dat(p[page*128+i]);
&&select_screen(2);
&&set_page(page);
&&set_column(0);
&&for(j=0;j&64;j++)
&&&write_lcd_dat(p[page*128+i+j]);
}&&&&&&&&&
4、当然不能忘记主函数,就是这个了
#include&reg52.h&
#include&intrins.h&
#include"LcdInit.h"
#include"Foot.h"
#include"MacroAndConst.h"
#include"Delay.h"
#include"ZiMo.h"
#include"LcdDisplay.h"
void main()
&init_lcd();
&clear_screen(0);
&set_startline(0);&
&lcd_display_01(qianming);
&while(1);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 lcd12864连接单片机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信