您当前的位置:五五电子网电子知识电子知识资料工具实用电子秤5(第五部分:附录 源程序) 正文
实用电子秤5(第五部分:附录 源程序)

实用电子秤5(第五部分:附录 源程序)

点击数:7999 次   录入时间:03-04 12:00:56   整理:http://www.55dianzi.com   工具

电子秤的信号采集、处理、显示的程序 .

#i nclude <reg52.h>

#i nclude<absaCC.h>

//ad 控制线

#define ad_244 XBYTE[0xbfff];

sbit ad_stb=P3^3;

sbit ad_start=P1^1;

//LCD 控制线

sbit lcd_di=P1^7;

sbit lcd_rw=P1^2;

sbit lcd_e=P1^0;

//7289 控制线

sbit cs7289=P1^3;

sbit clk7289=P1^4;

sbit dio7289=P1^5;

//sbit key7289=P1^6; //7289 查询方式

sbit key7289=P3^2; //7289 中断方式

sbit baoj=P3^5;

//7289 子程序

void ini_7289(void);

void send7289(short);

short receive(void);

void keyin(void);

//lcd 子程序

void ini_lcd(void);

void lcdd_send(short);

void lcdi_send(short);

void chk_busy(void);

//ad 子程序

void ad(void);

void baojing(void);

void d_change(long);

// 初始化,编号,日期

void ini();

void error1(void);

void nop1()

{}

void change(s)

int dealy; // 全局变量

short sh=0; // 商品号

short dot=0; // 小数点标志

bit list=0;

short qb=0;

char xdata shuju[7]="";

short xdata bcd[5];

char xdata s1[16]=" 单价 : 元 ";

char xdata s2[16]=" 重量 : Kg";

char xdata s3[16]=" 金额 : 元 ";

char xdata s4[16]=" 累计 : 元 ";

char code message0[]=" 信息学院 山东大学 ";

char code message1[]=" 输入收银员代号 :";

char code message2[]=" 输入日期 :";

char code message3[16]=" -- 山东大学 -- ";

char code message5[16]=" 垃圾公司欢迎您 !!";

char xdata bianhao[16]=" 收银员: ";

char xdata riqi[16]=" - - ";

long int xdata zongjia=0,jine=0,jine1=0;

int xdata shizhong=0,pizhong=0,zhongliang=0;

long int xdata qingdan[20][4];

char code shangPIN[11][4]={{" 单价 "},{" 苹果 "},{" 梨 "},{" 花生 "},{" 大米 "},

{" 桃子 "},{" 塑料 "},{" 瓜子 "},{" 桔子 "},{" 香蕉 "},{" 玉米 "}};

long int xdata danjia[11]=

{0,2000,3635,5502,6660,3320,5502,660,3210,6600,5600};

char xdata jiage[6]={0x0,0x0,0x0,0xfe,0x0,0x0}; // 0.00

short xdata xiuzheng[]={0,2,5,6,7,8,9,12,13};

char s[16];

{s[6]=shuju[0];

s[7]=shuju[1];

s[8]=shuju[2];

s[9]=shuju[3];

s[10]=shuju[4];

s[11]=shuju[5];

s[12]=shuju[6];

}

//****************************************************************

void main()

{short i,j;

long int x,z;

int y;

int xdata duilie[3]={0};

P1=0xff;

ini_lcd(); // 初始化 LCD

lcdi_send(0x8a);

while(message0[i]) lcdd_send(message0[i++]);

ini_7289(); // 初始化 7289

pizhong=ad1();

lcdi_send(0x1); // 总清 屏

ini(); // 初始页面 , 收银员编号,日期

lcdi_send(0x1); // 总清 屏

EA=1;EX0=1; // 中断

//EX1=1;

//ad_start=1;

while(1)

{if(list){lcdi_send(0x80); // 显示单位名称

for(i=0;i<16;i++) lcdd_send(message3[i]);

x=qingdan[0][0]; // 商品名 单价

for(i=0;i<4;i++) s1[i]=shangpin[x][i];

x=qingdan[0][1];

d_change(x); change(s1);

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(s1[i]);

x=qingdan[0][2]; // 显示重量

d_change(x); change(s2);

s2[10]=s2[9];s2[9]='.';

if(s2[8]==32) s2[8]=0x30;

lcdi_send(0x88);

for(i=0;i<16;i++) lcdd_send(s2[i]);

x=qingdan[0][3];

d_change(x); change(s3);

lcdi_send(0x98);

for(i=0;i<16;i++) lcdd_send(s3[i]); // 以上为第一页

EA=0;EX0=0; // 关键盘中断

for(j=1;j<qb;j++)

{while(key7289);

x=qingdan[j][2];

d_change(x); change(s2); // 显示数据

s2[10]=s2[9];

s2[9]='.'; if(s2[8]==32) s2[8]=0x30;

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(s2[i]);

x=qingdan[j][1];

d_change(x); change(s1);

x=qingdan[j][0];

for(i=0;i<4;i++) s1[i]=shangpin[x][i];

lcdi_send(0x80);

for(i=0;i<16;i++) lcdd_send(s1[i]);

x=qingdan[j][3];

d_change(x); change(s3);

lcdi_send(0x88);

for(i=0;i<16;i++) lcdd_send(s3[i]);

lcdi_send(0x98);

for(i=0;i<16;i++) lcdd_send(0x20);

lcdi_send(0x98);

while(key7289==0);

}

while(key7289);

d_change(zongjia); change(s4);

lcdi_send(0x80);

for(i=0;i<16;i++) lcdd_send(s4[i]);

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(bianhao[i]);

lcdi_send(0x88);

for(i=0;i<16;i++) lcdd_send(message5[i]);

lcdi_send(0x98);

for(i=0;i<16;i++) lcdd_send(riqi[i]);

list=0;

while(key7289==0);

while(key7289==1);

while(key7289==0);

EA=1;EX0=1;

}

else{ y=0;

/* duilie[2]=duilie[1]; // 数字滤波

duilie[1]=duilie[0];

y=ad1();

duilie[0]=y>>1;

x=duilie[0];

x=x<<1;

x=x+duilie[1]+duilie[2]; */

zhongliang=ad1();

shizhong=zhongliang-pizhong; // 数据转换

x=danjia[sh];

jine1=shizhong*x;

jine=jine1/1000;

d_change(shizhong); change(s2); // 显示数据

s2[10]=s2[9]; s2[9]='.';

if(s2[8]==32) s2[8]=0x30;

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(s2[i]);

d_change(danjia[sh]); change(s1);

for(i=0;i<4;i++) s1[i]=shangpin[sh][i];

lcdi_send(0x80);

for(i=0;i<16;i++) lcdd_send(s1[i]);

d_change(jine); change(s3);

[1] [2] [3]  下一页


本文关键字:源程序  电子秤  工具电子知识资料 - 工具