同志们,做实验的时候一定要把端口重新设置成和你的实际硬件一样,不要说我是骗人的,着东西可编了我3个多小时,绝对没问题!记得P0口加上拉,或者用其他端口,如果不显示,参照我的blog中《12864及1602液晶的驱动指南》,如果还不行,联系本人,qq号码页面就有。

#include<reg52.h>
#include<intrins.h>
#include<absacc.h>
#define Lcd_Bus P0 //MCU P0<------> LCM
#define Disp_On 0x3f//开显示
#define Disp_Off 0x3e//关显示
#define Col_Add 0x40//列地址
#define Page_Add 0xb8//页地址
#define Start_Line 0xc0//起始页
sbit cs1=P2^3; //Master chip enable
sbit cs2=P2^4; //Slave chip enable
sbit Enable=P2^2; // mode Enable single
sbit Di=P2^0; //Data or Instrument Select
sbit RW=P2^1; //Write or Read
sbit Lcd_Rst=P2^5; //Lcm reset
/*****************************
字模,此字体下对应的
点阵为:宽x高=16x16
*****************************/
unsigned char code Chinese_character[][32]=
{

{0x02,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xF2,0x02,0x00 ,
     0x00,0x7F,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00},/*"西",0*/
{0x80,0x90,0x8C,0x84,0x84,0xF4,0xA5,0x86,0x84,0x84,0x84,0x84,0x94,0x8C,0x84,0x00,
     0x80,0x80,0x80,0x40,0x47,0x28,0x28,0x10,0x28,0x24,0x43,0xC0,0x40,0x00,0x00,0x00},/*"安",1*/
{0x00,0x42,0x62,0x5A,0xC6,0x10,0x54,0x54,0x54,0xFF,0x54,0x54,0x7C,0x10,0x10,0x00,
     0x40,0x23,0x14,0x08,0x17,0x28,0x29,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x40,0x00},/*"建",2*/
{0x10,0x48,0x47,0xCC,0x54,0x44,0x14,0xE8,0x27,0x24,0x2C,0xF4,0x04,0x04,0x04,0x00,
     0x10,0x30,0x10,0x0F,0x88,0x48,0x30,0x0F,0x01,0x06,0x00,0x3F,0x40,0x40,0x70,0x00},/*"筑",3*/
{0x10,0x12,0x92,0x72,0xFE,0x51,0x91,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,
     0x04,0x02,0x01,0x00,0xFF,0x00,0x04,0x04,0x04,0x02,0x02,0x02,0xFF,0x01,0x01,0x00},/*"科",4*/
{0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xC8,0x48,0x48,0x7F,0x48,0xC8,0x48,0x08,0x00,
     0x01,0x41,0x80,0x7F,0x00,0x40,0x40,0x20,0x13,0x0C,0x0C,0x12,0x21,0x60,0x20,0x00},/*"技",5*/
{0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
     0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00},/*"大",6*/
{0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
     0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00},/*"学",4*/
{0x00,0x02,0x1C,0xE8,0x00,0x40,0x60,0x58,0x47,0x22,0x20,0x28,0x30,0xE0,0x40,0x00,
     0x02,0x02,0x7F,0x00,0x00,0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00},/*"冶",0*/
{0x40,0x40,0x20,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x50,0x20,0x60,0x20,0x00,
     0x40,0x40,0x42,0x42,0x4A,0x72,0x42,0x7F,0x42,0x62,0x5A,0x42,0x42,0x40,0x40,0x00},/*"金",1*/
{0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
     0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",2*/
{0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
     0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00},/*"程",3*/
{0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
     0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00},/*"学",4*/
{0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
     0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00},/*"院",5*/
{0x10,0x10,0xD0,0xFE,0x50,0x90,0x00,0x10,0x10,0x10,0xD0,0xFE,0x10,0x10,0x10,0x00,
     0x08,0x06,0x01,0xFF,0x00,0x01,0x10,0x08,0x04,0x43,0x80,0x7F,0x00,0x00,0x00,0x00},/*"材",0*/
{0x20,0x24,0xA8,0x70,0xFF,0x68,0xA4,0x20,0x42,0x8C,0x00,0x00,0xFF,0x00,0x00,0x00,
     0x08,0x06,0x01,0x00,0xFF,0x00,0x01,0x02,0x02,0x03,0x02,0x02,0xFF,0x01,0x01,0x00},/*"料",1*/
   {0x00,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
     0x40,0x20,0x18,0x07,0x00,0x20,0x40,0x3F,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00},/*"加",2*/
{0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
     0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",4*/
{0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
     0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",4*/
{0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
     0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00},/*"程",5*/
};

unsigned char code E[][16]=
{
{0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00},/*"C",0*/
{0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00},/*"r",1*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20},/*"a",2*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00},/*"s",3*/
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00},/*"y",4*/
{0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00},/*"b",5*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"o",6*/
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00},/*"y",7*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00},/*"e",8*/
};
/***********************延时子程序***********************/
void delay(unsigned int k)
{
   unsigned int i;
unsigned int j;
for(i=0;i<k;i++)
for(j=0;j<20;j++);
}
/***********************写命令左***********************/
void write_cmd_1(unsigned char command)
{
      cs1=1;cs2=0;
      Di=0;
      RW=0;
      Lcd_Bus=command;
      delay(0);
      Enable=1;
      delay(0);
      Enable=0;
}
/***********************写命令右***********************/
void write_cmd_2(unsigned char command)
{
      cs1=0;cs2=1;
      Di=0;
      RW=0;
      Lcd_Bus=command;
      delay(0);
      Enable=1;
      delay(0);
      Enable=0;
}
/***********************写数据左***********************/
void write_data_1(unsigned char dis_data)
{
cs1=1;cs2=0;
Di=1;
RW=0;
Lcd_Bus=dis_data;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/***********************写数据右***********************/
void write_data_2(unsigned char dis_data)
{
cs1=0;cs2=1;
Di=1;
RW=0;
Lcd_Bus=dis_data;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/***********************清内存左***********************/
void clear_1(void)
{
unsigned char j,k;
cs1=1;cs2=0;
write_cmd_1(Page_Add+0);
write_cmd_1(Col_Add+0);

for(k=0;k<8;k++){
write_cmd_1(Page_Add+k);
for(j=0;j<64;j++)write_data_1(0x00);
}
}
/***********************清内存右***********************/
void clear_2(void)
{
unsigned char j,k;
cs1=0;cs2=1;
write_cmd_2(Page_Add+0);
write_cmd_2(Col_Add+0);

for(k=0;k<8;k++){
write_cmd_2(Page_Add+k);
for(j=0;j<64;j++)write_data_2(0x00);
}
}
/***********************显示汉字16*16左************************/
void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n)
{
unsigned char i=0;
unsigned char j=0;
cs1=1;cs2=0;
for(i=0;i<2;i++)
{
   write_cmd_1(Page_Add+pag+i);
   write_cmd_1(Col_Add+col);
   for(j=0;j<16;j++)
    write_data_1(Chinese_character[n][16*i+j]);
}
}
/***********************显示汉字16*16右***********************/
void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n)
{
unsigned char i=0;
unsigned char j=0;
cs1=0;cs2=1;
for(i=0;i<2;i++)
{
   write_cmd_2(Page_Add+pag+i);
   write_cmd_2(Col_Add+col);
   for(j=0;j<16;j++)
    write_data_2(Chinese_character[n][16*i+j]);
}
}
/***********************显示英文16*8左************************/
void E_disp_1(unsigned char pag,unsigned char col,unsigned char n)
{
unsigned char i=0;
unsigned char j=0;
cs1=1;cs2=0;
for(i=0;i<2;i++)
{
   write_cmd_1(Page_Add+pag+i);
   write_cmd_1(Col_Add+col);
   for(j=0;j<8;j++)
    write_data_1(E[n][8*i+j]);
}
}
/***********************显示英文16*8右***********************/
void E_disp_2(unsigned char pag,unsigned char col,unsigned char n)
{
unsigned char i=0;
unsigned char j=0;
cs1=0;cs2=1;
for(i=0;i<2;i++)
{
   write_cmd_2(Page_Add+pag+i);
   write_cmd_2(Col_Add+col);
   for(j=0;j<8;j++)
    write_data_2(E[n][8*i+j]);
}
}
/***********************液晶屏初始化***********************/
void init_lcd()
{
Lcd_Rst=0;
delay(100);
Lcd_Rst=1;
delay(100);
write_cmd_1(Disp_Off);     write_cmd_2(Disp_Off);
write_cmd_1(Page_Add+0);   write_cmd_2(Page_Add+0);
write_cmd_1(Start_Line+0); write_cmd_2(Start_Line+0);
write_cmd_1(Col_Add+0);    write_cmd_2(Col_Add+0);
write_cmd_1(Disp_On);      write_cmd_2(Disp_On);
}
/***********************LCD显示子程序***********************/
void display(void)
{   
unsigned char i;
for(i=Start_Line;i<0xff;i++)
   {
     Chinese_disp_1(0,0, 0);
   Chinese_disp_1(0,16,1);
   Chinese_disp_1(0,32,2);
Chinese_disp_1(0,48,3);
   Chinese_disp_2(0,0, 4);
   Chinese_disp_2(0,16,5);
   Chinese_disp_2(0,32,6);
   Chinese_disp_2(0,48,7);
   //西安建筑科技大学
Chinese_disp_1(2,16,8);
   Chinese_disp_1(2,32,9);
   Chinese_disp_1(2,48,10);
   Chinese_disp_2(2,0,11);
   Chinese_disp_2(2,16,12);
   Chinese_disp_2(2,32,13);
   //冶金工程学院
   Chinese_disp_1(4,16,14);
   Chinese_disp_1(4,32,15);
   Chinese_disp_1(4,48,16);
   Chinese_disp_2(4,0,17);
   Chinese_disp_2(4,16,18);
        Chinese_disp_2(4,32,19);
   //材料加工工程
   E_disp_1(6,24,0);
   E_disp_1(6,32,1);
   E_disp_1(6,40,2);
   E_disp_1(6,48,3);
   E_disp_1(6,56,4);
   E_disp_2(6,0,5);
   E_disp_2(6,8,6);
   E_disp_2(6,16,7);
   E_disp_2(6,24,8);
   //Crasyboye
   write_cmd_1(i);
   write_cmd_2(i);
   delay(3000);//调整滚动速度

}
//delay(60000);
}
/***********主程序************/
void main(void)
{ init_lcd();
   clear_1();
clear_2();
while(1)
{
display();
}
}

这是个静态图片,大家看看,绝对真实!

文章摘自:http://hi.baidu.com/crasyboye/blog/item/2d600c4c0f82c4fed62afc49.html

无字库12864液晶屏滚动显示程序[转]相关推荐

  1. 关于12864液晶屏汉字显示问题

    在我们学习或者开发12864显示屏(带字库)的过程中,可能大家会遇到我这样的情况.如下: 第三行的" 数学 " 两字显示不出来?而第四行却可以,为什么? 答案显而易见,仔细观察的人 ...

  2. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...

  3. protues仿真中12864液晶屏串行编程的感想(从实际硬件驱动芯片 ST7565R到仿真硬件驱动芯片SED1565)

    因为疫情的原因,没办法回学校拿毕业设计,自然也就没办法调试,虽然硬件电路都搭好了,但没法调试也就意味着不知道程序编写是否有问题,所以就想着在protues上把硬件电路搭起来调试程序,因为单片机用的是s ...

  4. [arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)

    [arduino][u8g2][12864] oled-u8g2库使用说明(例子是12864液晶屏) 首先说一下写这个文档的目的,一是给自己做个笔记来以备后边使,二是写个文档给大家看,我从网上找了很多 ...

  5. 单片机快速入门:12864液晶屏实现多功能数字时钟

    想要快速入门单片机,就要多动手实践.也许你的手上有不止一块的单片机开发板,但是你有没有亲自动手实现自己的想法?单片机实现数字时钟是一个不错的想法.有12864液晶显示屏.有按键.有DS18B20.最关 ...

  6. 洋桃技术支持0001:GPIO驱动12864液晶屏需要注意哪些事项?

    [提问]请问洋桃1号开发板的GPIOB端口要使用的话,硬件上和软件上需要注意什么?我想用STM32上的GPIOB端口控制点亮一个20口的12864液晶屏? 解答: [方法论] 1,解决这个问题的方法是 ...

  7. 51单片机IIC 12864 OLED屏幕滚动显示仿真

    51单片机IIC 12864 OLED屏幕滚动显示仿真 程序代码接着前面文章<STC15W408AS单片机IIC驱动0.96寸OLED显示> 这里不再贴出代码了,前面有一篇有实物效果演示, ...

  8. Arduino实现超声波测距+LCD液晶屏实时显示

    Arduino实现超声波测距+LCD液晶屏实时显示 计科在我们学校是完全偏软的.实在是闲的无聊,在家搞起了硬件.好玩呐!!! ************************************* ...

  9. 液晶屏循环显示单色 液晶屏检测程序

    液晶屏由800*480个像素点构成,00ff0000中前两个表示透明度 接下来两位表示红色 接下来表示绿色 最后两位表示蓝色,即00ff0000表示红色,0000ff00表示绿色,由于下面的程序没有用 ...

最新文章

  1. lamp 环境搭建论坛
  2. oracle锁表怎么解决,Oracle锁表问题的简捷处理技巧
  3. boost::shared_mutex
  4. python变量和字符_Python变量和字符串
  5. 企业微信如何设置发票抬头 管理员在企业微信设置发票抬头的方法介绍
  6. jquery操作checkbox最佳方法
  7. 磁盘块与扇区的区别和联系
  8. MySQL 5.5.31 procedure 的语法规则细节
  9. 2602 最短路径问题
  10. 计算机组成原理学习-哈工大《计算机组成原理》第一章
  11. win10 系统 程序员计算器面板介绍和功能使用
  12. BootDo管理系统
  13. python 转doc为txt
  14. 用overleaf 写 计算机学报 格式的论文
  15. ABP vNext 缓存使用
  16. 国内安卓渠道列表42个
  17. rebase和merge区别
  18. Pygame实战:我妈50岁,戒不掉消消乐!看我给您安排一款百变款消消乐!厉害!
  19. 2018-2019年世界经济危机是中国崛起最大的机遇!
  20. js,jq,锚点 分别实现返回顶部

热门文章

  1. 产品经理学习---高级产品经理
  2. c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc
  3. mysql 现有的.sql_Mysql保持现有内容在后面增加内容的sql语句
  4. python中的可变序列有哪些_Python可变序列中的一些坑,记得多注意
  5. python 字典组成的列表 差集_python 中 如何 获取两个 字典组成的列表的差集?
  6. aboboo 上一句 快捷键_电脑软件推荐|这几个快捷键你一定能用得上
  7. 国家电网人工智能专利数量排名竟然靠前,腾讯,百度都不如国家电网
  8. 模拟数据集上训练神经网络,网络解决二分类问题练习
  9. 常见病毒、木马进程速查表
  10. mysql 多表删除