完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #define uchar unsigned char #define uint unsigned int #define byte unsigned char #define word unsigned int #define bool bit #define true 1 #define false 0 #define somenop();_nop_();_nop_();_nop_();_nop_(); // uchar systemerror; uchar BCD_hex(uchar x); ***it SCL=P2^7; ***it SDA=P2^6; ***it lcden=P2^0; ***it lcdrs=P2^1; char miao,shi,fen,year,month,day,week; uchar table2[]="0123456789"; //IIC总线开始 void delay1()//延时 { ;;;; } void delay(uint z) // 延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) // 写命令操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_date(uchar date) // 写数据操作 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void write_sfm(uchar add,char date) // 液晶显示 { char shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(table2[shi]); write_date(table2[ge]); } void IICstart(void ) { EA=0; SDA=1; SCL=1; somenop(); SDA=0; somenop(); SCL=0; } //IIC总线停止 void IICstop(void) { SCL=0; SDA=0; somenop(); SCL=1; somenop(); SDA=1; EA=1; } //IIC等待从器件接收方的应答 bool waitack(void) { uchar errtime=255; //因故障接收方无ACK,超时值为255 SDA=1; somenop(); SCL=1; somenop(); while(SDA) { errtime--; if(!errtime) { IICstop(); systemerror=0x11; return false; } } SCL=0; return true; } void sendack(void) { SDA=0; somenop(); SCL=1; somenop(); SCL=0; } void sendnotack(void) { SDA=1; somenop(); SCL=1; somenop(); SCL=0; } void IICsendbyte(byte ch) { uchar i=8; while(i--) { SCL=0; _nop_(); SDA=(bit)(ch & 0x80); ch<<=1; somenop(); SCL=1; somenop(); } SCL=0; } byte IICreceivebyte(void) { uchar i=8; byte ddata=0; SDA=1; while(i--) { ddata<<=1; SCL=0; somenop(); SCL=1; somenop(); ddata|=SDA; } SCL=0; return ddata; } void getpcf8563(uchar firsttype,uchar count,uchar *buff) { uchar i; IICstart(); IICsendbyte(0xa2); waitack(); IICsendbyte(firsttype); waitack(); IICstart(); IICstart(); IICsendbyte(0xa3); waitack(); for(i=0;i buff[i]=IICreceivebyte(); if(i!=count-1) sendack(); } sendnotack(); IICstop(); } void setpcf8563(uchar timetype,uchar value) { IICstart(); IICsendbyte(0xa2); waitack(); IICsendbyte(timetype); waitack(); IICsendbyte(value); waitack(); IICstop(); } void setalarm(uchar alarmtype,uchar count) //设置闹钟 { setpcf8563(0x01,0x02); setpcf8563(alarmtype,count); } void cleanalam(void) //清除闹钟 { setpcf8563(0x01,0x00); setpcf8563(0x09,0x80); setpcf8563(0x0a,0x80); setpcf8563(0x0b,0x80); setpcf8563(0x0c,0x80); } uchar read1380(uchar command) //返回时间 { uchar time; getpcf8563(command,1,&time); return time; } void write1380(uchar command,uchar time) { setpcf8563(command,time); } /* void time_display(uchar x0,uchar y0,bit type) { uchar time[]="00:00:00"; uchar con[3]; uchar time_type; getpcf8563(0x02,3,con); time[0]=(con[2]>>4)+'0'; time[1]=(con[2]&0x0f)+'0'; time[3]=(con[1]>>4)+'0'; time[4]=(con[1]&0x0f)+'0'; time[6]=(con[0]>>4)+'0'; time[7]=(con[0]&0x0f)+'0'; time[8]=0; if(type==1) { time_type=0xff; } else { time_type=0; } // dipchar(x0,y0,F57,1,time_type,time); } */ uchar BCD_hex(uchar x) { uchar tiger; tiger=(x>>4)*10+((x&0x0f)*1); return tiger; } void init() { lcden=0; write_com(0x38); // 设置16x2显示,5x7点阵,8位数据接口 write_com(0x0c); // 设置开显示,显示光标 ,光标闪烁 //惯用oxoc,开显示,不显示光标更别提闪烁 write_com(0x06); // 写一个字符后地址指针加1 write_com(0x01); // 显示清0 , 数据指针清0; 如若没有清零则一开始有乱码现象 write_com(0x80); // 命令先将数据指针定位到第一行第一个字处 } void main() { init(); while(1) { fen=read1380(0x03); shi=read1380(0x04); miao=read1380(0x02); write_com(0x80); // 将 时间用液晶显示出去 write_sfm(0x04,BCD_hex(shi)); write_sfm(0x07,BCD_hex(fen)); write_sfm(0x0a,BCD_hex(miao)); delay(500); } } 想先把PCF8563里的时间读出在LCD里,但就是不知道为啥读不出,求解答,谢谢! |
|
相关推荐
5个回答
|
|
看看先,看了才懂啊
|
|
|
|
|
|
|
|
uchar table2[]="0123456789"//这个啥意思啊
|
|
|
|
大哥,这个后面没用到,可以暂时不理他,我也是只进行读取时钟芯片里的时间,其他的什么修改时间,设置闹钟都还暂时放一边 |
|
|
|
你那个上拉电阻就没有激励啊!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
540 浏览 1 评论
662 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
755 浏览 0 评论
824 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
650 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10837 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-24 10:19 , Processed in 0.651919 second(s), Total 50, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191