【Proteus仿真】Arduino UNO + PCF8563 +LCD1602时间显示
【Proteus仿真】Arduino UNO + PCF8563 +LCD1602时间显示
- Proteus仿真

所需库
- Rtc_Pcf8563库

- LiquidCrystal库

- 编译信息
1 2 3 4 5 6 7
| 使用 1.0 版本的库 Wire 在文件夹: C:\Users\Administrator\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire 使用 1.0.3 版本的库 Rtc_Pcf8563 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\Rtc_Pcf8563 使用 1.0.7 版本的库 LiquidCrystal 在文件夹: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal "C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "d:\\arduino\\MyHexDir/PCF8563.ino.elf" 项目使用了 4710 字节,占用了 (14%) 程序存储空间。最大为 32256 字节。 全局变量使用了301字节,(14%)的动态内存,余留1747字节局部变量。最大为2048字节。
|
程序代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include <Wire.h> #include <Rtc\_Pcf8563.h>//点击这里会自动打开管理库页面: http://librarymanager/All#Rtc\_Pcf8563 /\* add the lcd support \*/ #include <LiquidCrystal.h>//点击这里会自动打开管理库页面: http://librarymanager/All#LiquidCrystal
//init the real time clock Rtc_Pcf8563 rtc;
/\* initialize the library objects \*/ // LiquidCrystal lcd(rs, en, d4, d5, d6, d7); LiquidCrystal lcd(4 ,9 ,5 ,6 ,7 ,8);
const long interval = 1000;//设置延时时间间隔
unsigned long previousMillis = 0;
void setup() { pinMode(LED_BUILTIN, OUTPUT);//板载led灯 // set up the LCD's number of rows and columns: lcd.begin(16, 2);//初始化LCD1602,16代表每行可显示16个字符,2代表可显示的行数 /\*\*程序第一次烧录时,需要设定一次开始的时间到pcf8563里面\*\*/ //Proteus仿真可以不用初始化pcf8563,会主动读取电脑系统时间。 //在仿真时也可以启用,则会从下面的设置时间开始运行并显示。 /\* // rtc.initClock(); // rtc.setDate(2, 1, 1, 0, 22); //日,周,月,世纪,年 // rtc.setTime(14, 25, 40); //hr, min, sec \*/ }
void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//状态翻转 /\*\*下面是显示具体时-分-秒\*\*/ lcd.setCursor(4, 1); // lcd.print(rtc.formatTime(RTCC\_TIME\_HM));//显示格式00:00 lcd.print(rtc.formatTime());//显示格式:14:39:22 /\*\*下面是显示日期\*\*/ lcd.setCursor(3,0); lcd.print(rtc.formatDate(RTCC_DATE_ASIA));//显示格式:2022年1月2日 // lcd.print(rtc.formatDate()); //显示格式:/00/00/00 previousMillis = currentMillis; } }
|
仿真资源和程序代码
1 2 3
| 链接:https://pan.baidu.com/s/197U6q1LmUN7uZ1NAm8BOuQ 提取码:yyuq
|
添加星期内容部分显示代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include <Wire.h> #include <Rtc\_Pcf8563.h>//点击这里会自动打开管理库页面: http://librarymanager/All#Rtc\_Pcf8563 /\* add the lcd support \*/ #include <LiquidCrystal.h>//点击这里会自动打开管理库页面: http://librarymanager/All#LiquidCrystal
//init the real time clock Rtc_Pcf8563 rtc;
/\* initialize the library objects \*/ // LiquidCrystal lcd(rs, en, d4, d5, d6, d7); LiquidCrystal lcd(4 ,9 ,5 ,6 ,7 ,8);
const long interval = 1000;//设置延时时间间隔
unsigned long previousMillis = 0;
void setup() { pinMode(LED_BUILTIN, OUTPUT);//板载led灯 // set up the LCD's number of rows and columns: lcd.begin(16, 2);//初始化LCD1602,16代表每行可显示16个字符,2代表可显示的行数 /\*\*程序第一次烧录时,需要设定一次开始的时间到pcf8563里面\*\*/ //Proteus仿真可以不用初始化pcf8563,会主动读取电脑系统时间。 //在仿真时也可以启用,则会从下面的设置时间开始运行并显示。 /\* // rtc.initClock(); //程序第一次烧录时,设定一次开始的时间。 // rtc.setDate(2, 1, 1, 0, 22); //日,周,月,世纪,年 // rtc.setTime(14, 25, 40); //hr, min, sec \*/ }
void loop() { unsigned char \*week1; unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//状态翻转 /\*\*下面是显示具体时-分-秒\*\*/ lcd.setCursor(3, 1); // lcd.print(rtc.formatTime(RTCC\_TIME\_HM));//显示格式00:00 lcd.print(rtc.formatTime());//显示格式:14:39:22 lcd.setCursor(13, 0); //星期显示 switch(rtc.getWeekday()){ case 7: lcd.print("Sun");break; case 6: lcd.print("Sat");break; case 5: lcd.print("Fri");break; case 4: lcd.print("Thu");break; case 3: lcd.print("Wed");break; case 2: lcd.print("Tue");break; case 1: lcd.print("Mon");break; default :lcd.print("---");break; } /\*\*下面是显示日期\*\*/ lcd.setCursor(2,0); lcd.print(rtc.formatDate(RTCC_DATE_ASIA));//显示格式:2022年1月2日 // lcd.print(rtc.formatDate()); //显示格式:/00/00/00 previousMillis = currentMillis; } }
|
| 乐观者在灾祸中看到机会; 悲观者在机会中看到灾祸。 |
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!