:主程序流程图
10
附录 2
附录 3:部分源程序
#define Disp_On 0x3f #define Disp_Off 0x3e #define Col_Addr 0x40 #define Page_Addr 0xb8 #define Start_Line 0xc0 #define Lcd_delay 0x3
#define Lcd_Bus PORTA //MCU P1<------> LCM #define HN 00 const unsigned char *hanzk;
void find_char_num(unsigned char hanchar);
void disp_menu(unsigned char page,unsigned char list); void disp_second_menu(unsigned char key_enter); ///Lcd lm12864 显示程序 //////////////////////////////// ////////lcd口线设置/////////////// void Set_lcd_cs2(void) {
unsigned char i; PORTC|=BIT(6); for(i=Lcd_delay;i>0;i--); // Delay(1); }
void Cls_lcd_cs2(void) {
unsigned char i; PORTC&=~BIT(6); for(i=Lcd_delay;i>0;i--); // Delay(1); }
void Set_lcd_cs1(void)
11
{
unsigned char i; PORTC|=BIT(5); for(i=Lcd_delay;i>0;i--); // Delay(1); }
void Cls_lcd_cs1(void) {
unsigned char i; PORTC&=~BIT(5); for(i=Lcd_delay;i>0;i--); // Delay(1);
}
void Set_lcd_rs(void) {
unsigned char i; PORTC|=BIT(2); for(i=Lcd_delay;i>0;i--); // Delay(1); }
void Cls_lcd_rs(void) {
unsigned char i; PORTC&=~BIT(2); for(i=Lcd_delay;i>0;i--); // Delay(1);
}
void Set_lcd_rw(void) {
unsigned char i; PORTC|=BIT(3); for(i=Lcd_delay;i>0;i--); // Delay(1);
}
12
void Cls_lcd_rw(void) {
unsigned char i; PORTC&=~BIT(3); for(i=Lcd_delay;i>0;i--); // Delay(1);
}
void Set_lcd_e(void) {
unsigned char i; PORTC|=BIT(4); for(i=Lcd_delay;i>0;i--); // Delay(1);
}
void Cls_lcd_e(void) {
unsigned char i; PORTC&=~BIT(4); for(i=Lcd_delay;i>0;i--); // Delay(1);
}
//写命令字
void Wr_lcd_cmd(unsigned char cmddata) {
unsigned char i; Cls_lcd_rs(); Cls_lcd_rw(); PORTA=cmddata; Set_lcd_e(); Cls_lcd_e();
13
// for(i=Lcd_delay;i>0;i--); } //写数据
void Wr_lcd_data(unsigned char lcddata) {
unsigned char i; Set_lcd_rs(); Cls_lcd_rw(); PORTA=lcddata; Set_lcd_e(); Cls_lcd_e();
// for(i=Lcd_delay;i>0;i--); }
//读lcd数据
unsigned char Rd_lcd_data(void) {
unsigned char rdlcddata,i; //Cls_lcd_rs();
PORTA=0xff; DDRA=0x00; Cls_lcd_e();
// for(i=200;i>0;i--); Set_lcd_rs(); Set_lcd_rw();
// for(i=200;i>0;i--);
14