📄 ybmain.c
字号:
0x86,0x84,0xFF,0x80,0x80,0xFC,0x00,0x00,};
char code zao1[16]={0x00,0x02,0x12,0x12,0x12,0x12,0xFE,0x12,//造
0x12,0x72,0x0A,0x02,0x00,0x63,0x82,0x02,};
char code zao2[16]={0x00,0x02,0x02,0xFA,0x92,0x92,0x92,0x92,
0x92,0xFA,0x02,0x02,0x04,0xF8,0x04,0x02,};
char code quan1[16]={0x00,0x00,0x04,0x06,0x0E,0x0A,0x12,0x22,//全
0xC3,0x22,0x12,0x0A,0x06,0x02,0x01,0x00,};
char code quan2[16]={0x00,0x02,0x06,0x22,0x62,0x22,0x22,0x22,
0xFE,0x22,0x22,0x22,0x22,0x02,0x02,0x00,};
char code hua1[16]={0x00,0x04,0x44,0x44,0x44,0x3F,0x24,0x24,//话
0x24,0x24,0x04,0x00,0x23,0x72,0x82,0x02,};
char code hua2[16]={0x00,0x00,0x7E,0x44,0x44,0xC4,0x44,0x44,
0x7E,0x00,0x08,0x04,0xFE,0x00,0x00,0x00,};
char code ke1[16]={0x00,0x20,0x30,0x28,0x24,0x26,0x25,0x24,//客
0x64,0xA5,0x3E,0x22,0x21,0x20,0x18,0x00,};
char code ke2[16]={0x00,0x20,0x30,0x20,0x7F,0x62,0x62,0xA2,
0xA2,0x62,0x62,0x3F,0x20,0xA0,0x10,0x10,};
char code hu41[16]={0x00,0x00,0x1F,0x11,0x11,0x11,0x71,0x51,//户
0x91,0x11,0x11,0x11,0x1F,0x00,0x00,0x00,};
char code hu42[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF0,0x0C,0x02,0x01,};
char code ming1[16]={0x00,0x00,0x00,0x20,0x30,0x28,0x24,0x22,//名
0x21,0x22,0xE4,0x10,0x08,0x04,0x02,0x00,};
char code ming2[16]={0x00,0x00,0x00,0x7E,0x44,0x44,0x44,0x44,
0x44,0xC4,0xC4,0x7E,0x40,0x20,0x20,0x20,};
char code di21[16]={0x00,0x08,0x1F,0x08,0x08,0xFF,0x04,0x04,//地
0x7F,0x02,0x0A,0x08,0x7F,0x08,0x08,0x08,};
char code di22[16]={0x00,0x0E,0xC2,0x22,0x42,0xF2,0x02,0x02,
0xFC,0x00,0x10,0x10,0xF8,0x08,0x04,0x04,};
char code pai1[16]={0x00,0x00,0x7F,0x49,0x49,0x7D,0xCB,0x49,//牌
0x7F,0x00,0x08,0xF9,0x09,0x09,0x7F,0x00,};
char code pai2[16]={0x00,0x20,0xA0,0x20,0x20,0xFF,0x20,0xA0,
0x60,0x20,0x20,0xFE,0x00,0x00,0xFC,0x02,};
char code ma1[16]={0x00,0x00,0x01,0x7F,0x41,0x41,0x41,0x5F,//码
0x40,0x00,0x43,0x42,0x7A,0x47,0x41,0x40,};
char code ma2[16]={0x00,0x00,0xFC,0x02,0x21,0x22,0x20,0x20,
0x20,0x00,0xFC,0x08,0x08,0xFE,0x00,0x80,};
char code lei1[16]={0x00,0x00,0x00,0xF8,0xA8,0xAA,0xA9,0xA9,//累
0xF9,0xAD,0xAB,0xA9,0xF8,0x00,0x00,0x00,};
char code lei2[16]={0x00,0x00,0x00,0x36,0x64,0xA8,0x20,0x3E,
0xA1,0x62,0x60,0x2C,0x02,0x00,0x00,0x00,};
char code ci1[16]={0x00,0x10,0x18,0x14,0x10,0x10,0x1F,0x10,//次
0xF0,0x0C,0x32,0x0C,0x03,0x38,0x40,0x00,};
char code ci2[16]={0x00,0x04,0x06,0x0C,0x10,0x60,0x80,0xC0,
0x20,0x10,0x08,0x04,0x04,0xC2,0x7A,0x40,};
char code shu41[16]={0x00,0x08,0x0F,0x08,0x48,0xF8,0x0F,0x01,//数
0x4A,0x2A,0x1C,0xFF,0x1C,0x2A,0x49,0x08,};
char code shu42[16]={0x00,0x04,0x06,0xCC,0x30,0xC8,0x04,0x02,
0x40,0x64,0x58,0xC8,0x74,0x54,0x42,0x42,};
//过年在家加的,打印时应该从最后一个字节开始发,依次发到第一个字节
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
//键盘显示程序
///////////////////////////////////////////////////////////////////
unsigned char code selfexamcode[10]={0xFE,0x48,0xBD,0x6D,0xCB,0x67,0xF7,0x4C,0xFF,0x6F,};//0,1,2,3,4,5,6,7,8,9对应码}
//显示码
unsigned char code table[50]={0x7E,0x48,0x3D,0x6D,0x4B,0x67,0x77,0x4C,0x7F,0x6F, //0,1,2,3,4,5,6,7,8,9对应码
0x5F,0x73,0x36,0x79,0x37,0x17,0x32,0x5B,0x71,0xF1, //A-10,b-11,C-12,d-13,E-14,F-15,L-16,H-17,o-18,a-19对应码
0x00,0x33,0x31,0x5E,0x01,0x1F,0x68,0x67,0x7A,0x13, //无显示-20,t-21,c-22,n-23,--24,P-25,J-26,S-27,U-28,r-29
0x6b,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, //y-31
0xFE,0xC8,0xBD,0xED,0xCB,0xE7,0xF7,0xBC,0xFF,0xEF,
};
//位码
unsigned char code wcode[7]={0x00,0x04,0x08,0x10,0x20,0x40,0x80};
#endif
#ifdef TT
//
unsigned char idata dcode[6];
//定义键盘
#define CC 1
#define CH 2
#define DY 11
#define RQ 14
#define TC 17
#define SR 50
#define ZN 40
#define BD 0
#define BB 8
bit idata FLAG=0;//键盘标志
bit idata KEYDN,KEYUP=1;
unsigned char idata m,ptr=0;//键码
unsigned char idata keycode=0;
//unsigned char Count=0;
#endif
#ifndef TT
void SweepLED(unsigned char sel,unsigned char pp);
char code displaycode[22]={
0x7E,0x48,0x3D,0x6D,0x4B,0x67,0x77,0x4C,0x7F,0x6F,//0,1,2,3,4,5,6,7,8,9对应码
0x5F,0x73,0x36,0x79,0x37,0x17,0xC7,0x89,0xA3,0xFF,0x0,0x01,//A,b,c,d,E,F,L,H,o,a对应码
};
#endif
#ifdef TT
//unsigned char KeyScan(); //键盘扫描,返回键值
void SMLed(unsigned char duanma, unsigned char weima);
void delay(unsigned char n);
void SweepLED(unsigned char duanma);
void DisplayCheck();
void SMposLed(unsigned char dpos, unsigned char wpos);
void DisplayCode(unsigned char*codepos,unsigned char len);
void BlackLED();
#endif
#ifdef TT
bit bBDing=0;
void scan();
void DisplayCheck(); //LED显示自检
void PrinterSetting();//打印机设置;
#endif
#ifdef TT
//////////////////////////////////////////////////////////////////
//键盘处理函数
//////////////////////////////////////////////////////////////////
unsigned char KeyScan(); //键盘扫描,返回键值
unsigned char tint[6];
//////////////////////////////////////////////////////////////////
void Bding_Key42(); //进行入标定程序;
bit CheckPassW(); //检验密码
void SetParam(); //设置参数
void BDing(); //标定;
void SpecFunc(); //特殊功能?
///////////////////////////////////////////////////////////////////
void HandZero_Key41();//手动置0;
//////////////////////////////////////////////////////////////////
void ZiPi_Key31();//置皮称重;
void Bake1_Key11();//?/按车号调用皮重打印操作;
void Bake2_Key21();//两次称重贮存打印操作;
//////////////////////////////////////////////////////////////////
void ClearRec_Key43();//清除记录;
//////////////////////////////////////////////////////////////////
void Qurey_Key22();//查询称重记录;
void QureyCarNum();//按车号查询称重记录;
void QureyHuoNum();//按货号查询称重记录;
void QureyDate();//按日期查询称重记录;
void Display_PrintRec(unsigned int nRec);//显示并随时打印记录;
void IntToBCD(long num,unsigned char *bcd);//整型转化为六位BCD码;
bit idata bQUERY=0;
long longQurey;//显示变量;
//////////////////////////////////////////////////////////////////
void List_Key32();//报表打印;
void ListCarNum();//按车号报表打印
void ListHuoNum();//按货号报表打印
void ListDate();//按日期报表打印
//////////////////////////////////////////////////////////////////
void Add_Key33();//称重记录的净重累计打印;
void AddCarNum();//按车号净重累计打印;
void AddHuoNum();//按货号净重累计打印;
#define SST
#ifdef SST
//////////////////////////////////////////////////////////////////
// 串行通信程序;
//定义晶振
#define FOSC 11059200 //11.0592MHz
//定义发送缓冲区大小
#define COUNT 11
void UART_init(); //串口初始化函数?
#endif
///////////////////////////////////////////////////////////////////
//AD程序
//////////////////////////////////////////////////////////////////
bit idata zero_flag;
bit idata fuhao;
unsigned char idata dot_number;
unsigned char idata display1,display2,display3,display4,display5,display6;
unsigned char idata tchar;
unsigned char idata dis[6];
unsigned long idata timer_all,timer_ok,uu,aa;
unsigned char idata timer_number;
void calculate();
unsigned long div(unsigned long x)
{
return x/10;
}
///////////////////////////////////////////////////////////////////
//24C64程序
//////////////////////////////////////////////////////////////////
bit I2C_Start(void);
void I2C_Stop(void);
void I2C_Ack(void);
void I2C_Nack(void);
bit I2C_Send_Byte( uchar);
uchar I2C_Receive_Byte(void);
void AT24C64_R(void *mcu_address,uint AT24C64_address,uint count);
void AT24C64_W(void *mcu_address,uint AT24C64_address,uint count);
void Delay_10_uS(void)
{
char i=10;
while(i--);
}
void Delay_N_mS( uint n_milisecond) /* n mS delay */
{
uchar i;
while(n_milisecond--)
{
i=37;
while(i--);
}
}
//////////////////////////////////////////////////////////////////
//系统程序
//////////////////////////////////////////////////////////////////
void Init(); //初始化系统
void DisplayWeight();//显示重量
void DisplayWeightCode(); //显示内码;
//输出函数
void Rs485Com(); //485串行通讯
void AutoPrint(); //自动打印
//void AutoSave(); //自动保存
#endif
////////////////////////////////////////////////////////////////////////
//系统主控程序
////////////////////////////////////////////////////////////////////////
//#define MTEST //主控程序测试
//#define PRINTTEST//打印机测试
//#define DisplayT//显示测试
main()
{
#ifdef TT
unsigned char key=66;
Init(); //初始化系统
// DisplayCheck(); //LED显示自检
#endif
//EA=0;
// T_RST=0;
#ifndef TT
while(1)
{
v_Get1302(ucCurtime);
SweepLED(0x04,displaycode[ucCurtime[0]&0x0F]);
SweepLED(0x08,displaycode[(ucCurtime[0]&0x0F0)>>4]);
SweepLED(0x10,displaycode[ucCurtime[1]&0x0F]);
SweepLED(0x20,displaycode[(ucCurtime[1]&0x0F0)>>4]);
SweepLED(0x40,displaycode[ucCurtime[2]&0x0F]);
SweepLED(0x80,displaycode[(ucCurtime[2]&0x0F0)>>4]);
}
#endif
#ifdef TT
// Count=0;
while(1) //主循环
{
key=KeyScan();
switch(key)
{
case 66://无键按下
DisplayWeight();
break;
case 11://打印
if(G_PrintType==1)
AutoPrint();
break;
case 14://日期/时间,
DateOp_Key24();
break;
case 17://退出
break;
case 40://置0
HandZero_Key41();
break;
case 42://清除
ClearRec_Key43();
break;
case 50://输入
break;
case 1://贮存,1按下
Bake1_Key11();
break;
case 2://车号,2
SMposLed(2,2);
break;
case 3://货号,3
SMposLed(3,3);
break;
case 4://贮存2,4
Bake2_Key21();
break;
case 5://查询,5
Qurey_Key22();
break;
case 6://设置,6
PrinterSetting();
break;
case 7://置皮,7
ZiPi_Key31();
break;
case 8://报表,8
List_Key32();
break;
case 9://累计,9
Add_Key33();
break;
case 0://标定
Bding_Key42();//进行入标定程序;
break;
}
// Rs232Com();
// Rs232Com(G_BuadRate,G_Weight,G_WeiShu,G_LessZero,G_FulLoad); //S232串行通讯;
// Rs485Com(); //485串行通讯
}
// AutoSave(); //自动保存
#endif
}
#ifdef TT
////////////////////////////////////////////////////////////////////////
// 函数名称:24c64同步与初始化程序;
// 入口参数:
// 函数功能:
bit I2C_Start(void)
{
Delay_10_uS();
I2C_SDA =1;
Delay_10_uS();
I2C_SCK =1;
Delay_10_uS();
if ( I2C_SDA == 0) return 0;
if ( I2C_SCK == 0) return 0;
I2C_SDA = 0;
Delay_10_uS();
I2C_SCK = 0;
Delay_10_uS();
return 1;
}
void I2C_Stop(void)
{
Delay_10_uS();
I2C_SDA = 0;
Delay_10_uS();
I2C_SCK = 1;
Delay_10_uS();
I2C_SDA = 1;
Delay_10_uS();
}
void I2C_Ack(void)
{
Delay_10_uS();
I2C_SDA=0;
Delay_10_uS();
I2C_SCK=1;
Delay_10_uS();
I2C_SCK=0;
Delay_10_uS();
}
void I2C_Nack(void)
{
Delay_10_uS();
I2C_SDA=1;
Delay_10_uS();
I2C_SCK=1;
Delay_10_uS();
I2C_SCK=0;
Delay_10_uS();
}
////////////////////////////////////////////////////////////////////////
// 函数名称: I2C_Send_Byte( uchar d)
// 入口参数: 无
// 函数功能:向24C64发送一个字节;
////////////////////////////////////////////////////////////////////////
bit I2C_Send_Byte( uchar d)
{
bit bit_ack;
unsigned char i = 8;
while( i-- )
{
Delay_10_uS();
if ( d &0x80 ) I2C_SDA =1;
else I2C_SDA =0;
Delay_10_uS();
I2C_SCK = 1;
Delay_10_uS();
I2C_SCK = 0;
d = d << 1;
}
Delay_10_uS();
I2C_SDA = 1;
Delay_10_uS();
I2C_SCK = 1;
Delay_10_uS();
bit_ack = I2C_SDA;
I2C_SCK =0;
Delay_10_uS();
return bit_ack;
}
////////////////////////////////////////////////////////////////////////
// 函数名称: I2C_Receive_Byte(void)
// 入口参数: 无
// 函数功能:从24C64接收一个字节;
////////////////////////////////////////////////////////////////////////
uchar I2C_Receive_Byte(void)
{
uchar d;
uchar i = 8;
Delay_10_uS();
I2C_SDA = 1;
while ( i--)
{
d = d << 1;
Delay_10_uS();
I2C_SCK =1;
if ( I2C_SDA ) d++;
Delay_10_uS();
I2C_SCK =0;
}
return d;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -