这里是用的并行写法,后续会更新串行 。并行缺点就是太占用io口了,我其实更喜欢用串行。不过不是比赛要求都不怎么用了。

lcd12864.c

#include"lcd12864.h"
uchar code num[]={"0123456789 e:.-"};sbit RS  =  P3^5;     //命令/数据选择
sbit RW  =  P3^6;     //读写口
sbit E  =  P3^4;      //使能端
sbit PSB =  P3^7;     //串并选择     void delay(uint t)
{uint i;while(t--)for(i=0;i<110;i++);
}bit busy()  //查忙
{bit result;P0=0X00; RS=0;            //命令/数据选择,为0时选择命令    RW=1;         //读/写选择,为1时选择读E=1;          //使能delay(1);result = (bit)(P0&0x80); //查忙标志位,等待标志位为0,即表示写入完毕E=0;           //关闭读写 return (result);
}void wcode(uchar cmd)   //向lcd写一命令
{while(busy());                      //查忙RS=0;                          //命令/数据选择,为0时选择命令 RW=0;                            //读/写选择,为0时选择写E=0;_nop_();_nop_(); P0=cmd;                 //送入命令delay(1);                //等待E=1;                           delay(1);E=0;
}void wdata(uchar dat)  //向LCD写一数据
{while(busy());RS=1;            //H为数据RW=0;E=0;P0=dat;delay(1);E=1;delay(1);E=0;
}void initlcd()    //LCD初始化
{PSB=1;     //设置为8BIT并口工作模式  H并行 L串行delay(10);wcode(0x34);delay(5);wcode(0x30);  //选择基本指令集delay(5);wcode(0x0c);  //开显示,无游标delay(5);wcode(0x01); //清除显示,并且设定地址指针为00Hdelay(5);wcode(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}void dis(uchar x,uchar y,uchar code *s)  //任意位置显示字符串
{                         //x为横坐标,y位纵坐标,*s表示指针,为数据的首地址switch(y)                            //选择纵坐标{case 0:wcode(0x80+x);break;  //第一行case 1:wcode(0x90+x);break;  //第二行case 2:wcode(0x88+x);break;  //第三行case 3:wcode(0x98+x);break;  //第四行default:break;}while(*s>0)                                        //写入数据,直到数据为空{wdata(*s);                                     //写数据delay(10);                                    //下一字符s++;}
}
void showGB(uchar *HZ)  //显示单个汉子
{wdata(HZ[0]);                //写入汉字高八位数据wdata(HZ[1]);                //写入低八位
}void wrnum(uchar s)
{wdata(num[s]);delay(1);
}

数据口D0-D7统一接的P0-P7端。

 比赛设备提供的连线破图……烂画质(自己不重画了,将就看吧hh)

lcd12864.h

#ifndef __LCD12864_H_
#define __LCD12864_H_#include<reg51.h>
#include<intrins.H>#define uchar unsigned char
#define uint unsigned intextern void delay(uint t);
extern bit busy();
extern void wcode(uchar cmd);
extern void wdata(uchar d);
extern void initlcd();
extern void dis(uchar x,uchar y,uchar code *s);
extern void showGB(uchar *HZ);#endif

如果换成其他单片机芯片话,速度可能不同,导致时序就不一样,需要自行更改延时。

https://blog.csdn.net/zy19981110/article/details/89447521

LCD12864驱动显示程序相关推荐

  1. 51单片机+LCD12864驱动显示汉字模板+Proteus仿真

    51单片机+LCD12864驱动显示汉字模板+Proteus仿真 Proteus仿真效果 汉字显示方法 汉字通过取模软件取模. 取模软件:pctolcd2002 取模方式: 工程文件架构 主程序代码 ...

  2. 74hc164驱动数码管c语言程序,基于51单片机的74HC164驱动数码管显示程序与仿真

    基于51单片机的74HC164驱动数码管显示程序与仿真 基于51单片机的74HC164驱动一位数码管显示程序与仿真 #include #include #define uchar unsigned c ...

  3. LED数码管静态显示 C语言程序,PIC单片机驱动LED数码管显示程序

    ;*****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1.2.3.4.5.6.7.8******* ;****http://www.51hei.com 单片机学习网经典程序已测试 ...

  4. 51单片机 IIC OLED驱动显示通用程序模板

    51单片机 IIC OLED驱动显示通用程序模板 本模板是通过中景园OLED屏幕资料中提取保留ASCII字符集,点阵大小:6x8和8X16. 汉字取模方式 取模软件:pctolcd2002 /汉字取模 ...

  5. 【Proteus仿真】51单片机+LCD1602驱动显示模板程序

    [Proteus仿真]51单片机+LCD1602驱动显示模板程序 Proteus仿真 范例工程架构 LCD1602相关驱动显示函数 //函数或者变量声明 extern void LCD1602_del ...

  6. 带中文字库的12864LCD显示程序

    //带中文字库的12864LCD显示程序 #include <reg52.H> #include <intrins.H> #define uchar unsigned char ...

  7. 点阵LCD12864的显示原理(不带字库)

    点阵LCD12864的显示原理(不带字库) 在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果.对于显示英文操作,由于英文字母种类很少,只需要8位(一字节 ...

  8. ESP8266+0.96OLED驱动显示(I2C)

    文章目录 ESP8266 一.简介 二.管脚定义 三.代码 ESP8266 一.简介 这篇我们说一下ESP8266来驱动OLED显示屏显示,这里使用的是I2C的屏幕,像Arduino中有好几个库可以驱 ...

  9. LCD12864驱动(Proteus中用51单片机驱动AMPIRE128X64)

    致谢:先贴张图来感谢一下我那傻逼的王志学长,要不是你给我的资料跟我用的LCD型号不一样,我TM早就驱动起来了. 填坑:1.TMD Proteus的AMPIRE128X64这个型号的LCD内部没有所谓的 ...

  10. Arduino框架下ESP32+合宙1.54“ 电子墨水屏(e-paper)驱动显示示例

    Arduino框架下ESP32+合宙1.54" 电子墨水屏(e-paper)驱动显示示例 显示效果展示; 合宙1.54" 电子墨水屏 有关合宙1.54"电子墨水屏的介绍资 ...

最新文章

  1. 矩阵乘法的优化及其在卷积中的应用
  2. 冒烟测试与回归测试的区别
  3. 老板:kill -9的原理都不知道就敢到线上执行,明天不用来了!
  4. Intel Realsense pyrealsense rs.decimation_filter()类(通过使用具有特定内核大小的中值执行下采样)(抽取过滤器/抽取滤波器)
  5. 机器学习-分类算法-模型选择与调优09
  6. MySQL优化原理分析及优化方案总结
  7. 《Ruby程序员修炼之道》(第2版)—第1章1.1节进入Ruby的世界
  8. 「Leetcode」242. 有效的字母异位词:可以拿数组当哈希表来用,但哈希值不要太大!
  9. 一文读懂斗鱼上市:直播江湖风云再起,强行盈利背后的艰难上市路
  10. 标准盒子模型简单讲解
  11. matlab 矩阵 对称,如何使用Matlab产生对称矩阵
  12. python:TypeError:takes at least 8 arguments (9 given)
  13. Android安卓——入门学习
  14. 多标签文本分类研究进展概述
  15. 从本体的发展看图书情报学
  16. Python concurrent.future 使用教程及源码初剖
  17. NC UAP STUDIO授权
  18. 利用决策树算法对sklearn中红酒数据集进行可视化分类
  19. 常见建站安装软件教程 好东西
  20. 做一个Lead要那些技能?

热门文章

  1. 大气海洋数值模式经验总结
  2. 如何直观理解粒子滤波并进行Python编程实践
  3. STM32G474 CANFD 用例详解
  4. kitti数据集介绍论文Vision meets Robotics: The KITTI Dataset
  5. t580 thinkpad_ThinkPad T580性能如何?联想ThinkPad T580商务本详细评测
  6. ie降级,解决ie卡死,打不开,弹出页空白等问题
  7. 玩一下就停不下来的h5休闲小游戏
  8. 最新麦子学院33GWeb前端+Web前端开发从入门到精通完整版
  9. 基于OMAPL138 + Xilinx spartan6的电力数据采集与传输设计
  10. 人工智能算法:遗传算法