⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.h~

📁 这是一个用AVRM16控制HTM68131,可以跟据这个例子自已做液晶.
💻 H~
📖 第 1 页 / 共 2 页
字号:
                                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 + -