目录

前言

1.软硬件平台

2.硬件焊接

2.1元件:

2.2电路原理图

2.3焊接

3.新建keil工程

3.1新建文件夹

3.2新建工程

3.3新建main.c文件

3.4编写程序

3.5编译项目

4.程序烧写进单片机

4.1硬件连接

4.2烧写程序

5.实验效果

6.展望

文件下载


前言

从实验室翻出来一块2009年生产的古董12864液晶显示模块,心血来潮想要把它驱动起来,从网上找资料,焊接简单的电路,花费大半天时间才完成,详细记录如下。

1.软硬件平台

硬件:51单片机最小系统(天津锐志电子),本文采用的芯片是STC89C52RC 40I-PDIP,11.0592MHz晶振,也可使用STC12C5A60S2 35I-PDIP40,两者引脚基本一致。此外,也可使用只有8脚的STC15W104,自己焊接外围电路,只要有5个IO口即可。

软件:Keil5 C51

2.硬件焊接

2.1元件:

(1)7cm*9cm洞洞板

(2)插针7P、插座10P、杜邦线11根

(3)68Ω电阻6个(33Ω-100Ω均可)

2.2电路原理图

2.3焊接

焊锡走线大法好,原谅我的垃圾焊工,哈哈哈哈哈哈

正面

用杜邦线连接电路

3.新建keil工程

3.1新建文件夹

这里我建在E盘,E:/12864液晶显示,待会工程放在这个文件夹。

3.2新建工程

启动keil5 C51,点击Project>>New uVision Project,弹出创建窗口,选择我们创建好的文件夹,项目命名为 液晶显示

点击 保存,弹出选择仿真模型窗口,STC89C52RC对应着NXP的P89V51RD2,STC12C5A60S2对应Micro-chip的AT89C52,STC15W104对应Intel的8051AH

点击OK,弹出提示框,选择 否

项目创建完成。

3.3新建main.c文件

右击Source Group 1,选择Add New Item to Group 'Source Group 1'

弹出文件命名窗口,命名为main,类型为C File,点击Add,将main.c添加进项目。

这里也可以先新建main.c文件,再右击 Source Group 1,选择Add Existing Files to Group 'Source Group 1',将main.c添加进项目。

3.4编写程序

汉字GBK码查询网址:http://www.mytju.com/classcode/tools/encode_gb2312.asp

