📄 lcd.h
字号:
//#define IN1_CMD 0x28
//#define IN2_CMD 0x29
//#define READ_CMD 0x2a
sbit LCD_RS = P1^3;
sbit LCD_RW = P1^4;
sbit LCD_EN = P1^5;
//P2.0-P2.7 == LCD_DB0 -- LCD_DB7
void delay_2ms(void)
{
unsigned char i,j;
// for (i=0;i<4;i++)
for (i=0;i<3;i++)
for(j=0;j<250;j++)
_nop_();
}
void delay_10ms(void)
{
unsigned char i;
for (i=0; i<5; i++)
delay_2ms();
}
void delay_1s(void)
{
unsigned char i;
for (i=0;i<10;i++)
delay_10ms();
}
void write_ins(unsigned char wr_data)
{
LCD_RS = 0;
delay_2ms();
P2 = wr_data;
LCD_EN = 1;
_nop_();
_nop_();
LCD_EN = 0;
LCD_RS = 1;
}
void write_data(unsigned char wr_data)
{
LCD_RS = 1;
delay_2ms();
P2 = wr_data;
LCD_EN = 1;
_nop_();
_nop_();
LCD_EN = 0;
LCD_RS = 1;
}
void init_lcd(void)
{
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
delay_10ms(); //reset delay
delay_10ms();
delay_10ms();
write_ins(0x01); //clear screen
delay_2ms();
delay_2ms();
write_ins(0x06);
write_ins(0x0c);
write_ins(0x18);
write_ins(0x38);
//-------------//
// CGRAM : 00H //
//-------------//
write_ins(0x40);
write_data(0x15);
write_data(0x0a);
write_data(0x15);
write_data(0x0a);
write_data(0x15);
write_data(0x0a);
write_data(0x15);
write_data(0x0a);
//-------------//
// CGRAM: 01H
//-------------//
write_ins(0x48);
write_data(0x0a);
write_data(0x15);
write_data(0x0a);
write_data(0x15);
write_data(0x0a);
write_data(0x15);
write_data(0x0a);
write_data(0x15);
//--------------//
write_ins(0x01); //clear screen
delay_2ms();
delay_2ms();
}
void test_lcd(void)
{ unsigned char i;
write_ins(0x01);
delay_2ms();
write_ins(0x80);
for (i=0;i<8;i++)
write_data(0x00);
write_ins(0xc0);
for (i=0;i<8;i++)
write_data(0x00);
delay_1s();
write_ins(0x01);
delay_2ms();
write_ins(0x80);
for(i=0;i<8;i++)
write_data(0xff);
write_ins(0xc0);
for(i=0;i<8;i++)
write_data(0xff);
delay_1s();
//
write_ins(0x01);
delay_2ms();
write_ins(0x80);
for(i=0;i<8;i++)
write_data(0x01);
write_ins(0xc0);
for(i=0;i<8;i++)
write_data(0x01);
delay_1s();
//
write_ins(0x01);
delay_2ms();
write_ins(0x80);
write_data(0x47);
write_data(0x4f);
write_data(0x4f);
write_data(0x44);
write_data(0x20);
write_data(0x4c);
write_data(0x55);
write_data(0x43);
write_ins(0xc0);
write_data(0x4b);
write_data(0x20);
write_data(0x54);
write_data(0x4f);
write_data(0x20);
write_data(0x59);
write_data(0x4f);
write_data(0x55);
delay_1s();
}
void dis_freq(void)
{
write_ins(0x06);
write_ins(0x0c);
write_ins(0x10);//0x18
write_ins(0x38);
write_ins(0x01);
delay_2ms();
write_ins(0x80);
write_data(0x52);//R
write_data(0x46);//F
write_data(0x72);//r
write_data(0x65);//e
write_data(0x71);//q
write_data(0x20);//space
write_data(digit5);//msb
write_data(digit4);//
write_ins(0xc0);
write_data(digit3);
write_data(digit2);
write_data(0x2e);//dot
write_data(digit1);
write_data(digit0);//lsb
write_data(0x4d);//M
write_data(0x48);//H
write_data(0x7a);//z
}
void move_cursor(unsigned char pos)
{
if(pos > 15)
return;
write_ins(0x06);//0x06
write_ins(0x0f);//0x0c
write_ins(0x10);//0x18
write_ins(0x38);
if(pos < 8)
write_ins(0x80+pos);
else
write_ins(0xc0+pos-8);
}
void move_cursor_left(void)
{
if(digit_pos >= 0 && digit_pos <= 6)
{
if(digit_pos == 0)
digit_pos = 5;
else
digit_pos = digit_pos - 1;
if(digit_pos < 4)
move_cursor(digit_pos+6);
else
move_cursor(digit_pos+7);
}
}
void move_cursor_right(void)
{
if(digit_pos >= 0 && digit_pos <= 5)
{
if(digit_pos == 5)
digit_pos = 0;
else
digit_pos = digit_pos + 1;
if(digit_pos < 4)
move_cursor(digit_pos+6);
else
move_cursor(digit_pos+7);
}
}
void set_digit_value(unsigned char value)
{
if(digit_pos > 5)
return;
if(digit_pos == 0)
digit5 = value;
else if(digit_pos == 1)
digit4 = value;
else if(digit_pos == 2)
digit3 = value;
else if(digit_pos == 3)
digit2 = value;
else if(digit_pos == 4)
digit1 = value;
else if(digit_pos == 5)
digit0 = value;
write_ins(0x06);//0x06
write_ins(0x0f);//0x0c
write_ins(0x10);//0x18
write_ins(0x38);
if(digit_pos < 2)
write_ins(0x80 + digit_pos + 6);
else if(digit_pos < 4)
write_ins(0xc0 + digit_pos - 2);
else
write_ins(0xc0 + digit_pos - 1);
write_data(value);
}
void cal_in_freq(void)
{
lo_freq = 0;
lo_freq = lo_freq*10 + digit5 - 0x30;
lo_freq = lo_freq*10 + digit4 - 0x30;
lo_freq = lo_freq*10 + digit3 - 0x30;
lo_freq = lo_freq*10 + digit2 - 0x30;
lo_freq = lo_freq*10 + digit1 - 0x30;
lo_freq = lo_freq*10 + digit0 - 0x30;
if(lo_freq > MAX_IPF)
return;
if(lo_freq < MIN_IPF)
return;
in_freq = lo_freq;
write_ins(0x06);
write_ins(0x0c);
write_ins(0x10);//0x18
write_ins(0x38);
digit_pos = 20;
wr_fq1216_rf();
// wr_fq1216_if_i();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -