/*****************************************************/
//描述:LCD12864的驱动
//作者:小四叶草
//时间:2015/07/16
//描述:显示屏的滚动,需要扩展指令
//卷地址只能滚屏64行,也就是2页(一页四行),那我只能定义虚拟页(page),让它来满足我一直滚屏显示我的文字。比我的文字是四页
/*****************************************************/
#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File#define LCD_DATA        (*((volatile Uint16 *)0x45EF))
#define E               GpioDataRegs.GPBDAT.bit.GPIO61
#define RW              GpioDataRegs.GPADAT.bit.GPIO27
#define RS              GpioDataRegs.GPBDAT.bit.GPIO60
#define LOW             0
#define HIGH            1
#define CLEAR_SCREEN    0x01        //清屏指令:清屏且AC值为00H
#define AC_INIT         0x02        //将AC设置为00H。且游标移到原点位置
#define CURSE_ADD       0x06        //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)
#define FUN_MODE        0x30        //工作模式:8位基本指令集
#define DISPLAY_ON      0x0c        //显示开,显示游标,且游标位置反白
#define DISPLAY_OFF     0x08        //显示关
#define CURSE_DIR       0x14        //游标向右移动:AC=AC+1
#define SET_CG_AC       0x40        //设置AC,范围为:00H~3FH
#define SET_DD_AC       0x80 #define    DELAY_MS(A)     DELAY_US((long double)A * 1000.0L)
#define DELAY_100US(B)  DELAY_US((long double)B * 100.0L)void InitXintf(void);
void ConfigGpio(void);
void InitLcd(void);
void Read_Busy(void);
void WriteCmd12864(Uint16 cmd);
void WriteData12864(Uint16 dat);
void DisplayDdram(uchar *hz);
void DispBMP(uchar *adress);
void CLR_GDRAM(void);
void gunping(void);
void gunping1(void);
void gunping2(void);//=========一页========================
uchar tab1[]="晴天有月来几时?";
uchar tab2[]="我今停杯一问之。";uchar tab3[]="人攀明月不可得,";
uchar tab4[]="月行却与人相随。";
//========二页==========================
uchar tab5[]="胶白飞镜林丹阙,";
uchar tab6[]="绿烟灭尽清辉发。";uchar tab7[]="但见宵从海上来,";
uchar tab8[]="宁知晓向云间没?";
//========三页==========================
uchar tab9[]="白兔捣药秋复春,";
uchar tab10[] = "嫦娥孤栖与谁邻?";uchar tab11[] = "今人不见古时月,";
uchar tab12[]="今月曾经照古人";
//========四页==========================
uchar tab13[]="古人今人如流水,";
uchar tab14[]="共看明月皆如此。";uchar tab15[]="唯愿当歌对酒时,";
uchar tab16[]="月光长照金樽里。";void main(void)
{uchar i;uchar page = 0;InitSysCtrl();InitXintf();InitXintf16Gpio();DINT;InitPieCtrl();IER = 0x0000;IFR = 0x0000;ConfigGpio();InitLcd();WriteCmd12864(CLEAR_SCREEN);DELAY_US(50);gunping();WriteCmd12864(0x34); //开启扩展指令WriteCmd12864(0x03);//允许写入卷动地址for(i = 0;i < 64; i++){if((32 == i) & (0 == page)){WriteCmd12864(0x30); //返回到基本指令WriteCmd12864(0x80);DisplayDdram(tab5);WriteCmd12864(0x90);DisplayDdram(tab6);WriteCmd12864(0x88);DisplayDdram(tab7);WriteCmd12864(0x98);DisplayDdram(tab8);WriteCmd12864(0x34); //开启扩展指令WriteCmd12864(0x03);//允许写入卷动地址}else if((32 == i) & (1 == page)){WriteCmd12864(0x30); //返回到基本指令WriteCmd12864(0x80);DisplayDdram(tab9);WriteCmd12864(0x90);DisplayDdram(tab10);WriteCmd12864(0x88);DisplayDdram(tab11);WriteCmd12864(0x98);DisplayDdram(tab12);WriteCmd12864(0x34); //开启扩展指令WriteCmd12864(0x03);//允许写入卷动地址}else if((32 == i) & (2 == page)){WriteCmd12864(0x30); //返回到基本指令WriteCmd12864(0x80);DisplayDdram(tab13);WriteCmd12864(0x90);DisplayDdram(tab14);WriteCmd12864(0x88);DisplayDdram(tab15);WriteCmd12864(0x98);DisplayDdram(tab16);WriteCmd12864(0x34); //开启扩展指令WriteCmd12864(0x03);//允许写入卷动地址}else if((63 == i) & (0 == page)){i =0;page++;WriteCmd12864(0x30); //返回到基本指令gunping1();WriteCmd12864(0x34); //开启扩展指令WriteCmd12864(0x03);//允许写入卷动地址}else if((63 == i) & (1 == page)){i =0;page++;WriteCmd12864(0x30); //返回到基本指令gunping2();WriteCmd12864(0x34); //开启扩展指令WriteCmd12864(0x03);//允许写入卷动地址}else{}WriteCmd12864(0x40 + i);DELAY_MS(10);}WriteCmd12864(0x30); //返回到基本指令}void ConfigGpio(void)
{EALLOW;GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 0;GpioCtrlRegs.GPADIR.bit.GPIO27 = 1;EDIS;
}void InitLcd(void)
{DELAY_100US(5);WriteCmd12864(FUN_MODE);DELAY_US(5);WriteCmd12864(FUN_MODE);DELAY_US(5);WriteCmd12864(0x0C);DELAY_US(5);WriteCmd12864(CLEAR_SCREEN);DELAY_US(30);WriteCmd12864(AC_INIT);DELAY_US(4);}
void Read_Busy() //读忙标志最高位为1,则busy,不能进行读写操作
{RS = LOW;RW = HIGH;E = HIGH;while(LCD_DATA & 0X80);E = LOW;
}
void WriteCmd12864(Uint16 cmd)
{Read_Busy();RS = LOW;RW = LOW;//写数据E = HIGH;LCD_DATA  = cmd;E = LOW;
}void WriteData12864(Uint16 dat)
{Read_Busy();RS = HIGH;RW = LOW;//写数据E = HIGH;LCD_DATA  = dat;E = LOW;
}void DisplayDdram(uchar *hz)
{while(*hz != '\0'){WriteData12864(*hz);//地址里面的值hz++;}
}void gunping()
{WriteCmd12864(0x80);DisplayDdram(tab1);WriteCmd12864(0x90);DisplayDdram(tab2);WriteCmd12864(0xA0);DisplayDdram(tab3);WriteCmd12864(0xB0);DisplayDdram(tab4);WriteCmd12864(0x88);DisplayDdram(tab3);WriteCmd12864(0x98);DisplayDdram(tab4);WriteCmd12864(0xA8);DisplayDdram(tab5);WriteCmd12864(0xB8);DisplayDdram(tab6);}
void gunping1()
{WriteCmd12864(0x80);DisplayDdram(tab5);WriteCmd12864(0x90);DisplayDdram(tab6);WriteCmd12864(0xA0);DisplayDdram(tab7);WriteCmd12864(0xB0);DisplayDdram(tab8);WriteCmd12864(0x88);DisplayDdram(tab7);WriteCmd12864(0x98);DisplayDdram(tab8);WriteCmd12864(0xA8);DisplayDdram(tab9);WriteCmd12864(0xB8);DisplayDdram(tab10);}void gunping2()
{WriteCmd12864(0x80);DisplayDdram(tab9);WriteCmd12864(0x90);DisplayDdram(tab10);WriteCmd12864(0xA0);DisplayDdram(tab11);WriteCmd12864(0xB0);DisplayDdram(tab12);WriteCmd12864(0x88);DisplayDdram(tab11);WriteCmd12864(0x98);DisplayDdram(tab12);WriteCmd12864(0xA8);DisplayDdram(tab13);WriteCmd12864(0xB8);DisplayDdram(tab14);}

12864带字库显示屏滚屏显示相关推荐

  1. QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)

    作为新手小白的一些分享....... 其中一部分功能要求显示多张图片,如果图片总高度超过工具窗口的高度就要有滚动条出现,实现滚屏的效果,网上这部分内容少之又少,我就把效果和代码都贴出来供大家参考. 想 ...

  2. c语言16x32点阵显示汉字,点阵16*32滚屏显示汉字

    // matrix2pcs20140821.ino const int SH_CP = 8; const int DS = 9; const int ST_CP = 10; //声明4个数组临时变量 ...

  3. linux分屏命令,Linux中如何分屏显示的指令是什么

    linux中如果想要把某个命令或者程序执行的输出结果分屏显示,可以使用more工具来实现.是几乎所有linux发行版都自带的一个分屏显示的工具. 1:如果只是输出一个文件的内容,可以直接用more来输 ...

  4. linux分屏显示两个文件内容,在linux中,如何分屏显示一个文件(如.txt)的内容?指令或快捷键...

    linux中如果想要把某个命令或者程序执行的输出结果分屏显示,可以使用more工具来实现.是几乎所有linux发行版都自带的一个分屏显示的工具. 1:如果只是输出一个文件的内容,可以直接用more来输 ...

  5. 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字

    目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...

  6. 点阵LCD12864的显示原理(不带字库)

    点阵LCD12864的显示原理(不带字库) 在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果.对于显示英文操作,由于英文字母种类很少,只需要8位(一字节 ...

  7. STM32系列(HAL库)——F103C8T6硬件SPI点亮带字库OLED屏

    1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)程序:点击下载 2.硬件准备 (1)1.3寸带字库OLED 注意,成品模块无RES引脚,模块正常工作时RES置于高电平,成品模块是硬 ...

  8. 1366*768 显示屏模式造成远程桌面不能全屏显示

    1366*768 显示屏模式造成远程桌面不能全屏显示 补丁如下: 支持win8 win7 64bit KB Article Number(s): 2582172 Language: All (Glob ...

  9. 计算机屏幕节电模式,显示器黑屏显示省电模式是怎么回事_电脑显示屏省电模式黑屏如何解决...

    最近有不少用户在使用电脑的时候,发现电脑的显示器突然黑屏,并显示省电模式,给用户们带来了很多困扰,许多用户高不知道显示器黑屏显示省电模式是怎么回事,为了帮助到大家,本文给大家讲解一下电脑显示屏省电模式 ...

最新文章

  1. Kaggle金牌得主的Python数据挖掘框架,机器学习基本流程都讲清楚了
  2. cgi硬盘安装器_简简单单,玩转虚拟硬盘装多系统
  3. reactjs组件实例的三大属性之props使用示例:在函数式组件中使用props
  4. 【项目管理】管理良好沟通
  5. href up test.php,test.php
  6. bottleneck resnet网络_深度学习|图像分类:ResNet(二)
  7. mysql把两个查询的结果合并为一个结果
  8. 关于个人博客转移的那些事
  9. Linux驱动段错误,linux驱动调试--段错误之oops信息分析
  10. 关于ENVI-FLAASH大气校正报 .. bin\flaash\scriptfile.006系统找不到指定的路径的错误
  11. 构建自己的Aleax查询服务
  12. adb:设置手机屏幕亮度
  13. 手机的RFID射频技术应用
  14. office 论文 页码_officexx论文页码【officexx设置论文页码】
  15. Q7:难道不想手工搞个环境?
  16. 用javascript和jquery部分知识实现的打地鼠小游戏
  17. 使用POI读写word doc文件
  18. JavaScript Date相关练习
  19. 【华人学者风采】张良培 武汉大学
  20. 9.高性能计算 期末复习

热门文章

  1. 会计要素的核算-资产的核算
  2. android 适配简单粗暴,Android10填坑适配指南(实际经验代码)
  3. 游戏商店系统定时限购玩法设计是否合理
  4. Nacos 源码启动报错derbyLocale_pl.jar (系统找不到),UnknownHostException: jmenv.tbsite.net,Unable to start embedd
  5. 天寒地冻正是读书好时节
  6. PythonBase(一)
  7. mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)
  8. 正常使用计算机可以用多少年,网吧电脑的正常使用寿命是多长时间
  9. 2022了,连续第15年的回顾展望
  10. 中的实践 中兴_12.1112丨中兴公开课——感受5G先锋,学习数字化转型和管理之道...