51单片机12864液晶显示模块控制
51单片机12864液晶显示模块控制
TG12864 液晶模块控制 IC 采用 S6B0108,驱动 IC 采用 S6B0107 设计,是一款内部没有字库
的显示模块。其方框图见下图:
接线
主机模块 P0.0-P0.7 口接到显示模块的数据总线 DB0-DB7 上。
P2.0 接到 RST 端
P2.1 接到 CS2 端
P2.2 接到 CS1 端
P2.3 接到 E 端
P2.4 接到 RW 端
P2.5 接到 DI 端
main.c
#include "main.h"
#include "lcd12864.h"/*12864如果用于比赛的话我们一般接线只接cs1,cs2,跟rs,e,这四跟控制线 数据端口就用一个8位io口*/
/*注意rw要接地*/
/*经贸旅游学校 勾云鹏 12864驱动文字程序*/void initlcd(void); //12864显示界面函数 void main()
{lcdinit(); //12864初始化initlcd(); //掉用12864界面函数while(1){}}void initlcd(void)
{//lcdxie(2,20,0,3); //lcdxie(2,36,1,3);//lcdxie(2,52,2,3);//lcdxie(2,68,3,3);//lcdxie(2,84,4,3);//lcdxie(2,100,5,3);
xiezfc(2,36,0,3,5);
}
main.h
#ifndef _MAIN_H_
#define _MAIN_H_#include <reg52.h>#define lcddat P0 //lcd12864数据库sbit lcdcs1 = P1^0; //右屏
sbit lcdcs2 = P1^1; //左屏
sbit lcdwr = P1^2; //lcdrs
sbit lcdwe = P1^3; //lcde#define uchar unsigned char
#define uint unsigned intuchar code shuzi[][16]; //数字数据库 二维数组
uchar code haizi12[][24]; //12*12文字
uchar code haizi16[][32]; //16*16文字void delay(uint i){while(i--);} //延时函数uchar code shuzi[][16] =
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,/*"1",1*/0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,/*"3",3*/0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,/*"4",4*/0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,/*"6",6*/0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,/*"7",7*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
};uchar code haizi12[][24] =
{0x00,0x00,0x00,0x64,0x54,0xCC,0x44,0x24,0xB2,0x02,0x00,0x00,0x00,0x40,0x22,0x12,
0x0F,0x42,0x7E,0x06,0x0A,0x11,0x62,0x00,/*"系",0*/0x00,0x60,0xD8,0x46,0x30,0x88,0x68,0x9E,0x08,0xC8,0x88,0x00,0x00,0x26,0x13,0x12,
0x42,0x61,0x1F,0x00,0x7F,0x40,0x61,0x00,/*"统",1*/0x00,0x10,0x92,0xF4,0x98,0x40,0x08,0xF8,0x08,0x08,0xF8,0x00,0x00,0x02,0x01,0x7F,
0x42,0x30,0x0E,0x01,0x40,0x60,0x1F,0x00,/*"初",2*/0x00,0x80,0x7C,0x22,0xF0,0x40,0x70,0x4E,0x40,0x50,0x60,0x00,0x00,0x47,0x34,0x0E,
0x11,0x00,0x7E,0x22,0x22,0x22,0x7E,0x00,/*"始",3*/0x00,0x80,0xF0,0x0E,0x00,0x00,0xFE,0x80,0x40,0x30,0x00,0x00,0x00,0x01,0x7F,0x00,
0x04,0x04,0x3F,0x41,0x40,0x40,0x78,0x00,/*"化",4*/0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",5*/
};uchar code haizi16[][32] =
{0x00,0x00,0x22,0x32,0x2A,0xA6,0xA2,0x62,0x21,0x11,0x09,0x81,0x01,0x00,0x00,0x00,
0x00,0x42,0x22,0x13,0x0B,0x42,0x82,0x7E,0x02,0x02,0x0A,0x12,0x23,0x46,0x00,0x00,/*"系",0*/0x20,0x30,0xAC,0x63,0x30,0x00,0x88,0xC8,0xA8,0x99,0x8E,0x88,0xA8,0xC8,0x88,0x00,
0x22,0x67,0x22,0x12,0x12,0x80,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x40,0x71,0x00,/*"统",1*/0x08,0x08,0x89,0xEA,0x18,0x88,0x00,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
0x02,0x01,0x00,0xFF,0x01,0x86,0x40,0x20,0x18,0x07,0x40,0x80,0x40,0x3F,0x00,0x00,/*"初",2*/0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x40,0xE0,0x58,0x47,0x40,0x50,0x60,0xC0,0x00,
0x40,0x22,0x15,0x08,0x16,0x21,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,/*"始",3*/0x00,0x80,0x60,0xF8,0x07,0x00,0x00,0x00,0xFF,0x40,0x20,0x10,0x08,0x04,0x00,0x00,
0x01,0x00,0x00,0xFF,0x00,0x04,0x02,0x01,0x3F,0x40,0x40,0x40,0x40,0x40,0x78,0x00,/*"化",4*/0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",5*/
};#endif#endif
12864.h
#include "main.h"void lcd_xsj(uchar dat) //12864写数据
{lcdwr=1; //wr = 1写数据 =0写命令lcddat=dat; //把数据dat给lcd数据端口lcdwe=1; //打开使能 delay(10); //给点延时等12864读完数据lcdwe=0; //关闭使能
}void lcd_xml(uchar dat) //12864写命令
{lcdwr=0; //wr = 1写数据 =0写命令lcddat=dat;lcdwe=1;delay(10);lcdwe=0;
}void lcdinit(void) //12864初始化
{uchar x,y; //定义x軸y軸EA=0; //如果有使用定时器可先关闭总中断防止干扰lcd_xml(0xc0); //打开12864显示命令lcd_xml(0x3f); //位移命令lcdcs1=lcdcs2=1; //打开12864左右屏for(x=0;x<8;x++) //对12864每个坐标写入0{lcd_xml(0xb8+x); //确定x軸for(y=0;y<64;y++){lcd_xml(0x40+y); //确定y軸lcd_xsj(0); //写入0}}EA=1; //初始化完成后打开总中断开关
}void lcdxie(uchar x,uchar y,uchar dat,uchar com)
{ //x 軸 y軸 dat 数据 com 1数字 2文字12*12 3文字16*16 uchar var,d;EA = 0; //如果不关闭中断可能有干扰 没有使用中断可删除switch(com) //确定写的内容 com 1数字 2文字12*12 3文字16*16 {case 1: d=8; break;case 2: d=12; break;case 3: d=16; break;}for(var=0;var<d;var++) // 写入列次数{if(var+y<64) //加上y值 如果大于64则选择右屏 小于则左屏{lcdcs1=1;lcdcs2=0; //1 选 0不选}else{lcdcs1=0;lcdcs2=1;}(var+y<64)?lcd_xml(0x40+var+y):lcd_xml(0x40+var+y-64); //每次写一列都确定一次列值lcd_xml(0xb8+x); //确定写入行 0x8b起始坐标switch(com) //根据写写入内容选择数据库{case 1: lcd_xsj(shuzi[dat][var]); break;case 2: lcd_xsj(haizi12[dat][var]); break;case 3: lcd_xsj(haizi16[dat][var]); break;}(var+y<64)?lcd_xml(0x40+var+y):lcd_xml(0x40+var+y-64); //下8列在次确定lcd_xml(0xb9+x);//选择下一行switch(com) //继续给数据 这一次需要根据写入数据把前一部分写的数据减掉{case 1: lcd_xsj(shuzi[dat][var+8]); break;case 2: lcd_xsj(haizi12[dat][var+12]); break;case 3: lcd_xsj(haizi16[dat][var+16]); break;} }lcdcs1=lcdcs2=0; //取消左右屏幕选择防止干扰EA = 1; //打开总中断开关
}void xiezfc(uchar qx,uchar qy,uchar dat,uchar com,uchar zf)
{uchar x=0,y=0,var;y=qy;x=qx;switch(com){case 1:for(var=0;var<zf;var++){y+=8;lcdxie(x,y-8,dat+var,com);}break;case 2:for(var=0;var<zf;var++){y+=12;lcdxie(x,y-12,dat+var,com);}break;case 3:for(var=0;var<zf;var++){y+=16;lcdxie(x,y-16,dat+var,com);}break;}
}
51单片机12864液晶显示模块控制相关推荐
- 51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块
(用LCD1602做个温度显示装置) https://zhuanlan.zhihu.com/p/145666965zhuanlan.zhihu.com LCD1602液晶显示模块 原理部分 引脚说明 ...
- 51单片机hc-sr04超声波模块控制的c语言编程,基于STM32单片机对HCSR04超声波的控制...
描述 注意:定义GPIOB2为超声输出:GPIOB10为输入,定时器用tim2 #include "HCSR04.h" #include "delay.h" # ...
- 51单片机12864大液晶屏proteus仿真
51单片机竞赛设计实例程序44例(Proteus仿真资料),可以做参赛设计的参考,可以用来做毕业设计,也可以做项目参考,平时的练习项目,带源码,可以说费了很多时间才集齐的,希望对你们有帮助,闯客网技术 ...
- 单片机与gsm通信c语言,实现51单片机与GSM模块通信介绍
51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...
- 天问51单片机结合WIFI模块上传温度数据到巴法云平台
目 录 一.前言 二.项目准备 三.设计思路 四.项目主要代码 五.项目成果 六.项目不足 一.前言: 继前一个项目<天问51单片机结合WIFI模块上传温度数据到TCP服务器>,本次项目是 ...
- 51单片机蓝牙通讯精准控制步进电机简易教学
51单片机蓝牙通讯精准控制步进电机 1.蓝牙模块 本次用到的蓝牙模块为HC-05,关于HC-05怎么配置的文章已经写过很多,这里就不一一介绍了,我下面具体讲一些关于单片机蓝牙数据的收发简单快捷的方法实 ...
- 51单片机通过ESP8266模块与手机进行通讯
51单片机通过ESP8266模块与手机进行通讯 WIFI 工作方式: 1.AP模式 提供热点 2.Station模式 作为设备接入热点 3.同时支持 配置 通过USB转TTL模块把ESP8266模块和 ...
- 基于51单片机的简单风扇控制
具体实现功能 系统由STC89C52单片机+单体数码管+LED指示灯+LM298N芯片芯片+直流电机构成. 具体功能: (1)模拟实现风扇的转动及摇头: (2)实现按键设置1 档强风,2档中风,3档弱 ...
- 51单片机:独立按键控制数码管计数
//按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...
- 51单片机模拟交通信号灯控制系统设计
51单片机模拟交通信号灯控制系统设计 设计要求: 1.用LED灯模拟十字路口交通灯控制 2.正常情况下双方向轮流通行 3.特殊情况时,A方向通行 4.紧急情况时,A和B方向都不通行 本任务涉及定时控制 ...
最新文章
- python小练习之一
- Camera Calibration and 3D Reconstruction
- 在 SAP Business Application Studio 里访问 SAP HANA Cloud 实例
- This dependency was not found: * !!vue-style-loader!css-loader?……解决方案
- Gradle打包命令记录
- PTA—比较大小(C语言)
- viewflipper_Android ViewFlipper示例教程
- 深度强化学习DQN(附DQN训练Flappy Bird源代码)
- html动态创建table不成功的一个问题
- hdu acm1157
- 服务器突然c盘的temp文件夹,c盘里突然出了很多TEMP文件?
- win10 企业版激活
- Eclipse中导入项目前有红叉提示但是项目内容不报错解决办法
- 浅析互联网行业套路玩法+攻略
- 《无声告白》这不是我想要的生活
- Arduino安装与配置ESP8266开发板(超简单,亲测有效)
- 【学习总结】H2数据库
- 用Scrapy框架爬取豆瓣电影,构建豆瓣电影预测评分模型
- CTFHub | Refer注入
- containsAll和contains
热门文章
- 子桓说:成人的世界,有钱就意味着一切
- java数组= 0_JAVA数组
- 深入理解计算机系统——地址翻译
- 带你学习《深入理解计算机系统》虚拟存储器(1)——虚存概念及页、页表和地址翻译基础
- 腾讯全套人力资源管理资料大全(职位能力模型图+人力资源管理+招聘体系+培训体系+薪酬绩效+员工职业发展,共174M)
- 乳酸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 题解 JZOJ 1354.土地购买
- 土地购买(bzoj 1597)
- 民营企业该如何留住人才
- 这才是打开风变编程的正确操作方式