📄 lcd128645.c
字号:
bai2=temp2/10000;
shi2=(temp2%10000)/1000;
ge2=((temp2%10000)%1000)/100;
}
//temp2=result_ad2;
//bai2=temp2/0x64; //求显示的百位
//shi2=(temp2%0x64)/0xa; //求显示的十位
//ge2=(temp2%0x64)%0xa; //求显示的个位
//ge2=ge2;
//baifen2=((temp1%0x64)%0xa)/10;
//--------------RA5通道AD转化-----------------------
ADRESH=0;
ADRESL=0;
adresult5.adre5[0]=0;
adresult5.adre5[1]=0;
//delay();
result_ad=0x00; //转换结果清0
for(i=2;i>0;i--) //求5次转换结果的平均值
{
initAD3(); //调用初始化函数
nop();
ADGO=0X1; //开启转换过程
delay();
while(ADGO); //等待转换完成
nop();
adresult5.adre5[0]=ADRESL;
adresult5.adre5[1]=ADRESH;
//result_ad3=result_ad3+ADRESL; //累计转换结果
result_ad3=result_ad3+adresult5.y5; //累计转换结果
}
result_ad3=result_ad3/2;
//adresult5.y5=adresult5.y5/5;
temp3=result_ad3*24-4088;
temp3=temp3/10;
if (temp3>=1000) temp3=999;
//temp3=result_ad3;
bai3=temp3/0x64; //求显示的百位
shi3=(temp3%0x64)/0xa; //求显示的十位
ge3=(temp3%0x64)%0xa; //求显示的个位
//------------------------------------------------
scan_key(); //调用按键扫描程序
display_key(result_key); //根据按键扫描结果进行处理
if (k1==0x00)
//if (k2==0x00)
//if (k3==0x00)
//if (k4==0x00)
{
//shown=0x00;
show2(); //显示主界面信息
send_i(0x85); //设置显示位置:第一行
send_d(TABNUM[bai3]); //百位为数字
send_d(TABNUM[shi3]); //十位
send_d(0x2e); //。
send_d(TABNUM[ge3]); //个位
send_i(0x87); //设置显示位置:第一行
qushu11(0x02,TABBB); //%%%
send_i(0x8C); //设置显示位置:第三行
//send_d(0x3A); //:
send_d(TABNUM[bai1]); //百位为数字
send_d(0x2e); //。
send_d(TABNUM[shi1]); //十位
send_d(TABNUM[ge1]); //个位
send_d(TABNUM[baifen1]);
send_d(0x4d); send_d(0x50); send_d(0x61); //MPa
send_i(0x9C); //设置显示位置:第四行
//send_d(0x3A); //:
send_d(TABNUM[bai2]); //百位数字
send_d(0x2e); //。
send_d(TABNUM[shi2]); //十位
send_d(TABNUM[ge2]); //个位
send_d(TABNUM[baifen2]);
send_d(0x4d); send_d(0x50); send_d(0x61); //MPa
}
delay1();
}
}
//-------------------------------------------
//I/O口设置函数
void init()
{
//PORTA=0X00;
TRISC=0X00; //设置C口为输出
TRISD=0X00; //设置D口为输出
TRISE=0X00; //设置D口为输出
ADCON1=0X02; //设置E口为普通I/O口 0000 0010
}
//-------------------------------------------
//LCD初始化函数
void lcd_init()
{
rst=0; //复位LCD
delay(); //保证复位所需要的时间
rst=1; //恢复LCD正常工作
nop();
psb=1; //设置LCD为8位并口通信
send_i(0x34); //扩充指令操作
send_i(0x30); //基本指令操作
send_i(0x01); //清除显示
send_i(0x06); //指定在写入或读取时,光标的移动方向
send_i(0xc0); //开显示,关光标,不闪烁
}
//-------------------------------------------
//LCD初始化函数
void lcd_init1()
{
rst=0; //复位LCD
delay(); //保证复位所需要的时间
rst=1; //恢复LCD正常工作
nop();
psb=1; //设置LCD为8位并口通信
send_i(0x34); //扩充指令操作
send_i(0x30); //基本指令操作
//send_i(0x01); //清除显示
//send_i(0x06); //指定在写入或读取时,光标的移动方向
//send_i(0xc0); //开显示,关光标,不闪烁
}
//-----------------------------------------------
//初始化函数
void initAD1()
{
PORTA=0XFF;
PORTD=0XFF; //熄灭所有显示
TRISA=0X3F; //设置RA为输入,其他为输出 0011 1111
TRISD=0X00; //设置D口全为输出
TRISA0=1;
nop();
//ADCON0=0X41; //系统时钟Fosc/8,选择RA0通道,允许ADC工作 01 000 001
ADCON0=0X81; //系统时钟Fosc/8,选择RA0通道,允许ADC工作 10 000 001
delay(); //保证采样延时
delay();
delay();
ADCON1=0X82; //1000 0010 AN4-AD-RA5 AN3-RA3-ad AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref+=vdd Vref-=vss
//ADCON1=0X83; //1000 0011 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref-=vss
//ADCON1=0X8C; //1000 1100 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-Vref- AN1-RA1-AD AN0-AD-RA0
}
//-----------------------------------------------
//初始化函数
void initAD2_ref()
{
PORTA=0XFF;
PORTD=0XFF; //熄灭所有显示
TRISA=0X3F; //设置RA为输入,其他为输出 0011 1111
TRISD=0X00; //设置D口全为输出
TRISA1=1;
nop();
//ADCON0=0X49; //系统时钟Fosc/8,选择RA1通道,允许ADC工作 01 001 001
ADCON0=0X89; //系统时钟Fosc/8,选择RA1通道,允许ADC工作 10 001 001
delay(); //保证采样延时
delay();
delay();
ADCON1=0X82; //1000 0010 AN4-AD-RA5 AN3-RA3-ad AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref+=vdd Vref-=vss
//ADCON1=0X83; //1000 0011 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref-=vss
//ADCON1=0X8C; //1000 1100 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-Vref- AN1-RA1-AD AN0-AD-RA0
}
//-----------------------------------------------
//初始化函数
void initAD2_ref_vdd()
{
PORTA=0XFF;
PORTD=0XFF; //熄灭所有显示
TRISA=0X3F; //设置RA为输入,其他为输出 0011 1111
TRISD=0X00; //设置D口全为输出
TRISA1=1;
nop();
//ADCON0=0X49; //系统时钟Fosc/8,选择RA1通道,允许ADC工作 01 001 001
ADCON0=0X89; //系统时钟Fosc/8,选择RA1通道,允许ADC工作 01 001 001
delay(); //保证采样延时
delay();
delay();
ADCON1=0X82; //1000 0010 AN4-AD-RA5 AN3-RA3-ad AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref+=vdd Vref-=vss
//ADCON1=0X83; //1000 0011 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref-=vss
//ADCON1=0X8C; //1000 1100 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-Vref- AN1-RA1-AD AN0-AD-RA0
}
//-----------------------------------------------
//初始化函数
void initAD3()
{
PORTA=0X00;
PORTD=0XFF; //熄灭所有显示
TRISA=0X3F; //设置RA为输入,其他为输出 0011 1111
TRISD=0X00; //设置D口全为输出
TRISA5=1;
nop();
//ADCON0=0X61; //系统时钟Fosc/8,选择RA5通道,,允许ADC工作 01 100 001
ADCON0=0XA1; //系统时钟Fosc/8,选择RA5通道,,允许ADC工作 10 10 0 001
delay(); //保证采样延时
delay();
delay();
ADCON1=0X82; //1000 0010 AN4-AD-RA5 AN3-RA3-ad AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref+=vdd Vref-=vss
//ADCON1=0X83; //1000 0011 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-ad AN1-RA1-AD AN0-AD-RA0 Vref-=vss
//ADCON1=0X8C; //1000 1100 Vref=2.5v AN4-AD-RA5 AN3-RA3-Vref+ AN2-RA2-Vref- AN1-RA1-AD AN0-AD-RA0
}
//-------------------------------------------
//显示LOGO信息
void show1(void)
{
init(); //调用I/O口设置函数
lcd_init(); //调用LCD初始化函数
clear_p(); //调用清屏函数
han_wr2a(); //调用显示公司名称函数
han_wr2c(); //调用显示公司tel函数
han_wr2d(); //申明显示公司fax函数
han_wr2b(); //调用显示公司web函数
delay1(); //延长显示一段时间
}
//-------------------------------------------
//显示主界面函数信息
void show2(void)
{
//init(); //调用I/O口设置函数
//lcd_init(); //调用LCD初始化函数
//clear_p(); //调用清屏函数
send_i(0x80);qushu11(0X10,TABCL);
send_i(0x90);qushu11(0X10,TABCL);
send_i(0x88);qushu11(0X10,TABCL);
send_i(0x98);qushu11(0X10,TABCL);
send_i(0x81); //设置显示位置:第一行
qushu11(0x08,TABBAR); //BATTERY:
send_i(0x90); //设置显示位置:第二行
qushu11(0x0D,TABSP); //SHOW PRESSURE
send_i(0x88); //设置显示位置:第三行
qushu11(0x04,TABTF); //通风
qushu11(0x04,TABYL); //压力
send_i(0x98); //设置显示位置:第四行
qushu11(0x04,TABCN); //舱内
qushu11(0x04,TABYL); //压力
}
//-------------------------------------------
//显示菜单界面
void show3(void)
{
//init(); //调用I/O口设置函数
//lcd_init(); //调用LCD初始化函数
clear_p(); //调用清屏函数
send_i(0x80);qushu11(0X10,TABCL);
send_i(0x90);qushu11(0X10,TABCL);
send_i(0x88);qushu11(0X10,TABCL);
send_i(0x98);qushu11(0X10,TABCL);
send_i(0x80); //设置显示位置:第一行
send_d(0x4D); //M
send_d(0x45); //E
send_d(0x4E); //N
send_d(0x55); //U
send_d(0x3A); //:
//send_i(0x90); //设置显示位置:第二行
send_i(0x91); //设置显示位置:第二行
//send_d(0x10); //>
send_d(0x31);send_d(0x2E); //1.
qushu11(0x04,TABTF); //通风
qushu11(0x04,TABYL); //压力
qushu11(0x04,TABJZ); //校准
//send_i(0x88); //设置显示位置:第三行
send_i(0x89); //设置显示位置:第三行
send_d(0x32);send_d(0x2E); //2.
qushu11(0x04,TABCN); //舱内
qushu11(0x04,TABYL); //压力
qushu11(0x04,TABJZ); //校准
//send_i(0x98); //设置显示位置:第四行
//send_i(0x99); //设置显示位置:第四行
//send_d(0x33);send_d(0x2E); //3.
//qushu11(0x08,TABBG); //背光设置
}
//-------------------------------------------
//显示背光时间界面
void show4(void)
{
//init(); //调用I/O口设置函数
//lcd_init(); //调用LCD初始化函数
//clear_p(); //调用清屏函数
send_i(0x80);qushu11(0X10,TABCL);
send_i(0x90);qushu11(0X10,TABCL);
send_i(0x88);qushu11(0X10,TABCL);
send_i(0x98);qushu11(0X10,TABCL);
/*
send_i(0x80); //设置显示位置:第一行 BACKLIGHT MENU:
send_d(0x42);send_d(0x41);send_d(0x43);send_d(0x4B);send_d(0x4C);send_d(0x49);send_d(0x47);send_d(0x48);send_d(0x54);
send_d(0x20); //
send_d(0x4D); send_d(0x45); send_d(0x4E); send_d(0x55); send_d(0x3A);
send_i(0x90); //设置显示位置:第二行
send_d(0x10); //>
send_d(0x31);send_d(0x2E); //1.
send_d(0x32);send_d(0x30); //20
send_d(0x73);send_d(0x65);send_d(0x63); //sec
send_d(0x20); send_d(0x20);
send_d(0x34);send_d(0x2E); //4.
send_d(0x6F);send_d(0x70);send_d(0x65); send_d(0x6E); //open
send_i(0x88); //设置显示位置:第三行
send_d(0x20);
send_d(0x32);send_d(0x2E); //2.
send_d(0x33);send_d(0x30); //30
send_d(0x73);send_d(0x65);send_d(0x63); //sec
send_i(0x98); //设置显示位置:第四行
send_d(0x20);
send_d(0x33);send_d(0x2E); //3.
send_d(0x63);send_d(0x6C);send_d(0x6F); send_d(0x73); send_d(0x65); //close
*/
}
//-------------------------------------------
//显示公司名称函数
void han_wr2a()
{
send_i(0x82); //设置显示位置:第一行
qushu1(0x08,TAB1A); //调用取数函数,共14个数据,保存在数组TAB1A里
}
//-------------------------------------------
//显示公司web函数
void han_wr2b()
{
//send_i(0x90); //设置显示位置:第二行
send_i(0x98); //设置显示位置:第四行
qushu1(0x10,TAB1B); //调用取数函数,共16个数据,保存在数组TAB1B里
}
//-------------------------------------------
//显示公司tel函数
void han_wr2c()
{
//send_i(0x88); //设置显示位置:第三行
send_i(0x90); //设置显示位置:第二行
qushu1(0X10,TAB1C); //调用取数函数,共16个数据,保存在数组TAB1C里
}
//-------------------------------------------
//显示公司fax函数
void han_wr2d()
{
//send_i(0x98); //设置显示位置:第四行
send_i(0x88); //设置显示位置:第三行
qushu1(0X10,TAB1D); //调用取数函数,共16个数据,保存在数组TAB1D里
}
//有关显示设置函数
void wr_zb()
{
send_i(0x34);
send_i(lcd_y);
send_i(lcd_x);
send_i(0x30);
}
//-------------------------------------------
//显示闪烁函数
void flash()
{
send_i(0x08); //关显示
delay1(); //延长一定时间
send_i(0x0c); //开显示
delay1();
delay1(); //延长关显示两倍的时间
send_i(0x08); //关显示
delay1();
send_i(0x0c); //开显示
delay1();
delay1();
send_i(0x08); //关显示
delay1();
send_i(0x0c); //开显示
delay1();
delay1();
}
//-------------------------------------------
//清屏函数
void clear_p()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -