2362|1

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

基于MEGA128带字库的LCD12864写显示 [复制链接]

  1. #include<iom128v.h>
  2. #include<macros.h>
  3. #define uchar            unsigned char
  4. #define uint                 unsigned int
  5. #define RS_ON                  PORTC|=BIT(0)
  6. #define RS_OFF                   PORTC&=~BIT(0)
  7. #define RW_ON                   PORTC|=BIT(1)
  8. #define RW_OFF                    PORTC&=~BIT(1)

  9. #define LCDE_ON                 PORTC|=BIT(2)
  10. #define LCDE_OFF                 PORTC&=~BIT(2)

  11. uchar const table1[]="数据组1";
  12. uchar const table2[]="数据组2";

  13. /*************************10us延时函数**************************/
  14. void delay_10us(void)
  15. {
  16. uchar i,j;
  17.     for(i=23;i>0;i--)
  18.         for(j=1;j>0;j--);       
  19. }
  20. /******************************************************************/


  21. /*************************毫秒级延时函数***************************/
  22. void delay_1ms(uchar t)
  23. {
  24. uchar a,b,c;
  25.         for(c=t;c>0;c--)
  26.             for(b=129;b>0;b--)
  27.                 for(a=45;a>0;a--);
  28. }
  29. /*****************************读忙指令********************************/
  30. void read_busy(void)
  31. {
  32.          RS_OFF;
  33.         RW_ON;
  34.         LCDE_ON;
  35.         delay_10us();
  36.         DDRA=0X00;
  37.         delay_10us();
  38.         while(PINA&0x80);
  39.         DDRA=0XFF;
  40.         LCDE_OFF;
  41. }
  42. /*********************************************************************/


  43. /*****************************写指令函数*********************************/
  44. void write_cmd(uchar cdata)
  45. {
  46.         read_busy();
  47.         RS_OFF;
  48.         RW_OFF;
  49.         LCDE_ON;
  50.         delay_10us();
  51.         PORTA=cdata;
  52.         delay_10us();
  53.         LCDE_OFF;
  54.         delay_10us();       
  55. }
  56. /************************************************************************/



  57. /*****************************写数据函数*********************************/
  58. void write_data(uchar ddata)
  59. {
  60.         read_busy();
  61.         RS_ON;
  62.         RW_OFF;
  63.         LCDE_ON;
  64.         delay_10us();
  65.         PORTA=ddata;
  66.         delay_10us();
  67.         LCDE_OFF;
  68.         delay_10us();
  69. }
  70. /***************************************************************************/


  71. /****************************12864液晶初始化********************************/
  72. void lcd12864_init(void)
  73. {
  74.         delay_1ms(50);
  75.         write_cmd(0x30);
  76.         delay_1ms(1);
  77.         write_cmd(0x0c);
  78.         delay_1ms(1);
  79.         write_cmd(0x06);
  80.         delay_1ms(1);
  81.         write_cmd(0x01);
  82.         delay_1ms(1);               
  83. }
  84. /****************************************************************************/

  85. void IO_init(void)
  86. {
  87. DDRA=0xff;
  88. PORTA=0XFF;
  89. DDRD=0XFF;
  90. PORTD=0X00;
  91. DDRC=0XFF;
  92. PORTC=0X28;
  93. }



  94. /******************************主函数*******************************************/
  95. void main(void)
  96. {
  97.          uchar i,j;
  98.          IO_init();
  99.         while(1)
  100.         {
  101.                 lcd12864_init();
  102.                 write_cmd(0x80);
  103.                 for(i=0;i<16;i++)
  104.                 {
  105.                         write_data(table1[i]);
  106.                         delay_1ms(2);
  107.                 }

  108.                 write_cmd(0x90);
  109.                 for(i=0;i<16;i++)
  110.                 {
  111.                         write_data(table1[i+16]);
  112.                         delay_1ms(2);
  113.                 }
  114.                 write_cmd(0x88);
  115.                 for(i=0;i<8;i++)
  116.                 {
  117.                         write_data(table1[i+32]);
  118.                         delay_1ms(2);
  119.                 }
  120.                 delay_1ms(10);
  121.                 write_cmd(0x01);
  122.                 delay_1ms(10);               
  123.                 write_cmd(0x01);
  124.                 delay_1ms(10);


  125.                 lcd12864_init();
  126.                 write_cmd(0x80);
  127.                 for(i=0;i<16;i++)
  128.                 {
  129.                         write_data(table2[i]);
  130.                         delay_1ms(2);
  131.                 }

  132.                 write_cmd(0x90);
  133.                 for(i=0;i<16;i++)
  134.                 {
  135.                         write_data(table2[i+16]);
  136.                         delay_1ms(2);
  137.                 }

  138.                 write_cmd(0x98);
  139.                 for(i=0;i<16;i++)
  140.                 {
  141.                         write_data(table2[i+32]);
  142.                         delay_1ms(2);
  143.                 }
  144.                 delay_1ms(10);

  145.         }
  146. }
  147. /**************************************************************/
复制代码

最新回复

拿来试试看  详情 回复 发表于 2014-8-26 14:48
点赞 关注
 

回复
举报

29

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
拿来试试看
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表