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

📄 lcd_lcd.c

📁 针对杭州中正公司的SM-62光学指纹识别模块在Atmega128芯片板上移植后的测试程序
💻 C
字号:
#include <iom128.h>
#include "zimo.h"
#define u8 unsigned char
#define u16 unsigned int
__no_init u8 cmdreg @ 0x1100 ;
__no_init u8 datareg @ 0x1101 ;
/*********************************** system_initilization ***********************************/
void system_initialization()
{
   MCUCR = 0x80 ;          //REGISDTER CONFIGURATION
   XMCRA = 0x00 ;
   XMCRB = 0x00 ;

   DDRD = (1<<4)|(1<<7); //ACS output
   PORTD |= (1<<7);//KEY
   PORTD |= (1<<4);//RAM

   DDRB |= (1<<7) ;
   PORTB |= (1<<7) ;       //CS1S UP
   DDRG |= (1<<3) ;
   PORTG &= ~(1<<3) ;      //CS1M DOWN
}
/*************************************** cmd_write ********************************************/
void cmd_write(u8 data)
{
   cmdreg = data ;
}
/************************************ data_clear ***************************************/
void data_clear()
{
    u16 i ;
    cmd_write(0x8A) ;         //DISPLAY STARTING LINE MODE SET COMMAND
    cmd_write(0x00) ;         //DISPLAY STARTING LINE REGISTER SET COMMAND
    cmd_write(0xB0) ;         //PAGE ADDRESS SET
    cmd_write(0x10) ;         //COLUMN ADDRESS SET HIGE-ORDER BITS
    cmd_write(0x00) ;         //COLUMN ADDRESS SET LOW-ORDER BITS
    for(i=0;i<1650;i++)
    {
       datareg = 0x00 ;
    }
}
/******************************* lcd_upside_initialization*******************************/
void lcd_upside_initialization()
{
    MCUCR = 0x80 ;           //REGISDTER CONFIGURATION
    XMCRA = 0x00 ;
    XMCRB = 0x00 ;

    DDRD = (1<<4)|(1<<7);    // output
    PORTD |= (1<<7);         //DISABLE KEY
    PORTD |= (1<<4);         //DISABLE RAM

    DDRB |= (1<<7) ;
    PORTB |= (1<<7) ;       //CS1S UP (OFF)
    DDRG |= (1<<3) ;
    PORTG &= ~(1<<3) ;      //CS1M DOWN  (ON)

    //cmd_write(0xA9) ;
    cmd_write(0xA6) ;
    cmd_write(0x74) ;
    cmd_write(0x62) ;
    cmd_write(0xA1) ;
    cmd_write(0xC0) ;
    cmd_write(0x81) ;
    cmd_write(0x3C) ;

    cmd_write(0x40) ;
    cmd_write(0x3F) ;
    cmd_write(0xE6) ;
    cmd_write(0xAB) ;
    cmd_write(0x55) ;
    cmd_write(0x27) ;
    cmd_write(0xE1) ;
    cmd_write(0xAF) ;

    cmd_write(0xAF) ;         //TURN ON DISPLAY
}
/****************************** lcd_downside_initialization ******************************/
void lcd_downside_initialization()
{
    MCUCR = 0x80 ;           //REGISDTER CONFIGURATION
    XMCRA = 0x00 ;
    XMCRB = 0x00 ;

    DDRD = (1<<4)|(1<<7);    // output
    PORTD |= (1<<7);         //DISABLE KEY
    PORTD |= (1<<4);         //DISABLE RAM

    DDRB |= (1<<7) ;
    PORTB &= ~(1<<7) ;       //CS1S DOWN
    DDRG |= (1<<3) ;
    PORTG |= (1<<3) ;        //CS1M UP

    //cmd_write(0xA9) ;
    cmd_write(0xA6) ;
    cmd_write(0x74) ;
    cmd_write(0x62) ;
    cmd_write(0xA0) ;
    cmd_write(0xC8) ;
    cmd_write(0x81) ;
    cmd_write(0x3C) ;

    cmd_write(0x40) ;
    cmd_write(0x3F) ;
    cmd_write(0xE6) ;
    cmd_write(0xAB) ;
    cmd_write(0x55) ;
    cmd_write(0x27) ;
    cmd_write(0xE1) ;
    cmd_write(0xAF) ;

    cmd_write(0xAF) ;         //TURN ON DISPLAY
}
/************************************ display_number_letter **************************************/
void display_number_letter( u8 number, u8 page , u8 column1 , u8 column2 )
{
    u8 k ;
    cmd_write(0x8A) ;         //DISPLAY STARTING LINE MODE SET COMMAND
    cmd_write(0x00) ;         //DISPLAY STARTING LINE REGISTER SET COMMAND
    cmd_write(page) ;         //PAGE ADDRESS SET
    cmd_write(column1) ;         //COLUMN ADDRESS SET HIGE-ORDER BITS
    cmd_write(column2) ;         //COLUMN ADDRESS SET LOW-ORDER BITS
    for(k=0;k<8;k++)
    {
       datareg = letter[number*16+k] ;
    }
    cmd_write(0x8A) ;         //DISPLAY STARTING LINE MODE SET COMMAND
    cmd_write(0x00) ;         //DISPLAY STARTING LINE REGISTER SET COMMAND
    cmd_write(page+1) ;         //PAGE ADDRESS SET
    cmd_write(column1) ;         //COLUMN ADDRESS SET HIGE-ORDER BITS
    cmd_write(column2) ;         //COLUMN ADDRESS SET LOW-ORDER BITS
    for(k=0;k<8;k++)
    {
       datareg = letter[number*16+k+8] ;
    }
}

