您的当前位置:首页正文

电子称2

2020-01-12 来源:榕意旅游网


实 用 电 子 称

摘要

本设计由五个模块电路构成:L-PS型称重传感器、前置放大器、AD574模数转换器、单片机键盘处理模块、液晶显示模块。L-PS型称重传感器能够将0到10公斤的重量转换为0到10毫伏的电压信号,感应灵敏。前置放大器将压力传感器的输出通过放大,将0到10毫伏的电压放大到0到5伏,具有较高的共模抑制比。AD574是单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换芯片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换

器。单片机键盘处理模块除可以对7289实行实时控制外,还可以进行采集数据的处理及液晶的显示。

一、 方案论证与比较 1、

方案一:

微弱电压信号放大器件

欲采用典型的OP07应用电路-- 两极跟随器,之后是两个负反馈的放大

器。但根据实际测量发现,其输出不稳,偏置电压大,且要不断进行手动调零,,所以不采用OP07。 方案二:

其中MAXIUM公司生产的icl7650是一个斩波稳零运放,具有高精度,低漂移,输出稳定的特点。而且使用时不需要低通和高通滤波器,通过CMOS电路的巧妙设计基本上消除了由于斩波开关而造成的尖峰泄露。其输入电压介于3和8负之间使用安全,且容易提供。由于ICL7650具有相当好的性能,本设计采用它。

2、模数转换器

方案一:

AD0809是CMOS集成电路,属于逐次逼近比较型8位模数转换器,转换时间为100 us,数据输出端内部具有三态输出锁存器,可与单片机数据总线直接相连;而且有8路模拟开关,可直接连接8个模拟量,并可程控选择对其中一个模拟量进行转换。但由于其转换慢,精度更是达不到要求。输入电压最大是5伏电压,因此,其精度为5/256= 0.019,超出了题目要求误差±0.005。 方案二:

AD574A是单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换器。其性能指标为:

非线性误差:小于±1/2LBS或±1LBS 转换速率:25us

模拟电压输入范围:0—10V和0—20V,0—±5V和0—±10V两档四种

电源电压:±15V和5V 数据输出格式:12位/8位

芯片工作模式:全速工作模式和单一工作模式

其精度为5/2048=0.002,远远小于题目要求误差±0.005。且其价格明显低于其他同类产品(如MAX197),因此,我们选用了此芯片,作为模数转换器。

3、键盘处理模块

方案一:

根据题目要求,要用16个按键。用电路直接扫描一个4*4键盘,其中P1口的高四位作为行驱动线,P1口的低四位作为列读入线。每隔40msP1口高四位的行驱动线被逐次拉低,以免键盘的颤动干扰,对用户的输入进行正确的识别。考虑到要用到整个P1口,要不断通过软件扫描来读取按键,且要对按键是否对扰动进行判断,使系统的实时性和稳定性有一定的限制。 方案二:

ZLG7289B具有SPI串行接口功能可同时驱动8位共阴式数码管(或64只独立LED)的智能显示芯片,该芯片同时可连接多达64键的键盘矩阵,单片即可完成LED显示﹑键盘接口的全部功能。ZLG7289B内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外,还具有多种控制指令,如消隐﹑闪烁﹑(循环)左移﹑(循环)右移﹑段寻址等。ZLG7289B具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口且内含去抖动电路。

串行接口(防止引起寻址时内存管理出错),无需外围元件可直接驱动LED; 各位独立控制译码/不译码及消隐和闪烁属性;

(循环)左移/(循环)右移指令; 具有段寻址指令,方便控制独立LED; 64键键盘控制器,内含去抖动电路; 工作电压2.7V~6.0V。

采用7289芯片,减少了口的使用量,并具有自动去抖功能,解决了上述方案的缺点。

4、显示界面方案

这是决定系统使用是否具有可视性、动态性、实用性的关键。 方案一:

采用LED显示。尽管本设计中采用了ZLG7289B芯片来控制键盘扫描及LED显示,但显然这只能显示非常有限的符号和数字。对于本设计复杂的汉化功能是不相适应的。 方案二:

采用LCD显示。本设计为方便显示中文及各种字符选用金鹏公司的带中文字库的128*64点阵式LCD。

权衡之后,我们采用方案二,用以完成商品名称单价等设定的显示以及

清单和其他功能的处理

二、 系统设计 1、总体系统图

传感器采集数据 放大器放大信号 A/D转换 键盘输入 单片机处理控制 LCD显示

2、原理分析和说明

(1) 压力传感器说明

本系统采用济南金钟公司生产的L-PS型系列称重传感器。其为悬臂梁式结构,进行了四角调整,具有线性度好,灵敏度高,滞后,蠕变小,使用可靠等优点。主要用于电子计价称,案称及其他专用电子称。 主要技术参数: 技术参数 额定载荷 灵敏度 非线性 滞后 重复性 蠕变 蠕变恢复 零点输出 零点温度系数 额定输出温度系数 输入电阻 输出电阻 绝缘电阻 供桥电压 单位 kg mV/V %FS ±0.02 %FS/30min %FS %FS/10℃ %FS/10℃ Ω Ω MΩ V ±1 ±0.02 425±25 350 +5 /-3 ≧5000 12(AC/DC) 技术指标 10 1.8±0.08 温度补偿范围 允许温度范围 允许过负荷 四角误差 接线方式

(2)测量放大器基本原理

℃ -10±50 ℃ -20±60 %FS 120 %FS ±0.02 输入:红(+)白(-) 屏蔽:黄 输出:绿(+)蓝(-) 传感器输出的微弱信号必须经过放大才能被AD转换器接收处理,所以放大器是电路中必不可少的部分。本设计采用1片ICL7650放大器组成放大倍数为1000的负反馈电路。采用负反馈的连接方式,因为负反馈的性能稳定,能有效地防止产生自激振荡,从而防止出现正负饱和状态。ICL7650是典型的斩波稳零放大器,经实践证明具有非常好及其稳定的放大性能,所以已构成的放大电路输出稳定且能充分满足系统所需的放大要求。具体放大电路已如下图所示。 放大倍数的计算:

V0=(Vi2-Vi1)*R4/R1 其中R1=R2=0.5K,R4=100K

(3)模数转换模块AD574基本原理

前述方案论证中已经介绍过该芯片的特性及使用参数。在这个电子秤的设计中通过8052单片机与AD574A进行数据指令的传输,其中还使用了74LS00与非门电路,逻辑控制信号由(、

和A0)由8052的P1发出,用于控制AD574A

的工作过程。A/D转换器的数据输出通过P0数据总线连至8052,由于我们只使用了8位数据口,12位数据分两次读进8051。当8051的p3.0查询到STS端转换结束信号后,先将转换后的12位A/D数据的高8位读进8051,然后再将低4位读进8051。这里不管AD574A是处在启动、转换和输出结果,使能端CE都必须为1,因此将8051的写控制线和读控制线通过与非门74LS00与AD574A的使能端CE相连。我们将AD模块通过一个扩展板与单片机相连,实际连线图已用Protel软件绘出,示于下面。

+51234567891011121314GND+15R?GND-15POT2+15U3+V12/8CSA0R/CCEV+REFOUTAGNDREFINV-BIPOFF10V IN20V INAD574STSDB11DB10DB9DB8DB7DB6DB5DB4DB3DB2DB1DB0DGND2827262524232221201918171615GND123456789101112131415161718192021P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXDTXD/IN0/IN1T0T1/WR/RDXTAL1XTAL2VSSVCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7/EAALE/PSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.04039383736353433323130292827262524232221RES2POT2-15RES23A74ALS00GND

(4)键盘控制模块基本原理

如前述,设计中应用周立功公司所开发生产的芯片ZLG7289来控制键盘。该芯片应用简单,具有非常强大的功能。不仅给软件编程带来许多方便,给各个用户的使用也带来了很大的便利。因为该芯片已自带了按键去抖动功能,和各位独立控制译码的便利功能。

