#include<reg52.h>
#include<absacc.h>
#include<intrins.h>
#include<string.h>
#include<stdio.h>
#define ADCOM XBYTE[0xff7c]
#define ADLO XBYTE[0xff7f]
#define ADHI XBYTE[0xff7d]
#define uint unsigned int
#define uchar unsigned char
//sbit ZLG7289_CS = P2^3; // 键盘芯片控制接口
//sbit ZLG7289_CLK = P2^4;
//sbit ZLG7289_DIO = P2^5;
//sbit ZLG7289_KEY = P2^6;
sbit R = P3^6; // 74LS00
sbit W = P3^7;
sbit RS = P1^7; // 液晶控制接口
sbit RW = P1^6;
sbit E = P1^5;
sbit adbusy = P3^0; // AD忙信号接口
float danjia ;
//float xdata price[10]; // 商品单价
//float xdata weight[10]; // 重量
//float xdata amount[10]; // 商品总额
//float xdata xuhao[10]; // 商品序号
//char code name[10][40]={" 三明学院: 绿豆"," 娃哈哈公司: 牛奶"," 浪潮公司: 打印纸"," 水之星公司: 玩具"," 小丸子食品: 薯条"," 小王子食品: 麦烧"," 营运系列: 锅巴"," 上好佳公司: 果糖"," 天堂系列: 面具"," 集味村: 蛋黄派"}; //自拟的十种商品名称
uint xdata receive[40];
void delay(char i) //延时1毫秒程序
{
char j;
while(i--)
for (j=0;j<155;j++);
}
/*void delay(uchar n)
{
uchar i;
for(;n!=0;n--)
{ for(i=248u;i!=0;i--);
for(i=248u;i!=0;i--);
}
} */
uint AD574(void)
{
R = 0;
W = 0;
ADCOM = 0;
while(adbusy==1);
return((uint)(ADHI<<4)+(ADLO&0X0f));
}
void senddata(uchar dat) //送数据
{
E=0;RS=1;RW=0;
E=1;
P2=dat;
delay(5); //延时 5ms
E=0;
delay(5); //延时 5ms
}
void sendcmd(uchar cmd) //送指令
{
E=0;RS=0;RW=0;
E=1;
P2=cmd;
delay(5); //延时 5ms
E=0;
delay(5); //延时 5ms
}
/*void string(uchar add,uchar *p)//在给定的地址位置写字符串
{
Write_12864com(add);
while(*p!='\0')
{
Write_12864data(*p);
p++;
}
} */
void sendstring(uchar *aa)
{
uchar j;
while(*(aa+j)!="\0")
if(j<16)
{senddata(*(aa+j));
j++;
}
}
void lcm_init(void)
{
sendcmd(0x30); //基本指令集
sendcmd(0x01); //清除显示
sendcmd(0x06); //点设定光标右移,整体不动
sendcmd(0x0c);
sendcmd(0x80); //设定DDRAM地址
}
/*void init00(void)
{
lcm_init();
sendcmd(0x80);
sendstring("请按任意键继续!");
sendcmd(0x88);
sendstring("press data key");
sendcmd(0x98);
sendstring(" to continue ");
} */
void lcd_init(void)
{
lcm_init();
sendcmd(0x80);
sendstring("单价: 元"); // 显示第一行
sendcmd(0x90);
sendstring("重量: 公斤");
sendcmd(0x88);
sendstring("金额: 元");
sendcmd(0x98);
sendstring("总额: 元");
}
void display_number(uint number) // 显示五位整数
{
uchar numdisplay[5];
uchar i,*string;
string=numdisplay;
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;
for(i=0;i<5;i++)
{
senddata(*(string+i)+0x30);
}
}
void display_number3(uint number) //显示三位小数
{
uchar numdisplay[3];
uchar i,*string;
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_number2(unit number) // 显示二位小数
{
uchar numdisplay[2];
uchar i,*string;
bit rtn=0;
E=0;
numdisplay[0]=number/10;
number-=numdisplay[0]*10;
numdisplay[1]=number;
for(i=0;i<2;i++)
{
senddata(*(string+i)+0x30);
}
}*/
void display_float3(float cc)
{
int zheng,xiao;
float xi;
zheng = (int)cc;
xi = cc - zheng;
xiao = (uint)(xi*1000);
if(zheng>9999)
sendstring("error!");
else
{
display_number(zheng);
senddata(".");
display_number3(xiao);
}
}
/*void display_float2(float cc)
{
uint zheng,xiao;
zheng = (int)cc;
xi = cc - zheng;
xiao = (unit)(xi*100);
if(zheng>9999)
sendstring("error!")
else
{
display_number(zheng);
senddata(".");
display_number3(xiao);
}
} */
uint filter(uint ddata[]) // 滤波子程序
{
long int al = 0;
uint i,temp;
uchar x,y;
for(y=0;y<39;y++) // 将得到的数据从大到小排序
{
for(x=1;x<40-y;x++)
{
if((*(ddata+x))>(*(ddata+x-1)))
{
temp=(*(ddata+x-1));
(*(ddata+x-1))=(*(ddata+x));
(*(ddata+x))=temp;
}
}
}
for(i=5;i<35;i++) // 滤除高五位和低五位数据
{
al+=ddata[i];
}
al/=30;al=(uint)al;
return (al);
}
float getdata(void)
{ //数值处理
uchar i;
uint get;
float weight;
for(i=0;i<40;i++)
{
receive[i]= AD574();
delay(5);
}
get=filter(receive);
weight=((float)(get)*10/0x1000);
return weight;
}
void main()
{
float weight;
lcd_init();
while(1)
{
weight=getdata();
sendcmd(0x83);
// display_floatp(danjia);
sendcmd(0x93);
display_float3(weight);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
1602adc0832(验证可行无需改动的).zip (51个子文件)
1602adc0832(验证可行无需改动的)
1602_ADC0832aa
code
1602_ADC0832.uvopt 59KB
main.c 700B
1602_ADC0832 21KB
1602_ADC0832.Uv2.bak 2KB
lcd1602.LST 6KB
1602_ADC0832.M51 25KB
adc0832.LST 6KB
lcd1602.c 3KB
1602_ADC0832_Opt.Bak 2KB
adc0832.c 3KB
adc0832.h 434B
lcd1602.OBJ 8KB
1602_ADC0832_uvproj.bak 13KB
myfun.h 96B
myfun.LST 882B
1602_ADC0832.opt.bak 2KB
myfun.OBJ 666B
1602_ADC0832.uvproj 13KB
1602_ADC0832.hex 8KB
1602_ADC0832.plg 226B
lcd1602.h 460B
1602_ADC0832_Uv2.Bak 0B
myfun.c 75B
main.LST 2KB
1602_ADC0832_uvopt.bak 59KB
1602_ADC0832.lnp 94B
adc0832.OBJ 10KB
main.OBJ 4KB
电子称
电子称_uvproj.bak 13KB
110406.c 5KB
STARTUP.LST 14KB
电子称_uvopt.bak 55KB
110406.OBJ 16KB
delay.OBJ 1KB
110406.LST 12KB
电子称.uvopt 55KB
电子称.plg 1KB
STARTUP.A51 6KB
delay.LST 1KB
电子称 15KB
电子称.M51 18KB
delay.h 178B
电子称.uvproj 13KB
电子称.lnp 60B
delay.c 369B
STARTUP.OBJ 749B
电子称.hex 7KB
1602_ADC0832.PWI 1KB
ADC0832中文资料.pdf 285KB
Last Loaded 1602_ADC0832.DBK 92KB
1602_ADC0832.DSN 92KB
共 51 条
- 1
tianchaodeciwei
- 粉丝: 1
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页