找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3108|回复: 1
收起左侧

单片机+pcf8563 LCD1602显示源程序+Proteus仿真

[复制链接]
ID:538496 发表于 2020-4-14 12:49 | 显示全部楼层 |阅读模式
  最近学习涉及到icc的编程 由于无法在实验室实验 便用proteus做了简单仿真 没有写闹钟部分功能
  下面附上部分代码和仿真截图  
SZ8IR67QA(GIPMB@I]{QX`N.png

单片机源程序如下:

#include <reg51.h>
#include "PCF8563.h"
#include "LM016L.h"

uchar TimeBuff[7]={0,0,0,0,0,0,0};  //sec min hour day weekday month year

void DisplayFullTime(uchar *buff);  //显示完整时间参数
void delay();

uchar line1[16] = "This is PCF8563!";
uchar line2[16] = "Ready for clock!";
//----------------------------------------------------------------------------
void main()
{
        PCF8563_INIT();  //初始化PCF8563状态,并将时间置2015-05-01 Fri 12:30:00
        LCD_Init();
        LCD_Display_Line(1, line1);
        LCD_Display_Line(2, line2);
        
        //test1: 设置时间
        TimeBuff[0] = 0x30;  //sec
        TimeBuff[1] = 0x59;  //min
        TimeBuff[2] = 0x23;  //hour
        TimeBuff[3] = 0x31;  //day
        TimeBuff[4] = 0x02;  //weekday
        TimeBuff[5] = 0x12;  //month
        TimeBuff[6] = 0x19;  //year
        Time_Write(TimeBuff); //写入上述新的时间。另,若要写入闹铃时间,方法雷同,差别在于,寄存器地址不同,写入总字节数不同。请自行封装函数。

        while(1)
        {
                //test2: 读取时间,这是完整读取
                Time_Read(TimeBuff);
                DisplayFullTime(TimeBuff);
                delay();
        };        
}
//----------------------------------------------------------------------------
void delay()
{
        uint i;
        for (i = 0; i < 0x3fff; i++)        {;}
}
//----------------------------------------------------------------------------
void DisplayFullTime(uchar *buff)
{
//uchar line1[16] = "This is PCF8563!";
//uchar line2[16] = "Ready for clock!";
//保留第一行欢迎信息不变,第二行显示为:[MM-dd hh:mm:ss]
        line2[15] = ']';
        line2[14] = (TimeBuff[0]&0x0f) + 0x30;                //秒个位转ascii
        line2[13] = (TimeBuff[0]>>4) + 0x30;                        //秒十位转ascii
        line2[12] = ':';
        line2[11] = (TimeBuff[1]&0x0f) + 0x30;                //分钟个位转ascii
        line2[10] = (TimeBuff[1]>>4) + 0x30;                        //分钟十位转ascii
        line2[9]  = ':';
        line2[8] = (TimeBuff[2]&0x0f) + 0x30;                //小时个位转ascii
        line2[7] = (TimeBuff[2]>>4) + 0x30;                        //小时十位转ascii
        line2[6]  = ' ';
        line2[5] = (TimeBuff[3]&0x0f) + 0x30;                //日个位转ascii
        line2[4] = (TimeBuff[3]>>4) + 0x30;                        //日十位转ascii
        line2[3]  = '-';
        line2[2] = (TimeBuff[5]&0x0f) + 0x30;                //月个位转ascii
        line2[1] = (TimeBuff[5]>>4) + 0x30;                        //月十位转ascii
        line2[0]  = '[';
        LCD_Display_Line(2, line2);
}

全部资料51hei下载地址:
PCF8563.pdf (649.36 KB, 下载次数: 45)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:555142 发表于 2020-12-23 23:09 | 显示全部楼层
为啥我仿真的全是乱码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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