OUTDS7OUTDS6OUTDS5OUTDS4OUTDS3OUTDS2OUTDS1OUTDS0cmcmcmcmcmcmcmcmcmcmcmcmcmcmcmA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmDS7DS6DS5DS4DS3DS2DS1DS0C4R13VCCDPPR5NUMFNUM7SAC5R6NUMEAAANUM612MHZU11C6SBR7NUMDBBBNUM5SCVCCU4C71234567891011121314RTCCVCCNCGNDNC/CSCLKDIO/KEYSGSFSESDSC/RSTRCCLKODIG7DIG6DIG5DIG4DIG3DIG2DIG1DIG0DPSASB2827262524232221201918171615SDOUTDS7OUTDS6OUTDS5OUTDS4OUTDS3OUTDS2OUTDS1OUTDS0DPPSASBR8NUMCCCCNUM4R9NUMBDDDNUM3P1.3P1.4P1.5keySGSFSESDSCSER10NUMAEEENUM2SFR11NUM9FFFNUM1U?RES2SGR12NUM8GGGNUM0U?SGSFSESDSCDPPRES2Rp2

三、系统测试与数据分析 1、测试仪器

FLUKE175数字式万用表 伟福仿真器 256MPC机 2、测试方法

先分别调试各单元模块,调通后再进行整机调试,以提高效率。具体步骤可用下图表示:

前置放大 123456789SASB键处理 键盘显示 数据采集 液晶显示 cmcm+

3、测试数据

称重测试:将砝码一次加重测试,测试次数:6次 如下所示:

次数 重量(g) 显示(kg) 1 5 0.006 2 25 0.028 3 50 0.048 4 100 0.102 5 200 0.200 6 1000 1.003

电压测试:从传感器输入电压(u1)再由放大器输出的电压(u2),测试次数:6 次数 U1 v U2 v 1 0.000 0.000 2 0.002 2.010 3 0.003 3.130 4 0.005 5.100 5 0.006 6.200 6 0.007 7.210 放大倍数约为:1000,能达到实验要求。

四、 软件设计

整个系统软件共分三部分:

(1)、主控程序,主要来控制键扫描程序;

(2)、键处理程序,利用16键控制单价设定、金额、重量和清单显示等功

能;

(3)、 T0中断子程序,用52内部自带的定时器0来控制液晶的显示,每

100ms显示一次。

在软件编程中对于AD转换器输出的电压信号执行以下操作

V=VOUT/0x7ff*5 其中 V为实际电压值,VOUT为AD转换输出的12位数字电压,值得特别一提的是,软件中编制了一个程序对输入信号进行了滤波。

整个程序的流程图如下页所示:

五、 小结

整个电路本着简单可靠,选用低价格通用元器件的原则完成了本设计任务。但是,系统还有很多需要改进的地方,例如:AD574电路设计时没考虑端口连接可能会对液晶造成影响,导致显示不稳定,设计中考虑较少,放大电路的精度和稳定性也有待提高。 此外,也可扩展打印机和更强大功能的键盘以增加实用性。

Abstract

Our design is composed of five departments,which are L-PS pressure sensor,amplifier,A/D574 converter,keybord and LCD.

As the design is based on the theory of measuring with high accuracy ,the experiment result shows that our theory is correct.

Sensitive sensor L-PS can produce 0-10mV electric signal and amplifier ICL7650 can amplify it to 0-10V .AD574 has many fine features so that it can be easily used to made a convert circuit. The microcontroller can control 7289, LCD and deal with the sampling data simultaneously.

Key words: microcontroller system, amplifier ,convert circuit ,sampling data

参考书目:

1、高海生 杨文焕 《单片机应用技术大全》 西南交通大学出版社 1996 2、余载全 李玉和 《PROTEL实战演习》 人民邮电出版社 2000 3、《单片机典型模块设计实例导航》 人民邮电出版社 2004 4、《全国大学生电子设计竞赛作品金选》 北京理工大学出版社 2003 5、马忠梅 刘滨 《单片机C语言WINDOWS环境编程宝典》 北京航空航天大学 2003

2004-9-13

源程序列表:

#include #include #include #include #include #include

#define ADCOM XBYTE[0xf8ff] // 使A0=0, R/C=0, CS=0 #define ADLO XBYTE[0xfeff] // 使R/C=1, A0=1, CS=0 #define ADHI XBYTE[0xfcff] // 使R/C=1, A0=0, CS=0 #define uint unsigned int #define uchar unsigned char sbit ZLG7289_CS = P1^3; sbit ZLG7289_CLK = P1^4; sbit ZLG7289_DIO = P1^5; sbit KEY = P1^6; bit aa=0x3f;

