声明:这篇博文是2016年做毕业设计时所写,已经算是“年代久远”了,我已经无力提供任何支持。内容比较简单,所有资料都在文章中,希望对各位有所帮助。


文章目录

一、硬件部分

1.1 整体电路

1.2 原件列表

二、软件部分

2.1 程序架构

2.2 主程序

2.3 LCD12864驱动程序

2.4 字库文件

三、仿真结果


一、硬件部分

1.1 整体电路

1.2 原件列表


二、软件部分

2.1 程序架构

2.2 主程序

void main()
{lcd_init();                     // 初始化lcd_clear(0);                   // 清屏lcd_set_line(0);                // 设置起始行为0display(1, 2, 2 * 16, jiao);    // 交display(1, 2, 3 * 16, liu);     // 流display(2, 2, 4 * 16, shi);     // 使display(2, 2, 5 * 16, yong);    // 用while (1);
}

2.3 LCD12864驱动程序

#include <lcd.h>
#include <intrins.h>#define lcd_databus P2         // LCD的8位数据总线/************** 判忙函数 **************/
void lcd_r_busy()
{P2 = 0x00;RS = 0;RW = 1;EN = 1;while (P2 & 0x80);  // 最高位DB7==1,则busyEN = 0;
}/************* LCD写命令函数 *************/
void lcd_w_cmd(uchar value)
{lcd_r_busy();        // 每次读写操作前都要忙判断RS = 0;RW = 0;lcd_databus = value;EN = 1;              // 下降沿锁存写入的数据/命令_nop_();_nop_();EN = 0;
}/************* LCD写数据  **************/
void lcd_w_data(uchar value)
{lcd_r_busy();RS = 1;RW = 0;lcd_databus = value;EN = 1;                // 下降沿锁存写入的数据/命令_nop_();_nop_();EN = 0;
}/***************页设置:显示在哪一页******************/
/*************共8页,一页是8行像素点*****************/
void lcd_set_page(uchar page)
{page = 0xb8 | page;     // 页的首地址为0xb8:page或上0xb8=选择page页lcd_w_cmd(page);
}/************行设置:起始在哪一行********************/
/**********每页共8行,一般从0行开始******************/
void lcd_set_line(uchar sline)
{sline = 0xc0 | sline;   // 起始行地址为0xc0:sline或上0xc0=选择行lcd_w_cmd(sline);
}/*************起始列设置+像素点选择********************/
/***********每半片共64列,列值不得大于63***************/
void lcd_set_column(uchar column)
{column = 0x3f & column;   // 与上列的最大值63:0x3f  可得所选列值<63column = 0x40 | column;   // 得列的首地址lcd_w_cmd(column);
}/*************设置显示的开关********************/
/**********0为关闭显示;1为 开启显示************/
void lcd_on_off(uchar set)
{set = 0x3e | set;        // =0011 111x----0x3e为关闭显示;0x3f为开启显示lcd_w_cmd(set);
}/*************选择左右半屏显示********************/
/********0-全屏显示;1-左;2-右********************/
/************cs片选端低电平有效********************/
void lcd_cs(uchar sel)
{switch (sel){case 0:CS1 = 0; CS2 = 0; break;     // 全屏显示case 1:CS1 = 0; CS2 = 1; break;     // 左显示case 2:CS1 = 1; CS2 = 0; break;     // 右显示default:break;}
}/*************清屏:选择半屏********************/
/********0-清全屏;1-清左;2-清右***************/
void lcd_clear(uchar sel)
{uchar i, j;lcd_cs(sel);for (i = 0; i < 8; i++){lcd_set_page(i);lcd_set_column(0);for (j = 0; j < 64; j++){lcd_w_data(0x00);   // 每列全部写0,列地址指针自动+1}}
}/****************LCD的初始化********************/
void lcd_init()
{lcd_r_busy();lcd_cs(0);lcd_on_off(0);      // 关显示lcd_cs(0);lcd_on_off(1);      // 开显示lcd_cs(0);lcd_clear(0);       // 清全屏lcd_set_line(0);    // 起始行设为0
}/****************16*16像素的汉字显示程序********************/
void display(uchar cs, uchar page, uchar column, uchar* p)
{uchar i;lcd_cs(cs);lcd_set_page(page);             // 要在本页写上半个汉字8*16lcd_set_column(column);         // 选择起始列for (i = 0; i < 16; i++){lcd_w_data(p[i]);           // 按列输入上半个汉字的编码8*16}lcd_set_page(page + 1);         // 要在下一页写下半个汉字8*16lcd_set_column(column);         // 选择起始列for (i = 0; i < 16; i++){lcd_w_data(p[i + 16]);      // 按列输入下半个汉字的编码8*16 }
}

2.4 字库文件

#ifndef _ZIKU_H_
#define _ZIKU_H_// 交
const uchar code jiao[] = { 0x08,0x08,0x88,0x68,0x08,0x08,0x09,0x0E,0x08,0x08,0x88,0x28,0x48,0x88,0x08,0x00,0x80,0x81,0x40,0x40,0x21,0x22,0x14,0x08,0x14,0x22,0x41,0x40,0x80,0x81,0x80,0x00, };// 流
const uchar code liu[] = { 0x10,0x60,0x02,0x8C,0x00,0x44,0x64,0x54,0x4D,0x46,0x44,0x54,0x64,0xC4,0x04,0x00,0x04,0x04,0x7E,0x01,0x80,0x40,0x3E,0x00,0x00,0xFE,0x00,0x00,0x7E,0x80,0xE0,0x00, };// 使
const uchar code shi[] = { 0x80,0x60,0xF8,0x07,0x04,0xE4,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0xE4,0x04,0x00,0x00,0x00,0xFF,0x00,0x80,0x81,0x45,0x29,0x11,0x2F,0x41,0x41,0x81,0x81,0x80,0x00, };// 用
const uchar code yong[] = { 0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00, };#endif

三、仿真结果

嵌入式开发:LCD12864无字库仿真与程序相关推荐

  1. 嵌入式开发:嵌入式应用程序中的信任链简介

    在设计嵌入式系统时,考虑安全性已经成为许多行业的需要.将设备连接到互联网的驱动器允许对系统进行远程攻击.想要构建安全嵌入式系统的嵌入式开发人员必须确保他们的设备实现信任链.在这篇文章中,我们将探讨什么 ...

  2. 嵌入式开发模拟器:qemu使用,仿真多种方式启动内核kernel (超详细,tftp/nfs等方式)

    适用于: 想学习嵌入式开发,但又没有购买开发板的情况 开发测试阶段避免繁琐耗时下载到主板 便于调试驱动及内核 与外设关联不大时 环 境: vmare 15 pro ubuntu 18.04 qemu ...

  3. esp32 怎么分配freertos 堆栈大小_嵌入式开发入门-从STM32CudeMX、FreeRtos、Proteu仿真开始...

    系统 嵌入式是什么呢? 嵌入式开发就是指在嵌入式操作系统下进行开发,常用的嵌入式操作系统有FreeRtos,ucos,linux,android等.与单片机开发最大的不同就是裸跑与跑系统的区别.嵌入式 ...

  4. DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...

    先说废话 很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html 因为我承诺第五篇就公布 ...

  5. uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...

    来源:嵌入式时代@头条号 在2000年前后,嵌入式软件工程师有着一套非常具体的技能,他们通常是电气工程师,不仅了解底层硬件的工作原理,还可以在底层编写汇编代码或者C语言代码,以使系统满足实时需求.嵌入 ...

  6. 随想录(vc仿真下的嵌入式开发)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 做嵌入式开发,如果有单板并且可以单步调试,那么开发起来还是不复杂的.另外一种,如果没有单板的话 ...

  7. 适用于树莓派Raspberry Pi的嵌入式QT平台(二) -- 在Windows下用Qt Creator开发编译Raspberry Qt 5应用程序...

    接着上篇 "交叉编译安装Qt Embedded 5.5",我们已经成功在Windows上交叉编译了Raspberry Pi的嵌入式Qt 5.5.那么我们就可以开始开发基于Qt 5的 ...

  8. [Web] [微信小程序-云开发] 商城 无服务器 加后台管理

    [Web] [微信小程序-云开发] 商城 无服务器 加后台管理 说明: 目前云开发仅针对认证后的公众号使用(每年300的费用那个) wxapp-mall-clouddb 前言 如何使用 更多说明 功能 ...

  9. C++-网络库:Poco概述【开源的C++类库的集合】【提供简单的、快速的网络和可移植应用程序的C++开发】【和C++标准库可以很好的集成并填补C++标准库的功能空缺】【适合嵌入式开发】

    学习一个框架前,要先明白它的是什么,为什么,怎么用.下面这些文字,是从中文poco官网上转过来的,正如poco c++库的特点,非常清晰,代码风格更是一目了然: poco开发库的特点,非常适合写后台处 ...

  10. 嵌入式开发——程序跑飞原因总结

    前言 在嵌入式软件开发中,程序跑飞是一个比较棘手的问题.为什么说棘手,那是因为当程序跑飞时,往往没有任何错误信息报出来,Log停止的地方通常也不是出现问题的地方,因此这让我们很难定位问题. 基于以上原 ...

最新文章

  1. 好书 《古代的中医》 《麦肯锡卓越工作方法》
  2. ASP.NET Core -中间件(Middleware)使用
  3. 已知gcd和lcm求a+b最小和?------数论
  4. G. Xor-MST(异或最小生成树)
  5. 使用React Native进行气泡动画
  6. VM安装虚拟机不能全屏解决
  7. HISTFILESIZE与HISTSIZE的区别
  8. C语言输入函数换行符赋给变量B,C语言程序设计第3章顺序结构程序设计.pptx-资源下载在线文库www.lddoc.cn...
  9. DeeCamp,(可能是)全球最好的 AI 夏令营
  10. OpenCV编程-无法解析的外部符号 void __cdecl cv::cvtColor
  11. Android第三十三期 - Dialog的应用
  12. PostgreSQL学习手册(模式Schema)
  13. 100个高质量Java开发者博客 【转】
  14. CSDN下载码如何使用以及免积分下载
  15. ug建模减速器_UG齿轮减速器建模方法
  16. 价值800新视界影视源码全开源源码
  17. 用友集团前端面经整理及答案
  18. kindle阅读mobi电子书资料共享
  19. getBytes方法
  20. matlab中clc什么意思,MATLAB中clc是什么意思

热门文章

  1. 怎么样才可以?批量下载快手播主的全部视频?
  2. 转:三款免费好用的Gif录屏神器
  3. ASEMI快恢复二极管型号大全之TO220和TO-3P封装
  4. node2vec python_Node2vec和networkx
  5. 魔兽支持宽屏--怎样让宽屏支持更多游戏?
  6. android x5全屏白色,x5webview 自定义全屏界面(示例代码)
  7. win10便签常驻桌面_win7和win10自带桌面便签哪里找
  8. Redfish 模型工具:Redfish Mockup Creator 和 Redfish Mockup Server
  9. 面向GitHub学习网课
  10. linux tar 绝对路径,tar打包使用绝对路径详解