找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD12864的单片机汇编语言和C语言源代码

[复制链接]
跳转到指定楼层
楼主
ID:400940 发表于 2018-9-21 12:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是液晶屏12864源代码

汇编语言:
  1. ;*******************************************************               
  2. ;                图形点阵液晶显示器实验说明
  3. ;实验目的:        1.掌握使用图形点阵液晶显示字体和图形。
  4. ;实验内容:        1.显示一个图形
  5. ;                2.显示一段字,包括汉字和英文
  6. ;连线说明:
  7. ;液晶12864J:        A1区-->A3区       
  8. ;                CS-->CS1(0F000H),片选
  9. ;                RW-->A0,读/写控制端
  10. ;                RS-->A1,数据/指令控制端
  11. ;                CS1/2-->A2,左右半屏使能端
  12. ;*******************************************************
  13.                 NAME        MAIN                        ;演示主程序
  14. EXTRN        CODE(LCD_INIT,LCDClear,ByteDisL,ByteDisR,WordDisL,WordDisR,LineDisL,LineDisR)

  15. MAIN_CODE        SEGMENT        CODE
  16. STACK                SEGMENT        IDATA

  17. RSEG                  STACK
  18.                 DS            20H                          ;32 Bytes Stack

  19. CSEG                AT        0000H                        ;定位0
  20.                 LJMP        START
  21. RSEG                MAIN_CODE                        ;开始程序段
  22. START:                MOV        SP,#STACK-1
  23. MAIN:                LCALL        LCD_INIT                ;液晶初始化
  24.                 LCALL        DelayTime                ;延时
  25.                 LCALL        DisLine1                ;第2行显示"星研电子"
  26.                 LCALL        DelayTime
  27.                 LCALL        DisLine2                ;第3行显示"STAR ES51PRO"
  28.                 LCALL        DelayTime
  29.                 LCALL        DisLine3                ;第4行显示"欢迎使用"               
  30.                 LCALL        DelayTime
  31.                 SJMP        MAIN
  32. ;第2行显示"星研电子"
  33. DisLine1:        MOV        DPTR,#Line1_1
  34.                 MOV        A,#2                        ;A-起始显示行地址,第2行
  35.                 MOV        B,#32                        ;B-起始显示列地址,第32列,以下同
  36.                 LCALL        WordDISL                ;左半屏,显示一个字子程序
  37.                 MOV        DPTR,#Line1_2
  38.                 MOV        A,#2
  39.                 MOV        B,#48
  40.                 LCALL        WordDISL
  41.                 MOV        DPTR,#Line1_3
  42.                 MOV        A,#2
  43.                 MOV        B,#0
  44.                 LCALL        WordDISR                ;右半屏,显示一个字子程序
  45.                 MOV        DPTR,#Line1_4
  46.                 MOV        A,#2
  47.                 MOV        B,#16
  48.                 LCALL        WordDISR
  49.                 RET
  50. Line1_1:               
  51. ;--  文字:  星  --
  52. DB  000H,000H,0FCH,082H,082H,0AAH,02AH,0AAH,0AAH,0AAH,02AH,002H,002H,0FCH,000H,000H
  53. DB  000H,0EEH,09BH,090H,098H,094H,095H,080H,080H,080H,095H,095H,095H,095H,0FFH,000H
  54. Line1_2:
  55. ;--  文字:  研  --
  56. DB  09EH,062H,002H,002H,002H,032H,0FEH,062H,002H,002H,032H,002H,002H,002H,062H,0DCH
  57. DB  003H,03CH,040H,040H,046H,040H,0F1H,08EH,080H,040H,07CH,080H,080H,080H,0FEH,003H
  58. Line1_3:
  59. ;--  文字:  电  --
  60. DB  000H,0F8H,004H,004H,044H,044H,006H,002H,002H,046H,044H,004H,004H,0F8H,000H,000H
  61. DB  000H,00FH,010H,010H,011H,011H,0F0H,080H,090H,091H,091H,08CH,084H,087H,0C8H,078H
  62. Line1_4:
  63. ;--  文字:  子  --
  64. DB  080H,040H,05EH,052H,052H,052H,032H,072H,082H,082H,042H,062H,052H,04CH,0C0H,000H
  65. DB  007H,004H,004H,004H,0FCH,08CH,08CH,080H,080H,07CH,004H,004H,004H,004H,007H,000H

  66. ;第3行显示"STAR ES51PRO"
  67. DisLine2:        MOV        DPTR,#Line2_1
  68.                 MOV        A,#4                        ;A-起始显示行地址,第4行
  69.                 MOV        B,#16                        ;B-起始显示列地址,第16列,以下同
  70.                 LCALL        ByteDISL                ;左半屏,显示一个字节子程序
  71.                 MOV        DPTR,#Line2_2
  72.                 MOV        A,#4
  73.                 MOV        B,#24
  74.                 LCALL        ByteDISL
  75.                 MOV        DPTR,#Line2_3
  76.                 MOV        A,#4
  77.                 MOV        B,#32
  78.                 LCALL        ByteDISL
  79.                 MOV        DPTR,#Line2_4
  80.                 MOV        A,#4
  81.                 MOV        B,#40
  82.                 LCALL        ByteDISL
  83.                 MOV        DPTR,#Line2_5
  84.                 MOV        A,#4
  85.                 MOV        B,#48
  86.                 LCALL        ByteDISL
  87.                 MOV        DPTR,#Line2_6
  88.                 MOV        A,#4
  89.                 MOV        B,#56
  90.                 LCALL        ByteDISL
  91.                
  92.                 MOV        DPTR,#Line2_7
  93.                 MOV        A,#4
  94.                 MOV        B,#0
  95.                 LCALL        ByteDISR                ;右半屏字节显示数据
  96.                 MOV        DPTR,#Line2_8
  97.                 MOV        A,#4
  98.                 MOV        B,#8
  99.                 LCALL        ByteDISR
  100.                 MOV        DPTR,#Line2_9
  101.                 MOV        A,#4
  102.                 MOV        B,#16
  103.                 LCALL        ByteDISR
  104.                 MOV        DPTR,#Line2_10
  105.                 MOV        A,#4
  106.                 MOV        B,#24
  107.                 LCALL        ByteDISR
  108.                 MOV        DPTR,#Line2_11
  109.                 MOV        A,#4
  110.                 MOV        B,#32
  111.                 LCALL        ByteDISR
  112.                 MOV        DPTR,#Line2_12
  113.                 MOV        A,#4
  114.                 MOV        B,#40
  115.                 LCALL        ByteDISR
  116.                 RET
  117. ;"STAR ES51PRO"
  118. Line2_1:
  119. DB  000H,070H,088H,008H,008H,008H,038H,000H,000H,038H,020H,021H,021H,022H,01CH,000H
  120. Line2_2:
  121. DB  018H,008H,008H,0F8H,008H,008H,018H,000H,000H,000H,020H,03FH,020H,000H,000H,000H
  122. Line2_3:
  123. DB  000H,000H,0C0H,038H,0E0H,000H,000H,000H,020H,03CH,023H,002H,002H,027H,038H,020H
  124. Line2_4:
  125. DB  008H,0F8H,088H,088H,088H,088H,070H,000H,020H,03FH,020H,000H,003H,00CH,030H,020H
  126. Line2_5:
  127. DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  128. Line2_6:
  129. DB  008H,0F8H,088H,088H,0E8H,008H,010H,000H,020H,03FH,020H,020H,023H,020H,018H,000H
  130. Line2_7:
  131. DB  000H,070H,088H,008H,008H,008H,038H,000H,000H,038H,020H,021H,021H,022H,01CH,000H
  132. Line2_8:
  133. DB  000H,0F8H,008H,088H,088H,008H,008H,000H,000H,019H,021H,020H,020H,011H,00EH,000H
  134. Line2_9:
  135. DB  000H,010H,010H,0F8H,000H,000H,000H,000H,000H,020H,020H,03FH,020H,020H,000H,000H
  136. Line2_10:
  137. DB  008H,0F8H,008H,008H,008H,008H,0F0H,000H,020H,03FH,021H,001H,001H,001H,000H,000H
  138. Line2_11:
  139. DB  008H,0F8H,088H,088H,088H,088H,070H,000H,020H,03FH,020H,000H,003H,00CH,030H,020H
  140. Line2_12:
  141. DB  0E0H,010H,008H,008H,008H,010H,0E0H,000H,00FH,010H,020H,020H,020H,010H,00FH,000H

  142. ;第4行显示"欢迎使用"
  143. DisLine3:        MOV        DPTR,#Line3_1
  144.                 MOV        A,#6                        ;A-起始显示行地址,第6行
  145.                 MOV        B,#32                        ;B-起始显示列地址,第32列,以下同
  146.                 LCALL        WordDISL                ;左半屏,显示一个字子程序
  147.                 MOV        DPTR,#Line3_2
  148.                 MOV        A,#6
  149.                 MOV        B,#48
  150.                 LCALL        WordDISL
  151.                 MOV        DPTR,#Line3_3
  152.                 MOV        A,#6
  153.                 MOV        B,#0
  154.                 LCALL        WordDISR                ;右半屏,显示一个字子程序
  155.                 MOV        DPTR,#Line3_4
  156.                 MOV        A,#6
  157.                 MOV        B,#16
  158.                 LCALL        WordDISR
  159.                 RET
  160. Line3_1:
  161. ;--  文字:  欢  --
  162. DB  014H,024H,044H,084H,064H,01CH,020H,018H,00FH,0E8H,008H,008H,028H,018H,008H,000H
  163. DB  020H,010H,04CH,043H,043H,02CH,020H,010H,00CH,003H,006H,018H,030H,060H,020H,000H
  164. Line3_2:
  165. ;--  文字:  迎  --
  166. DB  040H,041H,0CEH,004H,000H,0FCH,004H,002H,002H,0FCH,004H,004H,004H,0FCH,000H,000H
  167. DB  040H,020H,01FH,020H,040H,047H,042H,041H,040H,05FH,040H,042H,044H,043H,040H,000H
  168. Line3_3:
  169. ;--  文字:  使  --
  170. DB  040H,020H,0F0H,01CH,007H,0F2H,094H,094H,094H,0FFH,094H,094H,094H,0F4H,004H,000H
  171. DB  000H,000H,07FH,000H,040H,041H,022H,014H,00CH,013H,010H,030H,020H,061H,020H,000H
  172. Line3_4:
  173. ;--  文字:  用  --
  174. DB  000H,000H,000H,0FEH,022H,022H,022H,022H,0FEH,022H,022H,022H,022H,0FEH,000H,000H
  175. DB  080H,040H,030H,00FH,002H,002H,002H,002H,0FFH,002H,002H,042H,082H,07FH,000H,000H

  176. ;延时程序
  177. DelayTime:        PUSH        05H
  178.                 PUSH        06H
  179.                 PUSH        07H
  180.                 MOV        R5,#48
  181. DelayTime_1:        MOV        R6,#100
  182. DelayTime_2:        MOV        R7,#100
  183.                 DJNZ        R7,$
  184.                 DJNZ        R6,DelayTime_2
  185.                 DJNZ        R5,DelayTime_1
  186.                 POP        07H
  187.                 POP        06H
  188.                 POP        05H
  189.                 RET
  190.                
  191.                 END
复制代码

c语言
  1. //;*******************************************************               
  2. //;                图形点阵液晶显示器实验说明
  3. //;实验目的:        1.掌握使用图形点阵液晶显示字体和图形。
  4. //;实验内容:        1.显示一个图形
  5. //;                2.显示一段字,包括汉字和英文
  6. //;连线说明:
  7. //;液晶12864J:        A1区-->A3区       
  8. //;                CS-->CS1(0F000H),片选
  9. //;                RW-->A0,读/写控制端
  10. //;                RS-->A1,数据/指令控制端
  11. //;                CS1/2-->A2,左右半屏使能端
  12. //;*******************************************************
  13. extern void LCD_INIT();
  14. extern void WordDisL(unsigned char x, unsigned char y,unsigned char * pt);
  15. extern void WordDisR(unsigned char x, unsigned char y,unsigned char * pt);
  16. extern void ByteDisL(unsigned char x, unsigned char y,unsigned char * pt);
  17. extern void ByteDisR(unsigned char x, unsigned char y,unsigned char * pt);

  18. //--  文字:  星  --
  19. code const unsigned char Line1_1[] = {               
  20.                 0x00,0x00,0xFC,0x82,0x82,0xAA,0x2A,0xAA,0xAA,0xAA,0x2A,0x02,0x02,0xFC,0x00,0x00,
  21.                 0x00,0xEE,0x9B,0x90,0x98,0x94,0x95,0x80,0x80,0x80,0x95,0x95,0x95,0x95,0xFF,0x00};
  22. //--  文字:  研  --
  23. code const unsigned char Line1_2[] = {
  24.                 0x9E,0x62,0x02,0x02,0x02,0x32,0xFE,0x62,0x02,0x02,0x32,0x02,0x02,0x02,0x62,0xDC,
  25.                 0x03,0x3C,0x40,0x40,0x46,0x40,0xF1,0x8E,0x80,0x40,0x7C,0x80,0x80,0x80,0xFE,0x03};
  26. //--  文字:  电  --
  27. code const unsigned char Line1_3[] = {
  28.                 0x00,0xF8,0x04,0x04,0x44,0x44,0x06,0x02,0x02,0x46,0x44,0x04,0x04,0xF8,0x00,0x00,
  29.                 0x00,0x0F,0x10,0x10,0x11,0x11,0xF0,0x80,0x90,0x91,0x91,0x8C,0x84,0x87,0xC8,0x78};
  30. //--  文字:  子  --
  31. code const unsigned char Line1_4[] = {
  32.                 0x80,0x40,0x5E,0x52,0x52,0x52,0x32,0x72,0x82,0x82,0x42,0x62,0x52,0x4C,0xC0,0x00,
  33.                 0x07,0x04,0x04,0x04,0xFC,0x8C,0x8C,0x80,0x80,0x7C,0x04,0x04,0x04,0x04,0x07,0x00};
  34. //第2行显示"星研电子"
  35. void DisLine1()
  36. {
  37.         WordDisL(2,32,Line1_1);                //第2行,第32列,左半屏,显示一个字子程序
  38.         WordDisL(2,48,Line1_2);
  39.         WordDisR(2,0,Line1_3);                //右半屏,显示一个字子程序
  40.         WordDisR(2,16,Line1_4);
  41. }

  42. //"STAR ES51PRO"
  43. code const unsigned char Line2_1[] = {
  44.                 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00};
  45. code const unsigned char Line2_2[] = {
  46.                 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00};
  47. code const unsigned char Line2_3[] = {
  48.                 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20};
  49. code const unsigned char Line2_4[] = {
  50.                 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20};
  51. code const unsigned char Line2_5[] = {
  52.                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  53. code const unsigned char Line2_6[] = {
  54.                 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00};
  55. code const unsigned char Line2_7[] = {
  56.                 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00};
  57. code const unsigned char Line2_8[] = {
  58.                 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};
  59. code const unsigned char Line2_9[] = {
  60.                 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};
  61. code const unsigned char Line2_10[] = {
  62.                 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00};
  63. code const unsigned char Line2_11[] = {
  64.                 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20};
  65. code const unsigned char Line2_12[] = {
  66.                 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00};
  67. //第3行显示"STAR ES51PRO"
  68. void DisLine2()
  69. {
  70.         ByteDisL(4,16,Line2_1);                        //第4行,第16列,左半屏,显示一个字节子程序
  71.         ByteDisL(4,24,Line2_2);
  72.         ByteDisL(4,32,Line2_3);
  73.         ByteDisL(4,40,Line2_4);
  74.         ByteDisL(4,48,Line2_5);
  75.         ByteDisL(4,56,Line2_6);
  76.        
  77.         ByteDisR(4,0,Line2_7);                        //右半屏字节显示数据
  78.         ByteDisR(4,8,Line2_8);
  79.         ByteDisR(4,16,Line2_9);
  80.         ByteDisR(4,24,Line2_10);
  81.         ByteDisR(4,32,Line2_11);
  82.         ByteDisR(4,40,Line2_12);
  83. }

  84. //--  文字:  欢  --
  85. const unsigned char Line3_1[] = {
  86.                 0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,
  87.                 0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00};
  88. //--  文字:  迎  --
  89. const unsigned char Line3_2[] = {
  90.                 0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
  91.                 0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00};
  92. //--  文字:  使  --
  93. const unsigned char Line3_3[] = {
  94.                 0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00,
  95.                 0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00};
  96. //--  文字:  用  --
  97. const unsigned char Line3_4[] = {
  98.                 0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
  99.                 0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00};

  100. //第4行显示"欢迎使用"
  101. void DisLine3()
  102. {
  103.         WordDisL(6,32,Line3_1);                //第6行, 第32列,左半屏,显示一个字子程序
  104.         WordDisL(6,48,Line3_2);                //第6行, 第48列
  105.         WordDisR(6,0,Line3_3);                //右半屏,显示一个字子程序
  106.         WordDisR(6,16,Line3_4);
  107. }

  108. //延时程序
  109. void DelayTime()
  110. {
  111.         unsigned char i;
  112.         unsigned int j;
  113.         for (i = 0; i < 3; i++)
  114.         {
  115.                 for (j = 0; j < 0xffff; j++)
  116.                 {;}
  117.         }
  118. }

  119. main()
  120. {
  121.         while (1)
  122.         {
  123.                 LCD_INIT();                                        //液晶初始化
  124.                 DelayTime();                                //延时
  125.                 DisLine1();                                        //第2行显示"星研电子"
  126.                 DelayTime();
  127.                 DisLine2();                                        //第3行显示"STAR ES51PRO"
  128.                 DelayTime();
  129.                 DisLine3();                                        //第4行显示"欢迎使用"               
  130.                 DelayTime();
  131.         }
  132. }
复制代码


全部资料51hei下载地址:
LCD12864J.rar (6.33 KB, 下载次数: 13)
12864J_Ccode.rar (5.96 KB, 下载次数: 12)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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