找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14545|回复: 7
打印 上一主题 下一主题
收起左侧

lcd12864点阵液晶-无字库 显示 单片机程序源代码

  [复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-21 21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     今天终于把点阵液晶显示出汉字了,自学太吃力,点阵遭遇经历差点把我打击的放弃了,这些时间心里真是很矛盾,当我看到单片机真是既爱又怕,就;连这个简单的液晶驱动在看了很多资料,无数次改写程序都是失败结局.每次新的思路闪现总让我兴奋,但结果都很失望...........
呵呵,今天的小进步做为给自己鼓励, 希望自己如蜗牛般急驰学习单片机!坚持.....坚持.....

/本程序为LM12864L系列显示程序#include<reg52.h>

  1. #include<intrins.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define lcd_bus P0
  5. sbit RS = P2^5;
  6. sbit RW = P2^4;
  7. sbit E = P2^3;
  8. sbit Cs1 = P2^0;
  9. sbit Cs2 = P2^1;
  10. sbit _RST = P2^2; //定义端口
  11. uchar code  dis[][32]={        //-- 单 --
  12.       0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,
  13.       0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00,0x00,
  14.       0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,
  15.       0x09,0x09,0x09,0x09,0x0B,0x08,0x08,0x00,
  16. //-- 片 --
  17.       0x00,0x00,0x00,0xFE,0x10,0x10,0x10,0x10,
  18.       0x10,0x1F,0x10,0x10,0x10,0x18,0x10,0x00,
  19.       0x80,0x40,0x30,0x0F,0x01,0x01,0x01,0x01,
  20.       0x01,0x01,0x01,0xFF,0x00,0x00,0x00,0x00,
  21. //-- 机 --
  22.       0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,
  23.       0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
  24.       0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,
  25.       0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,
  26. //-- 是 --
  27.       0x80,0x80,0x80,0x80,0xBE,0xAA,0xAA,0xAA,
  28.       0xAA,0xAA,0xAA,0xBE,0x80,0x80,0x80,0x00,
  29.       0x00,0x40,0x20,0x10,0x0E,0x10,0x20,0x3F,
  30.       0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,
  31. //-- 我 --
  32.       0x20,0x20,0x22,0x22,0xFE,0x21,0x21,0x20,
  33.       0x20,0xFF,0x20,0x22,0xAC,0x20,0x20,0x00,
  34.       0x04,0x04,0x42,0x82,0x7F,0x01,0x01,0x10,
  35.       0x10,0x08,0x07,0x1A,0x21,0x40,0xF0,0x00,
  36. //-- 们 --
  37.       0x80,0x40,0xF0,0x1C,0x03,0xF0,0x01,0x0E,
  38.       0x04,0x00,0x04,0x04,0x04,0xFC,0x00,0x00,
  39.       0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,
  40.       0x00,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,
  41. //-- 的 --
  42.       0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,
  43.       0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,
  44.       0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,
  45.       0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00,
  46. //-- 好 --
  47.       0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,
  48.       0x82,0x82,0xF2,0x8A,0x86,0x82,0x80,0x00,
  49.       0x80,0x43,0x22,0x14,0x0C,0x73,0x20,0x00,
  50.       0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,
  51. //-- 朋 --
  52.       0x00,0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,
  53.       0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,
  54.       0x40,0x30,0x0F,0x00,0x20,0x40,0x3F,0x40,
  55.       0x30,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00,
  56. //-- 友 --
  57.       0x08,0x08,0x08,0x08,0x08,0xC8,0x7F,0x48,
  58.       0x48,0x48,0x48,0xC8,0x08,0x08,0x08,0x00,
  59.       0x40,0x20,0x90,0x88,0x46,0x41,0x21,0x12,
  60.       0x0C,0x0C,0x13,0x20,0x60,0xC0,0x40,0x00,
  61. //-- 很 --
  62.       0x10,0x88,0xC4,0x23,0x1A,0x00,0xFE,0x4A,
  63.       0x4A,0xCA,0x4A,0x4A,0x7E,0x00,0x00,0x00,
  64.       0x01,0x00,0xFF,0x00,0x00,0x40,0xFF,0x40,
  65.       0x20,0x13,0x04,0x1A,0x33,0x62,0x20,0x00,
  66. //-- 想 --
  67.       0x08,0xC8,0x38,0xFF,0x18,0x68,0x08,0x00,
  68.       0xFE,0x2A,0x2A,0x2A,0x2A,0xFE,0x00,0x00,
  69.       0x01,0x40,0x70,0x01,0x38,0x40,0x40,0x44,
  70.       0x59,0x41,0x41,0x61,0x01,0x09,0x30,0x00,
  71. //-- 掌 --
  72.       0x00,0x0C,0x04,0x05,0x76,0x54,0x54,0x57,
  73.       0x54,0x54,0x76,0x05,0x04,0x0C,0x04,0x00,
  74.       0x00,0x10,0x15,0x15,0x15,0x55,0x95,0x7F,
  75.       0x15,0x15,0x15,0x15,0x14,0x10,0x00,0x00,
  76. //-- 握 --
  77.       0x08,0x08,0xFF,0x88,0x48,0x00,0xFE,0x2A,
  78.       0xAA,0x6A,0x2A,0x2A,0xAA,0x2E,0x20,0x00,
  79.       0x42,0x81,0x7F,0x00,0x40,0x30,0x4F,0x49,
  80.       0x49,0x49,0x7F,0x49,0x49,0x4B,0x40,0x00,
  81. //-- 这 --
  82.       0x40,0x42,0x44,0xCC,0x00,0x08,0x28,0x48,
  83.       0x89,0x0E,0xCA,0x38,0x08,0x08,0x00,0x00,
  84.       0x80,0x40,0x20,0x1F,0x20,0x40,0x50,0x48,
  85.       0x44,0x43,0x44,0x48,0x50,0x40,0x40,0x00,
  86. //-- 门 --
  87.       0x00,0x00,0xF8,0x01,0x06,0x00,0x02,0x02,
  88.       0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
  89.       0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
  90.       0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,
  91. //-- 知 --
  92.       0x40,0xA0,0x98,0x8F,0x88,0xF8,0x88,0x88,
  93.       0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
  94.       0x80,0x40,0x20,0x18,0x07,0x02,0x04,0x18,
  95.       0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,
  96. //-- 识 --
  97.       0x40,0x41,0x4E,0xC4,0x00,0x00,0x00,0xFE,
  98.       0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,
  99.       0x00,0x00,0x00,0x7F,0x20,0x90,0x40,0x30,
  100.       0x0E,0x00,0x00,0x02,0x0C,0x70,0x20,0x00,
  101. //-- 书 --
  102.       0x80,0x80,0x88,0x88,0x88,0x88,0xFF,0x88,
  103.       0x88,0x88,0x88,0xFA,0x84,0x9C,0x08,0x00,
  104.       0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,
  105.       0x00,0x10,0x20,0x40,0x30,0x0F,0x00,0x00,
  106. //-- 山 --
  107.       0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0xFF,
  108.       0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,
  109.       0x00,0x20,0x7F,0x20,0x20,0x20,0x20,0x3F,
  110.       0x20,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,
  111. //-- 有 --
  112.       0x00,0x04,0x84,0x44,0xE4,0x34,0x2C,0x27,
  113.       0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,
  114.       0x02,0x01,0x00,0x00,0xFF,0x09,0x09,0x09,
  115.       0x29,0x49,0xC9,0x7F,0x00,0x00,0x00,0x00,
  116. //-- 路 --
  117.       0x00,0x7E,0x22,0xE2,0x3E,0x20,0x10,0x08,
  118.       0x0F,0xB4,0x44,0xA4,0x9C,0x04,0x00,0x00,
  119.       0x20,0x3F,0x20,0x1F,0x11,0x11,0x02,0x7F,
  120.       0x23,0x22,0x22,0x22,0x7E,0x03,0x01,0x00,
  121. //-- 勤 --
  122.       0x04,0x04,0xC4,0x5F,0x54,0xF4,0x54,0x5F,
  123.       0xC4,0x14,0x10,0xFF,0x10,0x10,0xF0,0x00,
  124.       0x00,0x80,0x95,0x95,0x95,0x7F,0x55,0x55,
  125.       0x95,0x60,0x1C,0x03,0x20,0x60,0x3F,0x00,
  126. //-- 为 --
  127.       0x00,0x10,0x10,0x12,0x14,0x1C,0x10,0xF0,
  128.       0x9F,0x10,0x10,0x10,0x10,0xF8,0x10,0x00,
  129.       0x00,0x00,0x40,0x20,0x10,0x08,0x06,0x01,
  130.       0x00,0x11,0x26,0x40,0x20,0x1F,0x00,0x00,
  131. //-- 径 --
  132.       0x10,0x88,0xC4,0x73,0xA2,0x80,0x42,0x42,
  133.       0x22,0x12,0x2A,0x26,0x42,0xC0,0x80,0x00,
  134.       0x01,0x00,0xFF,0x00,0x40,0x41,0x41,0x41,
  135.       0x41,0x7F,0x41,0x41,0x41,0x41,0x40,0x00,
  136. //-- 学 --
  137.       0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,
  138.       0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
  139.       0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,
  140.       0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
  141. //-- 海 --
  142.       0x10,0x60,0x01,0xF6,0x00,0x10,0xF8,0x17,
  143.       0x34,0x54,0x14,0x14,0xF4,0x04,0x04,0x00,
  144.       0x04,0x04,0xFF,0x00,0x01,0x01,0x1F,0x11,
  145.       0x13,0x15,0x51,0x91,0x7F,0x11,0x11,0x00,
  146. //-- 无 --
  147.       0x00,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,
  148.       0xC2,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
  149.       0x40,0x40,0x20,0x10,0x08,0x04,0x03,0x00,
  150.       0x3F,0x40,0x40,0x40,0x40,0x40,0x70,0x00,
  151. //-- 涯 --
  152.       0x10,0x61,0x86,0x70,0x00,0xFE,0x82,0x92,
  153.       0x92,0xFE,0x92,0x92,0x92,0x82,0x82,0x00,
  154.       0x04,0xFC,0x43,0x20,0x18,0x47,0x44,0x44,
  155.       0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,
  156. //-- 苦 --
  157.       0x40,0x44,0x44,0x44,0x44,0x5F,0x44,0xF4,
  158.       0x44,0x44,0x5F,0x44,0x44,0x44,0x44,0x00,
  159.       0x00,0x00,0x00,0x7E,0x22,0x22,0x22,0x23,
  160.       0x22,0x22,0x22,0x7E,0x00,0x00,0x00,0x00,
  161. //-- 做 --
  162.       0x40,0x20,0xF8,0x07,0x8A,0x88,0xFF,0x88,
  163.       0xC8,0x30,0xFF,0x12,0xF0,0x10,0x10,0x00,
  164.       0x00,0x00,0x7F,0x00,0x3F,0x08,0x08,0x48,
  165.       0x5F,0x20,0x13,0x0C,0x13,0x70,0x20,0x00,
  166. //-- 舟 --
  167.       0x80,0x80,0x80,0x80,0xFC,0x84,0x86,0x95,
  168.       0xA4,0x84,0x84,0xFC,0x80,0x80,0x80,0x00,
  169.       0x00,0x80,0x40,0x30,0x0F,0x00,0x02,0x04,
  170.       0x0C,0x40,0x80,0x7F,0x00,0x00,0x00,0x00
  171. };



  172. //延时子程序
  173. //------------------------------

  174. void delay(uint m) //在时钟频率为
  175. { //12MHz时大约
  176.    uint i,j; //延时1ms
  177.     for(i=0;i<m;i++)
  178.     for(j=0;j<109;j++);
  179.    _nop_();
  180. }
  181. //-------------------------------------------
  182. //写显示数据
  183. //-------------------------------------------
  184. void SdData(uchar ddata)
  185. {
  186. delay(0); //延时等待
  187. RS = 1;
  188. RW = 0;
  189. lcd_bus = ddata; //送入数据
  190. E = 1;
  191. E = 0;
  192. }
  193. //-------------------------------------------
  194. //写指令
  195. //-------------------------------------------
  196. void Sdcmd(uchar command)
  197. {
  198.   
  199. delay(0); //延时等待
  200. RS = 0;
  201. RW = 0;
  202. lcd_bus = command; //送入指令
  203. E=1;
  204. E = 0;

  205. }
  206. //-------------------------------------------
  207. //初始化
  208. //-------------------------------------------
  209. void Init()
  210. {
  211. _RST = 0;
  212. delay(150);
  213. _RST = 1; //硬件复位
  214. delay(100);
  215. Cs1=1;
  216. Cs2=1; //控制器全开
  217. Sdcmd(0x3f); //开显示
  218. Sdcmd(0xc0); //设置起始地址
  219. }
  220. //-------------------------------------------
  221. //清空显示内存
  222. //-------------------------------------------
  223. void CleanScreen()
  224. {
  225. uchar i,j,k;
  226. for(i=0;i<8;i++)
  227. {
  228. Cs1 = 1;
  229. Cs2=1;//控制器全开
  230. Sdcmd(0x40);
  231. Sdcmd(0xb8+i);
  232. Cs1=1;
  233. Cs2=0;
  234. for(j=0;j<64;j++)
  235. SdData(0x00);
  236. Cs1=0;
  237. Cs2=1;
  238. for(k=64;k<128;k++)
  239.    SdData(0x00);
  240. }
  241. }
  242. //-------------------------------------------
  243. //显示图象
  244. //-------------------------------------------
  245. void display()
  246. {
  247. uchar x,y,i,j,d,e;
  248. for(x=0;x<8;x++)
  249. {
  250.            ++e;
  251.    if(e==2)
  252.    {
  253.      i=16;
  254.      e=0;
  255. }
  256. else i=0;
  257. d=(x/2)*8;  
  258. Cs1 = 1;
  259. Cs2=1; //控制器全开
  260. Sdcmd(0x40); //设置列地址
  261. Sdcmd(0xb8+x); //设置页地址
  262. Cs1 = 1;
  263. Cs2 = 0; //选择控制器1
  264. for(y=0;y<4;y++)
  265.   {for(j=0;j<16;j++)
  266.    SdData(dis[y+d][j+i]); //写入图象编码
  267.    }
  268. Cs1 = 0;
  269. Cs2 = 1; //选择控制器2
  270. for(y=4;y<8;y++)
  271.   {
  272.    for(j=0;j<16;j++)

  273.    SdData(dis[y+d][j+i]); //写入图象编码
  274. }
  275. }
  276. }  
  277.   
  278. //-------------------------------------------
  279. //主程序
  280. //-------------------------------------------
  281. main()
  282. {
  283. Init(); //初始化模块
  284. CleanScreen(); //清除显示内存
  285. display(); //显示LOGO图形
  286. while(1);
  287. } //end of program
复制代码





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:61876 发表于 2015-2-7 15:33 | 只看该作者
不错的资料。
回复

使用道具 举报

板凳
ID:73463 发表于 2015-2-11 10:07 | 只看该作者
我什么时候才能达到这个程度
回复

使用道具 举报

地板
ID:107683 发表于 2016-3-7 13:36 来自手机 | 只看该作者
请问除了把12864连到单片机上,还使用了什么芯片辅助吗?我用的是开发板但是编写的程序也是不带字库的,结果固有端口就不能用了
回复

使用道具 举报

5#
ID:195884 发表于 2017-6-1 16:52 | 只看该作者
我下载后,不能显示,怎么办?
回复

使用道具 举报

6#
ID:245867 发表于 2017-12-16 20:41 | 只看该作者
请问片选1 片选2  是要接到那里吗  这在你的单片机上只是普通端口?
回复

使用道具 举报

7#
ID:328365 发表于 2018-7-16 11:09 | 只看该作者
请问汉字怎么转为相应的代码
回复

使用道具 举报

8#
ID:434779 发表于 2018-12-2 23:22 | 只看该作者
资料不错,新盆友值得看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表