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

📄 1032.txt

📁 一个数字显示时钟的程序
💻 TXT
字号:
#include "regx52.h"
#include "lcd1602.h"

#define DS_RST P2_5
#define DS_IO P2_7
#define DS_CLK P2_6

unsigned char Time[7]={0x00,0x00,0x00,0x01,0x01,0x01,0x08};
unsigned char Temp_Buffer[2]={1,2};

void DS_Open(void)
{
	DS_CLK=0;
	DS_RST=1;
}

void DS_Close(void)
{
	DS_RST=0;
	DS_CLK=0;
}

void DS_Write_Byte(unsigned char dat)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		if(dat&0x01)
		{
			DS_IO=1;
		}
		else
		{
			DS_IO=0;
		}
		DS_CLK=1;
		_nop_();
		_nop_();
		DS_CLK=0;
		dat>>=1;
	}
	DS_IO=1;
}

unsigned char DS_Read_Byte(void)
{
	unsigned char i,r_dat;
	for(i=0;i<8;i++)
	{
		r_dat>>=1;
		if(DS_IO)
		{
			r_dat+=0x80;
		}
		DS_CLK=1;
		_nop_();
		_nop_();
		DS_CLK=0;
	}
	return r_dat;
}

void DS_Get_Time(unsigned char *p)
{
	unsigned char i;
	DS_Open();
	DS_Write_Byte(0xbf);
	DS_Close();
	DS_Open();
	DS_Write_Byte(0xbf);
	for(i=0;i<7;i++)
	{
		p[i]=DS_Read_Byte();
	}
	DS_Close();
}

void DS_Set_Time(unsigned char *p)
{
	unsigned char i;
	p[0]&=0x7f;
	DS_Open();
	DS_Write_Byte(0xbe);
	for(i=0;i<7;i++)
	{
		DS_Write_Byte(p[i]);
	}
	DS_Write_Byte(0x00);
	DS_Close();
}

void DS_Initial(void)
{
	unsigned char dat;
	DS_RST=0;
	DS_Open();
	DS_Write_Byte(0x8e);
	DS_Write_Byte(0x00);
	DS_Close();
	
	DS_Open();
	DS_Write_Byte(0x81);
	dat=DS_Read_Byte();
	DS_Close();

	dat&=0x7f;

	DS_Open();
	DS_Write_Byte(0x80);
	DS_Write_Byte(dat);
	DS_Close();

	DS_Open();
	DS_Write_Byte(0x90);
	DS_Write_Byte(0xa5);
	DS_Close();

	DS_Open();
	DS_Write_Byte(0x8e);
	DS_Write_Byte(0x80);
	DS_Close();
}

void Change_To_Char(unsigned char dat,unsigned char *str)
{
	unsigned char a[2];
	unsigned char i;
	a[0]=(dat/10)%10;
	a[1]=dat%10;	
	for(i=0;i<2;i++)
	{
		a[i]=a[i]+'0';
	}
	*str=a[0];
	str++;
	*str=a[0];
	str++;
	*str='\0';
}

void Delay(void)
{
	unsigned char i,j;
	for(i=0;i<224;i++)
		for(j=0;j<224;j++)
			;
}

void main(void)
{	
	unsigned char ii;	
	Lcd_Initial();
	DS_Initial();
	DS_Set_Time(&Time[0]);
	while(1)
	{
		DS_Get_Time(&Time[0]);
		ii=Time[0]&0x0f;
		Time[0]>>=4;
		Time[0]&=0x07;
		Time[0]=Time[0]*10+ii;	
		Time[0]=34;
		Change_To_Char(Time[0],&Temp_Buffer[0]);
		Gotoxy(3,0);
		Print(&Temp_Buffer[0]);
		Delay();
	}
}

⌨️ 快捷键说明

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