📄 set.c
字号:
#include <intrins.h>
#include <24C02.h>
#include <lcd128x64.h>
#include <keyboard451.h>
#include <print.h>
#include <set.h>
//根据数字去查找每个位数的地址,在液晶那边为每个位设置了一个地址变量,液晶根据这些变量来显示
WORD save_current_num = 0;
BYTE save_current_type = 0; //类别
BYTE save_tem_type = 0;
long int save_current_pizhong = 0;
long int save_tem_pizhong = 0;
//直接地址操作,不需要经过从数字到地址的转换。
WORD save_current_usename[5] = {0xA1A0,0xA1A0,0xA1A0,0xA1A0,0xA1A0};
WORD save_tem_usename[5] = {0xA1A0,0xA1A0,0xA1A0,0xA1A0,0xA1A0};
set_struct1 set_usename_struct = {
&save_tem_usename,
0,
0
};
set_struct set_type_struct = {
&save_tem_type,
0
};
set_struct set_pizhong_struct = {
&save_tem_pizhong,
0
};
static void set_current_usename_word_bykey(BYTE word_num, WORD num);
/************************************************/
/*void set_type_num_address_bydata(BYTE data100)
/*hl//061117将三位的数据data100化成百位、十位、个位三个数字
/*save_type_buffer.baiwei、save_type_buffer.shiwei、save_type_buffer.gewei
/*****************************************************/
void set_type_num_address_bydata(BYTE data100)
{
BYTE tem_1,tem_2;
tem_1 = data100 / 100;
tem_2 = data100 - tem_1 * 100;
save_type_buffer.baiwei = 0x30 + tem_1;
save_type_buffer.shiwei = 0x30 + tem_2/10;
save_type_buffer.gewei = 0x30 + (data100 - tem_1 * 100 - (tem_2/10) * 10);
}
/**********************************************************************************/
//void set_pizhong_num_address_bydata(long int p_data)
//hl//061117将七位的数据p_data化成百万位、十万位、万位、千位、百位、十位、个位七个数字
//save_pizhong_buffer.baiwanwei、 save_pizhong_buffer.shiwanwei、 save_pizhong_buffer.wanwei
//save_pizhong_buffer.qianwei、 save_pizhong_buffer.baiwei 、save_pizhong_buffer.shiwei 、 save_pizhong_buffer.gewei
/************************************************************************************/
void set_pizhong_num_address_bydata(long int p_data)
{
WORD tem0,tem1,tem2;
BYTE tem3;
save_pizhong_buffer.baiwanwei = 0x30 +p_data/1000000; //百万位
save_pizhong_buffer.shiwanwei = 0x30 +(p_data%1000000)/100000; //十万位
tem0=(p_data%1000000)%100000; //wanqianbaishige
save_pizhong_buffer.wanwei = 0x30 +tem0/10000; //万位
tem1=tem0-(tem0/10000)*10000; //qianbaishige
save_pizhong_buffer.qianwei=0x30+tem1/1000 ; //千位
tem2=tem1-(save_pizhong_buffer.qianwei-0x30)*1000; //baishige
save_pizhong_buffer.baiwei=0x30+tem2 / 100; //百位
tem3 = tem2-( save_pizhong_buffer.baiwei-0x30)*100; //shige
save_pizhong_buffer.shiwei=0x30+tem3/10;
save_pizhong_buffer.gewei=0x30+tem3%10;
Delay1(5000);
if(save_pizhong_buffer.shiwanwei==0x30) save_pizhong_buffer.shiwanwei=0x20;
else return;
if(save_pizhong_buffer.wanwei==0x30) save_pizhong_buffer.wanwei=0x20;
else return;
if(save_pizhong_buffer.qianwei==0x30) save_pizhong_buffer.qianwei=0x20;
else return;
if(save_pizhong_buffer.baiwei==0x30) save_pizhong_buffer.baiwei=0x20;
else return;
if(save_pizhong_buffer.shiwei==0x30) save_pizhong_buffer.shiwei=0x20;
else return;
}
/****************************************************************/
//hl//设置类型值
//最多支持255种类型
/***********************************************************************/
void set_current_type_bykey(BYTE key_value)
{
BYTE num_address;
num_address = get_num_address_from_key_value(key_value);
if (num_address > 10) return; //invalid key
if (num_address == 10){ //back
if(set_type_struct.count > 0){
set_type_struct.count--;
}else{
set_type_struct.count = 0;
}
return;
}
switch (set_type_struct.count){
case 0:
if (num_address > 2) return; // >2
*(BYTE*)(set_type_struct.p_data) = (num_address * 100);
save_type_buffer.baiwei = 0x30 + num_address;
set_type_struct.count++;
break;
case 1:
*(BYTE*)(set_type_struct.p_data) += (num_address * 10);
save_type_buffer.shiwei = 0x30 + num_address;
set_type_struct.count++;
break;
case 2:
*(BYTE*)(set_type_struct.p_data) += num_address;
save_type_buffer.gewei = 0x30 + num_address;
set_type_struct.count++;
break;
default:
break;
}
}
/*****************************************************************/
//hl//设置皮重,最多支持999999皮重
/******************************************************************/
void set_current_pizhong_bykey(BYTE key_value)
{
BYTE num_address;
num_address = get_num_address_from_key_value(key_value);
if (num_address > 10) return; //invalid key
if (num_address == 10)
{ //back
if(set_pizhong_struct.count > 0){
set_pizhong_struct.count--;
}else{
set_pizhong_struct.count = 0;
}
return;
}
switch (set_pizhong_struct.count){
case 0:
if (num_address > 9) return; // >2
*(long int*)(set_pizhong_struct.p_data) = (num_address * 100000);
save_pizhong_buffer.shiwanwei = 0x30 + num_address;
set_pizhong_struct.count++;
break;
case 1:
*(long int*)(set_pizhong_struct.p_data) += (num_address * 10000);
save_pizhong_buffer.wanwei = 0x30 + num_address;
set_pizhong_struct.count++;
break;
case 2:
*(long int*)(set_pizhong_struct.p_data) += (num_address * 1000);
save_pizhong_buffer.qianwei = 0x30 + num_address;
set_pizhong_struct.count++;
break;
case 3:
*(long int*)(set_pizhong_struct.p_data) += (num_address * 100);
save_pizhong_buffer.baiwei = 0x30 + num_address;
set_pizhong_struct.count++;
break;
case 4:
*(long int*)(set_pizhong_struct.p_data) += (num_address * 10);
save_pizhong_buffer.shiwei = 0x30 + num_address;
set_pizhong_struct.count++;
break;
case 5:
*(long int*)(set_pizhong_struct.p_data) += num_address;
save_pizhong_buffer.gewei = 0x30 + num_address;
set_pizhong_struct.count++;
break;
default:
break;
}
}
void set_current_usename_bykey(BYTE key_value)
{
WORD num_address;
num_address = (WORD)get_num_address_from_key_value(key_value);
if (set_usename_struct.count_word < 5)
set_current_usename_word_bykey(set_usename_struct.count_word, num_address);
else return;
}
static void set_current_usename_word_bykey(BYTE word_num, WORD num)
{
switch(set_usename_struct.count_bit){
case 0:
save_tem_usename[word_num] &= 0x0FFF;
save_tem_usename[word_num] |= (num << 12);
set_usename_struct.count_bit++;
break;
case 1:
save_tem_usename[word_num] &= 0xF0FF;
save_tem_usename[word_num] |= (num << 8);
set_usename_struct.count_bit++;
break;
case 2:
save_tem_usename[word_num] &= 0xFF0F;
save_tem_usename[word_num] |= (num << 4);
set_usename_struct.count_bit++;
break;
case 3:
save_tem_usename[word_num] &= 0xFFF0;
save_tem_usename[word_num] |= num;
set_usename_struct.count_bit++;
break;
default :
break;
}
}
/******************************************************************/
//hl//将总重的数值换算为没一位,总共有十位,从第一个不为0的数据开始显示
/**********************************************************************/
void set_zongzhong_num_address_bydata(long int p_data)
{
BYTE qian3;
long int hou7;
qian3= p_data/10000000;
hou7= p_data%10000000;
set_pizhong_num_address_bydata(hou7);
Delay1(5000);
set_type_num_address_bydata(qian3) ;
Delay1(5000);
if( save_type_buffer.baiwei ==0x30) save_type_buffer.baiwei =0x20;
else return;
if( save_type_buffer.shiwei ==0x30) save_type_buffer.shiwei =0x20;
else return;
if( save_type_buffer.gewei ==0x30) save_type_buffer.gewei =0x20;
else return;
if( save_pizhong_buffer.baiwanwei ==0x30) save_pizhong_buffer.baiwanwei =0x20;
else return;
if( save_pizhong_buffer.shiwanwei ==0x30) save_pizhong_buffer.shiwanwei =0x20;
else return;
if( save_pizhong_buffer.wanwei ==0x30) save_pizhong_buffer.wanwei =0x20;
else return;
if( save_pizhong_buffer.qianwei ==0x30) save_pizhong_buffer.qianwei =0x20;
else return;
if( save_pizhong_buffer.baiwei ==0x30) save_pizhong_buffer.baiwei =0x20;
else return;
if( save_pizhong_buffer.shiwei ==0x30) save_pizhong_buffer.shiwei =0x20;
else return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -