用51单片机(STC89C52RC、STC12C5A60S2、STC15W104)驱动MzLH03-12864液晶显示模块
目录
前言
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液晶显示模块相关推荐
- 51单片机控制TB6600驱动器驱动42步进电机
51单片机控制TB6600驱动器驱动42步进电机 第一次 功能实现目标 硬件简介 硬件连接 程序代码 第一次 以前总是看别人写的博客,通过别人的博客解决了我很多问题,从中也学到了各种知识,虽然不是很系 ...
- 51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序
51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序 Proteus仿真效果 注意点击运行仿真后,图像刷新出来比较慢. 示例主程序 #include "REG51.h& ...
- 51单片机安装不了驱动问题的解决方案
本文章主要针对51单片机安装不了驱动这个问题.提供补充的一个解决方案. 解决方案 1.首先购买的板子是普中51单片机A6开发板,驱动安装不了可以参照论坛这里提供的解决方案:http://www.pre ...
- 51单片机STC89C52RC进阶 – 在面包板上构建51单片机最小系统
电子元件准备 STC 89C52RC 单片机芯片(40Pin 直插式DIP封装) x 1 10uF铝电解电容 x 1 10K直插式电阻 x 2 11.0592MHz晶振 x 1 30pF瓷片电容 x ...
- 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)
1.51单片机的特性 51单片机之所以成为经典,成为易上手的单片机主要有以下特点: 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位.不但能对片内某些特殊功能寄存器 ...
- 【51单片机】直流电机的驱动和PWM调速
51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向.51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速.使用 PWM 调速可以使得 ...
- 51单片机P0端口的驱动能力、上拉电阻、限流电阻、下拉电阻
认识上拉电阻R1 和限流电阻R2.下拉电阻R3 抛出一个小问题: 不接上拉电阻时的LED1 能点亮吗??? LED2能点亮吗? 一.不接上拉电阻时 实验测试: 当51单片机只给供电的情况下,实测P0 ...
- 51单片机(STC89C52RC) lcd1602实验小结
lcd1602是自带控制器的液晶显示模块,能够显示两行点阵数据,其引脚参数请google之. 在实际使用的时候碰到的现象: 第1行黑块,第2行空白,是1602本身上电复位成功的标志.意味着单片机根本没 ...
- 51单片机K型热电偶温度采集及控制温控模块MAX6675热电偶LCD1602
实践制作DIY- GC0068-K型热电偶温度采集及控制温控 一.功能说明: 基于51单片机设计-K型热电偶温度采集及控制温控 功能介绍: STC89C52单片机(STC89C51/52 AT89C5 ...
最新文章
- TensorRT 加速性能分析
- 生态伙伴 | 番茄君入驻飞书,帮你一招搞定时间管理,告别拖延症!
- 塞尔达amiibo_塞尔达荒野之息pC版(附带全Amiibo)安装教程,最无敌的游戏
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
- 关于.Net 1.1 Windows Forms 控件的一个小问题
- java调用jndi出错,Webshpere数据源错误:无法查找JNDI名称
- CPU位数、操作系统位数、应用程序位数浅析
- Python撰写mail
- ubuntu 下一个神奇的命令--以窗口形式打开某个文件夹
- App 上架 AppStore和证书的各种区别
- 参数检验与【非参数检验】及Python/SPSS/R/Stata实现
- MySQL 3306端口被占用 ERROR 1043 (08S01): Bad handshake
- 树莓派从零开始快速入门系列汇总
- JavaSE学习笔记 详解Set集合中实现类:LinkedHashSet以及TreeSet
- 不要过于积极表现自己
- 手机搜狐 html5,手机搜狐网计划改版,将利用HTML5技术
- 【博弈】 各种博弈的搬运整理
- C++学习笔记【模板】
- 对Netflix影视剧的分析总结
- 【java运行报错】Can not set java.lang.String field com.iS.UserEntity.name to java.lang.Class