/**************************************** display_line_1 ******************************************/
void display_line_1()
{
    display_number_letter(51,0xB0,0x10,0x07); //Please
    display_number_letter(21,0xB0,0x10,0x0F);
    display_number_letter(14,0xB0,0x11,0x07);
    display_number_letter(10,0xB0,0x11,0x0F);
    display_number_letter(28,0xB0,0x12,0x07);
    display_number_letter(14,0xB0,0x12,0x0F);

    display_number_letter(28,0xB0,0x13,0x0F); //select
    display_number_letter(14,0xB0,0x14,0x07);
    display_number_letter(21,0xB0,0x14,0x0F);
    display_number_letter(14,0xB0,0x15,0x07);
    display_number_letter(12,0xB0,0x15,0x0F);
    display_number_letter(29,0xB0,0x16,0x07);


    display_number_letter(29,0xB2,0x10,0x07); //templet
    display_number_letter(14,0xB2,0x10,0x0F);
    display_number_letter(22,0xB2,0x11,0x07);
    display_number_letter(25,0xB2,0x11,0x0F);
    display_number_letter(21,0xB2,0x12,0x07);
    display_number_letter(14,0xB2,0x12,0x0F);
    display_number_letter(29,0xB2,0x13,0x07);

    display_number_letter(23,0xB2,0x14,0x07); //number
    display_number_letter(30,0xB2,0x14,0x0F);
    display_number_letter(22,0xB2,0x15,0x07);
    display_number_letter(11,0xB2,0x15,0x0F);
    display_number_letter(14,0xB2,0x16,0x07);
    display_number_letter(27,0xB2,0x16,0x0F);
}

/**************************************** display_line_2 ******************************************/
void display_line_2()
{
    display_number_letter(55,0xB0,0x10,0x07); //Templet
    display_number_letter(14,0xB0,0x10,0x0F);
    display_number_letter(22,0xB0,0x11,0x07);
    display_number_letter(25,0xB0,0x11,0x0F);
    display_number_letter(21,0xB0,0x12,0x07);
    display_number_letter(14,0xB0,0x12,0x0F);
    display_number_letter(29,0xB0,0x13,0x07);

    display_number_letter(23,0xB0,0x14,0x07); //number
    display_number_letter(30,0xB0,0x14,0x0F);
    display_number_letter(22,0xB0,0x15,0x07);
    display_number_letter(11,0xB0,0x15,0x0F);
    display_number_letter(14,0xB0,0x16,0x07);
    display_number_letter(27,0xB0,0x16,0x0F);

    display_number_letter(18,0xB2,0x10,0x07); //invalid
    display_number_letter(23,0xB2,0x10,0x0F);
    display_number_letter(31,0xB2,0x11,0x07);
    display_number_letter(10,0xB2,0x11,0x0F);
    display_number_letter(21,0xB2,0x12,0x07);
    display_number_letter(18,0xB2,0x12,0x0F);
    display_number_letter(13,0xB2,0x13,0x07);
}

