微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 电子秤AD TM7710/TM7709测试程序

电子秤AD TM7710/TM7709测试程序

时间:11-29 来源:互联网 点击:

LPC_SYSCON->

98);

//while(1);

}

}

}

void keyin(void) interrupt 0 using 0 // 中断 0 服务程序

{char X,i;

long int y;

send7289(0x15); // 接收数据

X=receive();

cs7289=1;

X=X&0x1f;

switch(X)

{case 0xf : {zongjia=zongjia+jine;

qingdan[qb][0]=sh;

qingdan[qb][1]=danjia[sh];

qingdan[qb][2]=shizhong;

qingdan[qb][3]=jine;

qb++; sh=0;dot=0;

danjia[0]=0;

for(i=0;i<6;i++) jiage[i]=0;

}

break; // 累加

case 0xe : pizhong=zhongliang; break; // 去皮

case 0xd : {danjia[sh]=0;dot=0;} break; // 清单价

case 0xc : {zongjia=0;jine=0;dot=0;list=0;qb=0;pizhong=0;

if(sh==0) danjia[sh]=0;} break; // 总清

case 0xa : dot=1;break; // 点

case 0xb : list=1;break; // 清单

case 0x19 : sh=10;break;

case 0x18 : sh=9;break;

case 0x17 : sh=8;break;

case 0x16 : sh=7;break;

case 0x15 : sh=6;break;

case 0x14 : sh=5;break;

case 0x13 : sh=4;break;

case 0x12 : sh=3;break;

case 0x11 : sh=2;break;

case 0x10 : sh=1;break;

case 0x1f :

case 0x1e :

case 0x1d :

case 0x1c :

case 0x1a : break;

case 0x1b : dot=1;break;

default :{ if(dot==0) {jiage[0]=jiage[1];jiage[1]=jiage[2];jiage[2]=X;}

if(dot==1) {jiage[4]=X;dot++; }

else if(dot==2) {jiage[5]=X; dot++;}

else if(dot>2) break;

// lcdi_send(0x84);

y=jiage[0];

y=y*10+jiage[1];

y=y*10+jiage[2];

y=y*10+jiage[4];

danjia[sh]=y*10+jiage[5];

}

}

while(key7289==0); // 等待键盘松开

}

/*

void ad(void) interrupt 2 using 1

{short x,y;

x=ad_244;

y=x;

if(x&0x80) baojing();

else x=x>>4;

y=y&0xf;

bcd[x]=y;

} */

// 初始页面

void ini() // 输入收银员编号 , 日期

{short i,j;

char X;

lcdi_send(0x80); // 提示输入收银员编号

i=0;

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

for(i=8;i<12;i++)

{

while(key7289);

send7289(0x15); // 接收数据

X=receive();

cs7289=1;

bianhao[i]=X+0x30;

lcdi_send(0x93);

for(j=8;j<16;j++) lcdd_send(bianhao[j]);

while(key7289==0);

}

lcdi_send(0x88); // 提示输入日期

i=0;

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

for(i=0;i<10;i++) // 输入日期

{if(i==4||i==7) i++;

while(key7289==1);

send7289(0x15); // 接收数据

X=receive();

cs7289=1;

riqi[i]=X+0x30;

j=0;

lcdi_send(0x9a);

for(j=0;j<10;j++) lcdd_send(riqi[j]);

while(key7289==0);

}

while(key7289);

nop1();

while(key7289==0);

nop1();

lcdi_send(0x1);

}

//LCD 子程序

void ini_lcd() //LCD 初始化子程序

{

lcdi_send(0x30);

lcdi_send(0x1); // 总清

lcdi_send(0xc);

lcdi_send(0x2); // 光标右移, AC+1

}

void lcdd_send(short X) //LCD 发送数据子程序

{chk_busy();

nop1();

lcd_di=1;lcd_rw=0;lcd_e=0;

P0=X;

for(dealy=0;dealy<5;dealy++);//

lcd_e=1; X=X;

P0=0xff;

}

void lcdi_send(short X) //LCD 发送指令子程序

{chk_busy();

nop1();

lcd_di=0;lcd_rw=0;lcd_e=0;

P0=X;

for(dealy=0;dealy<5;dealy++);//

lcd_e=1; X=X;

P0=0xff;

}

void chk_busy()

{short i=0xff;

while(i&0x80)

{lcd_di=0;

lcd_rw=1;

lcd_e=0;

i=P0;

lcd_e=1;

}

}

//7289 子程序

void ini_7289()

{short i;

cs7289=1; key7289=1; dio7289=1; //7289 初始化子程序

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

for(dealy=0;dealy<5000;dealy++); // 延时 25ms

send7289(0xa4); cs7289=1;

}

void send7289(short X) //7289 发送数据子程序

{short i,j=1;

cs7289=0;

for(dealy=0;dealy<6;dealy++); // 延时 50us

for(i=7;i>=0;i--)

{j=j

dio7289=X&j;

j=1;j=1;clk7289=1;

for(dealy=0;dealy<1;dealy++) ; // 延时 10us

clk7289=0;

for(dealy=0;dealy<1;dealy++) ; // 延时 10us

}

dio7289=0;

}

short receive() //7289 接收数据子程序

{short i,X=0;

dio7289=1;

for(dealy=0;dealy<6;dealy++); // 延时 50us

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

{clk7289=1;

for(dealy=0;dealy<1;dealy++); // 延时 10us

X=X<1;

if(dio7289)X++;

clk7289=0;

for(dealy=0;dealy<1;dealy++); // 延时 10us

}

dio7289=0;

return(X);

}

//ad

//AD 子程序

int ad1()

{short k,x;

int ad_zhi=0,xz;

EA=0;

ad_start=1;

for(k=0;k<5;k++)

{ while(ad_stb);

x=ad_244;

x=x&0xf;

ad_zhi=ad_zhi*10+x;

}

ad_start=0;

EA=1;EX0=1;

ad_zhi=ad_zhi>>1;

xz=ad_zhi-50;

xz=xz/100;

ad_zhi=ad_zhi+xiuzheng[xz];

return(ad_zhi);

void d_change(long X)

{char qian,bai,shi,ge,shifen,baifen;

long int yu;

if(X>999999) error1();

qian=X/100000; yu=X%100000;

bai=yu/10000; yu=yu%10000;

shi=yu/1000; yu=yu%1000;

ge=yu/100; yu=yu%100;

shifen=yu/10;

baifen=yu%10;

qian=qian+0x30;

bai=bai+0x30;

shi=shi+0x30;

ge=ge+0x30;

shifen=shifen+0x30;

baifen=baifen+0x30;

if(qian==0x30)

{qian=0x20;

if(bai==0x30)

{bai=0x20;

if(shi==0x30) shi=0x20;

}

}

shuju[0]=qian;

shuju[1]=bai;

shuju[2]=shi;

shuju[3]=ge;

shuju[4]=.;

shuju[5]=shifen;

shuju

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top