找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stc15f2k60s2玩了两个月才出来的LCD12232(附原理图 程序)

[复制链接]
跳转到指定楼层
楼主
ID:400746 发表于 2018-11-8 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
(stc15f2k60s2)玩了两个月才出来的LCD12232(附原理图 程序)
电路原理图如下:


单片机源程序如下:
  1. #include"LCD12232.H"
  2. unsigned char code wo[]=
  3. {0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0xFF,0x20,0x22,0xAC,0x20,0x30,0x20,0x00,
  4. 0x00,0x08,0x48,0x84,0x7F,0x02,0x21,0x10,0x09,0x06,0x1A,0x61,0x80,0xE0,0x00,0x00};//我 字模
  5. unsigned char code yeah[4][16]=
  6. {
  7. {/* ASCII 8x16点阵字库*/
  8. /*  Y[0x0059]    8x16 */
  9. 0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,},
  10. {/* ASCII 8x16点阵字库*/
  11. /*  e[0x0065]    8x16 */
  12. 0xC0,0xE0,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,},
  13. {/* ASCII 8x16点阵字库*/
  14. /*  a[0x0061]    8x16 */
  15. 0x00,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,},
  16. {/* ASCII 8x16点阵字库*/
  17. /*  h[0x0068]    8x16 */
  18. 0x04,0xFC,0xFC,0x40,0x20,0xE0,0xC0,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,},

  19. }  ;
  20. unsigned char code gantan[7][32]=
  21. {
  22. {/* GB2312 16x16点阵字库*/
  23. /* 终[0xD6D5]   16x16 */
  24. 0x20,0x30,0xAC,0x63,0x20,0x10,0x20,0x18,0x17,0xA4,0x44,0xB4,0x0C,0x04,0x00,0x00,
  25. 0x22,0x63,0x22,0x12,0x12,0x12,0x04,0x02,0x21,0x24,0x44,0x48,0x93,0x06,0x02,0x00,
  26. /* GB2312 16x16点阵字库*/},
  27. /* 于[0xD3DA]   16x16 */
  28. {0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x43,0x42,0x60,0x40,0x00,
  29. 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30. /* GB2312 16x16点阵字库*/},
  31. {/* GB2312 16x16点阵字库*/
  32. /* 把[0xB0D1]   16x16 */
  33. 0x10,0x10,0x10,0xFF,0x90,0x50,0x00,0xFC,0x84,0x84,0xFC,0x84,0x84,0xFE,0x04,0x00,
  34. 0x02,0x42,0x81,0x7F,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x41,0x70,0x00,},
  35. {/* GB2312 16x16点阵字库*/
  36. /* 你[0xC4E3]   16x16 */
  37. 0x40,0x20,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,0x00,
  38. 0x00,0x00,0xFF,0x00,0x00,0x08,0x04,0x43,0x80,0x7F,0x00,0x01,0x06,0x0C,0x00,0x00,},
  39. {/* 点[0xB5E3]   16x16 */
  40. 0x00,0x00,0xC0,0x40,0x40,0x40,0x7F,0x48,0x48,0x48,0x48,0xE8,0x4C,0x08,0x00,0x00,
  41. 0x80,0x40,0x37,0x04,0x14,0x64,0x04,0x14,0x24,0x64,0x04,0x17,0x20,0xC0,0x00,0x00,},
  42. {/* GB2312 16x16点阵字库*/
  43. /* 亮[0xC1C1]   16x16 */
  44. 0x00,0x02,0x02,0x7A,0x4A,0x4A,0x4A,0x4B,0x4A,0x4A,0x4A,0x7E,0x0B,0x02,0x00,0x00,
  45. 0x04,0x83,0x81,0x41,0x3D,0x05,0x05,0x05,0x05,0x05,0x7F,0x85,0x81,0x85,0xE3,0x00,
  46. /* GB2312 16x16点阵字库*/},
  47. {/* GB2312 16x16点阵字库*/
  48. /* 了[0xC1CB]   16x16 */
  49. 0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xE2,0x22,0x12,0x0A,0x06,0x02,0x00,0x00,0x00,
  50. 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
  51. } ;
  52. unsigned char code by[2][16]=
  53. {
  54. {/* ASCII 8x16点阵字库*/
  55. /*  B[0x0042]    8x16 */
  56. 0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00,},
  57. {/*  y[0x0079]    8x16 */
  58. 0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x47,0x4F,0x48,0x48,0x68,0x3F,0x1F,0x00,}
  59. };


  60. sbit        a0=P3^4;
  61. sbit        e1=P5^4;
  62. sbit        e2=P5^5;

  63. //*****************************************************************
  64. //转换P4口与data的不一致问题
  65. //*****************************************************************
  66. unsigned char zhuan_huan(unsigned char dat)
  67. {
  68.         unsigned char a=0x00;
  69.         a=a|((dat&0x10)>>4);//P40送出dat[4]   也就是a[0]=dat[4]
  70.         a=a|((dat&0x04)>>1);//a[1]=dat[2]
  71.         a=a|((dat&0x20)>>3);//a[2]=dat[5]
  72.         a=a|((dat&0x80)>>4);//a[3]=dat[7]
  73.         a=a|((dat&0x40)>>2);//a[4]=dat[6]
  74.         a=a|((dat&0x01)<<5);//a[5]=dat[0]
  75.         a=a|((dat&0x02)<<5);//a[6]=dat[1]
  76.         a=a|((dat&0x08)<<4);//a[7]=dat[3]
  77.         return a;        
  78. }

  79. //*****************************************************************
  80. //延时函数1ms   stc15单片机
  81. //*****************************************************************
  82. void delay(unsigned int t)
  83. {
  84.         unsigned char i, j,k;
  85.         for(k=0;k<t;k++)
  86. {
  87.         _nop_();
  88.         _nop_();
  89.         _nop_();
  90.         i = 11;
  91.         j = 190;
  92.         do
  93.         {
  94.                 while (--j);
  95.         } while (--i);
  96. }
  97. }

  98. //*****************************************************************
  99. //写命令
  100. //*****************************************************************
  101. void write_command(unsigned char com,unsigned char flag)
  102. {
  103.         if (flag==0)          //对左屏操作
  104.         {        
  105.                 a0=0;
  106.                 data_port=zhuan_huan(com);
  107.                 e1=1;
  108.                 e2=0;
  109.                 delay(2);
  110.                 e1=0;        
  111.         }
  112.         else if(flag==1) //右屏操作
  113.         {
  114.                 a0=0;
  115.                 data_port=zhuan_huan(com);
  116.                 e2=1;
  117.                 e1=0;
  118.                 delay(2);
  119.                 e2=0;                        
  120.         }
  121.         else if(flag==2)  //both
  122.         {
  123.                  a0=0;
  124.                 data_port=zhuan_huan(com);
  125.                 e2=1;
  126.                 e1=1;
  127.                 delay(2);
  128.                 e1=0;
  129.                 e2=0;        
  130.         }
  131. }

  132. //*****************************************************************
  133. //写数据
  134. //*****************************************************************
  135. void write_data(unsigned char dat,unsigned char flag)
  136. {
  137.         if (flag==0)          //对左屏操作
  138.         {        
  139.                 a0=1;
  140.                 data_port=zhuan_huan(dat);
  141.                 e1=1;
  142.                 e2=0;
  143.                 delay(2);
  144.                 e1=0;        
  145.         }
  146.         else if(flag==1)
  147.         {
  148.                 a0=1;
  149.                 data_port=zhuan_huan(dat);
  150.                 e2=1 ;
  151.                 e1=0;
  152.                 delay(2);
  153.                 e2=0;                        
  154.         }
  155.         else if(flag==2)
  156.         {
  157.                  a0=1;
  158.                 data_port=zhuan_huan(dat);
  159.                 e2=1;
  160.                 e1=1 ;
  161.                 delay(2);
  162.                 e1=0;
  163.                 e2=0;        
  164.         }
  165. }
  166. //*****************************************************************
  167. //在某行某列写字符
  168. //*****************************************************************
  169. void write_zifu(unsigned char flag,unsigned char x,unsigned char y, unsigned char code *zf)
  170. {

  171.         unsigned char i;
  172.         unsigned char j;
  173.         if(x==2)
  174.         x=0;
  175.         for(i=0;i<2;i++)
  176.         {
  177.                 write_command(page_add+2*x+i,flag);
  178.                 write_command(col_add+8*y,flag);
  179.                 for(j=0;j<8;j++)
  180.                 {
  181.                 //        write_command(col_add+16*y+j,flag);
  182.                         write_data(zf[8*i+j],flag);
  183.                 }
  184.         }  
  185. }

  186. //*****************************************************************
  187. //写字符 行范围1-2,列范围0-7
  188. //*****************************************************************
  189. void write_hanzi(unsigned char flag,unsigned char x,unsigned char y, unsigned char code *hz)
  190. //flag显示在哪个屏幕上 x为行0 1;y为列:0 1 2
  191. {

  192.         unsigned char i;
  193.         unsigned char j;
  194.         if(x==2)
  195.         x=0;
  196.         for(i=0;i<2;i++)
  197.         {
  198.                 write_command(page_add+2*x+i,flag);
  199.                 write_command(col_add+16*y,flag);
  200.                 for(j=0;j<16;j++)
  201.                 {
  202.                 //        write_command(col_add+16*y+j,flag);
  203.                         write_data(hz[16*i+j],flag);
  204.                 }
  205.         }  
  206. }
  207.    
  208. //*****************************************************************
  209. //清屏函数
  210. //*****************************************************************
  211. void lcd_clc(void)        //清屏
  212. {
  213.         unsigned char i,j;
  214.         for(j=0;j<4;j++)  //四页
  215.         {
  216.                 write_command(page_add+j,2);
  217.                 for(i=0;i<80;i++)
  218.                 {
  219.                         write_command(col_add+i,2);
  220.                         write_data(0x00,2);        
  221.                 }                        
  222.         }
  223. }

  224. //*****************************************************************
  225. //初始化函数
  226. //*****************************************************************
  227. void lcd_initial(void)
  228. {
  229.         P5M0=0Xff;
  230.         P5M1=0X00;
  231.         P3M0=0Xff;
  232.         P3M1=0X00;
  233.         P4M0=0Xff;
  234.         P4M1=0X00;                  //全部为推挽输出
  235.         write_command(0xa4,2);//正常驱动
  236.         write_command(0xa9,2);//1/32duty   每个com的占空比
  237.         write_command(0xa0,2);//显示方向为a1正向a0反向
  238.         write_command(start_line,2);//设置显示行
  239.         write_command(page_add,2);
  240.         write_command(col_add,2);
  241.         write_command(0xaf,2);        //开显示
  242.         write_command(0xee,2);
  243.         lcd_clc();
  244. }
复制代码

word格式的原理图与Keil代码下载:
LCD12232_stc15.rar (78.69 KB, 下载次数: 66)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:399179 发表于 2018-11-8 18:25 来自手机 | 只看该作者
感谢分享,学习中
回复

使用道具 举报

板凳
ID:208271 发表于 2019-5-26 08:22 | 只看该作者
程序是源文件,原理图非源文件,是DOC文件,看看吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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