/**************************************** display_line_3 ******************************************/
void display_line_3()
{
    display_number_letter(51,0xB0,0x10,0x07); //Please
    display_number_letter(21,0xB0,0x10,0x0F);
    display_number_letter(14,0xB0,0x11,0x07);
    display_number_letter(10,0xB0,0x11,0x0F);
    display_number_letter(28,0xB0,0x12,0x07);
    display_number_letter(14,0xB0,0x12,0x0F);

    display_number_letter(51,0xB0,0x13,0x0F); //press
    display_number_letter(27,0xB0,0x14,0x07);
    display_number_letter(14,0xB0,0x14,0x0F);
    display_number_letter(28,0xB0,0x15,0x07);
    display_number_letter(28,0xB0,0x15,0x0F);

    display_number_letter(34,0xB2,0x10,0x07); //your
    display_number_letter(24,0xB2,0x10,0x0F);
    display_number_letter(30,0xB2,0x11,0x07);
    display_number_letter(27,0xB2,0x11,0x0F);

    display_number_letter(29,0xB2,0x12,0x0F); //thumb
    display_number_letter(17,0xB2,0x13,0x07);
    display_number_letter(30,0xB2,0x13,0x0F);
    display_number_letter(22,0xB2,0x14,0x07);
    display_number_letter(11,0xB2,0x14,0x0F);
}

/**************************************** display_line_4 ******************************************/
void display_line_4()
{
    display_number_letter(51,0xB0,0x10,0x0F); //press
    display_number_letter(21,0xB0,0x11,0x07);
    display_number_letter(14,0xB0,0x11,0x0F);
    display_number_letter(28,0xB0,0x12,0x07);
    display_number_letter(28,0xB0,0x12,0x0F);

    display_number_letter(53,0xB0,0x12,0x0F); //R

    display_number_letter(28,0xB0,0x12,0x07);
    display_number_letter(28,0xB0,0x12,0x0F); //to

    display_number_letter(27,0xB0,0x10,0x0F); //return
    display_number_letter(21,0xB0,0x11,0x07);
    display_number_letter(14,0xB0,0x11,0x0F);
    display_number_letter(28,0xB0,0x12,0x07);
    display_number_letter(28,0xB0,0x12,0x0F);
}

/**************************************** display_line_5 ******************************************/
void display_line_5()
{
    display_number_letter(53,0xB0,0x10,0x0F); //Right!
    display_number_letter(18,0xB0,0x11,0x07);
    display_number_letter(16,0xB0,0x11,0x0F);
    display_number_letter(17,0xB0,0x12,0x07);
    display_number_letter(29,0xB0,0x12,0x0F);
    display_number_letter(62,0xB0,0x13,0x07);
}

/**************************************** display_line_6 ******************************************/
void display_line_6 ()
{
    display_number_letter(58,0xB0,0x10,0x0F); //Wrong!
    display_number_letter(27,0xB0,0x11,0x07);
    display_number_letter(24,0xB0,0x11,0x0F);
    display_number_letter(23,0xB0,0x12,0x07);
    display_number_letter(16,0xB0,0x12,0x0F);
    display_number_letter(62,0xB0,0x13,0x07);
}
/******************************************* interface_1 ************************************************/
void interface_1()
{
    system_initialization() ;
    lcd_upside_initialization() ;
    data_clear() ;
    display_line_1() ;
}

⌨️ 快捷键说明

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