#define _EEPROM_MAIN_
#include "main.h"
unsigned char key;
unsigned char status;
unsigned char position;
unsigned int password_temp;
unsigned char wrong_times;
unsigned char time_temp;
unsigned char save_address;
unsigned int speed_temp;
unsigned char position;
bit password_miss;
unsigned char Head;
unsigned char Hi;
unsigned char Lo;
unsigned char No;
unsigned char Cnt;
unsigned char Com;
unsigned char uart_temp[75];
bit write_flag;
unsigned char counter;
unsigned char save_time;
unsigned char set_time;
//-----------------------------------------------------------------
void delay_time (unsigned long temp)
{
while (temp>0)
temp--;
}
//-----------------------------------------------------------------
void check_busy(void)
{
do
{
lcd_data = 0xff;
rs = 0;
rw = 1;
en = 1;
ACC = lcd_data;
en = 0;
ACC = ACC & 0X80;
} while (ACC != 0);
}
//-----------------------------------------------------------------
void write_lcd_ir(char temp)
{
check_busy();
lcd_data = temp;
rs = 0;
rw = 0;
en = 1;
en = 0;
}
//-----------------------------------------------------------------
void write_lcd_dr(char temp)
{
check_busy();
lcd_data = temp;
rs = 1;
rw = 0;
en = 1;
en = 0;
}
//-----------------------------------------------------------------
void LCD_INIT (void)
{
write_lcd_ir(0x38);
write_lcd_ir(0x0c);
write_lcd_ir(0x01);
write_lcd_ir(0x02);
write_lcd_ir(0x06);
}
//-----------------------------------------------------------------
void show_xx_number(unsigned int show_data)
{
write_lcd_dr((show_data%100)/10+48);
write_lcd_dr(show_data%10+48);
}
//-----------------------------------------------------------------
void show_xxx_number(unsigned int show_data)
{
write_lcd_dr(show_data/100+48);
write_lcd_dr((show_data%100)/10+48);
write_lcd_dr(show_data%10+48);
}
//-----------------------------------------------------------------
void print_line_string (char *s1,char location)
{
unsigned char i;
if (location > 15)
{location = location-16 + 0x90;
write_lcd_ir(location);}
else
{location = location + 0x80;
write_lcd_ir(location);}
for (i=0;i<30;i++)
{
if (*(s1+i)=='\0')
break;
write_lcd_dr(*(s1+i));
}
}
void main_scn(void)
{
unsigned char code string1[]="A 行車模式設定\0";
unsigned char code string2[]="B 密碼模式設定\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void call_scn(void)
{
unsigned char code string1[]="輸入錯誤超過三次\0";
unsigned char code string2[]="請聯絡維修人員! \0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void set_up_scn(void)
{
unsigned char code string1[]="設定修改密碼\0";
unsigned char code string2[]="1.使用者2.維護者\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void run_set_scn(void)
{
unsigned char code string1[]="1.顯示行車模式 3.速度監控\0";
unsigned char code string2[]="2.修改儲存時間 4.速度警報設定\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void edit_user(void)
{
unsigned char i;
unsigned char code string1[]="設定修改使用密碼\0";
unsigned char code string2[]="新密碼:\0";
print_line_string(string1,0);
print_line_string(string2,16);
if(position>0)
{
for(i=0;i<position;i++)
{write_lcd_dr(42);}
}
}
//-----------------------------------------------------------------
void edit_adm(void)
{
unsigned char i;
unsigned char code string1[]="設定修改維護密碼\0";
unsigned char code string2[]="新密碼:\0";
print_line_string(string1,0);
print_line_string(string2,16);
if(position>0)
{
for(i=0;i<position;i++)
{write_lcd_dr(42);}
}
}
//-----------------------------------------------------------------
void password_scn()
{
unsigned char i;
unsigned char code string1[]="輸入密碼:\0";
unsigned char code string2[]="輸入錯誤重新輸入\0";
print_line_string(string1,0);
if(position>0)
{
for(i=0;i<position;i++)
{write_lcd_dr(42);}
}
if(password_miss==1)
{
print_line_string(string2,16);
}
}
//-----------------------------------------------------------------
void edit_user_check(void)
{
unsigned char code string1[]="確定更改使用者新密碼\0";
unsigned char code string2[]="A.確定 B.回主畫面\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void edit_adm_check(void)
{
unsigned char code string1[]="確定更改維護者新密碼\0";
unsigned char code string2[]="A.確定 B.回主畫面\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void check_to_back(void)
{
unsigned char code string1[]="新密碼設定完成\0";
unsigned char code string2[]="B.回主畫面\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void edit_save_time(void)
{
unsigned char code string1[]="選擇儲存時間\0";
unsigned char code string2[]="A.1 秒 B.5 秒 C.10 秒\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void save_time_ready(void)
{
unsigned char code string1[]="完成儲存設定\0";
unsigned char code string2[]="五秒後回畫面\0";
write_lcd_ir(0x01);
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void check_save_time(void)
{
unsigned char code string1[]="選擇時間: \0";
unsigned char code string2[]="A.接受 B.重新選擇\0";
unsigned char code string3[]="秒 \0";
print_line_string(string1,0);
show_xx_number(time_temp);
print_line_string(string2,16);
print_line_string(string3,6);
}
//-----------------------------------------------------------------
void print_information(void)
{
unsigned char code string1[]="時間: 緯度 :\0";
unsigned char code string2[]="水平高度 經度 :\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void print_speed(void)
{
unsigned char code string1[]="速度: B鍵離開\0";
unsigned char code string2[]="速度上限:\0";
print_line_string(string1,0);
print_line_string(string2,16);
}
//-----------------------------------------------------------------
void set_speed(void)
{
unsigned char code string1[]="速度上限:\0";
unsigned char code string2[]=" A鍵儲存並離開 B鍵不儲存並離開\0";
write_lcd_ir(0x0c);
print_line_string(string1,0);
write_lcd_dr(32);
write_lcd_dr(speed_temp/100+48);
write_lcd_dr(32);
write_lcd_dr((speed_temp%100)/10+48);
write_lcd_dr(32);
write_lcd_dr(speed_temp%10+48);
print_line_string(string2,16);
switch(position)
{
case 0:write_lcd_ir(0x85);break;
case 1:write_lcd_ir(0x86);break;
case 2:write_lcd_ir(0x87);break;
}
write_lcd_ir(0x0f);
}
//-----------------------------------------------------------------
void print_lcd_updata(void)
{
write_lcd_ir(0x01);
switch(status)
{
case 0:main_scn();break;
case 1:password_scn();break;
case 2:password_scn();break;
case 3:run_set_scn();break;
case 4:set_up_scn();break;
case 5:edit_user();break;
case 6:edit_adm();break;
case 7:edit_user_check();break;
case 8:edit_adm_check();break;
case 9:check_to_back();break;
case 10:edit_save_time();break;
case 11:check_save_time();break;
case 12:print_information();break;
case 13:print_speed();break;
case 14:set_speed();break;
}
}
//-----------------------------------------------------------------
unsigned char key_encode(unsigned char temp)
{
switch(temp)
{case 0x0e:return 0;
89C51-GPS-LCD-IIC-CF-4X4Keybord
需积分: 10 176 浏览量
2008-10-11
10:31:33
上传
评论
收藏 111KB RAR 举报
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
panyaoyu
- 粉丝: 0
- 资源: 1
最新资源
- Hadoop - Hadoop Streaming
- 如获取省市等特定区域经纬度进行可视化,从而辅助判断、决策
- krita-5.2.2
- linux-net.svg
- AI大模型语言翻译模型案例介绍:设计一个端到端的神经机器翻译模型,支持多种语言
- AI大模型文本生成模型案例介绍:使用大规模预训练模型生成文本,如GPT-3
- 305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\建筑v5D平面.dwg
- AI大模型情感分析模型案例介绍:基于深度学习的情感分类器,分析文本情感极性
- 305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\建筑D立面剖面.dwg
- 305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\电 白图.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)