带中文字库的12864LCD显示程序
#include <reg52.H>
#include <intrins.H>
#define uchar unsigned char
#define uint unsigned int
sbit dula = P2^6;
sbit wela = P2^7;
//SCM12864-05端口定义
#define LCD_DATA P0 //数据口
sbit RS = P3^5; //并行的指令/数据选择信号, H数据, L命令
sbit RW = P3^6; //并行读写选择信号, H读, L写
sbit E = P3^4; //并行使能端, H有效, L无效
sbit PSB = P3^7; //并/串接口选择, H并,L串
sbit RET = P3^3; //复位, L有效
uchar code datas1[] = {"广东工业大学"};
uchar code datas2[] = {"自动化学院2004级"};
uchar code datas3[] = {"网络工程 (4)班"};
uchar code datas4[] = {"fengmk2@gmail.com"};
//延时约2us
void delayUs()
{
_nop_();_nop_();
}
//延时 a * 1ms
void delayMs(uint a)
{
uint i, j;
for(i = a; i > 0; i--)
for(j = 100; j > 0; j--);
}
//检测LCD是否处于忙状态, 若忙返回1, 空闲返回0
bit checkBusy()
{
bit busy;
RS = 0;
RW = 1;
E = 1;
delayUs();
busy = (bit)(LCD_DATA&0x80);
E = 0;
return busy;
}
//等待LCD到空闲
void wait()
{
while(checkBusy());
}
//写命令
void writeCmd(uchar cmd)
{
wait();
RS = 0;
RW = 0;
E = 0;
delayUs();
LCD_DATA = cmd;
delayUs();
E = 1;
delayUs();
E = 0;
}
//写数据
void writeData(uchar dat)
{
wait();
RS = 1;
RW = 0;
E = 0;
delayUs();
LCD_DATA = dat;
delayUs();
E = 1;
delayUs();
E = 0;
}
//初始化LCD
void init()
{
PSB = 1; //并口方式
writeCmd(0x30); //基本指令, 扩充指令为34H
delayMs(10);
writeCmd(0x0c); //显示开, 关光标
delayMs(10);
writeCmd(0x01); //清屏
delayMs(10);
}
void setPosition(uchar x, uchar y)
{
uchar p;
switch(x%4)
{
case 0: p = 0x80; break; //第一行开始地址
case 1: p = 0x90; break; //第二行
case 2: p = 0x88; break; //第三行
case 3: p = 0x98; break; //第四行
}
p += y;
writeCmd(p);
}
void writeString(uchar * str)
{
uchar i = 0;
while(str[i] != '\0')
{
writeData(str[i++]);
}
}
/**//***************************LCD12864***************************************/
void main()
{
//先关闭数码管, 使两个锁存器锁存, 因开了数码管, USB电压驱动不够, 将无法使LCD正常工作
dula = wela = 0;
init();
setPosition(0, 0);
writeString(datas1);
setPosition(1, 0);
writeString(datas2);
setPosition(2, 0);
writeString(datas3);
setPosition(3, 0);
writeString(datas4);
while(1);
}
带中文字库的12864LCD显示程序相关推荐
- 数字钟显示时间日期温度C语言程序,Ds3231+12864液晶显示AT89C51带温度功能的时钟程序...
Ds3231+12864液晶显示AT89C51带温度功能的时钟程序. #include #include #include #define uchar unsigned char #define ui ...
- 基于51单片机及DS18B20温度传感器数码管显示程序
#include<reg52.h> #include<intrins.h> sbit DQ=P1^4;//温度采集 sbit latch1=P2^2;//段锁存 sbit la ...
- 微信小程序自带地图_微信小程序开发之之地图功能(map)
本文将带你了解微信小程序开发之之地图功能(map),希望本文对大家学微信有所帮助. 主要介绍微信小程序中的地图模块相关功能.基本使用地图组件使用起来也很简单..wxml 1212参数列表及说明如下:除 ...
- 简洁UI自带稳定接口去水印小程序源码
这是一款UI超简洁的一款去水印小程序源码 到底有多简洁呢,小编只能说要多简洁就有多简洁 首先保存视频的时候不会显示下载进度,所以你就会误以为没反应 其实视频已经在下载了,当然啦下载好了以后还是会有下载 ...
- Keil进入仿真,窗口不显示程序运行箭头
Keil进入仿真后,程序窗口中不显示程序运行箭头.点"Run",程序也会运行,就是不显示程序运行指示箭头. 可能是"Debug Infomation"选项没有勾 ...
- VC MFC程序,在About对话框中获取并显示程序的版本号
=================================================本文为HeYuanHui原作 转载必须确保本文完整并完整保留原作者信息及本文原始链接! NN: ...
- 谷歌浏览器添加插件时显示程序包无效:CRX_HEADER_INVALID 解决办法
在添加谷歌插件的时候,发现谷歌浏览器显示 程序包无效:"CRX_HEADER_INVALID" 解决方法如下: 下图是下载好的 .crx 结尾的插件. 将插件的后缀名改为.rar ...
- 10分钟带你学会微信小程序的反编译
以xxxxx小程序为例10分钟带你学会微信小程序的反编译 2019-11-28 12:59:26 以一个简单的例子介绍下小程序反编译操作流程 实验环境 前置准备 模拟器内软件安装 获取小程序包 开始解 ...
- c语言如何扩大字体,C语言图形汉字及放大显示程序
#include 〈graphics.h〉 #include 〈stdio.h〉 #include 〈fcntl.h〉 #include 〈io.h〉 #include 〈stdlib.h〉 #inc ...
最新文章
- k8s部署dubbo-admin 2.5.10
- Android之Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- 语音交互有哪些优势与劣势?
- python-ppt1
- polardb mysql 事务隔离级别_事务的四种隔离级别
- android 崩溃,android 9出现崩溃
- 【Oracle】truncate分区表
- Linux进程控制与进程优先级
- 利用辗转相除法求两个数的最大公约数
- 躲避校园网客户端的检测实现客户端移动热点开启
- 信息安全期末复习整理
- drools视频教程(drool实战实例+数据库+视频讲解)
- RFID工作频率分类
- ARCore 使用 SceneForm 框架 —— 三维空间中,通过三个点绘制平面(Plane)
- 无人机巡检技术要点解读,无人机巡检方案实现
- Wi-Fi DFS与TPC介绍
- 中国武术职业联赛(WMA)
- 微信网页audio标签无法正常播放音频
- 关于kindeditor编辑器批量上传图片不显示添加图片按钮的问题
- Navicat Premium 注 册 码
热门文章
- java 1.8有没有jshell_收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~...
- 用Python爬了IPhone全部游戏免费榜的实时排名,我发现~
- 【智能工厂】智能工厂如何快速落地
- 基于高斯分布的异常检测算法 项目描述
- 最全的Python进度条展示程序方案
- 点到曲线的距离公式_推导点到直线的距离公式到底有多少种方法?
- 一个在线让你的网站多语言化的工具
- 罗永浩宣布年后回归科技界!下一代平台上见 网友:暗示年后“真还传”要完结...
- 特斯拉推出通用钥匙带 官方售价145元
- 三星公布三款新型车用芯片 向大众供应