- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12864学习(控制器ST7920)
在学习12864其他功能前先学习一下12864的几个基本函数
void delay(uint x)//延时函数
{
x=x*12;
while(x--)
{
_nop_(); //包含在intrins.h头文件
_nop_();
_nop_();
}
}
void write_lcd_cmd(uchar cmd)//写命令
{
RS=0;
RW=0;
EN=1;
P0=cmd;
// delay(1);
EN=0;
delay(1);
}
void write_lcd_date(uchar date)//写数据函数
{
RS=1;
RW=0;
EN=1;
P0=date;
// delay(1);
EN=0;
delay(1);
}
void display_pos(uchar x,uchar y)//设置显示地址,用于显示中文字时设计显示地址
{
uchar pos;
switch(x)
{
case 0: pos=0x80; break;//当x为0指向第一行
case 1: pos=0x90; break;//当x为1指向第二行
case 2: pos=0x88; break;//当x为2指向第三行
case 3: pos=0x98; break;//当x为3指向第四行
default: pos=0x80; //x为其它值时指向第一行
}
pos=pos+y;
write_lcd_cmd(pos);
}
/*===========================================================
函数功能:读取12864液晶繁忙标志BF位状态BF=1繁忙,BF=0不忙
注意:与读取数据不同读取繁忙标志位是是属于写指令,要将RS置低
============================================================*/
void read_lcd_bf()
{
uchar BF=1;
P0=0xff;
do
{
RS=0;
RW=1;
EN=0;
EN=1;
_nop_();
BF=P0;
BF=BF7;
}
while(BF);
}
12864显示图片
要让一个点有显示就要让相应的点置高电平。要想知道如何控制一个点的高低电平就要知道它的地址是怎样排列的。我们看着12864液晶是连在一起的一块屏幕,就会想当然的认为它的地址也是一直地增的,但是你错了。12864是分为上下两个半屏的。
12864液晶模块显示地址如图所示。
注意:12864显示分为上下两屏,而不是一个整屏。什么意思呢?就是说它的地址是分成两大部分(既上下两大部分)。如图,上半屏的水平地址X是从0x80—0x87并且它的每个水平地址都包含了十六个点的显示区(如图红色标注)。下半屏水平地址是从0x88—0x8f,而上下半屏的纵坐标Y都是从0—31。
这个是我定义的坐标关系简图
坐标对应关系简图
向12864 GDROM写如数据来绘图的过程:
1、关闭绘图显示功能
2、先打开扩充指令功能
3、连续写入X坐标地址,和y坐标地址(说明书上是写着先写X在写y坐标,但是程序是却是先写Y再写X坐标,否则会出错。还有这里写地址使用写命令函数不是用写数据函数)
4、向GDROM 中写入数据
5、打开绘图显示功能
/*====================================================
函数功能:清除GDROM的内容,如果不清除会出现花屏现象
清除方法:向GDROM中写入0x00来清除内容
========================================================*/
void clear_gcrom()
{
uchar i,j,k,lcd_x,lcd_y;
lcd_x=0x80;
lcd_y=0x80;
write_lcd_cmd(0x34);//打开扩充指令关闭绘图显示(绘图指令为扩充指令,并且在绘图期间必须关闭绘图显示功能)
for(i=0;i2;i++)//分为上下两半屏清除显示
{
for(j=0;j32;j++)
{
write_lcd_cmd(lcd_y+j);
write_lcd_cmd(lcd_x);
for(k=0;k16;k++)
{
write_lcd_date(0x00);
}
}
lcd_x=0x88;//将x指向下半屏
}
write_lcd_cmd(0x36);//打开绘图
您可能关注的文档
最近下载
- 小学研究课题立项申报:基于小学生高阶思维发展的课堂微项目活动设计研究.docx
- 网站安全等级保护--应急预案.docx
- 输送带发展前景分析.pptx
- IPC-6018c,6018cs,6017,6016,6015,6013d,6012e,ds,da 英文资料分享.pdf
- 高中数学公式(经典).doc VIP
- 顶管施工测量方案.doc
- 2024年度医院中医肛肠外科科带教计划课件.pptx
- 全国青少年劳动技能与智能设计大赛赛题与评价标准.PDF
- 2021-2022学年福建省宁德市校际联盟八年级(上)第一次月考英语试卷(附答案详解).docx VIP
- 2023年(最全版)二级建造师考试真题及参考答案.docx
文档评论(0)