#include "reg52.h"
#include "intrins.h"
#define u8 unsigned char
#define u16 unsigned intsbit res=P1^7;//SPI_RES
sbit cs=P1^6;
sbit sck=P1^5;
sbit sda=P1^4;
sbit busy=P1^3;void Delay1ms()     //@11.0592MHz
{u8 i, j;_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);
}void delay_n_ms(u16 n)
{while(n--){Delay1ms();}
}/*==============================================
函数:void LCD_init(void)
描述:LCD初始化程序,完成端口初始化以及复位
参数:无
返回:无
================================================*/
void LCD_init(void)
{cs=1;sda=1;sck=1;busy=1;res=0;//复位delay_n_ms(10);//延时10msres=1;//恢复高电平,复位完成delay_n_ms(20);//延时20ms
}/*==============================================
函数:void CS_set(u8 Status)
描述:置CS线状态
参数:Status     =1则置高电平,=0则置低电平
返回:无
================================================*/
void CS_set(u8 Status)
{while(busy);//如果busy为高电平,则循环等待if(Status){cs=1;//CS置高电平}elsecs=0;//CS置低电平}/*==============================================
函数:void Send(u8 Data)
描述:通过串行SPI口输送一个byte的数据置模组
参数:Data     要传送的数据
返回:无
================================================*/
void Send(u8 Data)
{u16 i=0;for(i=0;i<8;i++){sck=0;//SCK置低电平if(Data&0x0080){sda=1;}elsesda=0;sck=1;//SCK上升沿触发串行数据采样Data=Data<<1;//数据左移一位}
}int main(void)
{LCD_init();//LCD初始化,清屏CS_set(0);//CS置低电平Send(0x80);//发送指令0x80Send(0xAA);//指令数据CS_set(1);//CS置高电平//接下来设置背光亮度CS_set(0);//CS置低电平Send(0x8A);//发送指令0x8ASend(100);//亮度100CS_set(1);//CS置高电平//绘制点CS_set(0);//CS置低电平Send(0x01);//发送指令0x01Send(100);//设置X轴位置Send(5);//设置Y轴位置CS_set(1);//CS置高电平//设置ASCII字符的字型CS_set(0);//CS置低电平Send(0x81);//发送指令0x81Send(0x11);//选择8X16的ASCII字体,黑色CS_set(1);//CS置高电平//显示ASCII字符CS_set(0);//CS置低电平Send(7);//发送指令0x07Send(20);//设置字符左上角的X轴位置Send(36);//设置字符左上角的Y轴位置Send('A');//字符的ASCII码值,直接用引号即可CS_set(1);//CS置高电平//显示16x16点阵汉字“液”,GBK码为0xD2BACS_set(0);//CS置低电平Send(8);//发送指令0x08Send(100);//设置字符左上角的X轴位置Send(36);//设置字符左上角的Y轴位置Send(0xD2);//发送二级字库中汉字GB码的高八位值Send(0xBA);//发送二级字库中汉字GB码的低八位值CS_set(1);//CS置高电平while(1);//一直显示}

3.5编译项目

先点击Options for Target,点击Output,勾选创建hex文件,这样编译完成会生成.hex文件,以供烧写使用。

点击OK,完成设置。

点击Rebuild,编译文件

等待状态栏提示".\Objects\液晶显示" - 0 Error(s), 0 Warning(s).

编译完成!

4.程序烧写进单片机

4.1硬件连接

将最小系统板的VCC/TXD/RXD/GND用杜邦线连接USB-TTL转接头的5V0/RXD/TXD/GND

4.2烧写程序

打开STC-ISP软件(可以在宏晶科技官网下载),会自动识别单片机所连串口,单片机型号选择STC89C52RC/LE52RC,点击 打开程序文件,选择E:\12864液晶显示\Objects\液晶显示.hex,点击 下载/编程。

将单片机断电,再重新上电,开始烧写,稍等片刻,烧写完成!

5.实验效果

6.展望

驱动了显示屏,下一步可以做一个温湿度监测,显示出来,或者为其他项目提供交互。

文件下载

项目文件、stc下载软件、MzLH03-12864液晶显示模块说明文档已上传百度网盘

百度网盘链接

用51单片机(STC89C52RC、STC12C5A60S2、STC15W104)驱动MzLH03-12864液晶显示模块相关推荐

  1. 51单片机控制TB6600驱动器驱动42步进电机

    51单片机控制TB6600驱动器驱动42步进电机 第一次 功能实现目标 硬件简介 硬件连接 程序代码 第一次 以前总是看别人写的博客,通过别人的博客解决了我很多问题,从中也学到了各种知识,虽然不是很系 ...

  2. 51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序

    51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序 Proteus仿真效果 注意点击运行仿真后,图像刷新出来比较慢. 示例主程序 #include "REG51.h& ...

  3. 51单片机安装不了驱动问题的解决方案

    本文章主要针对51单片机安装不了驱动这个问题.提供补充的一个解决方案. 解决方案 1.首先购买的板子是普中51单片机A6开发板,驱动安装不了可以参照论坛这里提供的解决方案:http://www.pre ...

  4. 51单片机STC89C52RC进阶 – 在面包板上构建51单片机最小系统

    电子元件准备 STC 89C52RC 单片机芯片(40Pin 直插式DIP封装) x 1 10uF铝电解电容 x 1 10K直插式电阻 x 2 11.0592MHz晶振 x 1 30pF瓷片电容 x ...

  5. 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)

    1.51单片机的特性 51单片机之所以成为经典,成为易上手的单片机主要有以下特点: 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位.不但能对片内某些特殊功能寄存器 ...

  6. 【51单片机】直流电机的驱动和PWM调速

    51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向.51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速.使用 PWM 调速可以使得 ...

  7. 51单片机P0端口的驱动能力、上拉电阻、限流电阻、下拉电阻

    认识上拉电阻R1 和限流电阻R2.下拉电阻R3  抛出一个小问题: 不接上拉电阻时的LED1 能点亮吗??? LED2能点亮吗? 一.不接上拉电阻时 实验测试: 当51单片机只给供电的情况下,实测P0 ...

  8. 51单片机(STC89C52RC) lcd1602实验小结

    lcd1602是自带控制器的液晶显示模块,能够显示两行点阵数据,其引脚参数请google之. 在实际使用的时候碰到的现象: 第1行黑块,第2行空白,是1602本身上电复位成功的标志.意味着单片机根本没 ...

  9. 51单片机K型热电偶温度采集及控制温控模块MAX6675热电偶LCD1602

    实践制作DIY- GC0068-K型热电偶温度采集及控制温控 一.功能说明: 基于51单片机设计-K型热电偶温度采集及控制温控 功能介绍: STC89C52单片机(STC89C51/52 AT89C5 ...

最新文章

  1. TensorRT 加速性能分析
  2. 生态伙伴 | 番茄君入驻飞书,帮你一招搞定时间管理,告别拖延症!
  3. 塞尔达amiibo_塞尔达荒野之息pC版(附带全Amiibo)安装教程,最无敌的游戏
  4. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
  5. 关于.Net 1.1 Windows Forms 控件的一个小问题
  6. java调用jndi出错,Webshpere数据源错误:无法查找JNDI名称
  7. CPU位数、操作系统位数、应用程序位数浅析
  8. Python撰写mail
  9. ubuntu 下一个神奇的命令--以窗口形式打开某个文件夹
  10. App 上架 AppStore和证书的各种区别
  11. 参数检验与【非参数检验】及Python/SPSS/R/Stata实现
  12. MySQL 3306端口被占用 ERROR 1043 (08S01): Bad handshake
  13. 树莓派从零开始快速入门系列汇总
  14. JavaSE学习笔记 详解Set集合中实现类:LinkedHashSet以及TreeSet
  15. 不要过于积极表现自己
  16. 手机搜狐 html5,手机搜狐网计划改版,将利用HTML5技术
  17. 【博弈】 各种博弈的搬运整理
  18. C++学习笔记【模板】
  19. 对Netflix影视剧的分析总结
  20. 【java运行报错】Can not set java.lang.String field com.iS.UserEntity.name to java.lang.Class

热门文章

  1. ZCU102开发板的时钟系统
  2. 如何在linux中备份文件
  3. BF算法及KMP算法的实现
  4. angular.js 错误: Error [$injector:unpr] 原因
  5. 教你如何正确屏蔽掉WPS弹窗广告
  6. ZBrush中的三种对称类型的完美运用
  7. 本科毕业四年时间如何从月薪7k到年薪60w,讲下个人从菜鸟程序员到公司核心开发工程师的历程!
  8. 阿米洛键盘失灵_改变静电容键盘手感单一限制,阿米洛静电容机械轴V2上手
  9. 命令行下调整linux桌面屏幕的亮度
  10. 响应式onresize监听窗口大小