这篇文章主要来写一下12864液晶显示的程序,至于一些寄存器的设置,和12864液晶的资料介绍,大家可以参考附件中的12864液晶的datesheet。我在这里不做详细介绍了.

 我在这里直接贴出程序,程序注释比较清楚,相信大家对照dateshee可以看明白。
/***********************************
程序功能:无字库12864液晶的显示
编译环境:keil4
运行环境:proteus7.7
整理人:张家越  QQ:435835181
整理时间:2011-04-28
取模软件使用的是:ZM201
***********************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define port P0  //DB0~DB7数据口
sbit e=P2^0;//使能
sbit rw=P2^1;//读写
sbit rs=P2^2;//数据/命令
sbit cs2=P2^3;//片选
sbit cs1=P2^4;
sbit busy=P0^7;//检测忙uchar code hz[][32]={/*--  文字:  书  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x10,0x10,0x10,0xFF,0x88,0x88,0xFA,0x82,0x84,0x8C,0x00,0x00,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x7F,0x00,0x00,0x08,0x10,0x0C,0x03,0x00,0x00,0x00},/*--  文字:  山  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0x20,0x20,0x20,0x1F,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00},/*--  文字:  有  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x10,0x10,0x90,0x50,0xF0,0x4C,0x4B,0x28,0x28,0x28,0xE8,0x08,0x08,0x00,0x00,
0x00,0x02,0x01,0x00,0x00,0x7F,0x0A,0x0A,0x05,0x05,0x20,0x7F,0x00,0x00,0x00,0x00},/*--  文字:  路  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x3C,0x24,0xE2,0x9E,0x20,0x18,0x97,0x64,0x54,0x8C,0x00,0x00,0x00,0x00,
0x00,0x10,0x1F,0x08,0x0F,0x04,0x02,0x7D,0x24,0x22,0x12,0x1E,0x01,0x01,0x01,0x00},/*--  文字:  勤  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x08,0x88,0xBF,0xE4,0x54,0x5F,0xC4,0x44,0xC0,0x3F,0x20,0xE0,0x00,0x00,0x00,
0x00,0x20,0x2B,0x2A,0x1F,0x15,0x55,0x31,0x0C,0x23,0x40,0x30,0x0F,0x00,0x00,0x00},/*--  文字:  为  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x40,0x44,0x58,0xC0,0x38,0x27,0x20,0x20,0xE0,0x00,0x00,0x00,0x00,
0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x10,0x21,0x46,0x30,0x0F,0x00,0x00,0x00,0x00},/*--  文字:  径  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x10,0x88,0xC4,0x33,0x40,0x44,0x24,0x22,0x12,0x9A,0xA6,0xA0,0x40,0x00,0x00,
0x02,0x01,0x00,0x7F,0x00,0x20,0x21,0x21,0x21,0x1F,0x10,0x10,0x10,0x10,0x00,0x00},/*--  文字:  ,  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x2C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*--  文字:  学  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x60,0x20,0xA0,0xA2,0xAC,0x51,0x56,0xD0,0x5C,0x13,0x10,0x30,0x10,0x00,0x00,
0x00,0x04,0x04,0x04,0x04,0x24,0x44,0x3F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00},/*--  文字:  海  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x20,0x40,0x04,0xC8,0x20,0x10,0xCC,0x4B,0xA8,0x28,0x24,0xE4,0x04,0x00,0x00,0x00,
0x00,0x10,0x3E,0x01,0x02,0x1A,0x17,0x12,0x2E,0x49,0x39,0x0F,0x09,0x01,0x00,0x00},/*--  文字:  无  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x40,0x44,0x44,0x44,0xC4,0x3C,0xE2,0x22,0x22,0x22,0x20,0x00,0x00,0x00,
0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x1F,0x20,0x20,0x20,0x20,0x3C,0x00,0x00},/*--  文字:  涯  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x20,0x40,0x02,0xC4,0x00,0xFC,0x24,0x24,0xFC,0x92,0x92,0x82,0x00,0x00,0x00,
0x00,0x10,0x3C,0x43,0x30,0x4E,0x41,0x49,0x49,0x3F,0x24,0x24,0x20,0x20,0x00,0x00},/*--  文字:  苦  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x80,0x88,0x88,0x88,0x9E,0x84,0xE4,0x44,0x5F,0x44,0x44,0x44,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x7C,0x44,0x44,0x23,0x22,0x22,0x3E,0x00,0x00,0x00,0x00,0x00},/*--  文字:  作  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x80,0x40,0x20,0xF8,0x07,0x40,0x30,0x1C,0xF3,0x90,0x90,0x48,0x48,0x08,0x00,0x00,
0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x7F,0x04,0x04,0x02,0x02,0x02,0x00,0x00},/*--  文字:  舟  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0xF8,0x88,0x8C,0x9B,0xA4,0x84,0xFC,0x40,0x40,0x40,0x00,0x00,
0x01,0x41,0x21,0x19,0x07,0x00,0x02,0x04,0x10,0x20,0x7F,0x00,0x00,0x00,0x00,0x00},/*--  文字:  。  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x02,0xFE,0x92,0x92,0x92,0xFE,0x12,0x11,0x12,0x1C,0xF0,0x18,0x17,0x12,0x10,0x00,0x08,0x1F,0x08,0x08,0x04,0xFF,0x05,0x81,0x41,0x31,0x0F,0x11,0x21,0xC1,0x41,0x00},
//"联",14{0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00},
//"系",15{0x08,0x08,0x08,0x08,0x08,0x08,0xF9,0x4A,0x4C,0x48,0x48,0xC8,0x08,0x08,0x08,0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x20,0x40,0x40,0x3F,0x00,0x00,0x00,0x00},
//"方",16{0x00,0x08,0x88,0x88,0x88,0x88,0x88,0x08,0xFF,0x08,0x09,0x0E,0x0A,0x08,0x00,0x00,0x00,0x20,0x60,0x30,0x1F,0x10,0x08,0x08,0x00,0x07,0x18,0x20,0x40,0x80,0x70,0x00},
//"式",17};uchar code num[][16]={
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},
//"0",0{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},
//"1",1{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},
//"2",2{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},
//"3",3{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},
//"4",4{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},
//"5",5{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},
//"6",6{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},
//"7",7{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},
//"8",8{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00} //"9",9};uchar code sign[][16]={{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},
//"!",0{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},
//":",1{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00}
//"Q",2};//延时
void delay(uint n)
{uint i;for(;n>0;n--)for(i=200;i>0;i--);
}//判断是否忙
void check()
{rs=0;  rw=1;   //读 e=1;port=0x00;e=1; while(busy);e=0;
}
//写指令
void sendcommand(uchar command)
{check();rs=0;  //指令rw=0;  //写 e=0;port=command;e=1;e=0; //写入指令
}
//写数据
void writedata(uchar dat)
{check();rs=1;    //数据rw=0;port=dat;e=1;e=0;
}
//选屏幕 0--全屏,1--左屏,2--右屏;
void select(uint n)
{switch(n){case 0:cs1=0;cs2=0;break;   //低电平选中case 1:cs1=0;cs2=1;break;   //cs1左屏case 2:cs1=1;cs2=0;break;   //cs2右屏}
}
//页
void setpage(uchar page)
{page=page&0x07;page=page|0xb8;sendcommand(page);
}
//列
void setcolumn(uchar column)
{column=column&0x3f;column=column|0x40;sendcommand(column);
}
//起始行
void setline(uchar line)
{line=line&0x3f;line=line|0xc0;sendcommand(line);
}
//屏幕开关显示 0--关,1--开;
void seton(uint n)
{n=n|0x3e;sendcommand(n);
}
//清屏 0--全屏,1--左屏,2--右屏;
void clear(uint n)
{uchar i,j;select(n);for(i=0;i<8;i++){setpage(i);setcolumn(0);for(j=0;j<64;j++)writedata(0);  //置0清空}
}
//初始化
void init(uchar i)
{check();seton(1);select(0);//clear(0);setline(i);
}
//显示汉字 16*16显示
void show16(uchar page,uchar column,uchar screen,uchar method,uchar *str)  //页,列,
{uchar i,j;select(screen);j=0;setpage(page);setcolumn(column);for(i=0;i<16;i++){  if(method==1)   writedata(~str[j++]); //method为显示方式。当等于1时,反白。else            writedata(str[j++]);     }setpage(page+1);setcolumn(column);for(i=0;i<16;i++){  if(method==1)   writedata(~str[j++]);else            writedata(str[j++]);     }
}
//显示数字 8*16显示
void show8(uchar page,uchar column,uchar screen,uchar method,uchar *str)
{uchar i,j;select(screen);j=0;setpage(page);setcolumn(column);for(i=0;i<8;i++){  if(method==1)   writedata(~str[j++]);else            writedata(str[j++]);     }setpage(page+1);setcolumn(column);for(i=0;i<8;i++){  if(method==1)   writedata(~str[j++]);else            writedata(str[j++]);     }
}
void welcome()
{uint i=0,j;for(j=0;j<3;j++,j++)for(i=0;i<4;i++){  show16(j,16*i,1,0,hz[i+j*4]);    //写左屏数据//    if(i+4+j*4<16)show16(j,16*i,2,0,hz[i+4+j*4]);   //写右屏数据}
//  show8(2,32,2,0,sign[0]); //!for(i=0;i<4;i++){show16(4,16*i,1,0,hz[16+i]);}show8(4,0,2,0,sign[1]); //:show8(6,0,1,0,sign[2]); //Qshow8(6,8,1,0,sign[2]); //Qshow8(6,16,1,0,sign[1]); //:
//以下数字均为反白显示。show8(6,32,1,1,num[4]); //4show8(6,40,1,1,num[3]);  //3show8(6,48,1,1,num[5]); //5show8(6,56,1,1,num[8]); //8show8(6,0,2,1,num[3]);   //3show8(6,8,2,1,num[5]); //5show8(6,16,2,1,num[1]); //1show8(6,24,2,1,num[8]); //8show8(6,32,2,1,num[1]); //1}
void main()
{uchar j;clear(0);while(1){for(j=0;j<63;){j=j+16;if(j>60)j=0;init(j);
//   delay(200);welcome();delay(500);}}}

由于作者水平有限,本文难免存在不足乃至错误,希望读者在发现错误时能及时与本人联系。
联系方式:QQ 435835181

​12864无字库液晶显示(一)相关推荐

  1. 无字库12864液晶屏滚动显示程序[转]

    同志们,做实验的时候一定要把端口重新设置成和你的实际硬件一样,不要说我是骗人的,着东西可编了我3个多小时,绝对没问题!记得P0口加上拉,或者用其他端口,如果不显示,参照我的blog中<12864 ...

  2. LCD无字库--单片机字库存储

    本文转自:http://www.rationmcu.com/elecjc/356.html 学完这篇文章,你将会使你的单片机显示系统中加入中文显示的功能. 1.导言 和单片机搭配的显示器,有12864 ...

  3. JLX256160 液晶屏串行 无字库

    单片机stm32f103 链接:https://pan.baidu.com/s/1gvVN5re0I2gu2LPP2I9njA  提取码:jkz9

  4. 12864带字库显示屏滚屏显示

    /*****************************************************/ //描述:LCD12864的驱动 //作者:小四叶草 //时间:2015/07/16 / ...

  5. 12864液晶原理分析1

    辛勤学习了好几天,终于对12864液晶有了些初步了解-没有视频教程学起来真有些累,基本上内部程序写入顺序都是根据程序自我变动,然后逆向反推出原理-- 芯片:YM12864R P-1 控制芯片:ST79 ...

  6. Protues仿真12864的学习笔记

    硬件驱动 Protues内置12864液晶型号是AMPIRE KS0108,其中KS0108为驱动器芯片的型号.驱动器作为桥梁,为引脚输入到显示在液晶上输出提供了连接.引用网友"jiangn ...

  7. 34、基于51单片机锂电池电压电流容量检测仪表LCD液晶显示 原理图PCB程序设计

    方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度.非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通 ...

  8. Foxdisk11-小字库显示汉字2

    (请保留 -> 作者:罗冰 ) 刚从大学毕业那会,对操作系统极其入迷,总想搞清楚底层是怎么运行的.其中最感兴趣的是图形的显示,BIOS对硬件的控制等.找了很多资料看,正好公司的一些项目上也需要用 ...

  9. 128*64点阵图形液晶显示屏程序设计教程

    使用PROTEUS仿真软件中的液晶显示屏(型号AMPIRE12864)探索点阵液晶的编程方式:该型号液晶屏内部无字库,只能自建字模进行字符显示(使用方法与图形显示方式一致):字模可通过"字模 ...

