📄 lcd.h~
字号:
LCD_W_DATA(i,0x00|b_SV);sv_data=0x00;
LCD_W_DATA(i+1,0x00);
}
if(dat>=100)
{
LCD_W_DATA(i+2,(LCD_array[(dat%1000)/100]/16)|b_PV);pv_data=LCD_array[(dat%1000)/100]/16;
LCD_W_DATA(i+3,LCD_array[(dat%1000)/100]%16);
}
else
{
LCD_W_DATA(i+2,0x00|b_PV);pv_data=0x00;
LCD_W_DATA(i+3,0x00);
}
}
else //负温
{
if(dat>=100)
{ LCD_W_DATA(i,0x04|b_SV);sv_data=0x04;LCD_W_DATA(i+1,0x00);
LCD_W_DATA(i+2,(LCD_array[(dat%1000)/100]/16)|b_PV);pv_data=LCD_array[(dat%1000)/100]/16;
LCD_W_DATA(i+3,LCD_array[(dat%1000)/100]%16);
}
else
{
LCD_W_DATA(i,0x00|b_SV);sv_data=0x00;LCD_W_DATA(i+1,0x00);
LCD_W_DATA(i+2,0x00|b_PV);pv_data=0x00;
if(dat==0)
LCD_W_DATA(i+3,0x00);
else
LCD_W_DATA(i+3,0x04);
}
}
LCD_W_DATA(i+4,LCD_array[(dat%100)/10]/16);
LCD_W_DATA(i+5,LCD_array[(dat%100)/10]%16);
LCD_W_DATA(i+6,(LCD_array[dat%10]/16)|0x01);
LCD_W_DATA(i+7,LCD_array[dat%10]%16);
LCD_W_DATA(i+8,0x0f);
}
}
/********************************************************
函数名称:lcd_show_rpm(uint dat,uchar on_of)
功能描述: 显示转速数据
全局变量:无
形参说明:dat是转速数据。on_of=0:LCD上的转速不显示,=1显示,用于闪烁功能
返回说明:无
设 计 人:bill
版 本: 1.0
说 明:
********************************************************/
//**********************************显示转速数据*********************************
void lcd_show_rpm(uint dat,uchar on_of)
{
uchar i;
i=0;
if(on_of==0)
{
LCD_W_DATA(i,0x00|b_SV);sv_data=0x00;
LCD_W_DATA(i+1,0x00);
LCD_W_DATA(i+2,0x00|b_PV);pv_data=0x00;
LCD_W_DATA(i+3,0x00);
LCD_W_DATA(i+4,0x00);
LCD_W_DATA(i+5,0x00);
LCD_W_DATA(i+6,0x00);
LCD_W_DATA(i+7,0x00);
b_rpm=0;
lcd_show_sign();
}
else
{
if(dat>999)
{
LCD_W_DATA(i,(LCD_array[(dat%10000)/1000]/16)|b_SV);sv_data=LCD_array[(dat%10000)/1000]/16;
LCD_W_DATA(i+1,LCD_array[(dat%10000)/1000]%16);
}
else
{
LCD_W_DATA(i,0x00||b_SV);sv_data=0x00;
LCD_W_DATA(i+1,0x00);
}
if(dat>99)
{
LCD_W_DATA(i+2,(LCD_array[(dat%1000)/100]/16)|b_PV);pv_data=LCD_array[(dat%1000)/100]/16;
LCD_W_DATA(i+3,LCD_array[(dat%1000)/100]%16);
}
else
{
LCD_W_DATA(i+2,0x00|b_PV);pv_data=0x00;
LCD_W_DATA(i+3,0x00);
}
if(dat>9)
{
LCD_W_DATA(i+4,LCD_array[(dat%100)/10]/16);
LCD_W_DATA(i+5,LCD_array[(dat%100)/10]%16);
}
else
{
LCD_W_DATA(i+4,0x00);
LCD_W_DATA(i+5,0x00);
}
LCD_W_DATA(i+6,LCD_array[dat%10]/16);
LCD_W_DATA(i+7,LCD_array[dat%10]%16);
b_rpm=1;
lcd_show_sign();
}
}
/********************************************************
函数名称:void lcd_show_set_timer(uint dat,uchar on_of,uchar b_dot)
功能描述: 显示设置时间
全局变量:无
形参说明:dat是分钟数据,函数里面有数据转换。on_of=0:LCD上的温度不显示,=1显示,用于闪烁功能。
b_dot是时间的点,=1为显示,=0为不显示。
返回说明:无
设 计 人:bill
版 本: 1.0
说 明:这个函数会把dat转换成时和分,比如dat为100分钟那么显示为“1:40”。
********************************************************/
//**********************************显示设置时间*********************************
void lcd_show_set_timer(uint dat,uchar on_of,uchar b_dot)
{
uchar i,h,m;
h=dat/60;
m=dat%60;
i=17;
if(on_of==0)
{
LCD_W_DATA(i,0x00);
LCD_W_DATA(i+1,0x00|b_divide);divide_data=0x00;
LCD_W_DATA(i+2,0x00);
LCD_W_DATA(i+3,0x00|(b_probe<<3)); probe_data=0x00;
LCD_W_DATA(i+4,0x00);
LCD_W_DATA(i+5,0x00);
LCD_W_DATA(i+6,0x00);
LCD_W_DATA(i+7,0x00|(b_remote<<3));remote_data=0x00;
}
else
{
LCD_W_DATA(i,LCD_time[m%10]%16);
LCD_W_DATA(i+1,(LCD_time[m%10]/16)|b_divide);divide_data=LCD_time[m%10]/16;
LCD_W_DATA(i+2,LCD_time_2[(m%100)/10]%16);
LCD_W_DATA(i+3,(LCD_time_2[(m%100)/10]/16)|(b_probe<<3));probe_data=LCD_time_2[(m%100)/10]/16;
if(b_dot==1)
{
LCD_W_DATA(i+4,LCD_time[h%10]%16);
LCD_W_DATA(i+5,(LCD_time[h%10]/16)|0x01);
}
else
{
LCD_W_DATA(i+4,LCD_time[h%10]%16);
LCD_W_DATA(i+5,LCD_time[h%10]/16);
}
if(h>9)
{
LCD_W_DATA(i+6,LCD_time_2[(h%100)/10]%16);
LCD_W_DATA(i+7,(LCD_time_2[(h%100)/10]/16)|(b_remote<<3));remote_data=LCD_time_2[(h%100)/10]/16;
}
else
{
LCD_W_DATA(i+6,0x00);
LCD_W_DATA(i+7,0x00|(b_remote<<3));remote_data=0x00;
}
}
}
/********************************************************
函数名称:void lcd_show_run_timer(uint dat,uchar on_of,uchar b_dot)
功能描述: 显示运行时间
全局变量:无
形参说明:dat是分钟数据,函数里面有数据转换。on_of=0:LCD上的温度不显示,=1显示,用于闪烁功能。
b_dot是时间的点,=1为显示,=0为不显示。
返回说明:无
设 计 人:bill
版 本: 1.0
说 明:这个函数会把dat转换成时和分,比如dat为100分钟那么显示为“1:40”。
********************************************************/
//**********************************显示运行时间*********************************
void lcd_show_run_timer(uint dat,uchar on_of,uchar b_dot)
{
uchar i,h,m;
h=dat/60;
m=dat%60;
i=9;
if(on_of==0)
{
LCD_W_DATA(i,0x00);
LCD_W_DATA(i+1,0x00|b_rpm);rpm_data=0;
LCD_W_DATA(i+2,0x00);
LCD_W_DATA(i+3,0x00|(b_run<<3));run_data=0x00;
LCD_W_DATA(i+4,0x00);
LCD_W_DATA(i+5,0x00);
LCD_W_DATA(i+6,0x00);
LCD_W_DATA(i+7,0x00|(b_pre<<3)); pre_data=0x00;
}
else
{
LCD_W_DATA(i,LCD_time[m%10]%16);
LCD_W_DATA(i+1,(LCD_time[m%10]/16)|b_rpm);rpm_data=LCD_time[m%10]/16;
LCD_W_DATA(i+2,LCD_time_2[(m%100)/10]%16);
LCD_W_DATA(i+3,(LCD_time_2[(m%100)/10]/16)|(b_run<<3));run_data=LCD_time_2[(m%100)/10]/16;
if(b_dot==1)
{
LCD_W_DATA(i+4,LCD_time[h%10]%16);
LCD_W_DATA(i+5,(LCD_time[h%10]/16)|0x01);
}
else
{
LCD_W_DATA(i+4,LCD_time[h%10]%16);
LCD_W_DATA(i+5,LCD_time[h%10]/16);
}
if(h>9)
{
LCD_W_DATA(i+6,LCD_time_2[(h%100)/10]%16);
LCD_W_DATA(i+7,(LCD_time_2[(h%100)/10]/16)|(b_pre<<3));pre_data=LCD_time_2[(h%100)/10]/16;
}
else
{
LCD_W_DATA(i+6,0x00);
LCD_W_DATA(i+7,0x00|(b_pre<<3)); pre_data=0x00;
}
}
}
/********************************************************
函数名称:void lcd_show_sign(void)
功能描述: 把标志位显示出来
全局变量:b_SV,b_divide,b_PV,b_remote,b_probe,b_pre,b_run,b_rpm
形参说明:无
返回说明:无
设 计 人:bill
版 本: 1.0
说 明:
********************************************************/
// SV / PV remote probe pre run rpm
//------------------------LCD显示标志-------------------------------------------
void lcd_show_sign(void)
{
LCD_W_DATA(0,sv_data|b_SV);
LCD_W_DATA(2,pv_data|b_PV);
LCD_W_DATA(10,rpm_data|b_rpm);
LCD_W_DATA(12,run_data|(b_run<<3));
LCD_W_DATA(16,pre_data|(b_pre<<3));
LCD_W_DATA(18,divide_data|b_divide);
LCD_W_DATA(20,probe_data|(b_probe<<3));
LCD_W_DATA(24,remote_data|(b_remote<<3));
}
/*
说明:
LCD_init();是初始化函数
clr_lcd(); 是清屏函数
这款LCD可以同时显示三组数据:
1。LCD的上半部分,显示温度或转速,可做切换显示。
2。LCD的下左角部分,显示设置的时间。
3。LCD的下右角部分,显示运行的时间。
所有数据由以下四个函数来完成:
lcd_show_temperature(int data,1);// 温度显示函数
lcd_show_rpm(int data,1);// 转速显示函数
lcd_show_set_timer(int data,1,1);// 设置时间显示函数
lcd_show_timer(int data,1,1); // 运行时间显示函数
以下是LCD的标志显示:
// SV /(divide) PV remote probe pre run rpm
b_SV=1;//先声明,=1那么SV的这个标志就会显示,=0那么SV不会显示。
lcd_show_sign(); //将标志显示出来
*/
/*
//*********************************调用举例******************************
#include "LCD.h" //调用LCD的头文件,如果是其它单片机型号请在LCD.h定义好IO口
void main(void)
{
LCD_init(); //初始化LCD
clr_lcd(); //清LCD屏
lcd_show_temperature(32788,1); //显示温度,32788应该显示为2.0度
lcd_show_set_timer(100,1,1); //显示设置的时间,100应该显示为1:40
lcd_show_run_timer(100,1,1); //显示运行的时间,100应该显示为1:40
b_SV=1; //声明b_SV要显示
b_divide=1; //声明/要显示
b_PV=1; //声明PV要显示
lcd_show_sign(); //将b_SV和/和PV显示出来
while (1)
{
;
}
}
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -