找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1599|回复: 6
收起左侧

51单片机LCD12864汉字显示屏 无法显示 求帮助

[复制链接]
ID:816683 发表于 2021-3-28 16:16 | 显示全部楼层 |阅读模式
想加按键控制文字显示、滚动、切换等,小白求指点
仿真.PNG
  1. #include <reg51.h>
  2. #define  uchar  unsigned char
  3. #define  uint  unsigned int
  4. #define LCDLCDDisp_Off   0x3e
  5. #define LCDLCDDisp_On    0x3f
  6. #define Page_Add     0xb8
  7. #define LCDCol_Add     0x40
  8. #define Start_Line     0xC0

  9. #define data_ora P0
  10. sbit LCDMcs=P2^4 ;   
  11. sbit LCDScs=P2^3 ;   
  12. sbit LCDDi=P2^2 ;     
  13. sbit LCDRW=P2^1 ;     
  14. sbit LCDEnable=P2^0 ;     

  15. sbit key1=P2^5;
  16. sbit key2=P2^6;
  17. sbit key3=P2^7;

  18. uchar code hz1[]=
  19. {

  20.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  21.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  22.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  23.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  24.       
  25.       
  26. 0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,
  27.       0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
  28.       0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
  29.       0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,

  30. 0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,
  31.       0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
  32.       0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,
  33.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  34. 0x24,0x24,0x24,0xA4,0xFE,0xA3,0x22,0x00,
  35.       0x24,0x48,0x00,0xFF,0x00,0x80,0x00,0x00,
  36.       0x10,0x08,0x06,0x01,0xFF,0x00,0x01,0x02,
  37.       0x02,0x02,0x02,0xFF,0x01,0x01,0x01,0x00,

  38. 0x10,0x10,0x10,0xFF,0x10,0x10,0x88,0x88,
  39.       0x88,0xFF,0x88,0x88,0x8C,0x08,0x00,0x00,
  40.       0x04,0x44,0x82,0x7F,0x01,0x80,0x81,0x46,
  41.       0x28,0x10,0x28,0x26,0x41,0xC0,0x40,0x00,

  42. 0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,
  43.       0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
  44.       0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
  45.       0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00,

  46. 0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,
  47.       0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
  48.       0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,
  49.       0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00,
  50.                        
  51.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  52.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  53.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  54.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  55.       
  56. };
  57. uchar code hz2[]=
  58. {
  59.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  61.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  63. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  64.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  65.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  66.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  67.       
  68.       
  69. 0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0xFF,
  70.       0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,
  71.       0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xFF,
  72.       0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00,

  73. 0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0xFF,
  74.       0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,
  75.       0x00,0x7F,0x20,0x20,0x20,0x20,0x20,0x3F,
  76.       0x20,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,
  77.       
  78.       
  79. 0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,
  80.       0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
  81.       0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,
  82.       0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00,


  83. 0x00,0xFE,0x22,0x5A,0x96,0x0C,0x24,0x24,
  84.       0x25,0x26,0x24,0x34,0xA4,0x14,0x0C,0x00,
  85.       0x00,0xFF,0x04,0x08,0x87,0x81,0x41,0x31,
  86.       0x0F,0x01,0x3F,0x41,0x41,0x41,0x70,0x00,

  87.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  88.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  89.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  90.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  91. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  92.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  93.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  94.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  95. };
  96. uchar code hz3[]=
  97. {
  98.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  99.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  100.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  101.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  102.       
  103. 0x20,0x20,0x24,0xA4,0xA4,0xBF,0xA4,0xE4,
  104.       0xA4,0xBF,0xA4,0xE6,0xA4,0x30,0x20,0x00,
  105.       0x00,0x80,0x80,0x5F,0x4A,0x2A,0x0A,0x0F,
  106.       0x0A,0x2A,0x2A,0x4F,0x40,0x80,0x00,0x00,
  107.       
  108.       
  109. 0x00,0xFC,0x04,0x04,0xFE,0x04,0x00,0xE2,
  110.       0x2C,0x20,0x3F,0x20,0x28,0xF6,0x20,0x00,
  111.       0x00,0x1F,0x08,0x08,0x1F,0x00,0x00,0xFF,
  112.       0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,

  113.       
  114.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  115.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  116.       0x00,0x00,0x04,0x0C,0x18,0x38,0x38,0x30,
  117.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  118.                        
  119.                         0x02,0xE2,0x22,0x22,0x3F,0x82,0x80,0xFF,
  120.       0x80,0xA0,0x90,0x88,0x86,0xC0,0x80,0x00,
  121.       0x00,0x43,0x82,0x42,0x3E,0x00,0x00,0xFF,
  122.       0x40,0x23,0x0C,0x10,0x20,0x60,0x20,0x00,
  123.                        
  124.                         0x10,0x22,0x64,0x0C,0xC0,0x44,0x54,0x54,
  125.       0x54,0x7F,0x54,0x54,0xD6,0x44,0x40,0x00,
  126.       0x04,0x04,0xFE,0x01,0x00,0x00,0xFF,0x15,
  127.       0x15,0x15,0x55,0x95,0x7F,0x01,0x00,0x00,
  128.                        
  129.                         0x10,0x0C,0x04,0x55,0xD5,0x55,0x05,0x7F,
  130.       0x05,0x55,0xD5,0x55,0x04,0x14,0x0C,0x00,
  131.       0x00,0x22,0x12,0x0A,0xFF,0x0A,0x12,0x20,
  132.       0x12,0x0A,0xFF,0x0A,0x13,0x32,0x10,0x00,

  133.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  134.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  135.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  136.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  137.       
  138. };
  139. uchar code hz4[]=
  140. {

  141. 0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,
  142.       0x48,0x4C,0x4A,0x49,0xFC,0x08,0x00,0x00,
  143.       0x10,0x10,0x17,0x12,0x12,0x12,0x12,0xFF,
  144.       0x12,0x12,0x12,0x12,0x13,0x18,0x10,0x00,

  145. 0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,
  146.       0x3F,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
  147.       0x80,0x40,0x3F,0x01,0x01,0x01,0x01,0x01,
  148.       0x01,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,

  149. 0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFC,
  150.       0x04,0x04,0x04,0xFE,0x04,0x00,0x00,0x00,
  151.       0x04,0x03,0x00,0xFF,0x80,0x41,0x20,0x1F,
  152.       0x00,0x00,0x00,0x3F,0x40,0x40,0x70,0x00,

  153. 0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,
  154.       0x92,0x92,0x92,0xFF,0x02,0x00,0x00,0x00,
  155.       0x40,0x42,0x44,0x4D,0x40,0x7F,0x40,0x40,
  156.       0x40,0x7F,0x40,0x49,0x44,0x66,0x40,0x00,

  157. 0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xC2,
  158.       0x42,0x42,0x42,0x43,0x42,0x60,0x40,0x00,
  159.       0x00,0x10,0x08,0x04,0x06,0x40,0x80,0x7F,
  160.       0x00,0x00,0x02,0x04,0x0C,0x18,0x00,0x00,

  161. 0x00,0x00,0xFE,0x12,0x92,0x92,0xB2,0xD2,
  162.       0x92,0xD2,0xB2,0x92,0xDF,0x82,0x00,0x00,
  163.       0x40,0x20,0x1F,0x04,0x84,0x44,0x3F,0x04,
  164.       0x04,0x04,0xFF,0x04,0x04,0x06,0x04,0x00,

  165. 0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9F,
  166.       0x81,0x81,0x81,0x9F,0xA0,0x20,0x20,0x00,
  167.       0x00,0x00,0x00,0x7F,0xA0,0x90,0x40,0x43,
  168.       0x2C,0x10,0x28,0x26,0x41,0xC0,0x40,0x00,

  169. 0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,
  170.       0x40,0xFF,0x40,0x40,0x40,0x60,0x40,0x00,
  171.       0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,
  172.       0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  173. };

  174. void LCDdelay(uchar x)
  175. {


  176.    int d;
  177.    uchar y;
  178.    for(y=0;y<x;y++)
  179.    for(d=0;d<10;d++);
  180. }

  181. void CheckState()               
  182. {
  183.    uchar dat,DATA;
  184.    LCDDi=0;
  185.    LCDRW=1;
  186.    do
  187.    {
  188.       DATA=0x00;
  189.       LCDEnable=1;        
  190.           LCDdelay(1);
  191.           dat=DATA;
  192.       LCDEnable=0;
  193.       dat=0x80 & dat;
  194.     }
  195.     while(!(dat==0x00));
  196. }

  197. void write_com(uchar cmdcode)
  198. {
  199.     CheckState();
  200.         LCDDi=0;
  201.         LCDRW=0;
  202.         P1=cmdcode;               
  203.         LCDdelay(1);
  204.         LCDEnable=1;
  205.         LCDdelay(1);
  206.         LCDEnable=0;
  207. }


  208. void write_data(uchar LCDDispdata)
  209. {
  210.     CheckState();
  211.         LCDDi=1;
  212.         LCDRW=0;
  213.         P1=LCDDispdata;
  214.         LCDdelay(1);
  215.         LCDEnable=1;
  216.         LCDdelay(1);
  217.         LCDEnable=0;
  218. }

  219. void init_lcd()
  220. {
  221.         LCDdelay(1);      
  222.         LCDMcs=1;
  223.         LCDScs=1;
  224.         LCDdelay(1);
  225.         write_com(LCDLCDDisp_Off);         
  226.         write_com(Page_Add+0);
  227.         write_com(Start_Line+0);
  228.         write_com(LCDCol_Add+0);
  229.         write_com(LCDLCDDisp_On);
  230. }

  231. void Clr_Scr()
  232. {
  233.         uchar j,k;
  234.         LCDMcs=0;
  235.         LCDScs=0;
  236.         write_com(Page_Add+0);
  237.         write_com(LCDCol_Add+0);
  238.         for(k=0;k<8;k++)
  239.         {
  240.                 write_com(Page_Add+k);
  241.                   for(j=0;j<64;j++)  
  242.                 {
  243.                       write_com(LCDCol_Add+j);
  244.                         write_data(0x00);
  245.                 }
  246.         }
  247. }

  248. Disp(uchar page,uchar column, uchar code *word)
  249. {
  250. uchar i;
  251. //×ó
  252. LCDMcs=0;
  253. LCDScs=1;
  254. //é?°?
  255. write_com(0xb8|page);
  256. write_com(0x40|column);
  257. for(i=0;i<16;i++)
  258. write_data(word[i]);
  259. for(i=32;i<48;i++)
  260. write_data(word[i]);
  261. for(i=64;i<80;i++)
  262. write_data(word[i]);
  263. for(i=96;i<112;i++)
  264. write_data(word[i]);
  265. //??°?
  266. write_com(0xb8|page+1);
  267. write_com(0x40|column);
  268. for(i=16;i<32;i++)
  269. write_data(word[i]);
  270. for(i=48;i<64;i++)
  271. write_data(word[i]);
  272. for(i=80;i<96;i++)
  273. write_data(word[i]);
  274. for(i=112;i<128;i++)
  275. write_data(word[i]);
  276. //óò
  277. LCDMcs=1;
  278. LCDScs=0;
  279. //é?°?
  280. write_com(0xb8|page);
  281. write_com(0x40);
  282. for(i=128;i<144;i++)
  283. write_data(word[i]);
  284. for(i=160;i<176;i++)
  285. write_data(word[i]);
  286. for(i=192;i<208;i++)
  287. write_data(word[i]);
  288. for(i=224;i<240;i++)
  289. write_data(word[i]);
  290. //??°?
  291. write_com(0xb8|page+1);
  292. write_com(0x40);
  293. for(i=144;i<160;i++)
  294. write_data(word[i]);
  295. for(i=176;i<192;i++)
  296. write_data(word[i]);
  297. for(i=208;i<224;i++)
  298. write_data(word[i]);
  299. for(i=240;i<250;i++)
  300. write_data(word[i]);
  301. }

  302. void main()
  303. {
  304. uint k=0;
  305.         init_lcd();
  306.         Clr_Scr();
  307.      k=0;
  308.       for(k=0xc0;k<0xff;k++)
  309.         {
  310.                  Disp(0,0,hz1);
  311.                  Disp(2,0,hz2);
  312.                  Disp(4,0,hz3);
  313.                  Disp(6,0,hz4);
  314.          LCDMcs=0;
  315.          LCDScs=0;
  316.                  write_com(k);
  317.                  LCDdelay(2);

  318.         }
  319. while(1)
  320.     {

  321.         }
  322. }

复制代码

回复

使用道具 举报

ID:584814 发表于 2021-3-29 17:34 | 显示全部楼层
本坛找个现成时钟的先读懂,然后就全知道了,然后不断试直到明白了......
回复

使用道具 举报

ID:738987 发表于 2021-3-29 20:43 | 显示全部楼层
先找一个例程,然后再对比看问题
回复

使用道具 举报

ID:294296 发表于 2021-3-31 00:27 | 显示全部楼层
数据接在P1脚,这里10.#define data_ora P0的P0不对吧!
回复

使用道具 举报

ID:824490 发表于 2021-3-31 10:40 | 显示全部楼层
其实,我就想问问,你这代码编译通过了吗?
回复

使用道具 举报

ID:824490 发表于 2021-3-31 10:43 | 显示全部楼层
CheckState() 这个函数,是判断LCD的BUSY吗?
回复

使用道具 举报

ID:134581 发表于 2021-3-31 11:08 | 显示全部楼层
先删除多余代码,能显示东西出来
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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