最新文章

  1. Akka的Actor编程
  2. 写了个牛逼的日志切面,甩锅更方便了!
  3. zephyr 测试框架
  4. 红帽JBoss企业应用平台7.0 ALPHA发布了!
  5. C/C++好不好学习呢?
  6. YII framework CComponent基础类解读(转)
  7. 796. 子矩阵的和
  8. 逸管家:别只共享单车,互联网时代还可以共享人才
  9. LINUX中nagios客户端安装步骤及遇到问题
  10. 传统的DOM渲染方式?
  11. 通达信标记符号_通达信49个图标,高手指教,通达信软件里的股票标记符号,能增加吗...
  12. 一梦江湖获取服务器信息卡住,一梦江湖手游2021年8月6日更新公告
  13. 华为交换机关闭网口_华为交换机如何关闭端口号
  14. 学习笔记:云计算第二天
  15. Wampserver图标是橙色的【问题与解决方案】
  16. OSChina 周日乱弹 ——书中自有颜如玉
  17. 俞敏洪:这是一个创业的大时代
  18. 铝模板18个标准化安装步骤,照此做法错不了
  19. 会员管理小程序实战开发教程-消费记录功能
  20. U盘安装WIN10时显示 windows无法安装到这个磁盘 选中的磁盘采用GPT分区形式

热门文章

  1. android存储文件数据恢复,安卓手机内置储存中的照片误删怎么恢复
  2. isolatedModules‘ because it is considered a global script file. Add an import, export, or an empty
  3. 主流手机开发工作分解
  4. vue引用js文件的多种方式(推荐)
  5. android字体中间横线,Android TextView(EditView)文字底部或者中间 加横线
  6. vue-seamless-scroll的使用以及实例
  7. 大学计算机基础报告总结,windows7实验报告总结.docx
  8. mini2440 led驱动
  9. vue config.js详解——vue config.js到底是什么,有什么作用?
  10. QPrinter、QPrinterInfo、QPageLayout