电子秤AD TM7710/TM7709测试程序
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
电子秤TM7710TM7709测试程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)