📄 6963.h
字号:
#include <pic168xa.h>
bank1 unsigned int wdv[9]={0,0,0,0,0,0,0,0,0} ;
bank1 unsigned int wdi[9]={0,0,0,0,0,0,0,0,0} ;
bank1 unsigned int jjk;
bank1 unsigned int Dis_set[5];
bank1 unsigned int stvdata,stidata;
bank2 unsigned char mov=0;
bank2 unsigned char ds_rtimer[6];
bank2 unsigned char test1_7[8]={ 0,0,0,0,0,0,0,0};
bank2 unsigned char buff[4];
bank3 unsigned char cod=1;
bank3 unsigned char clockmouse=0;
bank3 unsigned char clk[6];
bank3 unsigned char xdisreal[]={0,15,0,15,0,15,0,15};
bank3 unsigned char ydisreal[]={2,2,3,3,4,4,5,5,};
bit Shan_Bit;
bit Min_Bit; //分钟到
bit clocktab=0;
bit bclock=0;
//bank1 unsigned char tbuf;
//bank1 disbuff[8]={0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x33} ; //1-9,,,S
unsigned char cccmod[9]={0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11};
////////////////////////////////////////
void Delay_us(int i);
void Delay_ms(int i);
void Delay_Ims(int i);
void checkbusy(void);
void Write_Cmd(unsigned char CMDMODE);
void Write_Data(unsigned char DATAMODE);
void Com_One(uchar D1,uchar C1);
void Com_Two(uchar D1,uchar D2,uchar C1);
void Com_None(uchar C1);
void ClearScreen(void);
void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode);
void Lcd_init();
void Write_asc(unsigned char x,unsigned char y,unsigned char code_asc);
void diplayhzset();
void displayset(unsigned int vdata,unsigned int idata ,unsigned int ttimer ,unsigned char rtimer ,unsigned int edata,unsigned char mouse );
void zjdisplay();
void zijianreal();
void dis_real_tt(unsigned char i,unsigned char k);
void dis_dis();
void dis_real(unsigned int tvdata,unsigned int tidata ,unsigned char chan );
void fun(unsigned int temp) ;
//void dis_real_rr(unsigned char h1,unsigned char h2,unsigned char m1,unsigned char m2,unsigned char xx);
//void dis_real_rr();
void dis_real_rr(unsigned char xx);
void mouse(unsigned char mov);
//void dis_real_rr(unsigned char hh1,unsigned char hh2,unsigned char mm1,unsigned char mm2,unsigned char xx);//显示时实时间
void disclock (unsigned char clockmm );
void dis_comd(unsigned char i);
void dis_real_rrs();
void dis_endtimer();
void dis_tongxin();
////////////////////////////////////////
//#define LineChar 30
unsigned char const HZTable[][32]={
//0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//设 置 电 压 流 充 时 间 记 录 分 钟 正 在 总 过
//16 17 18 19 20 21 22 23 24 25 26
//欠 满 自 检 状 态 查 到 通 信
{0x01,0xF0,0x21,0x10,0x11,0x10,0x11,0x10, //0 设
0x01,0x10,0x02,0x0E,0xF4,0x00,0x13,0xF8,
0x11,0x08,0x11,0x10,0x10,0x90,0x10,0xA0,
0x14,0x40,0x18,0xB0,0x13,0x0E,0x0C,0x04,},
{0x3F,0xF8,0x24,0x48,0x3F,0xF8,0x01,0x00, // 1置
0x7F,0xFC,0x01,0x00,0x1F,0xF0,0x10,0x10,
0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x1F,0xF0,0x10,0x14,0xFF,0xFE,0x00,0x00,},
{0x02,0x00,0x02,0x00,0x02,0x10,0x7F,0xF8, // 2电
0x42,0x10,0x42,0x10,0x7F,0xF0,0x42,0x10,
0x42,0x10,0x7F,0xF0,0x42,0x10,0x02,0x00,
0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00,},
{0x00,0x08,0x3F,0xFC,0x20,0x80,0x20,0x80, // 3压
0x20,0x80,0x20,0x80,0x20,0x88,0x2F,0xFC,
0x20,0x80,0x20,0xA0,0x20,0x98,0x20,0x88,
0x40,0x80,0x40,0x84,0x9F,0xFE,0x00,0x00,},
{0x00,0x80,0x40,0x48,0x37,0xFC,0x10,0x40, // 4流
0x80,0x90,0x61,0x08,0x27,0xFC,0x08,0x04,
0x11,0x50,0x21,0x50,0xE1,0x50,0x21,0x50,
0x21,0x52,0x21,0x52,0x22,0x4E,0x24,0x40,},
{0x02,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE, // 5充
0x02,0x00,0x04,0x40,0x08,0x20,0x1F,0xF0,
0x04,0x50,0x04,0x40,0x04,0x40,0x04,0x40,
0x08,0x42,0x08,0x42,0x10,0x3E,0x60,0x00,},
{0x00,0x08,0x04,0x08,0x7E,0x08,0x44,0x08, // 6时
0x47,0xFE,0x44,0x08,0x44,0x08,0x7C,0x88,
0x44,0x48,0x44,0x48,0x44,0x08,0x44,0x08,
0x7C,0x08,0x44,0x48,0x00,0x28,0x00,0x10,},
{0x20,0x04,0x1B,0xFE,0x08,0x04,0x40,0x24, // 7间
0x4F,0xF4,0x48,0x24,0x48,0x24,0x48,0x24,
0x4F,0xE4,0x48,0x24,0x48,0x24,0x48,0x24,
0x4F,0xE4,0x48,0x24,0x40,0x14,0x40,0x08,},
{0x00,0x00,0x20,0x08,0x17,0xFC,0x10,0x08, // 8记
0x00,0x08,0x00,0x08,0xF0,0x08,0x13,0xF8,
0x12,0x08,0x12,0x00,0x12,0x00,0x12,0x02,
0x16,0x02,0x1A,0x02,0x11,0xFE,0x00,0x00,},
{0x00,0x10,0x3F,0xF8,0x00,0x10,0x00,0x10, // 9录
0x1F,0xF0,0x00,0x10,0x00,0x14,0xFF,0xFE,
0x01,0x08,0x11,0x10,0x09,0xA0,0x05,0x40,
0x09,0x20,0x11,0x1E,0x65,0x04,0x02,0x00,},
{0x00,0x80,0x04,0x80,0x04,0x40,0x08,0x40, // 10分
0x08,0x20,0x10,0x10,0x20,0x08,0x4F,0xEE,
0x84,0x24,0x04,0x20,0x04,0x20,0x04,0x20,
0x04,0x20,0x08,0x20,0x11,0x40,0x20,0x80,},
{0x10,0x20,0x10,0x20,0x10,0x20,0x1C,0x24, // 11钟
0x21,0xFE,0x21,0x24,0x7D,0x24,0x91,0x24,
0x11,0x24,0xFD,0xFC,0x11,0x24,0x10,0x20,
0x14,0x20,0x18,0x20,0x10,0x20,0x00,0x20,},
{0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00, // 12正
0x01,0x00,0x01,0x00,0x11,0x10,0x11,0xF8,
0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,
0x11,0x00,0x11,0x04,0xFF,0xFE,0x00,0x00,},
{0x02,0x00,0x02,0x00,0x02,0x04,0xFF,0xFE, // 13在
0x04,0x00,0x04,0x40,0x08,0x40,0x08,0x50,
0x13,0xF8,0x30,0x40,0x50,0x40,0x90,0x40,
0x10,0x40,0x10,0x44,0x17,0xFE,0x10,0x00,},
{0x10,0x10,0x08,0x20,0x04,0x40,0x00,0x10, // 14总
0x1F,0xF8,0x10,0x10,0x10,0x10,0x10,0x10,
0x1F,0xF0,0x10,0x10,0x02,0x00,0x51,0x84,
0x50,0x92,0x90,0x12,0x0F,0xF0,0x00,0x00,},
{0x00,0x10,0x40,0x10,0x20,0x10,0x17,0xFC, // 15过
0x00,0x10,0x00,0x10,0xF1,0x10,0x10,0x90,
0x10,0x90,0x10,0x10,0x10,0x10,0x10,0x50,
0x10,0x20,0x28,0x06,0x47,0xFC,0x00,0x00,},
{0x08,0x00,0x08,0x00,0x08,0x00,0x1F,0xFC, // 16欠
0x10,0x04,0x21,0x08,0x41,0x10,0x81,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,
0x08,0x20,0x10,0x10,0x20,0x0E,0xC0,0x04,},
{0x41,0x20,0x31,0x24,0x1F,0xFE,0x01,0x20, // 17满
0x80,0x08,0x6F,0xFC,0x21,0x20,0x01,0x24,
0x1F,0xFE,0x29,0x24,0xE9,0x24,0x2A,0xD4,
0x2C,0x0C,0x28,0x04,0x28,0x14,0x28,0x08,},
{0x01,0x00,0x02,0x00,0x04,0x10,0x1F,0xF8, // 18自
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,},
{0x10,0x40,0x10,0x40,0x10,0xA0,0x10,0xA0, // 19检
0xFD,0x10,0x12,0x0E,0x35,0xF4,0x30,0x00,
0x58,0x40,0x56,0x48,0x91,0x4C,0x11,0x48,
0x11,0x50,0x10,0x04,0x1F,0xFE,0x10,0x00,},
{0x08,0x40,0x08,0x50,0x08,0x48,0x48,0x40, // 20状
0x28,0x44,0x2F,0xFE,0x08,0x40,0x08,0x40,
0x18,0xA0,0x28,0xA0,0x49,0x10,0xC9,0x10,
0x09,0x08,0x0A,0x0E,0x0C,0x04,0x08,0x00,},
{0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00, // 21态
0x02,0x80,0x04,0x40,0x0A,0x30,0x31,0x0E,
0xC0,0x04,0x02,0x00,0x29,0x10,0x29,0x08,
0x28,0x24,0x48,0x24,0x07,0xE0,0x00,0x00,},
{0x01,0x00,0x01,0x04,0xFF,0xFE,0x05,0x40, // 22查
0x09,0x20,0x11,0x10,0x3F,0xFE,0xD0,0x14,
0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,
0x1F,0xF0,0x00,0x04,0xFF,0xFE,0x00,0x00,},
{0x01,0x04,0x7F,0x84,0x08,0x04,0x10,0x24, // 23到
0x22,0x24,0x41,0x24,0x7F,0xA4,0x08,0xA4,
0x0A,0x24,0x7F,0x24,0x08,0x24,0x08,0x24,
0x08,0x04,0x0F,0x84,0xF8,0x14,0x00,0x08,},
{0x03,0xF8,0x40,0x10,0x30,0xA0,0x10,0x48, // 24通
0x03,0xFC,0x02,0x48,0xF2,0x48,0x13,0xF8,
0x12,0x48,0x12,0x48,0x13,0xF8,0x12,0x48,
0x12,0x68,0x2A,0x50,0x44,0x06,0x03,0xFC,
},
{0x08,0x80,0x08,0x44,0x0F,0xFE,0x10,0x00, // 25信
0x10,0x08,0x37,0xFC,0x50,0x00,0x90,0x08,
0x17,0xFC,0x10,0x00,0x13,0xF8,0x12,0x08,
0x12,0x08,0x12,0x08,0x13,0xF8,0x12,0x08,},
};
const unsigned char Shuzi[][16]=
{
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//数字 0 : 8*16
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//数字 1 : 8*16
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,//数字 2 : 8*16
0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//数字 3 : 8*16
0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,//数字 4 : 8*16
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//数字 5 : 8*16
0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//数字 6 : 8*16
0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,//数字 7 : 8*16
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,//数字 8 : 8*16
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,//数字 9 : 8*16
};
//**************************************数字显示程序
void ShowShuzi(unsigned char lin,unsigned char column,unsigned char ch)
{
unsigned char i;
unsigned int StartAddr;
StartAddr=0x0800+column*30 +lin; //定位起始行
for(i=0;i<16;i++)
{
Com_Two( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //set address
Com_One( Shuzi[ ch ][i], 0xc0);
StartAddr=StartAddr + 30;
}
}
//**************************************************
void Delay_us(int i)
{
while(--i);
// asm("nop");
}
//**************************************************
//# pragma interrupt_level 1
void Delay_ms(int i)
{
unsigned int k,j;
for (j=0;j<i;j++)
{
for (k=0;k<120;k++);
}
}
//**************************************************
void Delay_Ims(int i)
{
unsigned int k,j;
for (j=0;j<i;j++)
{
for (k=0;k<120;k++);
}
}
//************************************
void checkbusy(void)
{
unsigned char data0;
unsigned int i;
i=0;
Lcd_CD=1;
Lcd_Ce=1;
Lcd_Ce=0;
Lcd_Rd=0;
Lcd_Wr=1;
TRISD=0XFF;
asm("nop");
asm("nop");
data0=PORTD;
Lcd_Rd=1;
Lcd_Ce=1;
while((data0&0x03)!=0x03)
{
i++;
if(i==500) {i=0;goto aa;}
}
aa:
TRISD=0X00;
asm("nop");
asm("nop");
}
//*****************************************************************************//
//*************************检查自动读入或者自动写入状态标志位******************//
//*****************************************************************************//
void Write_Cmd(unsigned char CMDMODE)//写命令
{
checkbusy();
Lcd_CD=1;//写指令通道
Lcd_Ce=0;
Lcd_Wr=0;
Lcd_Rd=1;
PORTD=CMDMODE;
Lcd_Ce=1;
Lcd_Wr=1;
}
//************************************
void Write_Data(unsigned char DATAMODE)//写数据
{
checkbusy();
Lcd_CD=0;//写数据通道
Lcd_Ce=0;
Lcd_Wr=0;
Lcd_Rd=1;
PORTD=DATAMODE;
Lcd_Ce=1;
Lcd_Wr=1;
}
//**************************单参数函数
void Com_One(uchar D1,uchar C1)
{
Write_Data(D1);
Write_Cmd(C1);
}
//**************************双参数函数
void Com_Two(uchar D1,uchar D2,uchar C1)
{
Write_Data(D1);
Write_Data(D2);
Write_Cmd(C1);
}
//**************************无参数函数
void Com_None(uchar C1)
{
Write_Cmd(C1);
}
//*************************
void ClearScreen(void)
{
unsigned int i;
Com_Two(0x00,0x00,0x24);//图像地址指针设置
Com_None(0xb0);//自动些操作
for(i=0x00;i<0x2000;i++)
Write_Data(0x00); //写入 data=0;清除显示内存
Com_None(0xb2);// 自动写结束
}
/*-----------------------------------------------------------------------------------*/
//显示8*16字符
//lin:行(0-7), column: 列(0-15)
//ch:字符代码(标准ASCII码)
//*************************汉字显示程序
void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
{
unsigned char i;
unsigned int StartAddr;
StartAddr=0x0800+column*30 + lin;
for(i=0;i<16;i++)
{
Com_Two( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
Com_One( HZTable[hzcode][i*2], 0xc0);
Com_One( HZTable[hzcode][i*2+1], 0xc0); StartAddr=StartAddr + 30;
}
}
//************************************************************************
//**************************初始化液晶屏幕********************************
void Lcd_init()
{
Com_None(0x90);//显示关
Delay_ms(10);
Com_None(0xa0);//设置光标形状
Delay_us(1);
Com_Two(0x00,0x00,0x40);//设置文本区首地址
Com_Two(0x1E,0x00,0x41);//设置文本区域(宽度)
Com_Two(0x00,0x08,0x42);//设置图形首地址/////////////0x800
Com_Two(0x1e,0x00,0x43);//设置图形区域(宽度)
Delay_us(1);
Com_None(0x80); //CGRAM方式,OR模式
Delay_us(200);
Com_None(0x9f);//图形显示开,文本显示开,光标显示开,光标闪烁开
Delay_ms(100);
}
//*********************Lcd_ASC写入程序***********************************
void Write_asc(unsigned char x,unsigned char y,unsigned char code_asc)
{
unsigned int StartAddr;
StartAddr=0+y*30 +x;
Com_Two( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
Com_One( code_asc, 0xc0);
}
//****************************取得数字temp的各个位值******************
void fun(unsigned int temp)
{
unsigned char i; // /*提取的次数*/
unsigned int MidData;
MidData=temp;
for (i = 0; i < 4; i++)
{
buff[i] = MidData % 10; // /*提取当前变量最低位*/
MidData = MidData / 10; // /*去掉当前最低位值*/
}
}
//**********************汉字显示*****************************
//xy
void diplayhzset()
{
ShowHZ(12,0,0);
ShowHZ(12,0,0);
ShowHZ(16,0,1); //第一行“设置”
ShowHZ(0,32,2);
ShowHZ(2,32,3); //第2行“电压"
Write_asc(10,5,'V'-0x20);
ShowHZ(0,48,2);
ShowHZ(2,48,4); //第2行“电流”
Write_asc(10,7,'A'-0x20);
ShowHZ(16,16,5);
ShowHZ(18,16,17);
ShowHZ(20,16,2);
ShowHZ(22,16,4); //第3行“充满电流”
Write_asc(29,3,'A'-0x20);
ShowHZ(16,32,5);
ShowHZ(18,32,2);
ShowHZ(20,32,6);
ShowHZ(22,32,7); //第3行“充电时间”
ShowHZ(16,48,8);
ShowHZ(18,48,9);
ShowHZ(20,48,6);
ShowHZ(22,48,7); //第4行“记录时间”
Write_asc(27,7,'M'-0x20);
}
//xy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -