📄 lcd_lcd.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 + -