📄 main.c.bak
字号:
/*******************************************************************************
* 标题: 天宇蓝翔LJD-SY-5100单片机开发系统128x64标准驱动程序 *
* 文件: main_test_lcd.C *
* 日期: 2006-7-20 *
* 版本: 1.0 *
* 作者: Pillar *
********************************************************************************
* 描述: *
* 测试lcd驱动程序 *
* * 主程序
* *
********************************************************************************
* 【版权】 Copyright(C) belongs to 天宇蓝翔科技有限公司 All Rights Reserved *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
*******************************************************************************/
#include <LCD128x64.h> //液晶
#include <LCD_date_1.h>
#include <keyboard451.h>
#include <1302_2.h>
#include <24C02.h>
#include <weight.h>
#include <timer.h> //定时器
#include <print.h>
#include <T9.h>
//子程序名称
void enter_normal_work_mode(BYTE key_value); //正常工作
void enter_zongci_work_mode(BYTE key_value); //总次
void enter_leibie_work_mode(BYTE ch451_key); //类别
void enter_shepi_work_mode(BYTE ch451_key); //设皮
void enter_riqi_work_mode(BYTE ch451_key); //日期
void enter_shijian_work_mode(BYTE ch451_key); //时间
void enter_zongqing_work_mode(BYTE ch451_key); //总清
void enter_danqing_work_mode(BYTE ch451_key); //单清
void enter_huizong_work_mode(BYTE ch451_key); //汇总
void enter_zidong_work_mode(BYTE ch451_key); //自动
void enter_jiucuo_work_mode(BYTE ch451_key); //纠错
void enter_zongzhong_work_mode(BYTE ch451_key); //总重
void enter_chaxun_work_mode(BYTE ch451_key); //查询
void enter_zouzhi_work_mode(BYTE ch451_key); //走纸
void enter_cunru_work_mode(BYTE ch451_key); //存入
void enter_guiling_work_mode(BYTE ch451_key); //归零
void enter_guangji_work_mode(BYTE ch451_key); //关机
void enter_diaocheng_work_mode(BYTE ch451_key); //调称
void enter_beiguang_work_mode(BYTE ch451_key); //背光
void display_state_icon(void); //显示状态
void display_normal(void); //显示正常
void main_init(void); //主程序初始化
void delay(void) ; //延时
void save_record();
//********以下增加打印子函数定义*********/
void enter_all_print_work_mode(BYTE ch451_key); //总报表打印
void enter_date_print_work_mode(BYTE ch451_key); //按日期打印
void enter_type_print_work_mode(BYTE ch451_key); //按类别打印
void enter_date_type_print_work_mode(BYTE ch451_key); //按日期类别打印
//---------新增用户名、类别名、参数设置-------//
void enter_user_name_work_mode(BYTE ch451_key); //设置用户名子函数
void enter_type_name_work_mode(BYTE ch451_key); //设置类别名子函数
void enter_canshu_work_mode(BYTE ch451_key); //设置参数子函数
void enter_scale_work_mode(BYTE ch451_key); //设置分度值字函数
void enter_max_weight_work_mode(BYTE ch451_key); //设置最大量程字函数
void auto_close(void);
void T9_PY_SHURU(ch451_key); //拼音输入子函数
//-------------------------------//
enum operate_mode
{
NORMAL, //正常模式
ZONG_CI, //总次
LEI_BIE, //类别
SHE_PI, //设皮
RI_QI, //日期
SHI_JIAN, //时间
ZONG_QING, //总清
DAN_QING, //单清
HUI_ZONG, //汇总
ZI_DONG, //自动
JIU_CUO, //纠错
ZONG_ZHONG, //总重
CHA_XUN, //查询
ZOU_ZHI, //走纸
BEI_GUANG, //背光
CUN_RU, //存入
GUI_LING, //归零
GUAN_JI, //关机
DIAO_CHENG,
T9_INPUT,////////////新增
SET_USER_NAME,////////////新增
SET_TYPE_NAME,////////////新增
SET_CANSHU, ////////////新增
PRINT_ALL, //全部打印
PRINT_TYPE, //按类别打印
PRINT_DATE, //按日期打印
PRINT_TYPE_DATE,//按类别和日期打印*/
SET_SCALE,//设置分度值
SET_MAX_WEIGHT//设置最大量程值 //调称
}work_mode;
//for state line;
BOOL flag_1,flag_1_1; //第一行的标志
BOOL flag_2,flag_2_2;
BOOL flag_3,flag_3_3;
BOOL flag_4,flag_4_4;
BOOL flag_5,flag_5_5;
BOOL flag_6,flag_6_6;
sbit aaa=P3^6; //液晶背光
sbit bbb=P3^7;
/////////增加变量定义//////////////////////////////
BOOL pulse=0;//定时脉冲(增加)
BOOL key_flag1=0;//按键标志位1(增加)
BOOL key_flag2=0;//按键标志位2(增加)
//int code_flag=0;//定义密码标志位(增加)
BYTE counter1=0;//计数变量1(增加)
BYTE counter2=0;//计数变量2(增加)
//按键值变量(增加)
//-------------------------------//
//BYTE save_current_code[6]={0};/////////////////////
BYTE save_tem_code1[6]={9,8,5,8,6,3};////////////////////////用户名密码
BYTE save_tem_code2[6]={9,3,5,9,4,7};////////////////////////类别名密码
//BYTE save_tem_code3[6]={7,6,5,4,3,2};////////////////////////参数设置密码
//----------END----------------//
//////////////////////////////////////////////////
//BYTE mm=0,nn=0;
BYTE key_num;//新增定义
//WORD max_weight; //最大称重量程
WORD static_weight; //将零点重量值定义为静态重量值 (增?
BYTE tem[6]={0};//用于输入最大量程
//-------------------------//
//按键音
void main()
{
int ii;
Delay1(5000) ;
main_init(); //初始化
Delay1(5000) ;
lcd_Init(); //显示初始化为图形
lcd_Disp_Clear();
lcd_Disp_Pho(tylx_new_mono); //显示公司图形
timer1_init(TIME_2S); //延时
while(count_timer1);
lcd_Disp_Clear_pho();
// lcd_Disp_shuzi(shuzi_zimo_a5,0);
// lcd_Disp_shuzi(shuzi_zimo_a5,4);
// timer1_init(TIME_2S); //延时
// while(count_timer1);
lcd_Write_Cmd(0x34);
save_unit.xu_num=1;
save_unit.weight_data=12;
//Write_Data_EEPROM(save_unit.xu_num);
//save_unit.weight_data=0;
//Read_Data_EEPROM();
if (save_unit.weight_data<90000) save_unit.weight_data=18;
for (ii=0;ii<2;ii++)
{
//lcd_Disp_Clear_pho();
//lcd_Disp_Clear();
//new_receive_weight=save_unit.weight_data;
lcd_Display_zhonglang(save_unit.weight_data); //显示重量(大字)
//timer1_init(TIME_2S);
//while(count_timer1);
}
lcd_Disp_Clear();
lcd_Disp_Text_Line_Order(0x82,tylx1); //显示公司电话
lcd_Disp_Text_Line_Order(0x92,tylx2);
lcd_Disp_Text_Line_Order(0x88,tylx3);
lcd_Disp_Text_Line_Order(0x98,tylx4);
timer1_init(TIME_2S);
while(count_timer1);
lcd_Disp_Clear();
display_normal();//second line //显示正常模式
ch451_init(); //键盘初始化
/*****************开总中断********************/
EA =1;
/*********************************************/
//进入主循环
while(1){
display_state_icon();//first line //显示符号
if(renew_key_id)
{ //has key push
renew_key_id = 0;
timer1_init(TIME_4S);
switch (work_mode)
{
case NORMAL:
enter_normal_work_mode(ch451_key); //正常
break;
case ZONG_CI:
enter_zongci_work_mode(ch451_key); //总次
key_flag1=0;
key_flag2=0;
break;
case LEI_BIE:
enter_leibie_work_mode(ch451_key); //类别
key_flag1=0;
key_flag2=0;
break;
case SHE_PI:
enter_shepi_work_mode(ch451_key); //设皮
key_flag1=0;
key_flag2=0;
break;
case RI_QI:
enter_riqi_work_mode(ch451_key); //日期
key_flag1=0;
key_flag2=0;
break;
case SHI_JIAN:
enter_shijian_work_mode(ch451_key); //时间
key_flag1=0;
key_flag2=0;
break;
case ZONG_QING:
enter_zongqing_work_mode(ch451_key); //总清
key_flag1=0;
key_flag2=0;
break;
case DAN_QING:
enter_danqing_work_mode(ch451_key); //单清
key_flag1=0;
key_flag2=0;
break;
case HUI_ZONG:
enter_huizong_work_mode(ch451_key); //汇总
key_flag1=0;
key_flag2=0;
break;
case ZI_DONG:
enter_zidong_work_mode(ch451_key); //自动
key_flag1=0;
key_flag2=0;
break;
case JIU_CUO:
enter_jiucuo_work_mode(ch451_key); //纠错
key_flag1=0;
key_flag2=0;
break;
case ZONG_ZHONG:
enter_zongzhong_work_mode(ch451_key); //总重
key_flag1=0;
key_flag2=0;
break;
case CHA_XUN:
enter_chaxun_work_mode(ch451_key); //查询
key_flag1=0;
key_flag2=0;
break;
case ZOU_ZHI:
enter_zouzhi_work_mode(ch451_key); //走纸
key_flag1=0;
key_flag2=0;
break;
case CUN_RU:
enter_cunru_work_mode(ch451_key); //存入
key_flag1=0;
key_flag2=0;
break;
case BEI_GUANG: //背光
enter_beiguang_work_mode(ch451_key);
key_flag1=0;
key_flag2=0;
break;
case GUI_LING:
enter_guiling_work_mode(ch451_key); //归零
key_flag1=0;
key_flag2=0;
break;
case GUAN_JI:
enter_guangji_work_mode(ch451_key); //关机
break;
case DIAO_CHENG:
enter_diaocheng_work_mode(ch451_key); //调称
break;
//****************************************************//
case SET_USER_NAME: //设置用户名
enter_user_name_work_mode(ch451_key); //进入用户名设置自程序
break;
case SET_TYPE_NAME: //设置类别名
enter_type_name_work_mode(ch451_key); //进入类别名设置子程序
break;
case SET_CANSHU: //设置参数
enter_canshu_work_mode(ch451_key); //进入参数设置子程序
break;
case PRINT_ALL: //全部
enter_all_print_work_mode(ch451_key); //进入全部打印子程序
break;
case PRINT_TYPE: //按类别打印
enter_type_print_work_mode(ch451_key); //进入按类汇总打印
break;
case PRINT_DATE: //按日期打印
enter_date_print_work_mode(ch451_key); //进入按日汇总打印
break;
case PRINT_TYPE_DATE: //按类别日期打印
enter_date_type_print_work_mode(ch451_key); //进入按类日汇总打印
break;
case SET_SCALE: //设置分度值
enter_scale_work_mode(ch451_key); //进入分度值设置
break;
case SET_MAX_WEIGHT: //设置最大量程值
enter_max_weight_work_mode(ch451_key); //进入最大量程设置
break;
//+++++++++++++++++++++++++++++++++++++++++++++++++++//
default : break;
}
}
else
{ //no key
if(!count_timer1)
{ //timer out ,return normal
work_mode = NORMAL;
lcd_clear_line(2);
lcd_clear_line(3);
}
else
{
continue;
}
}
}//while
}//main
void enter_normal_work_mode(BYTE key_value)
{
BYTE tem;
lcd_clear_line(2);
lcd_clear_line(3);
switch (key_value){
case ZONGCI_KEY: //总次
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = ZONG_CI;
cc256R(&rece_buf[0] ,0x02,0x0000) ; //hl//初始化时读出内存中记录的数量
save_current_num = rece_buf[0]*0x100+rece_buf[1]; //hl//初始化
Delay1(5000);
lcd_Display_zongci(0x88);
break;
case LEIBIE_KEY: //类别
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = LEI_BIE;
save_tem_type = save_current_type;
set_type_num_address_bydata(save_tem_type);
lcd_Display_leibie(0x88);
set_type_struct.count = 0;
break;
case SHEPI_KEY: //设皮
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = SHE_PI;
save_tem_pizhong = save_current_pizhong;
set_pizhong_num_address_bydata(save_tem_pizhong);
lcd_Display_pizhong(0x88);
set_pizhong_struct.count = 0;
break;
case RIQI_KEY: //日期
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = RI_QI;
Get_1302(&data_to_1302);
get_date_from_1302_data(&data_to_1302);
lcd_Display_date(0x88);
lcd_Display_week(0x9A);
set_date_struct.count = 0;
set_code_struct.count = 0;/////////
break;
case SHIJIAN_KEY: //时间
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = SHI_JIAN;
Get_1302(&data_to_1302);
get_time_from_1302_data(&data_to_1302);
lcd_Display_time(0x88);
set_time_struct.count = 0;
set_code_struct.count = 0;///////
set_pinyin_struct.count = 0;////
set_name_struct.count = 0;//////
break;
case ZONGQING_KEY: //总清
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = ZONG_QING;
lcd_Disp_Text_Line_Order(0x88,tylx11);
break;
case DANQING_KEY: //单清
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = DAN_QING;
lcd_Disp_Text_Line_Order(0x88,tylx12);
break;
case HUIZONG_KEY: //汇总
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = HUI_ZONG;
lcd_Disp_Text_Line_Order(0x88,tylx13);
Delay1(5000);
dayin_huizong();
Delay1(5000);
break;
case ZIDONG_KEY: //自动
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = ZI_DONG;
save_current_num++;
lcd_Disp_Text_Line_Order(0x88,tylx14);
break;
case JIUCUO_KEY: //纠错
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = JIU_CUO;
cc256R(&rece_buf[0] ,0x02,0x0000) ; //hl//初始化时读出内存中记录的数量
save_current_num = rece_buf[0]*0x100+rece_buf[1]; //hl//初始化
Delay1(5000);
lcd_Disp_Text_Line_Order(0x88,tylx15);
Delay1(5000);
Delay1(5000);
Delay1(5000);
Delay1(5000);
print_record();
Delay1(5000);
Delay1(5000);
break;
case ZONGZHONG_KEY: //总重
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = ZONG_ZHONG;
cc256R(&rece_buf[0] ,0x04,0x0002) ; //hl//初始化时读出内存中记录的总重
Delay1(5000);
all_weight = rece_buf[0]*0x1000000+rece_buf[1]*0x10000+ rece_buf[2]*0x100+rece_buf[3];//hl//初始化
Delay1(5000);
lcd_Display_zongzhong(0x88); //hl//显示初始化时设置的皮重100
lcd_Disp_Text_Line_Order(0x88,tylx23);
break;
case CHAXUN_KEY: //查询
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = CHA_XUN;
lcd_Disp_Text_Line_Order(0x88,tylx17);
break;
case ZOUZHI_KEY: //走纸
bbb=!bbb;
delay();
bbb=!bbb;
work_mode = ZOU_ZHI;
lcd_Disp_Text_Line_Order(0x88,tylx18);
huanhang_dayin();
break;
case BEIGUANG_KEY: //背光
bbb=!bbb;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -