📄 12887.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 + -