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

📄 ybmain.c

📁 某采用积分式AD的汽车衡完整单片机C程序
💻 C
📖 第 1 页 / 共 5 页
字号:
			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 + -