智能电子钟(LCD显示)(2)

2019-08-30 16:15

E=1; //高电平期间写入 delay1ms(5); //保持时间 E=0; //变低 }

/*********函数功能:向1602写入一个字节的数据*********/ void writedata(uchar dat) { E=0; RW=0; RS=1; //高电平选择写入数据 P0=dat; delay1ms(1); E=1; delay1ms(5); E=0; }

/*********函数功能:初始化LCD1602*********/ void lcd1602Init() { writecom(0x38); //开显示 writecom(0x0c); //开显示,不显示光标 writecom(0x06); //写一个字符指针加1 writecom(0x01); //清屏 writecom(0x80); //设置数据指针起点 }

-------------------------------------------分割线--------------------------------------------------- #ifndef _DS1302_H_ #define _DS1302_H_

//---包含头文件---// #include #include

//---宏定义关键词---// #ifndef uint

#define uint unsigned int #endif

#ifndef uchar

#define uchar unsigned char #endif

//---定义1302的IO口---// sbit IO=P2^7; sbit CE=P2^5; sbit SCLK=P2^6;

//---声明全局函数---//

void ds1302write(uchar addr,uchar dat); uchar ds1302read(uchar addr); void ds1302Init();

void ds1302readtime();

//---加入全局变量---// extern uchar TIME[7];

#endif

#include\

uchar READ_ADDR[]={0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; //DS1302的读取地址,与下面的数组时间对应

uchar WRITE_ADDR[]={0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c}; //DS1302的写入地址,与下面的数组时间对应

uchar TIME[7] = {0x00,0x00,0x12,0x01,0x01,0x02,0x14}; //---TIME[7]数组存储分别是 秒 分 时 日 月 星期 年---//

/*********函数功能:向ds1302写数据*********/ void ds1302write(uchar addr,uchar dat) { uchar n; CE=0; SCLK=0; //先将SCLK置低电平 _nop_(); CE=1; //然后将CE置高电平 _nop_(); for(n=0;n<8;n++)//开始传送8位地址命令 { IO=addr&0x01;//从低位开始传送 addr>>=1; SCLK=1; //上升沿读取数据 _nop_(); SCLK=0; //下降沿放置数据

_nop_(); } for(n=0;n<8;n++)//写入8位数据 { IO=dat&0x01; dat>>=1; SCLK=1; _nop_(); SCLK=0; _nop_(); } CE=0; //数据传送结束 _nop_(); }

/*********函数功能:从ds1302读数据*********/ uchar ds1302read(uchar addr) { uchar n,dat,dat1; CE=0; SCLK=0; //先将SCLK置低电平 _nop_(); CE=1; //然后将CE置高电平 _nop_(); for(n=0;n<8;n++)//开始传送八位地址命令 { IO=addr&0x01; addr>>=1; SCLK=1; _nop_(); SCLK=0; _nop_(); } for(n=0;n<8;n++)//读取8位数据 { dat1=IO; dat=(dat>>1)|(dat1<<7); SCLK=1; _nop_(); SCLK=0; _nop_(); } CE=0; _nop_(); //以下为DS1302复位的稳定时间,必须的

SCLK=1; _nop_(); IO=0; _nop_(); IO=1; _nop_(); return dat; }

/*********函数功能:初始化DS1302*********/ void ds1302Init() { uchar n; ds1302write(0x8e,0x00); //关闭写保护 for(n=0;n<7;n++) { ds1302write(WRITE_ADDR[n],TIME[n]); } ds1302write(0x8e,0x80); //打开写保护 }

/*********函数功能:读取时钟信息*********/ void ds1302readtime() { uchar n; for(n=0;n<7;n++) { TIME[n]=ds1302read(READ_ADDR[n]);//将读取到的时间存入TIME[7]数组里 } }

以下为仿真图片,K4键没有设置功能


智能电子钟(LCD显示)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中考名著阅读《海底两万里》试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: