帮我写一个电子称的52程序,并且在数码管上显示重量
时间: 2023-12-10 20:41:02 浏览: 36
好的,以下是一个简单的电子称的程序,使用52单片机和数码管显示重量:
```
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DIO=P2^0; //74HC595数据线
sbit RCLK=P2^1; //74HC595锁存线
sbit SCLK=P2^2; //74HC595时钟线
uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示表
void delay(uint i) //延时函数
{
while(i--);
}
void write_byte(uchar dat) //写入数据到74HC595
{
uchar i;
for(i=0;i<8;i++)
{
SCLK=0;
DIO=dat&0x80;
dat<<=1;
SCLK=1;
}
}
void write_data(uchar addr,uchar dat) //写入数据到数码管
{
RCLK=0;
write_byte(addr);
write_byte(dat);
RCLK=1;
}
void main()
{
uint weight;
uchar i,temp;
while(1)
{
weight=0; //清零重量
for(i=0;i<10;i++) //累加重量
{
write_data(0x01,table[i]);
delay(1000);
temp=P1; //读取AD转换器的值
weight+=temp;
}
weight/=10; //求平均值
write_data(0x04,table[weight/1000]); //显示千位数
write_data(0x03,table[weight%1000/100]); //显示百位数
write_data(0x02,table[weight%100/10]); //显示十位数
write_data(0x01,table[weight%10]); //显示个位数
}
}
```
这个程序使用了74HC595芯片来驱动数码管,通过读取AD转换器的值来计算重量,并将结果显示在数码管上。注:该程序仅供参考,具体实现可能需要根据具体硬件和需求进行调整。