DS1302编程与PROTEUS仿真[共6页].docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 DS1302实时时钟 本章主要讲述DS1302的使用方法。 图10.1 图10.1:DS1302显示 C程序: //使用uchar数,否则出错 //请注意 int uint char uchar的用法。 #includereg51.h #includeintrins.h #define uint unsigned int #define uchar unsigned char #define port P0 sbit rst=P3^0;//ds1302 sbit sclk=P3^1;//时钟 sbit io=P3^2;//数据口 sbit h=P3^6;//小时 sbit m=P3^7; //分钟 sbit e=P2^2;//使能 sbit rw=P2^1;//读写 sbit rs=P2^0;//数据/命令 sbit busy=P0^7;//检测忙 int hour=23,minute=51; //-----发送一个字节(8位)------ void send(uchar dt) { uchar i; for(i=0;i8;i++) { sclk=0; io=dt0x01;//取第一位 dt=1;//左移一位 sclk=1;//上升沿有效 } } //------写地址、数据-------- void write(uchar addr,uchar dat) { rst=0;sclk=0;rst=1; send(addr);//发送地址 send(dat);//发送数据 rst=1; } //---读取8位---- uchar receive() { uchar i; uchar dat=0; //循环8次 for(i=0;i8;i++) { sclk=1; dat=1; sclk=0;//下降沿读取 io=1;//读引脚前置一 if(io==1)dat|=0x80; }//此时dat为16进制比如说0x10 dat=(dat/16)*10+dat%16; //转化为10进制,现在是10; return(dat);//返回值 } //----读时钟------ uchar read(uchar addr) { uchar dat=0; rst=0;sclk=0;rst=1; send(addr);//发送地址 dat=receive();//接收 rst=0;return(dat); } //-----1602---------- //延时 void delay(uint n) { uint i; for(;n0;n--) for(i=200;i0;i--); } //判断是否忙 void check() { rs=0; rw=1; //读 e=1; port=0x00; e=1; while(busy); e=0; } //写指令 void sendcommand(uchar command) { check(); rs=0; //指令 rw=0; //写 e=0; port=command; e=1; _nop_();_nop_(); e=0; //写入指令 } //写数据 void writedata(uchar dat) { check(); rs=1; //数据 rw=0; port=dat; e=1; _nop_();_nop_(); e=0; } //光标位置 void pos(uint p) { sendcommand(p|0x80);//第一行第一个0x80; } void init() { sendcommand(0x38); // 8位数据,双列,5*7字形 delay(1); sendcommand(0x0c); //开 0x08关 delay(1); sendcommand(0x06);//地址增加一 delay(1); sendcommand(0x01);//清屏 delay(1); } void welcome() { int i=0; uchar string[]=data:; uchar up[]=time:; init();delay(10); pos(0);delay(1); while(string[i]!=\0) {writedata(string[i++]);delay(1); } i=0;delay(10); pos(0x40);de

文档评论(0)

138****9735 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档