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液晶显示模块控制相关推荐

  1. 51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块

    (用LCD1602做个温度显示装置) https://zhuanlan.zhihu.com/p/145666965​zhuanlan.zhihu.com LCD1602液晶显示模块 原理部分 引脚说明 ...

  2. 51单片机hc-sr04超声波模块控制的c语言编程,基于STM32单片机对HCSR04超声波的控制...

    描述 注意:定义GPIOB2为超声输出:GPIOB10为输入,定时器用tim2 #include "HCSR04.h" #include "delay.h" # ...

  3. 51单片机12864大液晶屏proteus仿真

    51单片机竞赛设计实例程序44例(Proteus仿真资料),可以做参赛设计的参考,可以用来做毕业设计,也可以做项目参考,平时的练习项目,带源码,可以说费了很多时间才集齐的,希望对你们有帮助,闯客网技术 ...

  4. 单片机与gsm通信c语言,实现51单片机与GSM模块通信介绍

    51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...

  5. 天问51单片机结合WIFI模块上传温度数据到巴法云平台

    目 录 一.前言 二.项目准备 三.设计思路 四.项目主要代码 五.项目成果 六.项目不足 一.前言: 继前一个项目<天问51单片机结合WIFI模块上传温度数据到TCP服务器>,本次项目是 ...

  6. 51单片机蓝牙通讯精准控制步进电机简易教学

    51单片机蓝牙通讯精准控制步进电机 1.蓝牙模块 本次用到的蓝牙模块为HC-05,关于HC-05怎么配置的文章已经写过很多,这里就不一一介绍了,我下面具体讲一些关于单片机蓝牙数据的收发简单快捷的方法实 ...

  7. 51单片机通过ESP8266模块与手机进行通讯

    51单片机通过ESP8266模块与手机进行通讯 WIFI 工作方式: 1.AP模式 提供热点 2.Station模式 作为设备接入热点 3.同时支持 配置 通过USB转TTL模块把ESP8266模块和 ...

  8. 基于51单片机的简单风扇控制

    具体实现功能 系统由STC89C52单片机+单体数码管+LED指示灯+LM298N芯片芯片+直流电机构成. 具体功能: (1)模拟实现风扇的转动及摇头: (2)实现按键设置1 档强风,2档中风,3档弱 ...

  9. 51单片机:独立按键控制数码管计数

    //按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...

  10. 51单片机模拟交通信号灯控制系统设计

    51单片机模拟交通信号灯控制系统设计 设计要求: 1.用LED灯模拟十字路口交通灯控制 2.正常情况下双方向轮流通行 3.特殊情况时,A方向通行 4.紧急情况时,A和B方向都不通行 本任务涉及定时控制 ...

最新文章

  1. python小练习之一
  2. Camera Calibration and 3D Reconstruction
  3. 在 SAP Business Application Studio 里访问 SAP HANA Cloud 实例
  4. This dependency was not found: * !!vue-style-loader!css-loader?……解决方案
  5. Gradle打包命令记录
  6. PTA—比较大小(C语言)
  7. viewflipper_Android ViewFlipper示例教程
  8. 深度强化学习DQN(附DQN训练Flappy Bird源代码)
  9. html动态创建table不成功的一个问题
  10. hdu acm1157
  11. 服务器突然c盘的temp文件夹,c盘里突然出了很多TEMP文件?
  12. win10 企业版激活
  13. Eclipse中导入项目前有红叉提示但是项目内容不报错解决办法
  14. 浅析互联网行业套路玩法+攻略
  15. 《无声告白》这不是我想要的生活
  16. Arduino安装与配置ESP8266开发板(超简单,亲测有效)
  17. 【学习总结】H2数据库
  18. 用Scrapy框架爬取豆瓣电影,构建豆瓣电影预测评分模型
  19. CTFHub | Refer注入
  20. containsAll和contains

热门文章

  1. 子桓说:成人的世界,有钱就意味着一切
  2. java数组= 0_JAVA数组
  3. 深入理解计算机系统——地址翻译
  4. 带你学习《深入理解计算机系统》虚拟存储器(1)——虚存概念及页、页表和地址翻译基础
  5. 腾讯全套人力资源管理资料大全(职位能力模型图+人力资源管理+招聘体系+培训体系+薪酬绩效+员工职业发展,共174M)
  6. 乳酸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 题解 JZOJ 1354.土地购买
  8. 土地购买(bzoj 1597)
  9. 民营企业该如何留住人才
  10. 这才是打开风变编程的正确操作方式