完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
除了分秒年份,小时月份周都只能写入134其他的写不进去,下面是源码,跪求大家帮忙
#include #define u16 unsigned int #define u8 unsigned char //(共用P0作为DB) //DS12C887 ***it ds=P2^4; ***it rw=P2^5; ***it as=P2^6; ***it cs=P2^7; //12864 ***it RS=P2^3; ***it WOR=P2^2; ***it E=P2^1; ***it PSB=P2^0; u8 code tablenum[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};//0123456789abcdef u8 ds_dat; u8 read_DS12C887(u8 add);//读数据 void write_DS12C887(u8 add,u8 dat);//写命令 void display_s();//显示时间 void set_time();//设置时间 //12864 void init_12864();//初始化 void command(u8 x);//写命令 void dat(u8 y);//写数据 void location(u8 x,u8 y);//位置x<=8,y<=4 void delay(u16 x); void main() { init_12864(); write_DS12C887(0x0a,0x20); write_DS12C887(0x0b,0x26); set_time(); while(1) { location(1,1); read_DS12C887(0x09);//年显示17 display_s(); read_DS12C887(0x08);//月显示31 display_s(); read_DS12C887(0x07);//日显示03 display_s(); read_DS12C887(0x06);//星期显示04 display_s(); read_DS12C887(0x04);//小时显示12 display_s(); read_DS12C887(0x02);//分钟显示35 display_s(); read_DS12C887(0x00);//秒 display_s(); } } void write_DS12C887(u8 add,u8 dat)//DS12写数据 { ds=1; rw=1; as=1; cs=0; P0=add; as=0; rw=0; P0=dat; rw=1; cs=1; as=1; } u8 read_DS12C887(u8 add)//DS12读数据 { ds=1; rw=1; as=1; cs=0; P0=add; as=0; ds=0; P0=0xff; ds_dat=P0; cs=1; ds=1; as=1; return ds_dat; } void display_s() { u8 ge,shi; ge=shi=0; shi=ds_dat/10; ge=ds_dat%10; dat(tablenum[shi]); dat(tablenum[ge]); dat(' '); } void set_time() { write_DS12C887(0x00,0x00); //秒 write_DS12C887(0x02,0x17); //分 write_DS12C887(0x04,0x0c); //小时 write_DS12C887(0x06,0x05); //星期 write_DS12C887(0x07,0x03); //日 write_DS12C887(0x08,0x02); //月 write_DS12C887(0x09,0x11); //年 } void delay(u16 x)//延时 { u16 a,b; for(a=x;a>0;a--) for(b=10;b>0;b--); } //12864 void location(u8 x,u8 y)//定位 { u8 a; switch(y) { case(1): a=0x80+(x-1);break; case(2): a=0x90+(x-1);break; case(3): a=0x88+(x-1);break; case(4): a=0x98+(x-1);break; } command(a); } void init_12864()//初始化 { delay(40); PSB=1; delay(1); WOR=0; RS=0; E=0; delay(5); command(0x30);//功能设定 delay(100); command(0x30);//功能设定 delay(60); command(0x01);//清屏 delay(160); command(0x06);//游标右移 delay(100); command(0x0c);//显示开关 delay(100); } void command(u8 x)//写命令 { WOR=0; RS=0; delay(2); P0=x; E=1; delay(2); E=0; } void dat(u8 x)//写数据 { WOR=0; RS=1; delay(2); P0=x; E=1; delay(2); E=0; } 不知道问什么有时候写的进有时候写不进,而且秒有时候到60有时候要跳到90才能进1 |
|
相关推荐
3个回答
|
|
本帖最后由 ysh711 于 2017-2-3 13:24 编辑
可以考虑一下电路的连接是否正常,包括电压是否纯净等,这个需要细心核对。记得几年前做过887数码管时钟也出现过类似故障,反复查找也无果,因为是自己用洞洞板做的,最后重新换板子重新布局就OK了,至今原因也没明白,估计是干扰啥的。
最佳答案
|
|
|
|
|
|
|
|
弄好了,可能是12864对DS12C887有干扰,写入的数据有问题
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
54 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
395 浏览 0 评论
439 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1265 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
529 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11743 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 12:44 , Processed in 0.689065 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号