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

📄 12887.c

📁 时钟芯片
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <math.h>

#define _8279_COM XBYTE[0x7001]
#define _8279_DAT XBYTE[0x7000]

#define dat0 XBYTE[0x500b]
#define dat1 XBYTE[0x500c]
#define dat2 XBYTE[0x500d]
#define dat3 XBYTE[0x500b]
#define dat4 XBYTE[0x500c]
#define dat5 XBYTE[0x500d]
#define dat6 XBYTE[0x500c]
#define dat7 XBYTE[0x500d]
#define dat8 XBYTE[0x500b]
#define dat9 XBYTE[0x500c]
#define datA XBYTE[0x500d]
#define datB XBYTE[0x500b]
#define datC XBYTE[0x500c]
#define datD XBYTE[0x500d]

#define bmp_height  0x46
#define bmp_width   0x47
#define gdram_cur_y 0x48
#define gdram_cur_x 0x49

sbit lcd_cs   = P1^0 ;
sbit lcd_sid  = P1^3 ;               
sbit lcd_sclk = P1^6 ;
sbit alarm	  = P1^4 ;

void lcd_initial();                  
void trans_bit(unsigned char);
void lcd_w_cmd(unsigned char);       
void lcd_w_data(unsigned char);     
void ddram_clear();                              
void lcd_display(char* ,unsigned char);

void _12887_Initialize();

void _12864_Initialize();
void StateDis(char s);

char minL,min,hor;
/******8279******************************************************/

_8279_KeyCode[20]={0xc1,0xc8,0xc9,0xd0,0xd8,0xe0,0xc2,0xca,0xd1,0xd9,0xda,0xc3,0xcb,0xd2,0xd3,0xdb,0xe3,0xe2,0xe1};
/////////////////////////////////////////////////////////////////
char _8279_KeyNo()
{
	unsigned char KeyNoTmp;
	char Position=0;
	KeyNoTmp=_8279_DAT;
	while(Position<=15)
	{
		if (KeyNoTmp!=_8279_KeyCode[Position])
		{
			Position++;
		}
		else
 	    {	
			return Position;
			break;
		}
	}
}

/////////////////////////////////////////////////////////////////
void _8279_Initialize()
{
	_8279_COM=0x00;		//右边输入8位字符,编码双锁定
	_8279_COM=0xdf;
	while(0x80&_8279_COM);
}

/////////////////////////////////////////////////////////////////
bit _8279_KeyIn()
{
	return (_8279_COM&0x07);
}

/////////////////////////////////////////////////////////////////
/******12864*****************************************************/
void delay_ms(int count)
{
	for(;count>=0;count--);
}
/////////////////////////////////////////////////////////////////
void trans_bit(unsigned char cm_dat)
{
	unsigned char i,j;    //D7~D4 0 0 0 0 ,D3~D0 0 0 0 0
	for(i=0;i<10;i++)
	{
		if(i==4||i==9)
		{
			for(j=0;j<4;j++)
			{
				lcd_sclk=0;
				lcd_sid=0;
				lcd_sclk=1;
				_nop_();_nop_();
			}
		}
		else
		{
			lcd_sclk=0;
			lcd_sid=(bit)(cm_dat&0x80);   //送数据一位一位送
			lcd_sclk=1;
			_nop_();_nop_();
			cm_dat=cm_dat<<1;    //左移一位一位送
			delay_ms(1);
		}
	}
}

/////////////////////////////////////////////////////////////////
void lcd_w_cmd(unsigned char cmd)       //写命令,前5位数据SCLK=0101010101,后3位数据SCLK=010101
{                                       
	unsigned char i,j;
	lcd_cs=1;                            //片选CS置1
	for (i=0;i<5;i++ )                   //写前5位数据,SID=1 (1 1 1 1 1)
	{
		lcd_sclk=0;
		lcd_sid=1;
		lcd_sclk=1;
		_nop_();_nop_();
	}
	for(j=0;j<3;j++)                     //写后3位数据,SID=0 (RW RS 0)
	{
		lcd_sclk=0;
		lcd_sid=0;
		lcd_sclk=1;
		_nop_();_nop_();
	}
	trans_bit(cmd);
	delay_ms(1);
	lcd_cs=0;
}

