⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1306

📁 采用C语言编程
💻
字号:
#define uchar unsigned char
#define uint   unsigned int
#include "def.h"
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
#define PUBLIC_GLOBALS
#include <public.h>

sbit SCL2=P1^3;		//SCL2定义为P1口的第3位脚,连接DS1302SCL和ADC0831SCL脚
sbit SDA2=P1^4;		//SDA2定义为P1口的第4位脚,连接DS1302SCL和ADC0831SDA脚
//sbit CS2=P1^6;		//CS2定义为P1口的第4位脚,连接ADC0831CS脚
sbit RST = P1^5;   // DS1302片选脚


void display(unsigned char *lp,unsigned char lc);//数字的显示函数;lp为指向数组的地址,lc为显示的个数
													//这个函数在第二节用过不用再说了吧!
void Write_Ds1302_byte(unsigned char temp); 
void Write_Ds1302( unsigned char address,unsigned char dat );
unsigned char Read_Ds1302 ( unsigned char address );

void Read_RTC(void);//read RTC 
void Set_RTC(void);//set RTC 
/*****************************************************************************/


uchar flag_get,count,num,minute,second,temp;

sbit RS = P1^0;//Pin4
sbit RW = P1^1; //Pin5
sbit E  = P1^2;//Pin6

#define Data  P2    //数据端口

uchar temp1[] = {0x00,0x00,0x43,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
char data TimeNum[]="                ";
char data Test1[]="                  ";
/******************************************************************/
/*                    函数声明                                    */
/******************************************************************/

/***************************************************************/
void DelayUs(unsigned char us)//精确延时1us
{
 unsigned char uscnt;
 uscnt=us>>1;/* Crystal frequency in 12MHz*/
 while(--uscnt);
}
/******************************************************************/
void DelayMs(unsigned char ms)//这个延时和上面的组合起来的延时即为ms(ms)
{
 while(--ms)
   {
     DelayUs(250);
     DelayUs(250);
	 DelayUs(250);
	 DelayUs(250);
   }
}

void delay5ms(void)		//精确延时(5ms-5us)的时间,对与MS级的延时已经很精确了
{
uchar i,j;
for(i=10;i>0;i--)
for(j=248;j>0;j--);
}

void delay15ms(void)		//精确延时(5ms-5us)的时间,对与MS级的延时已经很精确了
{
uchar i,j;
for(i=30;i>0;i--)
for(j=248;j>0;j--);
}

void WriteCommand(unsigned char c)
{
 //DelayMs(5);//short delay before operation 延时4.179ms
 delay5ms();//精确延时(5ms-5us)的时间
 E=0;
 RS=0;
 RW=0;
 _nop_();
 E=1;
 Data=c;
 E=0;
}
/****************************************************************/
void WriteData(unsigned char c)
{
// DelayMs(5);   //short delay before operation	延时4.179ms
 delay5ms();   //精确延时(5ms-5us)的时间
 E=0;
 RS=1;
 RW=0;
 _nop_();     //1us
 E=1;
 Data=c;
 E=0;
 RS=0;
}
/*********************************************************************/
void ShowChar(unsigned char pos,unsigned char c)
{
 unsigned char p;
 if (pos>=0x10)
    p=pos+0xb0; //是第二行则命令代码高4位为0xc
 else 
    p=pos+0x80; //是第二行则命令代码高4位为0x8
 WriteCommand (p);//write command
 WriteData (c);   //write data

}
/*************************************************************************/
void ShowString (unsigned char line,char *ptr)
{
 unsigned char l,i;
 l=line<<4;
 for (i=0;i<16;i++)
  ShowChar (l++,*(ptr+i));//循环显示16个字符
}
/*********************************************************************/
void InitLcd()
{
 //DelayMs(15);
 delay15ms();
 WriteCommand(0x38); //display mode
 WriteCommand(0x38); //display mode
 WriteCommand(0x38); //display mode
 WriteCommand(0x06); //显示光标移动位置
 WriteCommand(0x0c); //显示开及光标设置
 WriteCommand(0x01); //显示清屏

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -