微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LCD12864汉字显示问题

LCD12864汉字显示问题

时间:10-02 整理:3721RD 点击:
[img]F:\汇总\Docu

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit CS1=P2^0;
  6. sbit CS2=P2^1;
  7. sbit rs=P2^2;
  8. sbit rw=P2^3;
  9. sbit e=P2^4;

  10. uchar code ni[]={0x10,0x01,0x10,0x01,0x10,0x01,0x88,0x7F,0x88,0x40,0x4C,
  11.                  0x20,0x2C,0x04,0x0A,0x04,0x89,0x14,0x88,0x24,0x48,0x24,
  12.                                  0x48,0x44,0x28,0x44,0x08,0x04,0x08,0x05,0x08,0x02};

  13. void delay(uchar ms)
  14. {
  15.         uchar i;
  16.         while(ms--)
  17.         {
  18.                   for(i=0;i<120;i++);
  19.         }

  20. }
  21. uchar Busy_Check()
  22. {
  23.          uchar LCD_Status;
  24.          rs=0;
  25.          rw=1;
  26.          e=1;
  27.          _nop_();
  28.          _nop_();
  29.          _nop_();
  30.          _nop_();
  31.          LCD_Status=P0&0x80;
  32.          e=0;
  33.          return LCD_Status;
  34. }
  35. void lcd_wcmd(uchar cmd)
  36. {
  37. while(Busy_Check());
  38. rs=0;
  39. rw=0;
  40. e=0;
  41. _nop_();
  42. _nop_();
  43. P0=cmd;
  44. _nop_();
  45. _nop_();
  46. _nop_();
  47. _nop_();
  48. e=1;
  49. _nop_();
  50. _nop_();
  51. _nop_();
  52. _nop_();
  53. e=0;
  54. }

  55. void lcd_wdat(uchar dat)
  56. {
  57. while(Busy_Check());
  58. rs=1;
  59. rw=0;
  60. e=0;
  61. P0=dat;

  62. _nop_();
  63. _nop_();
  64. _nop_();
  65. _nop_();
  66. e=1;
  67. _nop_();
  68. _nop_();
  69. _nop_();
  70. _nop_();
  71. e=0;
  72. }

  73. void set_page(uchar page)
  74. {
  75.         page=0xb8|page;
  76.         lcd_wcmd(page);
  77. }

  78. void set_line(uchar startline)
  79. {
  80.         startline=0xc0|startline;
  81.         lcd_wcmd(startline);
  82. }

  83. void set_lie(uchar lie)
  84. {
  85.         lie=0x3f&lie;
  86.         lie=0x40|lie;
  87.         lcd_wcmd(lie);
  88. }

  89. void setonoff(uchar onoff)
  90. {
  91.         onoff=0xce|onoff;
  92.         lcd_wcmd(onoff);
  93. }

  94. void selectscreen(uchar screen)
  95. {
  96.         switch(screen)
  97.         {
  98.                 case 0: CS1=0;CS2=0;break;
  99.                 case 1: CS1=0;CS2=1;break;
  100.                 case 2: CS1=1;CS2=0;break;
  101.                 default:break;
  102.         }
  103. }

  104. void clearscreen(uchar screen)
  105. {
  106.         uchar i,j;
  107.         selectscreen(screen);
  108.         for(i=0;i<8;i++)
  109.         {
  110.                 set_page(i);
  111.                 set_lie(0);
  112.                 for(j=0;j<64;j++)
  113.                 {
  114.                         lcd_wdat(j);
  115.                 }
  116.         }
  117. }

  118. void initlcd()
  119. {
  120.         while(Busy_Check());
  121.         selectscreen(0);
  122.         setonoff(0);
  123.         selectscreen(0);
  124.         setonoff(1);
  125.         selectscreen(0);
  126.         clearscreen(0);
  127.         set_line(0);       
  128. }

  129. void disp(uchar ss,uchar page,uchar lie,uchar *P )
  130. {
  131.         uchar i;
  132.         selectscreen(ss);
  133.         set_page(page);
  134.         set_lie(lie);
  135.         for(i=0;i<16;i++)
  136.         {
  137.                 lcd_wdat(P[i]);
  138.         }
  139.         set_page(page+1);
  140.         set_lie(lie);
  141.         for(i=0;i<16;i++)
  142.                 lcd_wdat(P[i+16]);
  143. }

  144. void main()
  145. {
  146.         initlcd();
  147.         clearscreen(0);
  148.         set_line(0);
  149.         disp(1,0,2*16,ni);
  150.         delay(5);
  151.         while(1);
  152.        
  153. }

复制代码

ments\我的文档\图片收藏/12[/img]

这是程序为什么仿真不显示汉字,求解

用什么仿真的,protues中的12864不支持汉字···

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top