sbit r=P3^7; sbit w=P3^6;

sbit DI=P1^7; //数据命令信号 sbit RW=P3^4; //读写信号 sbit CS=P3^5; sbit A0=P3^1; sbit RC=P1^2;

sbit E=P1^0; //液晶使能端

float data zonge;

float data weight,weight1; float data danjia; float data chip; float data moneynew;

uint data get=0; uchar data danjia1[6]; uint xdata receive[100];

float xdata paper0[10]; //单价缓冲区 float xdata paper1[10]; //重量 float xdata paper2[10]; //金额

uchar data paper3[10]; //商品名称序号

char code name[10][40]={\" 孝心公司: 西瓜\娃哈哈公司: 牛奶\浪潮公司: 打印纸\水之星公司: 玩

具\小丸子食品: 薯条\小王子食品: 麦烧\营运系列: 锅巴\上好佳公司: 果糖\天堂系列: 面具

\集味村: 蛋黄派\自拟的十种商品名称 uchar data x=0,m=0,set_name,set_waiter,k,key1;

sbit adbusy=P3^0; /* STS */

/*延时子程序*/

void delay(uint time) { uint i;

for(i=0;i/* AD574转换函数*/ uint AD574(void)

{ ADCOM=0; // 启动A/D转换

while(adbusy==1);

return ((int)(ADHI*16)+ ((ADLO & 0xf0)/16)); // 返回12位A/D转换结果 }

uint checkbusy() //检查液晶忙碌位 { uint busy; uchar aa; RW=1; DI=0;E=1; P0=0xff;

aa=P0; delay(20); E=0;

if(aa>=0x80) busy=1;

else busy=0;

return(busy); }

void senddata(uchar bb) //送数据 {

while(checkbusy()); RW=0;

DI=1; E=1; P0=bb; delay(25); E=0; }

void senditr(uchar bb) //{

while(checkbusy()); // RW=0; DI=0; E=1; P0=bb; delay(25); E=0; }

void string(uchar *aa) {

uchar j=0;

while(*(aa+j)!=0) if(j<16)

{senddata(*(aa+j)); j++; } }

void initial(void) {

senditr(0x30); // senditr(0x01); // senditr(0x06); // senditr(0x0c);

senditr(0x80); // }

送指令 检测忙信号基本指令集 清除显示

点设定光标右移,整体不动 设定DDRAM地址

void initial001(void) {

initial(); senditr(0x80);

string(\"请按任意键继续!\"); senditr(0x88);

string(\"press data key\"); senditr(0x98);

string(\" to continue \"); }

void initial000(void) {

initial(); senditr(0x80);

string(\"单价: 元\"); senditr(0x90);

string(\"重量: 公斤\"); senditr(0x88);

string(\"金额: 元\"); senditr(0x98);

string(\"总额: 元\"); }

void display_number(uint number) {

uchar NumDisplay[5]; uchar i,*string; bit rtn=0;

NumDisplay[0]=number/10000; number-=NumDisplay[0]*10000;

NumDisplay[1]=number/1000; number-=NumDisplay[1]*1000;

NumDisplay[2]=number/100; number-=NumDisplay[2]*100;

NumDisplay[3]=number/10; number-=NumDisplay[3]*10;

NumDisplay[4]=number;

string=NumDisplay;

for(i=0;(i<5)&&(rtn==0);i++) {

if(*(string+i)!=0) rtn=1; }

for(i-=1;i<5;i++) {

senddata(*(string+i)+0x30); } }

void display_number3(uint number) //{

uchar NumDisplay[3]; uchar i,*string; bit rtn=0; E=0;

NumDisplay[0]=number/100; number-=NumDisplay[0]*100;

NumDisplay[1]=number/10; number-=NumDisplay[1]*10;

NumDisplay[2]=number; string=NumDisplay;

for(i=0;i<3;i++) {

senddata(*(string+i)+0x30); } }

显示三位小数点 void display_numberf(uint number) //显示两位小数点 {

uchar NumDisplay[2]; uchar i,*string; bit rtn=0; E=0;

NumDisplay[0]=number/10; number-=NumDisplay[0]*10;

NumDisplay[1]=number;

string=NumDisplay;

for(i=0;i<2;i++) {

senddata(*(string+i)+0x30); } }

void display_float(float cc) //{

uint zheng,xiao; float xi;

zheng=(int)cc; xi=cc-(int)cc;

xiao=(uint)(xi*1000); if(zheng>9999) string(\"error\"); else

display_number(zheng); E=0;

{senddata('.');

display_number3(xiao); } }

显示三位小数 void display_floatp(float cc) //显示两位小数 {

uint zheng,xiao; float xi;

zheng=(int)cc; xi=cc-(int)cc;

xiao=(uint)(xi*100); if(zheng>9999) string(\"error\"); else

{ display_number(zheng); senddata('.');

display_numberf(xiao); } }

/*滤波子程序*/

uint filter(uint ddata[]) {

long int al=0; uint i; uchar x; uchar y; uint temp1;

for(y=0;y<39;y++) {

for(x=1;x<40-y;x++) {

if((*(ddata+x))>(*(ddata+x-1))) {

temp1=(*(ddata+x-1));

(*(ddata+x-1))=(*(ddata+x)); (*(ddata+x))=temp1; } } }

for(i=5;i<35;i++) {

al=al+ddata[i]; } al/=30;

al=(uint)al; return (al);

}

uint read_key() // 读键盘函数 {

uint i;

uchar temp = 0; uint aa = 0;

ZLG7289_DIO=1; EA=0;

for(i=0;i<8;i++) {

temp = temp<<1; aa = ZLG7289_DIO;

if(aa==1) // temp = temp + 1; ZLG7289_CLK = 1;

delay(10); // ZLG7289_CLK = 0; }

temp=temp+1;

EA=1;

return(temp); // }

void getdata(void)

{ //

uchar i; get=0;

for(i=0;i<40;i++) {

receive[i]=AD574(); delay(5); }

get=filter(receive); E=0;

weight=((float)(get)*10/0x1000); weight1=weight-chip; if(weight1<0)

读数据位 延时 返回按键的编号键值处理 weight1=0; senditr(0x83); string(danjia1); senditr(0x86); string(\" 元\"); }

void dis_play(uint aa) // {

uint i;

for(i=0;i<8;i++) {

if(_crol_(aa,i)&0x80) ZLG7289_DIO = 1; else

ZLG7289_DIO = 0; ZLG7289_CLK = 1;

delay(10); // ZLG7289_CLK = 0; } }

void store(void) //{

if(k<10) {

paper0[k]=danjia; paper1[k]=weight1; paper2[k]=moneynew; } k++; }

void display_name(uchar ddata[]) // {

uchar strl,j,h,l; initial();

strl=strlen(ddata);

for(h=0;h<=strl-16;h=h+2) //键盘写指令和写数据函数 延时 存储清单 显示清单 循环显示

{

senditr(0x80); l=h;

for(j=0;j<16;j++,l++) {

senddata(ddata[l]); }

delay(10000);

}while(KEY==1);

}

void display_paper(void) // { uchar strl,j,h,l; uchar i; i=paper3[m];

strl=strlen(name[i]);

if(mdanjia=paper0[m]; weight1=paper1[m]; moneynew=paper2[m]; E=0;

senditr(0x83);

display_floatp(danjia); senditr(0x93);

display_float(weight1); senditr(0x8b);

display_floatp(moneynew); m++;

for(h=0;h<=strl-16;h=h+2) // {

显示清单 循环显示 senditr(0x98); l=h;

for(j=0;j<16;j++,l++) {

senddata(name[i][l]); }

delay(10000); } } else { m=0; k=0;

initial();

string(\"总额: 元\"); senditr(0x83);

display_floatp(zonge);

senditr(0x88); string(\"日期: \"); senditr(0x8b);

string(\"2004:9:15\"); senditr(0x90);

string(\"收银员: 58\"); senditr(0x98);

string(\"谢谢惠顾天河超市\"); set_name=1;

senditr(0x94);

senditr(0x0f); //游标右移,整体不动 }

while(KEY==1); //delay(15000); }

float change(uchar moneydata[])

{

uchar i,zheng=0; float xiao=0,all=0;

for(i=0;moneydata[i]!=' ';i++) {if(moneydata[i]!='.')

zheng=moneydata[i]*10+zheng; else

xiao=moneydata[i]/10+xiao; }

}

void main(void) {

uchar set_date=0,set_thing=0; uchar bb=0;

uchar x=0,y=0,i,j; for(i=0;i<255;i++); for(i=0;i<255;i++);

for(i=0;i<255;i++); for(i=0;i<255;i++); for(i=0;i<255;i++);

for(i=0;i<255;i++); for(i=0;i<255;i++); for(i=0;i<255;i++);

for(i=0;i<255;i++); for(i=0;i<255;i++); for(i=0;i<255;i++);

for(i=0;i<255;i++); k=0;

moneynew=0.00; E=0;

zonge=0.00; chip=0; KEY=1;

danjia1[0]=' '; danjia1[1]=' '; danjia1[2]=' '; danjia1[3]=' '; danjia1[4]=' '; danjia1[5]=' ';

initial(); //初始化 senddata(paper0[0]); senditr(0x80);

string(\"****************\");

senditr(0x90);

string(\" 电子称试验\"); senditr(0x88);

string(\" 天河超市 \"); senditr(0x98);

string(\"****************\"); while(KEY==1);

for(i=0;i<8;i++) // { initial000();

ZLG7289_CS = 0; // delay(10);

dis_play(0x87-i); delay(10);

dis_play(0x08-i); ZLG7289_CS = 1; //delay(80); } do{

if(KEY==1) { E=0; getdata();

// senditr(0x80);

//string(\"单价: 元\"); //senditr(0x83); //string(danjia1); E=0;

senditr(0x93);

display_float(weight1);

为8个数码管赋初值 选择驱动第i个数码管显示 senditr(0x8b);

display_floatp(moneynew); senditr(0x9b);

display_floatp(zonge); }

else //键处理 {

ZLG7289_CS = 0; delay(10);

dis_play(0x15); // 写入读键盘数据指令 delay(10);

key1 = read_key();

ZLG7289_CS = 1;

while(KEY==0); //去抖动

if(key1>=1&key1<12) {

initial000(); if(set_thing==0) { if(set_name==0) {if(key1==0x0b) {

danjia1[x]='.';

{if(x<6) x++; else

danjia1[x]='\\0'; } } else

{danjia1[x]=(key1-1+0x30); if(x<6) x++; else

danjia1[x]='\\0'; }

} else {

key1=(key1-1+0x30);

senddata(key1); while(KEY==1); } }

else {

key1=key1-1;

paper3[k-1]=(key1);

display_name(name[key1]); }

} //设定相应商品名称 else

switch(key1) {

case(12):

if(y==0) //去皮 {chip=weight;

y++;} else { y=0; chip=0; } break;

case(13): //总额

danjia=strtod(danjia1,NULL); moneynew=weight1*danjia; zonge=zonge+moneynew; store();

//if(k<10)k++; break;

case(14):

if(set_name==1) {senditr(0x88); string(\"日期:\"); senditr(0x8b);

senditr(0x0f); //游标右移,整体不动 j=1; } else

{set_thing=1; // 设定商品名称标示符 senditr(0x80);

string(\"**请选择商品名称\"); j=2;}

while(KEY==1);

break; case(15):

display_paper();

//显示清单功能 break; case(16): set_name=0;

//设定售货员代号结束 if(j==0) {

x=0;

//单价清零 danjia1[0]=' '; danjia1[1]=' '; danjia1[2]=' '; danjia1[3]=' '; danjia1[4]=' '; danjia1[5]=' '; while(KEY==1); } else

{ if(j==1)

{ senditr(0x0c);

k=0; //清单显示结束 j=0;

danjia=0; weight1=0.00; moneynew=0.00; zonge=0.00;

while(KEY==1); initial001(); //initial();

//initial000(); }

else

{set_thing=0; senditr(0x80);

string(\"单价: \"); // initial000(); j=0;

} }

break; } } }

while(1); }

设定名称结束

因篇幅问题不能全部显示,请点此查看更多更全内容