问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

51单片机台秤C程序

发布网友 发布时间:2023-06-14 01:45

我来回答

3个回答

热心网友 时间:2024-10-21 10:14

#include<reg52.h>
#include<stdio.h>

#define uint unsigned int
#define uchar unsigned char
uchar i,ms,p,s;

void Delay_us(unsigned char j);
void Delay_ms(unsigned char i);
unsigned long ReadAD(void);

unsigned long xx,x,y; //重量数值返回(十六进制)
unsigned char xx2=0x30;//多少单位重量数值 为0.1g
unsigned long xx3=0x82BD9A;//零点值(十六进制)
unsigned char xx4;

sbit ADDO=P1^0;
sbit ADSK=P1^1;

bit key_4z;

sbit rs=P2^5;
sbit rw=P2^6;
sbit e=P2^7;
uchar c[];
uchar tab[]="0123456789";
unsigned long dat[];
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delayus(uint k)
{
for(;k>0;k--);
}
void write1602_com(uchar deman)
{
e=0;
rs=0;
rw=0;
P0=deman;
delay(2);
e=1;
delay(5);
e=0;
}
void write_dat(uchar dat)
{

e=0;
rs=1;
rw=0;
P0=dat;
delay(2);
e=1;
delay(5);
e=0;
}
void init(void)
{
delayus(15);
write1602_com(0x38);
delayus(5);
write1602_com(0x38);
delayus(5);
write1602_com(0x38);
write1602_com(0x38);
write1602_com(0x08);
write1602_com(0x01);
write1602_com(0x06);
write1602_com(0x0c);
}

void Delay_ms(unsigned char i)
{
do{
Delay_us(0);
i--;
}
while(i);
}
//--------------------------------------------------------------------------
//函数名称: Delay_us()
//函数功能: 延时( 2*J+2)微秒
//其他说明:
//--------------------------------------------------------------------------
void Delay_us(unsigned char j)
{
do{j--;}
while(j);
}
void delay_50ms(uint z)
{
uint x;
for(;z>0;z--)
for(x=6245;x>0;x--);
}
void delay_50us(uint k)
{
uint j;
for(;k>0;k--)
for(j=19;j>0;j--);
}

void display()
{
/*if(key_4z)
c[0]=tab[11]; */ //为负加"-"前缀(tab[xx/10000]); //串口发送ASCII码十进制千位

c[5]=tab[xx/10000];
//串口发送ASCII码十进制百位
xx=xx%10000;
c[6]=tab[xx/1000]; //串口发送ASCII码十进制十位
xx=xx%1000;
c[7]=tab[xx/100];
xx=xx%100;
xx=xx ;
c[8]=tab[xx/10];
/*
c //串口发送ASCII码十进制个位
c[4]=tab[10]; //小数点
c[5]=(tab[xx%10]);*/ //串口发送ASCII码十进制小数位

init();
write1602_com(0x80);
for(i=0;i<16;i++)
{
write_dat(c[i]);
delay(5);
}

}

void main()
{
uchar i;

delay_50ms(4);
for(i=0;i<5;i++)
{xx4=xx2; //备份g换算值
xx2=1; //取消g换算
xx3=0; //零点值置零
xx3=ReadAD(); //取得新的零点值
xx2=xx4;
delay_50ms(1);
}
delay_50ms(2);

while(1)
{
unsigned int temp,j,min;
unsigned long yy=0,yy1=0;

for(i=0;i<6;i++)
{
dat[i]=ReadAD();delay_50ms(2);
}
for(i=0;i<6;i++)
{
min=i;
for(j=i+1;j<6;j++)
if(dat[j]<dat[min])
min=j;
temp=dat[min];
dat[min]=dat[i];
dat[i]=temp;
}

for(i=3;i<5;i++)
{
yy=dat[i];
yy1+=yy;
}
xx=yy1/2;

display();
delay_50ms(2);

}
}
unsigned long ReadAD(void){
unsigned long Count;
unsigned char j;
ADSK=0; // 使能AD(PD_SCK 置低)
ADDO=1; //51CPU 准双向I/0 输入使能

Count=0;
//在这里一直等待有数据程序才会向下执行,即ADDO为低电平

while(ADDO); // 判断AD转换是否结束,若未结束则等待否则开始读取
for(j=24;j>0;j--){
ADSK=1; //PD_SCK 置高(发送脉冲)
Count=Count<<1; //每个高电平到低电平的下降沿来时,变量count左移一位,右侧补零
ADSK=0; //PD_SCK 置低
if(ADDO)Count++;
}
ADSK=1;
Count=Count^0x800000; //第25个脉冲下降沿来时,转化数据。Count与0x800000按位做xor运算。
ADSK=0;

//我是用的B通道
//B通道 信号线是B+,B- A通道 信号线是S+,S-//A通道 把下面这句删了Delay_us(1);ADSK=1;Delay_us(1);ADSK=0;
//
//

if (Count > xx3)
{
Count=(Count - xx3)/xx2;//值为正_根据 重量数值 计算出有多少个0.1g (十六进制)
key_4z=0; //正负标志复位,表示值为正
}
else
{
Count=(xx3 - Count)/xx2;//值为负_根据 重量数值 计算出有多少个0.1g (十六进制)
key_4z=1;//正负标志置位,表示值为负
}

return(Count);

}追问能,加,你,扣,扣,吗,把这个问题解决掉

追答qq=462740130

热心网友 时间:2024-10-21 10:14

给别人做过一个毕设,单片机是STC89C52RC,也是HX711,传感器是10公斤的,1602显示重量和价格。没遇到什么问题,不知道你这遇到什么问题了?

qq=857656772

热心网友 时间:2024-10-21 10:15

我有,你采纳我,我告诉你,
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
做了好乱的梦,求解! ae缺少p1效果是要装什么插件? ...荣耀》中“网络诊断”居然可以测定酒店有无摄像头,这是好事吗? 七叶一枝花花苞里面的红米是什么 q了是什么意思? ...Q就可以,格式也没错,也只几十K,别人发给我都可以,哪里出问题了... 显的么说友Q在微 ?Q上新示怎让在说我空里动间的态不更好博 诺诗兰户外品牌怎么样 新隋唐英雄传张卫健萧妃是刘小庆吗 红尖椒和朝天椒介绍!红尖椒和朝天椒哪个辣? 试用期离职,一天就办理好了离职并交接,还需要去吗? 我在酒店实习,刚刚转正,因为生病在家休息期间想辞职,但酒店要求我_百度... 试用期提离职了还要去上班吗 红豆杉适不适合用高深盆养 红豆杉用多大的盆合适 《爸爸去哪儿5》中的Jasper和嗯哼谁是大哥? 红豆杉可以晒太阳吗 红豆杉可不可以晒太阳 红豆杉要怎么养活才好啊? 单号LH016484054TW,谁能告诉我这到底出没出台湾? 麻烦大家帮我查个台湾寄大陆的邮政包裹单号LH014402525TW不知道东... 上海电子驾驶证怎么开通 &quot;马&quot;字旁的字 要见三山老放翁的解释要见三山老放翁的解释是什么 空调拆卸后再次安装还需要加氟吗 空调重新安装需要加氟吗 工程企业施工合同管理? 同乡会创立贺语(精选14句) 协会贺词大全 红豆杉是喜阳还是喜阴 红豆杉喜阴还是喜阳光的植物 清明的古诗有很多,其中有一首唐代宋之问《途中寒食》 “故园肠断处... 崔融(南祖崔氏)是什么意思 《法语助手》法汉 零敲碎打的解释 谁知道敲碎的同义词啊??? 灯笼五彩椒怎么吃灯笼五彩椒的吃法 太阳能空调怎么样?太阳能空调价格是多少? 太阳能空调的工作原理及价格 太阳能空调价格是多少 红豆杉耐阴吗 辞职未满三十天,怎么办? 有急事要离职等不了三十天怎么办? 员工提出离职,未到30天,直接不来上班了该怎么办 听说红豆彬要种公母一对才行是这样不? 红豆杉必须公母一起养殖吗?公树开花落粉需要收起来撒到母树上吗?谢谢了... 红豆杉树是公母一起栽吗? 红豆杉公母树要种在一起吗 红豆杉雌雄可以同一盆种植吗 红豆杉一棵公树和两棵母树可以一起载吗 红豆杉为什么国家要禁止 为什么红豆杉不能种