找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机LCM19264驱动程序

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-23 01:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
也许是我在焊LCD排针时,静电击坏了LCM模组,连STC12C5A60S2的与之相连接的端口也损坏了,
难怪用示波器测试数据端口有的有波形,有的无波形;
程序协议都看了但没看出问题,所以我只能认为是PCB有问题了;
昨晚通过点亮LCD上第一个点,发现正常;
稍许松了口气;再次验证,有了本文的起笔。。。嘿嘿!看单片机点亮LCD第一个点的程序!
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include <string.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. sbit Lcd_Rst = P1^5;
  7. sbit Lcd_Csb = P1^4;
  8. sbit Lcd_Csa = P1^3;
  9. sbit Lcd_Rs = P1^2;
  10. sbit Lcd_Rw = P1^1;
  11. sbit Lcd_En = P1^0;
  12. sbit Rst_1302 = P3^2;
  13. sbit Dio_1302 = P3^3;
  14. sbit Sck_1302 = P3^4;
  15. sbit BL = P2^1;
  16. sbit BUZ = P2^0;
  17. sbit Led = P2^3;
  18. sbit Key_1=P2^5;
  19. sbit Key_2=P2^6;
  20. sbit Key_3=P2^7;
  21. uchar Time_Count,Key_Select,Beep_time,Beep,BP_Count,Key_count,Key_flag,Key_long_flag;
  22. uchar Year=0x12,Month=0x05,Date=0x05,Week=0x01,Sec=0x00,Min=0x00,Hour=0x12;
  23. uchar Yearh,Yearl,Monthh,Monthl,Dateh,Datel,Hourh,Hourl,Minl,Minh,Secl,Sech;
  24. uint BLT_Count;
  25. uchar BLT_Sec;
  26. //----------------------------------------------------------------------------------------
  27. void Delay_ms(uint ms)
  28. {
  29.   uint i,j;
  30.   for(i=ms;i>0;i--)
  31.   for(j=1220;j>0;j--)
  32.   {;}
  33. }
  34. void Delay_us(uint us)
  35. {
  36.   while(us--);
  37. }
  38. //chip selection signal CSB CSA  Selection
  39. //      0  0  IC1
  40. //      0    1      IC2
  41. //      1    0      IC3
  42. //      1    1     None
  43. //----------------------------------------------------------------------------------------
  44. void Busy()
  45. {
  46.   Lcd_Rw=1;
  47.   Lcd_Rs=0;
  48.   P0=0xff;
  49.   Lcd_En=1;
  50.   _nop_();
  51.   while(P0&0x80);
  52.   _nop_();
  53.   Lcd_En=0;
  54. }
  55. //WR_DATA&CMd
  56. void wrdata(uchar a,uchar b,uchar c,uchar lcddata)
  57. {
  58.   Lcd_Csa=a;
  59.   Lcd_Csb=b;
  60.   Busy();
  61.   Lcd_Rs=c;
  62.   Lcd_Rw=0;
  63.   Lcd_En=1;
  64.   _nop_();
  65.   P0=lcddata;
  66.   _nop_();                                                   
  67.   Lcd_En=0;
  68.   Lcd_Csa=1;
  69.   Lcd_Csb=1;
  70.   Lcd_Rs=1;
  71.   Lcd_Rw=1;
  72. }
  73. //LCM INITIAL
  74. void initallcd(void)
  75. {
  76.   Lcd_Csa=1;
  77.   Lcd_Csb=1;
  78.   Lcd_En=0;
  79.   Lcd_Rst=0;
  80.   Delay_ms(50);
  81.   Lcd_Rst=1;
  82.   Delay_ms(50);
  83.   wrdata(0,0,0,0x3E);
  84.   Delay_ms(5);
  85.   wrdata(0,1,0,0x3E);
  86.   Delay_ms(5);
  87.   wrdata(1,0,0,0x3E);
  88.   Delay_ms(5);
  89.   wrdata(0,0,0,0x3F);
  90.   Delay_ms(5);
  91.   wrdata(0,1,0,0x3F);
  92.   Delay_ms(5);
  93.   wrdata(1,0,0,0x3F);
  94.   Delay_ms(5);

  95. }
  96. //----------------------------------------------------------------------------------------
  97. void Clear(uchar dat)
  98. {
  99.   uchar i,j;
  100.   uchar page=0xb8;
  101.   for(i=0;i<8;i++)
  102.   {
  103.    wrdata(0,0,0,page|i);
  104.    wrdata(0,0,0,0x40);
  105.    wrdata(0,0,0,0xc0);
  106.    wrdata(0,1,0,page|i);
  107.    wrdata(0,1,0,0x40);
  108.    wrdata(0,1,0,0xc0);
  109.    wrdata(1,0,0,page|i);
  110.    wrdata(1,0,0,0x40);
  111.    wrdata(1,0,0,0xc0);
  112.    for(j=0;j<64;j++)
  113.    {
  114.     wrdata(0,0,1,dat);
  115.     wrdata(0,1,1,dat);
  116.     wrdata(1,0,1,dat);
  117.    }
  118.   }
  119. }
  120. void SetPoint(uchar k)
  121. {
  122.   wrdata(0,0,0,0xb8);
  123. wrdata(0,0,0,0x40);
  124. wrdata(0,0,0,0xc0);
  125. wrdata(0,0,1,k);
  126. }
  127. //----------------------------------------------------------------------------------------
  128. void Beep_Bi(void)
  129. {
  130.   if(Beep_time!=0)
  131.   {
  132.    Beep_time--;
  133.    BUZ=~BUZ;
  134.   }
  135.   else
  136.   {
  137.    BUZ=0;
  138.   }
  139. }
  140. //----------------------------------------------------------------------------------------
  141. void TM_ini(void)
  142. {
  143.    TMOD=0x12;
  144.   TH1=(65536-10000)/256;
  145.   TL1=(65536-10000)%256;
  146.   TR1=1;
  147.   ET1=1;
  148.   TH0=6;
  149.   TL0=6;
  150.   TR0=0;
  151.   ET0=1;
  152.   EA=1;
  153. }
  154. //----------------------------------------------------------------------------------------
  155. void TM1(void)interrupt 3
  156. {
  157.   TH1=(65536-10000)/256;
  158. TL1=(65536-10000)%256;
  159. Key_1=1;
  160.     if(Key_1==0)
  161.     {
  162.      Key_count++;
  163.    if(Key_count==2)
  164.    {
  165.      //Beep_time=150;
  166.      Key_flag=1;BLT_Sec=0;
  167.      TR0=1;BL=1;Led=0;
  168.      Key_Select++;
  169.      if(Key_Select==3)
  170.      {
  171.       Key_Select=0;Key_flag=0;
  172.      }
  173.    }
  174.    }
  175.      else
  176.    {Key_count=0;Key_flag=0;}
  177. }
  178. //----------------------------------------------------------------------------------------
  179. void TM0(void)interrupt 1
  180. {
  181.   TF0=0;
  182.   BLT_Count++;
  183.   BP_Count++;
  184.   if(BP_Count==2)
  185.   {
  186.    BP_Count=0;
  187.    Beep_Bi();
  188.   }
  189.   if(BLT_Count==2000)
  190.   {
  191.     BLT_Count=0;Led=~Led;BLT_Sec++;
  192.    if(BLT_Sec==15)
  193.    {
  194.     BL=0;BLT_Sec=0;Led=0;
  195.    }
  196.    }
  197.   //}
  198. }
  199. //----------------------------------------------------------------------------------------
  200.   void main(void)
  201. {
  202.    P2=0xf8;
  203. initallcd();
  204. Clear(0x00);
  205.     //TM_ini();
  206.     while(1)
  207.    {
  208.    SetPoint(0x01);
  209.    }
  210.   }
复制代码



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

使用道具 举报

沙发
ID:184793 发表于 2017-3-30 15:38 | 只看该作者
0x3e;0x3f;0xc0;0xb8;0x40 这些都是什么功能
回复

使用道具 举报

板凳
ID:163501 发表于 2018-3-19 15:29 | 只看该作者
这个程序不是19264的,19264是分三片的,这个程序呈有CSA,CSB,只是两片,应该是一个12864的。
回复

使用道具 举报

地板
ID:323213 发表于 2021-3-18 21:54 | 只看该作者
我手上也是CSA,CSB的MS19264C
回复

使用道具 举报

5#
ID:398477 发表于 2021-3-30 12:19 来自手机 | 只看该作者
没有那么脆弱吧!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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