完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #include #define uchar unsigned char #define uint unsingned int ***it T_CLK=P1^3; ***it T_IO=P1^2; ***it T_RST=P1^4; ***it RS=P1^7; ***it RW=P1^6; ***it EN=P1^5; ***it ACC7= ACC^7; ***it ACC0=ACC^0; uchar datechar[] = {"DATE: "}; uchar timechar[] = {"TIME:"}; uchar datebuffer[10]={0x32,0x30,0,0,0x2d,0,0,0x2d,0,0}; //定义日历显示缓冲区 uchar timebuffer[8]={0,0,0x3a,0,0,0x3a,0,0,}; //定义时间缓冲区 uchar weekbuffer={0x30}; //往DS1302写入一个字节 void writeB(uchar ucDa) { uchar i; ACC=ucDa; for(i=8;i>0;i--) { T_IO=ACC0; T_CLK=1; T_CLK=0; ACC=ACC>>1; } } //从DS1302读取一个字节 uchar ReadB(void) { uchar i; for(i=8;i>0;i--) { ACC=ACC>>1; ACC7= T_IO; T_CLK=1; T_CLK=0; } return(ACC); } //向DS1302某地址写入命令,数据 void v_W1302(uchar ucAddr,uchar ucDa) { T_RST=0; T_CLK=0; _nop_(); _nop_(); T_RST=1; _nop_(); _nop_(); writeB(ucAddr); writeB(ucDa); T_CLK=1; T_RST=0; } //读取DS1302某地址的数 uchar uc_R1302(uchar ucAddr) { uchar ucDa=0; T_RST=0; T_CLK=0; T_RST=1; writeB(ucAddr); ucDa=ReadB(); T_CLK=1; T_RST=0; return(ucDa); } //检查忙函数 void fbusy() { P2=0xff; RS=0; RW=1; EN=1; EN=0; while(( P2&0x80)) { EN=0; EN=1; } } //写命令函数 void wc51r(uchar j) { fbusy(); EN=0; RS=0; RW=0; EN=1; P2=j; EN=0; } //写数据函数 void wc51ddr(uchar j) { fbusy(); EN=0; RS=1; RW=0; EN=1; P2=j; EN=0; } //LCD1602初始化 void init() { wc51r(0x01); wc51r(0x38); wc51r(0x0c); wc51r(0x06); } //延时函数 void delay(uint i) { uint y,j; for (j=0;j for (y=0;y<0xff;y++){;} } } void main (void) { uchar i; uchar data temp; SP=0x50; delay(10); init(); wc51r(0x80); for(i=0;i<5;i++) wc51ddr(datechar); wc51r(0xc0); for(i=0;i<5;i++) wc51ddr(timechar); v_W1302(0x8e,0); v_W1302(0x8c,0x11); v_W1302(0x8A,0x03); v_W1302(0x88,0x06); v_W1302(0x86,0x29); v_W1302(0x84,0x16); v_W1302(0x82,0x25); v_W1302(0x80,0x30); v_W1302(0x8e,0x80); } while(1) { temp=uc_R1302(0x8d); 、、// 读年 datebuffer[2]=0x30+temp/16; datebuffer[3]=0x30+temp%16; temp=uc_R1302(0x8B); // 读星期 weekbuffer[2]=0x30+temp temp=uc_R1302(0x89); // 读月 datebuffer[5]=0x30+temp/16; datebuffer[6]=0x30+temp%16; temp=uc_R1302(0x87); // 读日 datebuffer[8]=0x30+temp/16; datebuffer[9]=0x30+temp%16; temp=uc_R1302(0x85); // 读小时 temp=temp & 0x7f; timebuffer[0]=0x30+temp/16; timebuffer[1]=0x30+temp%16; temp=uc_R1302(0x83); // 读分 timebuffer[3]=0x30+temp/16; timebuffer[4]=0x30+temp%16; temp=uc_R1302(0x81); // 读秒 temp=temp & 0x7f; timebuffer[6]=0x30+temp/16; timebuffer[7]=0x30+temp%16; wc51r(0x86); // 第一行后面显示日历 for (i=0;i< 10;i++) wc51ddr(datebuffer); wc51r(0xc6); // 第二行后面显示时间 for (i=0;i< 8;i++) wc51ddr(timebuffer); wc51ddr(0x20); wc51ddr(weekbuffer); // 显示星期 } |
|
相关推荐
2个回答
|
|
编译就会出现TEST1.C(175): error C141: syntax error near 'for'
TEST1.C(175): error C141: syntax error near '=', expected ')' TEST1.C(175): error C129: missing ';' before '<' Target not created |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助大佬们,装了补丁的pads9.5,页面还是有这种问题怎么办?
5231 浏览 1 评论
4044 浏览 1 评论
PADS Layout 在Bottom层添加测试点,被盖了绿油(同样的操作TOP层没有被绿油覆盖),怎么设置才能去掉绿油?
4647 浏览 1 评论
8910 浏览 0 评论
PADS DRC报焊盘之间距离过小,焊盘间距为7,但是规则的安全间距为5
16526 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 11:53 , Processed in 0.657544 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号