高精密家用电子秤C程序Word格式.docx

上传人:b****2 文档编号:4250285 上传时间:2023-05-03 格式:DOCX 页数:12 大小:16.02KB
下载 相关 举报
高精密家用电子秤C程序Word格式.docx_第1页
第1页 / 共12页
高精密家用电子秤C程序Word格式.docx_第2页
第2页 / 共12页
高精密家用电子秤C程序Word格式.docx_第3页
第3页 / 共12页
高精密家用电子秤C程序Word格式.docx_第4页
第4页 / 共12页
高精密家用电子秤C程序Word格式.docx_第5页
第5页 / 共12页
高精密家用电子秤C程序Word格式.docx_第6页
第6页 / 共12页
高精密家用电子秤C程序Word格式.docx_第7页
第7页 / 共12页
高精密家用电子秤C程序Word格式.docx_第8页
第8页 / 共12页
高精密家用电子秤C程序Word格式.docx_第9页
第9页 / 共12页
高精密家用电子秤C程序Word格式.docx_第10页
第10页 / 共12页
高精密家用电子秤C程序Word格式.docx_第11页
第11页 / 共12页
高精密家用电子秤C程序Word格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

高精密家用电子秤C程序Word格式.docx

《高精密家用电子秤C程序Word格式.docx》由会员分享,可在线阅读,更多相关《高精密家用电子秤C程序Word格式.docx(12页珍藏版)》请在冰点文库上搜索。

高精密家用电子秤C程序Word格式.docx

uints=0,y=0;

//s用于保存小数点,y判断ENTER键

 

//===========================================

//函数声明

voiddelay(char);

voidwrite_data(char);

voidwrite_text(char);

voidwrite_com(char);

voidlcd_init_text();

voidtext_out(chara);

intasc2lcd(intasc);

voidcursor_on();

voidprint_text();

voidtext_location();

voidprint_string();

voidKey_Scan(void);

//--------------------------------------------

//写数据函数

voidwrite_data(chardat){

CD=0;

//数据

CE=0;

//LCD使能

WRIT=0;

//写

DATA_PORT=dat;

//把数据送到P口

delay

(1);

//当晶振较高时加延时

WRIT=1;

//关写

CE=1;

//关使能

}

voidwrite_text(chartext){

DATA_PORT=text;

//写命令函数

voidwrite_com(charcom){

CD=1;

//命令

DATA_PORT=com;

//LM4229初始化函数

voidlcd_init_text(){

write_data(0);

write_com(0x40);

//settexthomeaddress

write_data(30);

write_com(0x41);

//settextarea;

write_com(0x84);

//textattributemode

write_com(0x94);

//textongraphicoff

voidcursor_on(){

write_com(0xA0);

write_com(0x93);

voidprint_text(charx,chary,chara){

intplace;

place=x*30+y;

write_data(place&

0xff);

//写地址低8位

write_data(place/256);

//写地址高8位

write_com(0x24);

//设置地址

write_com(0xb0);

//设置数据自动写

write_text(a);

write_com(0xb2);

//自动复位

intasc2lcd(intasc){

uintr;

r=asc-32;

returnr;

voidtext_out(chara){

voidtext_location(intplace){

voidprint_string(char*str){

inti;

intch;

for(i=0;

str[i]!

=0;

i++)

{

ch=asc2lcd(str[i]);

text_out(ch);

//延时函数

voiddelay(uchart)

uintp,j;

for(p=0;

p<

t;

p++)

for(j=0;

j<

114;

j++);

//-------------------------------------------

//4*4矩键查寻键值函数

voidKey_Scan(void)

ucharreadkey;

uintx=200;

ucharx_temp,y_temp;

P3=0x0f;

x_temp=P3&

0x0f;

if(x_temp==0x0f)gotokeyout;

P3=0xf0;

y_temp=P3&

0xf0;

readkey=x_temp|y_temp;

readkey=~readkey;

switch(readkey){

case0x11:

break;

case0x21:

case0x41:

case0x81:

i=0;

s=0;

total=0;

y=1;

i=1;

b[0]=0;

delay(x);

//CANCEL键;

case0x12:

b[i]=3;

i++;

case0x22:

b[i]=6;

case0x42:

b[i]=9;

case0x82:

if(s==0)s=i;

//确认键

case0x14:

b[i]=2;

case0x24:

b[i]=5;

i++;

case0x44:

b[i]=8;

case0x84:

b[i]=14;

s=i;

//小数点

case0x18:

b[i]=1;

case0x28:

b[i]=4;

case0x48:

b[i]=7;

case0x88:

b[i]=0;

default:

keyout:

_nop_();

//读TLC2543端口数据函数

uintreadAD(ucharport)

ucharch,i,j;

uintad;

ch=port;

1;

j++)

{

ad=0;

ch=port;

EOC=1;

CS=1;

CS=0;

CLK=0;

for(i=0;

i<

16;

{

if(ADout)ad|=0x01;

ADin=(bit)(ch&

0x80);

//取到ch的最高位

CLK=1;

CLK=0;

ch<

<

=1;

ad<

}

}

CS=1;

/////////转换和读取数值

while(!

EOC);

ad>

>

return(ad);

//main函数

main(){

uintA1,A2,A3,A4;

//A1——A4为重量

uintB0,B1,B2,B3,B4;

//B0——B4为总价

uintj;

while

(1){

Key_Scan();

dat=readAD(0x0c);

A1=(dat*122)/100000;

//12位端口最大数4096和5000g之间有1.22的倍数关系;

A2=(dat*122)%100000/10000;

A3=(dat*122)%10000/1000;

A4=(dat*122)%1000/100;

//显示重量

//-------------------------------------------

lcd_init_text();

text_location(0);

print_string("

weight:

"

);

text_out(A1+16);

text_out(14);

text_out(A2+16);

text_out(A3+16);

text_out(A4+16);

kg"

//显示单价Price

text_location(60);

Price:

"

for(j=0;

i;

j++){

if(b[j]==14)

text_out(b[j]);

else

text_out(b[j]+16);

if(i==1){

for(j=i;

15;

text_out(0xff);

//当ENTER键按下后,显示总价

if(y==1){

if(s==0){

if(i>

=2)

total+=dat*122*b[1]/10;

if(s==1){

total+=dat*122*b[0];

=3)

total+=dat*122*b[2]/10;

if(s==2){

total=total+dat*122*b[0]*10+dat*122*b[1];

=4)

total+=dat*122*b[3]/10;

B0=(total)/10000000;

B1=(total)%10000000/1000000;

B2=(total)%1000000/100000;

B3=(total)%100000/10000;

B4=(total)%10000/1000;

text_location(120);

print_string("

Total:

text_out(B0+16);

text_out(B1+16);

text_out(B2+16);

text_out(14);

text_out(B3+16);

text_out(B4+16);

y=0;

i=0;

s=0;

total=0;

delay(100);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2