⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c.bak

📁 这是一称的项目原文件,包括T9汉字输入,打印机,24C512,已经引用到产品上
💻 BAK
📖 第 1 页 / 共 3 页
字号:
/*******************************************************************************
*  标题:  天宇蓝翔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 + -