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

📄 check.c.bak

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 BAK
📖 第 1 页 / 共 2 页
字号:
/*
* Copyright (c) 2004,成都港顺科技发展有限公司
* All rights reserved.
*
* 编 译 器:Keil:C Compiler:7.20;Assembler:7.10
* 工程名称:POS-Test.UV2
* 文件名称:Check.C
* 摘    要:税控机自检
*
* 单 片 机:uPSD3254
* 当前版本:0.4
* 作    者:林云
* 完成日期:2004-10-25 14:45
*/
#include "Main.h"

//显示方格
void LcdDisBlock(void)
{ 
	unsigned char i,j,k,val = 0xff,val1=0;
  	  
  	LcdWriteCommand(0x3f,LcdChip1);  
  	LcdWriteCommand(0x3f,LcdChip2);   
  	LcdWriteCommand(0x3f,LcdChip3);       
   	for(i=0;i<8;i++)
    {
    	LcdWriteCommand(i|0xb8,LcdChip1);
      	LcdWriteCommand(i|0xb8,LcdChip2);
      	LcdWriteCommand(i|0xb8,LcdChip3);
      	LcdWriteCommand(0x40,LcdChip1);  //列地址设置指令  左半屏 
      	LcdWriteCommand(0x40,LcdChip2);  //列地址设置指令  右半屏
      	LcdWriteCommand(0x40,LcdChip3);  //列地址设置指令  右半屏  
      	
      	for(j=0;j<4;j++)
      	{ 
      		for(k=0;k<16;k++)
      	    	LcdWriteData(val,LcdChip1); 
      	    val=~val;
      	}
      	for(j=0;j<4;j++)
      	{ 
      		for(k=0;k<16;k++)
      	     	LcdWriteData(val,LcdChip2); 
      	    val=~val;
      	}
      	for(j=0;j<4;j++)
      	{ 
      		for(k=0;k<16;k++)
      	     	LcdWriteData(val,LcdChip3); 
      	    val=~val;
      	}
      	val = val1;
      	val1 = ~val1;
    }    
}

//LCD测试
void CheckLcd(void)
{  uchar val;
   uint i;

   LcdDisplay(0,0,"    以下测试您应可以在显",4);
   LcdDisplay(16,0,"示屏上看见一些黑白方块",4);
   LcdDisplay(32,16,"按[确认]键继续",4);
   LcdDisplay(48,16,"按[退出]键退出",4);
   while(1)
    {
       val = GetKey();
       if(val==0xff) continue;
       if(val==K_HJ)  //确认
         {
             LcdDisBlock();  //显示黑白方块
             for(i=0;i<35000;i++)
               if(GetKey()==K_HJ) break; //延时
             LcdClear(192);
             LcdDisplay(8,24,"你看见黑白方块了吗?",4);
             LcdDisplay(32,16,"看见了请按[1]键",4);
             LcdDisplay(48,16,"没看见请按[0]键",4);
             while(1)
              { val = GetKey();
                if(val!=0xff)
                  {  if(val==K_0)  //0键
                        { LcdDisplay(0,0," ",4);   //清除本行内容
                          LcdDisplay(16,56,"LCD有故障!",4);
                          LcdDisplay(32,0," ",4);
                          LcdDisplay(48,16,"按[退出]键退出",4);
                          i = 0;
                          while(i<25000)           //如果没有按键, 延时退出
                            { val = GetKey();
                              if(val==K_TC) return;
                              i++;
                            }
                          return;
                        }
                     if(val==K_1)  //1键
                        { LcdDisplay(0,0," ",4);   //清除本行内容
                          LcdDisplay(16,56,"LCD完好无损!",4);
                          LcdDisplay(32,0," ",4);
                          LcdDisplay(48,16,"按[退出]键退出",4);
                          i = 0;
                          while(i<25000)           //如果没有按键, 延时退出
                            { val = GetKey();
                              if(val==K_TC) return;
                              i++;
                            }
                          return;
                        }
                  }
              }
         }
       if(val==K_TC)  //退出
         {
            return;
         }
    }
}

struct KeyIndex
   { uchar KeyVal;
     uchar *KeyChina;
   };
