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

📄 lcd.c.bak

📁 这是一个段式lcd显示
💻 BAK
字号:
/*****************************************************************************
       ML610Q431 sample C source file       
       CODE/DATA MODEL : SMALL/NEAR
       ROMWINDOW  : 0-0DFFFh
       Version    : V1.0
       File name  : lcd.c
       Author     : MF.Chen
       Copyright (C) 2008/11/20 Globaltec Co.,Ltd.
******************************************************************************/
#include "m610411.h"
#include "common.h"
#include "lcd.h"

/*****************************************************************************
	          	              Display Font Table
******************************************************************************/
static const Font_Table[] = {	 // 7SEG pattern                                     
   0x3F,     //Chr0	 '0'
   0x06,     //Chr1	 '1'
   0x5B,     //Chr2	 '2'
   0x4F,     //Chr3	 '3'
   0x66,     //Chr4	 '4'
   0x6D,     //Chr5	 '5'
   0x7D,     //Chr6	 '6'
   0x07,     //Chr7	 '7'
   0x7F,     //Chr8	 '8'
   0x6F,     //Chr9	 '9'
   0x77,     //ChrA	 'A'
   0x7c,     //ChrB	 'B'
   0x58,     //ChrC	 'C'
   0x5e,     //ChrD	 'D'
   0x79,     //ChrE	 'E'
   0x71,     //ChrF	 'F'
   0x00,     //Space ' '
   0x40      //Chr_	 '-'       
};

/*****************************************************************************
	          	                 Lcd Initial 
******************************************************************************/
void lcd_init(void)
{
	  lcd_clear();        	  	  
	  BIASCON = 0x09u;    /* BSON=1(Bias circuit on), 1/16 LSCK(2kHz), 1/3 bias */
	  DSPMOD0 = 0x43u;    /* reference frequency is 85Hz, 1/4 duty */	
    DSPCNT  = 0x10u; /* high contrast, vl1=1.56v */ 
    
 	  disp_data=0;
	  lcd_display();      /* lcd display	initial */      
}

/*****************************************************************************
	          	                Lcd display	 
******************************************************************************	          	                
                    b7 b6 b5 b4 b3 b2 b1 b0 
	nixietube1: __ 1G 1F 1E 1D 1C 1B 1A   
	nixietube2: __ 2G 2F 2E 2D 2C 2B 2A 
	_status:    SN FR TM ON S4 S3 S2 S1       	                         	                
******************************************************************************/
void lcd_display(void)
{
   unsigned int i;  
   data_divide();          
    /*-------------------------------*/       
        i=disp_data0;
        nixietube1.byte=Font_Table[i];                //number 1
          
        i=disp_data1;           
        nixietube2.byte=Font_Table[i];                //number 2 
        
         i=disp_data2;
        nixietube3.byte=Font_Table[i];                //number 3
          
        i=disp_data3;           
        nixietube4.byte=Font_Table[i];                //number 4 
        
         i=disp_data5;
        nixietube5.byte=Font_Table[i];                //number 5
          
        i=disp_data6;           
        nixietube6.byte=Font_Table[i];                //number 6                 

             
       
     //   _status.byte=0x40;                            //status                                   
    /*-------------------------------*/   
      set_font_bit();                                   
      DSPCON=0x02u;               //lcd normal mode                  
}

/*****************************************************************************
	          	               set font bits
******************************************************************************/
void set_font_bit( void )
{    
	//---------时间显示,显示秒-----------
        num_1A=nixietube1.bit.bit0;
        num_1B=nixietube1.bit.bit1;
        num_1C=nixietube1.bit.bit2;
        num_1D=nixietube1.bit.bit3;
        num_1E=nixietube1.bit.bit4;
        num_1F=nixietube1.bit.bit5;
        num_1G=nixietube1.bit.bit6;
        _SETO=nixietube1.bit.bit7;

        num_2A=nixietube2.bit.bit0;
        num_2B=nixietube2.bit.bit1;
        num_2C=nixietube2.bit.bit2;
        num_2D=nixietube2.bit.bit3;
        num_2E=nixietube2.bit.bit4;
        num_2F=nixietube2.bit.bit5;
        num_2G=nixietube2.bit.bit6;
        _STRIDE=nixietube2.bit.bit7;

//------------- 显示分---------------------        
        num_3A=nixietube3.bit.bit0;
        num_3B=nixietube3.bit.bit1;
        num_3C=nixietube3.bit.bit2;
        num_3D=nixietube3.bit.bit3;
        num_3E=nixietube3.bit.bit4;
        num_3F=nixietube3.bit.bit5;
        num_3G=nixietube3.bit.bit6;
        _PP1=nixietube3.bit.bit7;
        
        num_4A=nixietube4.bit.bit0;
        num_4B=nixietube4.bit.bit1;
        num_4C=nixietube4.bit.bit2;
        num_4D=nixietube4.bit.bit3;
        num_4E=nixietube4.bit.bit4;
        num_4F=nixietube4.bit.bit5;
        num_4G=nixietube4.bit.bit6;
        _Weight =nixietube4.bit.bit7;
//------------- 显示时---------------------        
        num_5A=nixietube5.bit.bit0;
        num_5B=nixietube5.bit.bit1;
        num_5C=nixietube5.bit.bit2;
        num_5D=nixietube5.bit.bit3;
        num_5E=nixietube5.bit.bit4;
        num_5F=nixietube5.bit.bit5;
        num_5G=nixietube5.bit.bit6;
      //  _SET=nixietube5.bit.bit7;
        
        num_6A=nixietube6.bit.bit0;
        num_6B=nixietube6.bit.bit1;
        num_6C=nixietube6.bit.bit2;
        num_6D=nixietube6.bit.bit3;
        num_6E=nixietube6.bit.bit4;
        num_6F=nixietube6.bit.bit5;
        num_6G=nixietube6.bit.bit6;
     //   _Day =nixietube6.bit.bit7;

 
         Time =1;
         TimeOO =1;
         Heart =1;
         USB =1;
         Stopwatch=1;
         

//-------------
/*   
        S1 = _status.bit.bit0;        
        S2 = _status.bit.bit1;
        S3 = _status.bit.bit2;
        S4 = _status.bit.bit3;
        ON = _status.bit.bit4;
        TEMP=_status.bit.bit5;
        FIRE=_status.bit.bit6;
        SNOW=_status.bit.bit7; 
       
 */       
}

/*****************************************************************************
	          	                Lcd clear
******************************************************************************/
void lcd_clear( void )
{
	volatile unsigned char* ptr;
	unsigned int i;
	
	ptr = &DSPR00;             /* DSPR initialize(ALL off) */
	for(i=0; i<0xC0; i++){
		*ptr++ = 0x00;
	}
}

/*****************************************************************************
	          	                Data divide
******************************************************************************/
void data_divide( void )
{
    temp_data = disp_data_sec;
    disp_data1=temp_data/10;
    disp_data0=temp_data%10;
    
    temp_data = disp_data_min;
    disp_data3=temp_data/10;
    disp_data2=temp_data%10;
    
    temp_data = disp_data_hour;
    disp_data6=temp_data/10;
    disp_data5=temp_data%10;
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -