查看: 3923|回复: 5

基于pcDuino的16 x 2 LCD Shield

[复制链接]
  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-3-15 10:07:14 | 显示全部楼层 |阅读模式
    分享到:
    基于pcDuino的16 x 2 LCD Shield

    显示图:

    pcduino_shield_16_2.jpg
    视频:
    http://player.youku.com/player.php/sid/XNTIzNjE2NjA4/v.swf

    源代码:
    1. #include "core.h"

    2. #define RS 8
    3. #define EN 9
    4. #define backlight 10
    5. #define RS_L digitalWrite(RS,LOW)
    6. #define RS_H digitalWrite(RS,HIGH)
    7. #define EN_L digitalWrite(EN,LOW)
    8. #define EN_H digitalWrite(EN,HIGH)
    9. int DB[] = {7,6,5,4};
    10. /********************************************************************/
    11. void write_command(int command)
    12. {
    13. int i,temp;
    14. RS_L;
    15. EN_L;
    16. temp=command & 0xf0;
    17. for (i=0; i < 4; i++)
    18. {
    19. if(temp&0x80)
    20. digitalWrite(DB[i],HIGH);
    21. else digitalWrite(DB[i],LOW);
    22. temp <<= 1;
    23. }
    24. EN_H;
    25. delayMicroseconds(1);
    26. EN_L;
    27. temp=(command & 0x0f)<<4;
    28. for (i=0; i < 4; i++)
    29. {
    30. if(temp&0x80)
    31. digitalWrite(DB[i],HIGH);
    32. else digitalWrite(DB[i],LOW);
    33. temp <<= 1;
    34. }
    35. EN_H;
    36. delayMicroseconds(1);
    37. EN_L;
    38. }

    39. /********************************************************************/
    40. void write_data(int dat)
    41. {
    42. int i=0,temp;
    43. RS_H;
    44. EN_L;
    45. temp=dat & 0xf0;
    46. for (i=0; i < 4; i++)
    47. {
    48. if(temp&0x80)
    49. digitalWrite(DB[i],HIGH);
    50. else digitalWrite(DB[i],LOW);
    51. temp <<= 1;
    52. }
    53. EN_H;
    54. delayMicroseconds(1);
    55. EN_L;
    56. temp=(dat & 0x0f)<<4;
    57. for (i=0; i < 4; i++)
    58. {
    59. if(temp&0x80)
    60. digitalWrite(DB[i],HIGH);
    61. else digitalWrite(DB[i],LOW);
    62. temp <<= 1;

    63. }
    64. EN_H;
    65. delayMicroseconds(1);
    66. EN_L;
    67. }
    68. /********************************************************************/
    69. void LCD_write_char( int x,int y,int dat)
    70. {
    71. int address;
    72. if (x ==0) address = 0x80 + y;
    73. else address = 0xC0 + y;
    74. write_command(address);
    75. write_data(dat);
    76. delayMicroseconds(10);
    77. }
    78. /********************************************************************/
    79. void lcd1602_init()
    80. {
    81. int i = 0;
    82. pinMode(RS,OUTPUT);
    83. pinMode(EN,OUTPUT);
    84. pinMode(backlight,OUTPUT);
    85. digitalWrite(backlight,HIGH);
    86. for (i=0; i < 4; i++)
    87. {
    88. pinMode(DB[i],OUTPUT);
    89. }
    90. delay(100);
    91. write_command(0x28);
    92. delay(50);
    93. write_command(0x06);
    94. delay(50);
    95. write_command(0x0c);
    96. delay(50);
    97. write_command(0x80);
    98. delay(50);
    99. write_command(0x01);
    100. delay(100);
    101. }
    102. /********************************************************************/
    103. void setup (void)
    104. {
    105. lcd1602_init();
    106. }
    107. /********************************************************************/
    108. void loop (void)
    109. {
    110. write_command(0x02);
    111. delay(10);
    112. LCD_write_char(0,2,'W');
    113. LCD_write_char(0,3,'e');
    114. LCD_write_char(0,4,'l');
    115. LCD_write_char(0,5,'c');
    116. LCD_write_char(0,6,'o');
    117. LCD_write_char(0,7,'m');
    118. LCD_write_char(0,8,'e');

    119. LCD_write_char(0,10,'t');
    120. LCD_write_char(0,11,'o');

    121. LCD_write_char(1,4,'p');
    122. LCD_write_char(1,5,'c');
    123. LCD_write_char(1,6,'D');
    124. LCD_write_char(1,7,'u');
    125. LCD_write_char(1,8,'i');
    126. LCD_write_char(1,9,'n');
    127. LCD_write_char(1,10,'o');
    128. while(1);
    129. }
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2014-5-18 22:32
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-3-15 10:13:52 | 显示全部楼层
    给力啊!这板子不一般啊!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-3 14:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-3-15 11:15:13 | 显示全部楼层
    好东西啊!顶顶顶!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-5-30 12:34:29 | 显示全部楼层
    本帖最后由 xujiaweidick 于 2013-5-30 14:03 编辑

    我想知道,这些写好的代码在哪编译?这个core.h在哪?编译好接对了IO就能直接运行了是吧?最好有个教我写写简单驱动然后编译运行的教程啦~~谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

     楼主| 发表于 2013-5-30 13:16:32 | 显示全部楼层
    xujiaweidick 发表于 2013-5-30 12:34
    我想知道,这些写好的代码在哪编译?这个core.h在哪?嫌疑好接对了IO就能直接运行了是吧?最好有个教我写写 ...

    这个问题需要请教@pcduino
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2013-6-3 09:22
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-5-31 09:34:25 | 显示全部楼层
    xujiaweidick 发表于 2013-5-30 12:34
    我想知道,这些写好的代码在哪编译?这个core.h在哪?编译好接对了IO就能直接运行了是吧?最好有个教我写写 ...

    你可以先看看论坛这些早期的例程,比如https://www.cirmall.com/bbs/foru ... 7&fromuid=10238

    编译运行代码在LXTerminal,core.h是在sample里的
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 14:38 , Processed in 0.157232 second(s), 26 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.