//键盘测试
void CheckKey(void)
{
	uchar i,val,str[10],num;
   	const struct KeyIndex InputIndex[] =
   	{
	{K_0,"数字0"},{K_1,"数字1"},{K_2,"数字2"},
	{K_3,"数字3"},{K_4,"数字4"},{K_5,"数字5"},
	{K_6,"数字6"},{K_7,"数字7"},{K_8,"数字8"},
	{K_9,"数字9"},{K_00,"数字00"},{K_DOT,"小数点"},
	{K_SL,"数量/乘号"},{K_BF,"百分比%"},{K_PLU,"PLU"},
	{K_XM1,"项目1"},{K_XM2,"项目2"},{K_XM3,"项目3"},
	{K_XM4,"项目4"},{K_XM5,"项目5"},{K_XM6,"项目6"},
	{K_XM7,"项目7"},{K_XM8,"项目8"},{K_XM9,"项目9"},
	{K_XM10,"项目10"},{K_XM11,"项目11"},{K_XM12,"项目12"},
	{K_XM13,"项目13"},{K_XM14,"项目14"},{K_XM15,"项目15"},
	{K_XM16,"项目16"},{K_XM17,"项目17"},{K_XM18,"项目18"},
	{K_XM19,"项目19"},{K_XM20,"项目20"},{K_XM21,"项目21"},
	{K_XM22,"项目22"},{K_XM23,"项目23"},{ K_XM24,"项目24"},
	{K_XM25,"项目25"},{K_HD,"换档"},{K_JZ,"进纸"},{K_TZ,"退纸"},
	{K_QC,"清除"},{K_LJ,"订正"},{K_SJ,"时间"},
	{K_DZ,"打折"},{K_JF,"加费"},{K_XJ,"小计"},{K_BZ,"帮助"},
	{K_TH,"退票/废票"},	{K_SR,"输入切换"},{K_TC,"退出/注销"},
  	{K_DL,"签到/登陆"},{K_CX,"销售查询"},{K_SK,"刷卡消费"},
	{K_GN,"系统功能"},{K_TM,"手工条码"}, {K_HJ,"合计/确认"},
	{K_UP,"向上"},{K_DOWN,"向下"},{K_LEFT,"向左"},{K_RIGHT,"向右"}
	};

  	num=0;
	LcdDisplay(0, 0,"  本程序在您按键时会将对",4);
	LcdDisplay(16,0,"应的键显示出来; 连续按两",4);
	LcdDisplay(32,0,"次<退出>键退出本测试程序",4);
	LcdDisplay(48,0,"--按<确认>键开始测试",4);
   	while(1)
    {
    	val = KeyScan();
       	if(val==K_HJ)   //确认
        {
         	LcdDisplay(8, 16,"请按键:",3);
         	DisplayFullRec(6,74,26,172,1);
         	LcdDisplay(40, 24,"按键数:0   共63个键",4);
         	while(1)
         	{
         		val = KeyScan();
         	    for(i=0;i<63;i++)
         	    {
         	        if(val == InputIndex[i].KeyVal)  //找到键
         	        {
         	            LcdDisplay(8, 76,"         ",0);  //清除键值
         	            LcdDisplay(8, 76,InputIndex[i].KeyChina,0); //显示键值
         	            if(val==K_TC)num++;
         	            if(num>1)return;
         	        }
         	    }
        	    NumToStr(num,str,SwitchInt);  //转换成字符串
         	    LcdDisplay(40,80,str,0);
			}
		}

	}
}
//打印机测试
void CheckPrint(void)
{  uchar val,str[10];

   //BlackOrientation();
   LcdClear(192);
   LcdDisplay(8,8,"确实要打印测试页吗?",4);
   LcdDisplay(32,16,"按[确认]键打印",4);
   LcdDisplay(48,16,"按[退出]键退出",4);
   while(1)
     { val = GetKey();
       if(val == K_HJ)  //确认
         {  LcdClear(192);
            LcdDisplay(8,0,"  如果测试页已打印请按确",0);
            LcdDisplay(24,0,"认键,否则打印机有故障!",0);
   		    LcdDisplay(48,16," [确认]  [退出]",4);
   		    str[0] = 0x1c; str[1] = 0x57; str[2] = 1;
   		    UartTxdPrinter(3,str);
            PrintStr("成都港顺科技发展有限公司");
            PrintStr("   扫印机测试页");
            str[2] = 0;
            UartTxdPrinter(3,str);
            PrintStr("恭喜!");
            PrintStr("如果您可以读取这个信息,则说明这台税控机上的打印机没有问题!");
            PrintStr("以下信息是本机的一些参数:");
            PrintStr("税控机型号: GS-800");
            PrintStr("操作系统: GS-OS");
            PrintStr("打印机驱动程序: PrintStr");
            PrintStr("CPU:   24MHz");
            PrintStr("RAM:   32K");
            PrintStr("ROM:   256K+32K");
            PrintStr("这是打印测试页的结尾.\n\n");
            while(1)
              { val = GetKey();
                if((val == K_HJ)||(val==K_TC))   return;
              }
         }
       if(val == K_TC) return;
    }
}
void CheckBox(void)
{  uchar val;

   LcdClear(192);
   LcdDisplay(0,64,"钱箱测试",0);
   LcdDisplay(24,10,"请按[1]键打开钱箱!",0);
   LcdDisplay(48,16," [确认]  [退出]",4);
   while(1)
    {  val = GetKey();
       if((val==K_HJ)||(val==K_TC)) return;
       if(val==K_1)
         {
            //开钱箱
         }
    }
}
//通信测试
void CheckCom(void)
{  uchar val;
   ulong SendNum=0,RecvNum=0,TryNum=0,ErrorNum=0;

   LcdDisplay(0,64,"通信测试",4);
   LcdDisplay(16,16,"  请连接好通讯线并打开管",4);
   LcdDisplay(32,0,"理软件,你连接好了吗?",4);
   LcdDisplay(48,16," [确认]  [退出]",4);
   while(1)
     { val = GetKey();
       if(val == K_TC) return;
       if(val == K_HJ)
         {
            LcdClear(192);
            LcdDisplay(8,0, " 发送:0    接收:0     ",4);
            LcdDisplay(24,0," 重试:0    错误:0     ",4);
  			LcdDisplay(48,16," [确认]  [退出]",4);
  			while(1)
  			  {  //UartRxd(6,"888888");
  			     val = GetKey();
  			     if((val==K_HJ)||(val==K_TC)) return;
  			  }
         }
     }
}

/*
////////////////////////////////////////////////////////////////////
//Mode = 1 : 单字节编码
//Mode = 2 : 双字节编码
//Mode = 4 : 四字节编码
////////////////////////////////////////////////////////////////////
void CodingDisplay(uchar mode)
{
	uchar i,CodeDis[10],dat[2];
	uchar str1[]={"1字节编码"},str2[25];
//	ulong Bm;
	switch(mode)
	{
		case 1:
			strcpy(str2,"20<=编码<=7F");
			break;
		case 2:
			str1[0]='2';
			strcpy(str2,"8140<=编码<=F7FE");
			break;
		case 4:
			str1[0]='4';
			strcpy(str2,"8139EE39--82358738");
			break;
		default:return;
	}
	LcdDisplay(0,0,str1,3);
	LcdDisplay(16,0,str2,0);
	i=mode;
	mode<<=1;
	while(1)
	{
		LcdDisplay(32,0,"输入编码:         ",0);
		LcdDisplay(48,0,"对应字符:",0);	
		dat[0]=0;
		memset(CodeDis,0,sizeof(CodeDis));
		GetBcd(32,72,CodeDis,mode,dat);
		if(dat[0] == K_TC)return;		
		CodeDis[i]=0;
		LcdDisplay(48,72,CodeDis,0);
	}
}

void CheckGB18030()
{
	uchar Ln=1,Hov=1,InitKey[3];

	while(1)
	{
		WindowsSet(3);
		strcpy(&WinHint[0][1],"1.单字节编码");
		strcpy(&WinHint[1][1],"2.双字节编码");
  		strcpy(&WinHint[2][1],"3.四字节编码");
		InitKey[0]=K_HJ;
		InitKey[1]=K_TC;
		InitKey[2]=0;
		Ln = Windows(Ln,0,InitKey);
		if(*InitKey == K_TC) return;
		switch(Ln)
		{
			case 1:
				CodingDisplay(1);
				break;
			case 2:
				CodingDisplay(2);
				break;
			case 3:
				CodingDisplay(4);
				break;
			default:break;
		}
	}
}
*/

void CheckSystem(void)
{  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -