//带中文字库的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显示程序相关推荐

  1. 数字钟显示时间日期温度C语言程序,Ds3231+12864液晶显示AT89C51带温度功能的时钟程序...

    Ds3231+12864液晶显示AT89C51带温度功能的时钟程序. #include #include #include #define uchar unsigned char #define ui ...

  2. 基于51单片机及DS18B20温度传感器数码管显示程序

    #include<reg52.h> #include<intrins.h> sbit DQ=P1^4;//温度采集 sbit latch1=P2^2;//段锁存 sbit la ...

  3. 微信小程序自带地图_微信小程序开发之之地图功能(map)

    本文将带你了解微信小程序开发之之地图功能(map),希望本文对大家学微信有所帮助. 主要介绍微信小程序中的地图模块相关功能.基本使用地图组件使用起来也很简单..wxml 1212参数列表及说明如下:除 ...

  4. 简洁UI自带稳定接口去水印小程序源码

    这是一款UI超简洁的一款去水印小程序源码 到底有多简洁呢,小编只能说要多简洁就有多简洁 首先保存视频的时候不会显示下载进度,所以你就会误以为没反应 其实视频已经在下载了,当然啦下载好了以后还是会有下载 ...

  5. Keil进入仿真,窗口不显示程序运行箭头

    Keil进入仿真后,程序窗口中不显示程序运行箭头.点"Run",程序也会运行,就是不显示程序运行指示箭头. 可能是"Debug Infomation"选项没有勾 ...

  6. VC MFC程序,在About对话框中获取并显示程序的版本号

    =================================================本文为HeYuanHui原作 转载必须确保本文完整并完整保留原作者信息及本文原始链接! NN:     ...

  7. 谷歌浏览器添加插件时显示程序包无效:CRX_HEADER_INVALID 解决办法

    在添加谷歌插件的时候,发现谷歌浏览器显示 程序包无效:"CRX_HEADER_INVALID" 解决方法如下: 下图是下载好的 .crx 结尾的插件. 将插件的后缀名改为.rar  ...

  8. 10分钟带你学会微信小程序的反编译

    以xxxxx小程序为例10分钟带你学会微信小程序的反编译 2019-11-28 12:59:26 以一个简单的例子介绍下小程序反编译操作流程 实验环境 前置准备 模拟器内软件安装 获取小程序包 开始解 ...

  9. c语言如何扩大字体,C语言图形汉字及放大显示程序

    #include 〈graphics.h〉 #include 〈stdio.h〉 #include 〈fcntl.h〉 #include 〈io.h〉 #include 〈stdlib.h〉 #inc ...

最新文章

  1. k8s部署dubbo-admin 2.5.10
  2. Android之Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
  3. 语音交互有哪些优势与劣势?
  4. python-ppt1
  5. polardb mysql 事务隔离级别_事务的四种隔离级别
  6. android 崩溃,android 9出现崩溃
  7. 【Oracle】truncate分区表
  8. Linux进程控制与进程优先级
  9. 利用辗转相除法求两个数的最大公约数
  10. 躲避校园网客户端的检测实现客户端移动热点开启
  11. 信息安全期末复习整理
  12. drools视频教程(drool实战实例+数据库+视频讲解)
  13. RFID工作频率分类
  14. ARCore 使用 SceneForm 框架 —— 三维空间中,通过三个点绘制平面(Plane)
  15. 无人机巡检技术要点解读,无人机巡检方案实现
  16. Wi-Fi DFS与TPC介绍
  17. 中国武术职业联赛(WMA)
  18. 微信网页audio标签无法正常播放音频
  19. 关于kindeditor编辑器批量上传图片不显示添加图片按钮的问题
  20. Navicat Premium 注 册 码

热门文章

  1. java 1.8有没有jshell_收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~...
  2. 用Python爬了IPhone全部游戏免费榜的实时排名,我发现~
  3. 【智能工厂】智能工厂如何快速落地
  4. 基于高斯分布的异常检测算法 项目描述
  5. 最全的Python进度条展示程序方案
  6. 点到曲线的距离公式_推导点到直线的距离公式到底有多少种方法?
  7. 一个在线让你的网站多语言化的工具
  8. 罗永浩宣布年后回归科技界!下一代平台上见 网友:暗示年后“真还传”要完结...
  9. 特斯拉推出通用钥匙带 官方售价145元
  10. 三星公布三款新型车用芯片 向大众供应