狗趴(GodPub),开源硬件学习与实践

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 7405|回复: 2
打印 上一主题 下一主题

【JoyTag香蕉派学习】Banana Pi 1602 LCD 简易时钟

[复制链接]

84

主题

143

帖子

725

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
725
QQ
跳转到指定楼层
楼主
发表于 2015-1-27 22:23:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
拿到老邓Banana Pi 1602 LCD模块,按论坛的技术资料做了个简易的时钟。
感谢老邓的模块,追梦的香蕉派,以及二叔热心的支持。

以下内容参考了这个帖子:
http://www.52pi.net/forum.php?mod=viewthread&tid=949

这个模块上带一个RGB LED,5个按键,以及一个LCD 1602。
做工很精致。

效果图


硬件连接

硬件连接很方便,模块附带一个针脚垫脚(也就是把针脚垫高),把垫脚插到香蕉派的排针上,然后再把这个LCD模块插垫脚上就可以了。

I2C配置

root用户登录

1)
apt-get install i2c-tools

2)
vi /etc/modules

添加如下两行内容
i2c-bcm2708
i2c-dev

3)
vi /etc/modprobe.d/raspi-blacklist.conf
注释掉或删除如下两行:
blacklist spi-bcm2708
blacklist i2c-bcm2708

4)
重启香蕉派并重新登录后,执行如下命令
modprobe i2c-dev
i2cdetect -y -a 2

可见LCD模块已被正确识别,模块地址为:0X20


程序代码

  1. #include <stdio.h>
  2. #include <wiringPi.h>
  3. #include <mcp23017.h>
  4. #include <lcd.h>
  5. #include <time.h>

  6. int main()
  7. {
  8.         time_t timep;
  9.         struct tm *ptm;
  10.         int display,i;
  11.         
  12.         wiringPiSetup();
  13.         mcp23017Setup (100, 0x20);        
  14.         for(i=0;i<16;i++)
  15.           pinMode(100+i,OUTPUT);

  16.         digitalWrite(107,1);
  17.         digitalWrite(101,0);
  18.         display=lcdInit(2,16,4,100,102,103,104,105,106,0,0,0,0);

  19.         lcdHome(display);
  20.         lcdClear(display);
  21.         while(1)
  22.         {
  23.                 time(&timep);
  24.                 ptm=localtime(&timep);

  25.                 lcdPosition(display,4,0);
  26.                 lcdPrintf(display,"%04d/%02d/%02d",1900+ptm->tm_year, 1+ptm->tm_mon, ptm->tm_mday);

  27.                 lcdPosition(display,4,1);
  28.                 lcdPrintf(display,"%02d:%02d:%02d",ptm->tm_hour, ptm->tm_min, ptm->tm_sec);

  29.                 delay(100);
  30.         }
  31. }
复制代码

编译并执行:
gcc lcd1602.c  -lwiringPi  /opt/gpio-lib/WiringBPi_Beta_V2.0/devLib/lcd.o -o lcd1602
./lcd1602
关于tm结构体:
  1. struct tm
  2. {
  3.     int tm_sec; /* Seconds. [0-60] (1 leap second) */
  4.     int tm_min; /* Minutes. [0-59] */
  5.     int tm_hour; /* Hours. [0-23] */
  6.     int tm_mday; /* Day. [1-31] */
  7.     int tm_mon; /* Month. [0-11] */
  8.     int tm_year; /* Year - 1900. */
  9.     int tm_wday; /* Day of week. [0-6] */
  10.     int tm_yday; /* Days in year.[0-365] */
  11.     int tm_isdst; /* DST. [-1/0/1]*/
  12. };
复制代码
需要注意的是,年份要加1900,月份加1。






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。

13

主题

33

帖子

155

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
155
沙发
发表于 2015-1-27 22:25:32 | 只看该作者
卓大好速度哇!

84

主题

143

帖子

725

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
725
QQ
板凳
 楼主| 发表于 2015-1-27 22:35:52 | 只看该作者
沙发被二叔抢走了
天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|狗趴(GodPub) Arduino&Raspberry Pi开源硬件学习与实践[QQ群:20085629]  

GMT+8, 2024-4-20 14:54 , Processed in 0.069228 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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