/////////////////////////////////////////////////////////////////
void lcd_w_data(unsigned char dat)    
{                                    
	unsigned char i,j;
	lcd_cs=1;                //片选CS=1
	for(i=0;i<5;i++)        //SCLK=0 1 0 1 0 1 0 1 0 1 
	{
		lcd_sclk=0;          //SID=1 1 1 1 1
		lcd_sid=1;
		lcd_sclk=1;
		_nop_();_nop_();
	}
	for(j=0;j<3;j++)        //SCLK=010101  
	{                        //SID=1
		if(j==1)
		{
			lcd_sclk=0;
			lcd_sid=1 ;
			lcd_sclk=1;
			_nop_();_nop_();
		}
		else
		{
			lcd_sclk=0;          //(RW RS 0)
			lcd_sid=0;
			lcd_sclk=1;
			_nop_();_nop_();
		}
	}
	trans_bit(dat);
	delay_ms(1);
	lcd_cs=0;  //片选CS=0
}

/////////////////////////////////////////////////////////////////
void lcd_display(char *disp,unsigned char ddram )
{ 
	int i;
	ddram=ddram|0x80;
	lcd_w_cmd(ddram);
	for(i=0;disp[i]!='\0';i++)
	{
		lcd_w_data(disp[i]);
		delay_ms(1);
	}
}

/////////////////////////////////////////////////////////////////
void lcd_initial()
{
	delay_ms(50);
	lcd_w_cmd(0x30);//00110000);                  //30
	delay_ms(1);
	lcd_w_cmd(0x30);//00110000);  //功能设定      //30
	delay_ms(1);
	lcd_w_cmd(0x0e);//00001110);  //Display on    //0e
	delay_ms(1);
	lcd_w_cmd(0x01);//00000001);  //清楚显示      //01
	delay_ms(20);
	lcd_w_cmd(0x06);//00000110);  //光标右移      //06

}

/////////////////////////////////////////////////////////////////
void ddram_clear()
{
	delay_ms(1);
	lcd_w_cmd(0x01);
	delay_ms(10);
}

/////////////////////////////////////////////////////////////////
void _12864_Initialize()
{
	lcd_initial();
	ddram_clear();
}/////////////////////////////////////////////////////////////////////
void _12887_Initialize()
{  int clear;
	datB = 0xf0;
	dat0 = 0x00;
	dat1 = 0xff;
	dat2 = 0x00;
	dat3 = 0xff;
	dat4 = 0x00;
	dat5 = 0xff;
	dat6 = 0x05;
	dat7 = 0x01;
	dat8 = 0x06;
	dat9 = 0x07;

	datA = 0x26;
	clear = datC; 
  	clear = datD; 
	datB = 0x48;

}
///////////////////////////////////////////////////////////////
void StateDis(char s)
{
	char str[17],i;
	for (i=0;i<16;i++)
		str[i]=0x20;
	switch (s)
	{
		case 1:	
			{
				str[0]=0xcf;str[1]=0xb5;str[2]=0xcd;str[3]=0xb3;
				str[4]=0xc9;str[5]=0xe8;str[6]=0xd6;str[7]=0xc3;

				str[11]=hor/10+0x30;str[12]=hor%10+0x30;
				str[13]=0x3a;
				str[14]=min/10+0x30;str[15]=min%10+0x30;

				str[16]=0x0;
				lcd_display(str,0x80);
				break;
			}
		case 2:
			{	
				str[0]=0xca;str[1]=0xb1;str[2]=0xbc;str[3]=0xe4;
				str[4]=0xcf;str[5]=0xd4;str[6]=0xca;str[7]=0xbe;
				str[8]=0xa3;str[9]=0xba;

				str[11]=hor/10+0x30;str[12]=hor%10+0x30;
				str[13]=0x3a;
				str[14]=min/10+0x30;str[15]=min%10+0x30;

				str[16]=0x0;
				lcd_display(str,0x80);
				break;
			}
		case 3:
			{
				str[0]=0xd2;str[1]=0xd1;str[2]=0xbc;str[3]=0xc7;
				str[4]=0xc2;str[5]=0xbc;str[6]=0xca;str[7]=0xfd;
				str[8]=0xbe;str[9]=0xdd;

				str[11]=hor/10+0x30;str[12]=hor%10+0x30;
				str[13]=0x3a;
				str[14]=min/10+0x30;str[15]=min%10+0x30;

				str[16]=0x0;
				lcd_display(str,0x80);
				break;
			}
		default:	break;
	}
}

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

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

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




⌨️ 快捷键说明

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