|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2006-9-18 00:40:58
|
显示全部楼层
实时时钟PCF8563例子,由1602LCD显示
#include <mega48.h>
#include <delay.h>
#include <595-165.h>
#include <1602lcd.h>
//======================================================
//软件模拟I2C初始化,由代码向导产生
#asm
.equ __i2c_port=0x08 ;PORTC
.equ __sda_bit=4
.equ __scl_bit=5
#endasm
#include <i2c.h>
#include <pcf8563.h>
//======================================================
void main(void)
{
spiinit(); //spi初始化
lcd_init(); //LCD初始化
i2c_init(); //I2C通讯初始化
rtc_init(0,RTC_CLKOUT_1,RTC_TIMER_OFF); //PCF8563初始化
// rtc_set_time(16,19,0); //(时,分,妙) //设置时间
// rtc_set_date(19,8,2006);//(日,月,年) //设置日期
while(1)
{
unsigned char M,D,h,m,s; //月/日/小时/分钟/秒钟
unsigned int Y; //年
lcd_dictate(1); //LCD清屏
lcd_gotoxy(4,1); //定位到4列1行
rtc_get_date(&D,&M,&Y); //读日/月/年
rtc_get_time(&h,&m,&s); //读小时/分钟/秒钟
lcd_data(h/10%10+48); //显示小时的"十位"
lcd_data(h%10+48); //显示小时的"个位"
lcd_data('-'); //显示'-'
lcd_data(m/10%10+48); //显示分钟
lcd_data(m%10+48);
lcd_data('-');
lcd_data(s/10%10+48); //显示秒钟
lcd_data(s%10+48);
delay_ms(100);
}
} |
|