📄 410.c
字号:
#include <c8051f410.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_PORT P2
#define Left 2
#define Right 1
////////////////////12864
sbit LCD_Busy=P2^7;
sbit LCD_EN = P1^7;
sbit LCD_RW = P1^6;
sbit LCD_RS = P1^5;
sbit LCD_CS1= P1^4;
sbit LCD_CS2= P1^3;
sbit LCD_RST= P1^0;
///////////////////dis1302
uchar Page_Num,Clm_Num,tempdata,page,clum,pagestart,clmstart,clmsum,pageend,i,j,k,dataout,digih2,digih,digil2,digil,digitalin,clockrecog;
uchar year,month,day,hour,minute,second,rinh,swd,symbolin,symbolout,con,ab,keysetsymbol,keyud,keylr,keyset,keysetin,dir,enterkeynumber=0,keyclr,x,y;
uint rin,rout;uchar count,dafig=0;
uchar serial,accidentrecog=0;
uchar dt[7];
uchar datacenter[3][9];
code uchar fl[512]={0x08,0x08,0xE8,0xFF,0x48,0x80,0x08,0xC8,0x49,0x4E,0x48,0xC8,0x08,0x08,0x08,0x00,
0x00,0xE0,0x00,0x00,0xFF,0x20,0xC0,0x00,0xFE,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,
0x00,0x00,0xFC,0x04,0x04,0x04,0x04,0x05,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,//page=b8 lift
0x04,0x03,0x00,0xFF,0x00,0x40,0x30,0x0F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,
0x01,0x80,0x60,0x18,0x07,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x00,0xFF,0x00,0x00,
0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,//gage=b9 lift
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,//gage=ba lift
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,
0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//gage=bb lift
0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bc lift
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bd lift
0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,
0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=be lift
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bf lift
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
code uchar fr[512]={0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00, //page=b8 right
0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,
0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00, //gage=b9 right
0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,
0x00,0x01,0x20,0x70,0x28,0x24,0x23,0x31,0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00,
0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00,
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=ba right
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bb right
0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,
0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,
0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bc right
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bd right
0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,//gage=be right
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//gage=bf right
0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,
0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
code uchar digital[17][14]={{0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x03,0x04,0x08,0x08,0x04,0x03,0x00},/*"0",0*/
{0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00},/*"1",1*/
{0x00,0x18,0x04,0x04,0xC4,0x38,0x00,0x00,0x0C,0x0A,0x09,0x08,0x0C,0x00},/*"2",2*/
{0x00,0x18,0x04,0x44,0x44,0xB8,0x00,0x00,0x06,0x08,0x08,0x08,0x07,0x00},/*"3",3*/
{0x80,0x40,0x30,0x08,0xFC,0x00,0x00,0x01,0x01,0x01,0x09,0x0F,0x09,0x01},/*"4",4*/
{0x00,0x7C,0x24,0x24,0x64,0xC4,0x00,0x00,0x06,0x08,0x08,0x0C,0x07,0x00},/*"5",5*/
{0xF0,0x88,0x44,0x44,0x44,0x8C,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"6",6*/
{0x00,0x1C,0x04,0xC4,0x34,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00},/*"7",7*/
{0x38,0xE4,0x44,0x44,0xC4,0x38,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"8",8*/
{0x78,0x84,0x84,0x84,0x4C,0xF0,0x00,0x0C,0x08,0x08,0x0C,0x06,0x01,0x00},/*"9",0*/
{0x20,0xE0,0x40,0x20,0x20,0xC0,0x00,0x20,0x3F,0x28,0x08,0x0C,0x07,0x00},/*"p",2*/
{0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x00,0x06,0x09,0x08,0x08,0x0F,0x08},/*"a",0*/
{0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},//:
{0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",0*/
{0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x00,0x00,0x00,0x07,0x00,0x00,0x00},/*"+",1*/
{0x00,0x38,0x44,0xFE,0x84,0x18,0x00,0x00,0x06,0x08,0x3F,0x08,0x07,0x00},/*"$",0*/
{0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00}};/*"=",0*/
code uchar ro[12][28]={{0x20,0x20,0xE0,0x40,0x20,0x60,0x00,0x00,0x80,0x40,0x20,0x40,0x80,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00},
{0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x03,0x04,0x08,0x04,0x03,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},//r0:ablift
{0x20,0x20,0xE0,0x40,0x20,0x60,0x00,0x00,0x20,0x20,0xEC,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00},//ri:abright
{0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},
{0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x04,0xFC,0x40,0x20,0x20,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00},//a+b:cdlift
{0x00,0x06,0x09,0x08,0x08,0x0F,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x0F,0x08,0x08,0x08,0x07,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},
{0x00,0x80,0xC0,0x40,0x40,0xC0,0x00,0x00,0x00,0x80,0x40,0x80,0x00,0x00,0x40,0xC0,0x80,0x40,0x40,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00},
{0x00,0x0F,0x18,0x10,0x10,0x08,0x00,0x00,0x07,0x08,0x10,0x08,0x07,0x00,0x10,0x1F,0x10,0x00,0x10,0x1F,0x10,0x00,0x00,0x18,0x18,0x00,0x00,0x00},//con:cdright
{0x20,0x20,0xE0,0x40,0x20,0x60,0x00,0x20,0xE0,0x00,0x00,0x20,0xE0,0x00,0x20,0xE0,0x40,0x20,0x20,0xE0,0x00},//run
{0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x0F,0x08,0x08,0x08,0x0F,0x08,0x08,0x0F,0x08,0x00,0x08,0x0F,0x08},
{0x00,0x80,0x40,0x20,0x40,0x80,0x00,0x40,0x40,0xF0,0x48,0x48,0x18,0x00,0x40,0x40,0xF0,0x48,0x48,0x18,0x00},//off
{0x00,0x03,0x04,0x08,0x04,0x03,0x00,0x00,0x10,0x1F,0x10,0x10,0x00,0x00,0x00,0x10,0x1F,0x10,0x10,0x00,0x00}};
code uchar numberbuffe[4][8]={{0x40,0x47,0x4e,0x55,0x63,0x6a,0x71,0x78},
{0x47,0x4e,0x5c,0x63,0x71,0x78},
{0x55,0x5c,0x63,0x6a,0x71},
{0x55,0x5c,0x63,0x6a,0x71}};
void Delay_us(unsigned int DelayTime)
{
while(DelayTime) DelayTime--;
}
void Delay_x10ms(unsigned char DelayTime) //***************10ms延时**********//
{
unsigned char iq,jq,kq;
for(iq=0;iq<DelayTime;iq++)
for(jq=0;jq<50;jq++)
for(kq=0;kq<120;kq++) {;}
}
/*----------------------------------------------------------------------------
下面这个函数用于液晶模块的忙信号检测。
----------------------------------------------------------------------------*/
void LCD_Check_Busy(void)
{
while(1)
{
LCD_EN = 0;
Delay_us(10);
LCD_RS = 0;
Delay_us(10);
LCD_RW = 1;
Delay_us(10);
LCD_PORT = 0xff;
Delay_us(10);
LCD_EN = 1;
Delay_us(10);
if(!LCD_Busy) break;
}
LCD_EN = 0;
}
/*----------------------------------------------------------------------------
下面这个函数用于向液晶模块写入控制指令代码。
函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。
CS_Num ------ 左右半屏的选数值
----------------------------------------------------------------------------*/
void LCD_WriteCommand(uchar Command, uchar CS_Num)
{
if(CS_Num==1) /*选择左半屏*/
{
LCD_CS1 = 0;
Delay_us(10);
LCD_CS2 = 1;
}
else if(CS_Num==2) /*选择右半屏*/
{
LCD_CS1 = 1;
Delay_us(10);
LCD_CS2 = 0;
}
LCD_Check_Busy();
Delay_us(10);
LCD_EN = 0; /* 使能信号为L */
Delay_us(10);
LCD_RS = 0; /* 置寄存器选择为L */
Delay_us(10);
LCD_RW = 0; /* 置读/写选择为L */
Delay_us(10);
LCD_PORT = Command; /* 将控制指令代码输出到的数据端口 */
Delay_us(10);
LCD_EN = 1; /* 使能信号为H */
Delay_us(10); /* 延时2us */
LCD_EN = 0; /* 使能信号为L */
Delay_us(10);
LCD_CS1 = 1; /* 置片选1为L */
Delay_us(10);
LCD_CS2 = 1; /* 置片选2为L */
Delay_us(10);
}
/*----------------------------------------------------------------------------
下面这个函数用于向液晶模块写入显示数据。
函数入口参数:Data------ 向液晶模块写入的显示数据 。
CS_Num-------左右半屏的选数值
----------------------------------------------------------------------------*/
void LCD_WriteData(uchar Data,uchar CS_Num)
{
if(CS_Num==1) /*选择左半屏*/
{
LCD_CS1 = 0;
Delay_us(10);
LCD_CS2 = 1;
}
else if(CS_Num==2) /*选择右半屏*/
{
LCD_CS1 = 1;
Delay_us(10);
LCD_CS2 = 0;
}
LCD_Check_Busy();
Delay_us(10);
LCD_EN = 0;
Delay_us(10);
LCD_RS = 1; /* 置寄存器选择为H */
Delay_us(10);
LCD_RW = 0; /* 置读/写选择为L */
Delay_us(10);
LCD_PORT = Data; /* 将显示数据输出到的数据端口 */
Delay_us(10);
LCD_EN = 1; /* 使能信号为H */
Delay_us(10); /* 延时2us */
LCD_EN = 0; /* 使能信号为L */
Delay_us(10);
LCD_CS1= 1; /* 置片选1为L */
Delay_us(10);
LCD_CS2= 1; /* 置片选2为L */
}
/*---------------------------------------------------------------------------
下面这个函数用于液晶模块的清屏。
---------------------------------------------------------------------------*/
void LCD_keyclr(uchar Side_Num)
{
uchar i,k,COM;
for(i=0;i<8;i++)
{
COM=0xB8+i;
LCD_WriteCommand(COM,Side_Num);
COM=0x40;
LCD_WriteCommand(COM,Side_Num);
for(k=0;k<64;k++)
{
LCD_WriteData(0x00,Side_Num);
}
}
Delay_us(2);
}
/*---------------------------------------------------------------------------
下面这个函数用于向液晶模块初始化。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -