找回密码
 立即注册

QQ登录

只需一步,快速开始

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

12864液晶滚动显示(已完成)

[复制链接]
跳转到指定楼层
楼主
12864液晶滚动显示


单片机源程序如下:

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<absacc.h>

  4. #define write_cmd_addr_1 XBYTE[0x8fff]           //写指令地址左
  5. #define read_state_addr_1 XBYTE[0xafff]    //读状态地址左
  6. #define write_data_addr_1 XBYTE[0x9fff]    //写数据地址左
  7. #define read_data_addr_1 XBYTE[0xbfff]     //读数据地址左

  8. #define write_cmd_addr_2 XBYTE[0x4fff]           //写指令地址右
  9. #define read_state_addr_2 XBYTE[0x6fff]    //读状态地址右
  10. #define write_data_addr_2 XBYTE[0x5fff]    //写数据地址右
  11. #define read_data_addr_2 XBYTE[0x7fff]     //读数据地址右

  12. #define Disp_On 0x3f//开显示
  13. #define Disp_Off 0x3e//关显示
  14. #define Col_Add 0x40//列地址
  15. #define Page_Add 0xb8//页地址
  16. #define Start_line 0xc0//起始页

  17. /*****************************

  18. 字模,此字体下对应的
  19. 点阵为:宽x高=16x16

  20. *****************************/
  21. unsigned char code Chinese_character[][32]=
  22. {
  23.        
  24.         {
  25.                 /*--  文字:  江  --*/
  26.         0x10,0x60,0x02,0x0C,0xC0,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00,0x00,
  27.     0x04,0x04,0x7C,0x03,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00,//"江",0
  28.         },

  29.         {
  30.                 /*--  文字:  西  --*/
  31.                 0x02,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xF2,0x02,0x00,
  32.                 0x00,0x7F,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00//"西",1
  33.         },

  34.         {
  35.                 /*--  文字: 现  --*/
  36.                 0x04,0x84,0x84,0xFC,0x84,0x84,0x00,0xFE,0x02,0x02,0xF2,0x02,0x02,0xFE,0x00,0x00,
  37.         0x20,0x60,0x20,0x1F,0x10,0x90,0x40,0x23,0x18,0x06,0x01,0x7E,0x80,0x83,0xE0,0x00,//"现",2
  38.         },

  39.         {
  40.                  /*--  文字: 代  --*/
  41.                 0x00,0x80,0x60,0xF8,0x07,0x20,0x20,0x20,0x7F,0xA0,0x10,0x11,0x16,0x10,0x10,0x00,
  42.          0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0xF8,0x00,//"代",3
  43.         },

  44.         {
  45.                  /*--  文字: 学  --*/
  46.                 0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
  47.                 0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00//"学",4
  48.         },

  49.         {
  50.                  /*--  文字: 院  --*/
  51.                 0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
  52.                 0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00//"院",5
  53.         },

  54.         {
  55.                 /*--  文字: 电  --*/
  56.                 0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
  57.                 0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00//"电",6
  58.         },

  59.         {
  60.                 /*--  文字: 子  --*/
  61.                 0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00,
  62.          0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"子",7
  63.         },

  64.         {
  65.                 /*--  文字: 工  --*/
  66.                 0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
  67.                 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00//"工",8
  68.         },

  69.         {
  70.                 /*--  文字: 程  --*/
  71.                 0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
  72.                 0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00//"程",9
  73.         },

  74.         {
  75.                  /*--  文字: 系  --*/
  76.                  0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,
  77.                  0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00//"系",10
  78.         },

  79.         {
  80.                 /*--  文字: 古  --*/
  81.                 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,
  82.         0x00,0x00,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00,0x00,0x00//"古",11

  83.         },

  84.         {
  85.                 /*--  文字: 美  --*/
  86.                 0x00,0x04,0x24,0x24,0x25,0x26,0x24,0xFC,0x24,0x26,0x25,0x24,0x24,0x04,0x00,0x00,
  87.         0x81,0x89,0x89,0x49,0x49,0x29,0x19,0x0F,0x19,0x29,0x49,0x49,0x89,0x89,0x81,0x00,//"美",12
  88.         },

  89.         {                          
  90.                 /*--  文字: 丽  --*/
  91.                 0x02,0x02,0xF2,0x12,0x12,0x12,0xF2,0x02,0xF2,0x12,0x12,0x12,0xF2,0x02,0x02,0x00,
  92.         0x00,0x00,0xFF,0x01,0x46,0x80,0x7F,0x00,0xFF,0x01,0x46,0x80,0x7F,0x00,0x00,0x00,//"丽",13
  93.         },

  94.         {
  95.             /*--  文字: 行  --*/
  96.                 0x10,0x08,0x84,0xC6,0x73,0x22,0x40,0x44,0x44,0x44,0xC4,0x44,0x44,0x44,0x40,0x00,
  97.                 0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00//"行",14
  98.         },

  99.         {
  100.                 /*--  文字: 胜  --*/
  101.                 0x00,0x00,0xFE,0x12,0x12,0xFE,0x20,0x1C,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,
  102.                 0x40,0x30,0x0F,0x21,0x41,0x3F,0x20,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x20,0x00//"胜",15
  103.         },

  104.         {
  105.                 /*--  文字: 于  --*/
  106.                 0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
  107.                 0x00,0x00,0x00,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//"于",16
  108.         },

  109.         {
  110.             /*--  文字: 言  --*/
  111.                 0x00,0x04,0x04,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x04,0x04,0x04,0x00,
  112.                 0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00//"言",17
  113.         }
  114. };
  115. unsigned char tanhao[]=
  116. {
  117.         /*--  文字: !  --*/
  118.         0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00//"!",18
  119. };
  120. unsigned char qingping[]=
  121. {
  122.          /*-- 清屏  --*/
  123.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  124. };

  125. /*********函数声明***********/
  126. void busy_check_1(void);
  127. void busy_check_2(void);
  128. void write_cmd_1(unsigned char command);
  129. void write_cmd_2(unsigned char command);
  130. void write_data_1(unsigned char dis_data);
  131. void write_data_2(unsigned char dis_data);
  132. void clear_1(void);
  133. void clear_2(void);
  134. void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n);
  135. void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n);
  136. void display(void);
  137. void tanhao_disp(unsigned char pag,unsigned char col,unsigned char *chinese2);
  138. void qingping_disp1(unsigned char pag,unsigned char col,unsigned char *chinese2);
  139. void qingping_disp2(unsigned char pag,unsigned char col,unsigned char *chinese2);

  140. /***********************

  141. 检测忙状态左

  142. ***********************/
  143. void busy_check_1(void)
  144. {
  145.         unsigned char busy;
  146.         while(busy&0x80)
  147.         {
  148.                 busy=read_state_addr_1;
  149.         }
  150. }
  151. /***********************

  152. 检测忙状态右

  153. ***********************/
  154. void busy_check_2(void)
  155. {
  156.          unsigned char busy;
  157.          while(busy&0x80)
  158.          {       
  159.                 busy=read_state_addr_2;
  160.          }
  161.          
  162. }
  163. /***********************

  164. 写命令左

  165. ***********************/
  166. void write_cmd_1(unsigned char command)
  167. {
  168.          busy_check_1();
  169.          write_cmd_addr_1=command;
  170. }
  171. /***********************

  172. 写命令右

  173. ***********************/
  174. void write_cmd_2(unsigned char command)
  175. {
  176.          busy_check_2();
  177.          write_cmd_addr_2=command;
  178. }
  179. /***********************

  180. 写数据左

  181. ***********************/
  182. void write_data_1(unsigned char dis_data)
  183. {
  184.         busy_check_1();
  185.         write_data_addr_1=dis_data;
  186. }
  187. /***********************

  188. 写数据右

  189. ***********************/
  190. void write_data_2(unsigned char dis_data)
  191. {
  192.         busy_check_2();
  193.         write_data_addr_2=dis_data;
  194. }
  195. /***********************

  196. 清内存左

  197. ***********************/
  198. void clear_1(void)
  199. {
  200.         unsigned char i;
  201.         unsigned char k;
  202.         write_cmd_1(Page_Add+0);
  203.         write_cmd_1(Col_Add+0);
  204.         for(i=0;i<8;i++)
  205.         {
  206.                   write_cmd_1(Page_Add+i);
  207.                  for(k=0;k<64;k++)
  208.                          //write_data_1(0x00);
  209.                         qingping_disp1(i,k,qingping);
  210.                
  211.         }
  212. }
  213. /***********************

  214. 清内存右

  215. ***********************/
  216. void clear_2(void)
  217. {
  218.         unsigned char i;
  219.         unsigned char k;
  220.         write_cmd_2(Page_Add+0);
  221.         write_cmd_2(Col_Add+0);
  222.         for(i=0;i<8;i++)
  223.         {
  224.                   write_cmd_2(Page_Add+i);
  225.                  for(k=0;k<64;k++)
  226.                          //write_data_2(0x00);
  227.                         qingping_disp2(i,k,qingping);
  228.                  
  229.         }
  230. }
  231. /***********************

  232. 显示汉字16*16左

  233. ************************/
  234. void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n)
  235. {
  236.         unsigned char i=0;
  237.         unsigned char j=0;
  238.         for(i=0;i<2;i++)
  239.         {       
  240.                 write_cmd_1(Page_Add+pag+i);
  241.                 write_cmd_1(Col_Add+col);
  242.                 for(j=0;j<16;j++)
  243.                         write_data_1(Chinese_character[n][16*i+j]);
  244.        
  245.         }

  246. }
  247. /***********************

  248. 显示汉字16*16右

  249. ***********************/
  250. void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n)
  251. {
  252.         unsigned char i=0;
  253.         unsigned char j=0;
  254.         for(i=0;i<2;i++)
  255.         {       
  256.                 write_cmd_2(Page_Add+pag+i);
  257.                 write_cmd_2(Col_Add+col);
  258.                 for(j=0;j<16;j++)
  259.                         write_data_2(Chinese_character[n][16*i+j]);
  260.                
  261.         }

  262. }
  263. /***********************

  264. 显示叹号'!'       

  265. ***********************/
  266. void tanhao_disp(unsigned char pag,unsigned char col,unsigned char *chinese2)
  267. {
  268.         unsigned char i=0;
  269.         unsigned char j=0;
  270.         for(i=0;i<2;i++)
  271.         {       
  272.                 write_cmd_2(Page_Add+pag+i);
  273.                 write_cmd_2(Col_Add+col);
  274.                 for(j=0;j<8;j++)
  275.                         write_data_2(chinese2[8*i+j]);
  276.                
  277.         }

  278. }
  279. /***********************

  280. 清屏左       

  281. ***********************/
  282. void qingping_disp1(unsigned char pag,unsigned char col,unsigned char *chinese2)
  283. {
  284.         unsigned char i=0;
  285.         unsigned char j=0;
  286.         for(i=0;i<2;i++)
  287.         {       
  288.                 write_cmd_1(Page_Add+pag+i);
  289.                 write_cmd_1(Col_Add+col);
  290.                 for(j=0;j<8;j++)
  291.                         write_data_1(chinese2[8*i+j]);
  292.                
  293.         }

  294. }
  295. /***********************

  296. 清屏右       

  297. ***********************/
  298. void qingping_disp2(unsigned char pag,unsigned char col,unsigned char *chinese2)
  299. {
  300.         unsigned char i=0;
  301.         unsigned char j=0;
  302.         for(i=0;i<2;i++)
  303.         {       
  304.                 write_cmd_2(Page_Add+pag+i);
  305.                 write_cmd_2(Col_Add+col);
  306.                 for(j=0;j<8;j++)
  307.                         write_data_2(chinese2[8*i+j]);
  308.                
  309.         }

  310. }
  311. /***********************

  312. 延时子程序       

  313. ***********************/
  314. void delay(unsigned int k)
  315. {
  316.         unsigned int i;
  317.         unsigned int j;
  318.         for(i=0;i<k;i++)
  319.         for(j=0;j<20;j++);
  320. }

  321. /***********************

  322. LCD显示子程序
  323. ……………………

  324. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
12864液晶滚动显示.rar (111.53 KB, 下载次数: 75)


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

使用道具 举报

沙发
ID:495300 发表于 2019-6-8 19:06 | 只看该作者
拜托,你这程序也是牛逼。我真心不懂。
那个p接口怎么接?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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