万年历时钟芯片代码 下载本文

内容发布更新时间 : 2024/5/3 22:45:18星期一 下面是文章的全部内容请认真阅读。

万年历时钟芯片代码

/******************************************************************** * 文件名 : 时钟DS1302LCD.c

* 描述 : 该程序实现了用单片机来控制时钟芯片DS1302进行时钟的显示。 时钟会在1602上显示.

* 创建人 : 东流,2012年2月7日 * 版本号 : 1.0

* 杜邦线接法:P3.5接J18的1端;J3.6接J18的2端;J3.7接J18的3端。 1602接到J17的排座上。

***********************************************************************/

#include<reg52.h> #include<intrins.h>

#define uchar unsigned char #define uint unsigned int

sbit ACC0 = ACC^0; sbit ACC7 = ACC^7;

sbit T_CLK = P3^5; /*实时时钟时钟线引脚 */ sbit T_IO = P3^6; /*实时时钟数据线引脚 */ sbit T_RST = P3^7; /*实时时钟复位线引脚 */

//这三个引脚参考资料 sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit RS=P2^5; //1602数据/命令选择引脚

/******************************************************************** * 名称 : delay()

* 功能 : 延时,延时时间大概为5US。 * 输入 : 无 * 输出 : 无

***********************************************************************/

void delay() {

_nop_();

_nop_(); _nop_(); _nop_(); _nop_(); }

void Delay(uint i) {

uint x,j;

for(j=0;j<i;j++)

for(x=0;x<=148;x++); }

/******************************************************************** * 名称 : bit Busy(void)

* 功能 : 这个是一个读状态函数,读出函数是否处在忙状态 * 输入 : 输入的命令值 * 输出 : 无

***********************************************************************/

bit Busy(void) {

bit busy_flag = 0; RS = 0; RW = 1; E = 1; delay();

busy_flag = (bit)(P0 & 0x80); E = 0;

return busy_flag; }

/******************************************************************** * 名称 : wcmd(uchar del) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无

***********************************************************************/

void wcmd(uchar del) {

while(Busy()); RS = 0; RW = 0; E = 0; delay();

P0 = del; delay(); E = 1; delay(); E = 0; }

/******************************************************************** * 名称 : wdata(uchar del) * 功能 : 1602写数据函数

* 输入 : 需要写入1602的数据 * 输出 : 无

***********************************************************************/

void wdata(uchar del) {

while(Busy()); RS = 1; RW = 0; E = 0; delay(); P0 = del; delay(); E = 1; delay(); E = 0; }

/******************************************************************** * 名称 : L1602_init()

* 功能 : 1602初始化,请参考1602的资料 * 输入 : 无 * 输出 : 无

***********************************************************************/

void L1602_init(void) {

wcmd(0x38); Delay(5); wcmd(0x38); Delay(5); wcmd(0x38); Delay(5);