内容发布更新时间 : 2025/3/29 10:25:26星期一 下面是文章的全部内容请认真阅读。
万年历时钟芯片代码
/******************************************************************** * 文件名 : 时钟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);