12864液晶图形滚动显示仿真论文(4)

2019-03-04 15:21

图10 电路设计图

3 程序设计

3.1 keil简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

3.2 程序流程图

基于单片机的12864液晶显示软件设计主要由显示子程序、读出并处理12864LCD显示程序等组成。为了充分发挥AT89C51优越的性能价格比,系统软件采用C语言编写以增强系统的实时性。在设计上尽量做到硬件“软化”,使系统硬件设计得到简化。程序流程图如图11所示。

15

开 始 LCD初始化 检测忙信号 左写指令子程序 左写数据子程序 右写指令子程序 右写数据子程序 LCD显示 清屏程序 延时程序 结 束

图11 程序流程图

3.3 12864LCD主程序

3.3.1 引脚定义 sbit RS=P1^0; sbit RW=P1^1; sbit EN=P1^2;

//RS为0---命令;1----数据 //RW为1---写;0---读 //使能端

sbit CS1=P2^1; //片选1低电平有效,控制左半屏 sbit CS2=P2^0; //片选1低电平有效,控制右半屏 sbit KEY1=P3^0; sbit KEY2=P3^1;

16

sbit KEY3=P3^2;

sbit KEY4=P3^3; //四个按键控制口 3.3.2读写操作 uchar Read_LCD(void) { }

void write_LCD_data(uchar dat)//写数据函数 {

Read_busy(); RS=1; RW=0;

17

//读数据函数

uchar value; Read_busy(); LCD_databus=0xFF; RS=1; RW=1; EN=1; _nop_(); _nop_(); EN=0;

LCD_databus=0xFF; RS=1; RW=1; EN=1;

value=LCD_databus; _nop_(); _nop_(); EN=0; return value;

//读取真正的数据

//先进行一次空读操作

//选择数据

LCD_databus=dat; EN=1; _nop_(); _nop_(); EN=0; }

3.3.3 设置指令

void Set_page(uchar page) 行点阵点 {

page=0xb8|page;

//页的首地址为0xB8

//设置“页”LCD12864共8页,一页是8

//EN由1----0锁存有效数据

write_LCD_command(page); }

void Set_line(uchar startline) //设置显示的起始行 {

startline=0xC0|startline; //起始行地址为0xC0

write_LCD_command(startline); //设置从哪行开始:共0--63;一般从0 行开始显示 }

void Set_column(uchar column) //设置显示的列 {

column=column &0x3f; column= 0x40|column;

//列的最大值为64 //列的首地址为0x40 //规定显示的列的位置

write_LCD_command(column); }

void SetOnOff(uchar onoff) 开显示

//显示开关函数:0x3E是关显示,0x3F是

18

{

onoff=0x3e|onoff;

//onoff:1---开显示;0---关显示

write_LCD_command(onoff);

3.3.4 图形及汉字显示函数

void Display_HZ(uchar screen,uchar page,uchar column,uchar *p) {

uchar i;

SelectScreen(screen); Set_page(page);

//写上半页:16*8 //控制列

//控制16列的数据输出

Set_column(column*16); for(i=0;i<16;i++) { }

Set_page(page+1);

write_LCD_data(p[i]); //汉字的上半部分

//写下半页:16*8

//控制列

//控制16列的数据输出

Set_column(column*16);

for(i=0;i<16;i++) }

{ }

write_LCD_data(p[i+16]); //汉字的下半部分

void Display_picture(uchar a[][64])//显示图形—128*64大小 {

uchar i,j;

for(j=0;j<8;j++) {

SelectScreen(1); Set_page(j);

19


12864液晶图形滚动显示仿真论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:研究生学位论文撰写规范(2016年3月) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: