标题: 单片机+pcf8563 LCD1602显示源程序+Proteus仿真 [打印本页]

作者: linaa    时间: 2020-4-14 12:49
标题: 单片机+pcf8563 LCD1602显示源程序+Proteus仿真
  最近学习涉及到icc的编程 由于无法在实验室实验 便用proteus做了简单仿真 没有写闹钟部分功能
  下面附上部分代码和仿真截图  


单片机源程序如下:

#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)
PCF8563+proteus+LCD1602.rar (74.95 KB, 下载次数: 145)

作者: 1804889557    时间: 2020-12-23 23:09
为啥我仿真的全是乱码




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1