#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
sbit ADDO=P2^0;
sbit ADSK=P2^1;
sbit led1=P2^4;
sbit led2=P2^5;
sbit led3=P2^6;
sbit led4=P2^7;
//unsigned char key;
unsigned char code disp_code[] =
{
//显示码数组
0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88,
0x83, 0xc6, 0xa1, 0x86, 0x8e, 0xbf
};
unsigned char code seg[]={0x7f,0xbf,0xdf,0xef};//分别对应相应的数码管点亮
/**********************************************************
延时子函数
**********************************************************/
void delayms(unsigned int ms)
{
unsigned char t;
while (ms--)
{
for (t = 0; t < 114; t++)
;
}
}
/**********************************************************
x*0.14MS 延时子函数
**********************************************************/
void delayus(unsigned char x)
{
unsigned char i;
while (x--)
{
for (i = 0; i < 14; i++)
{
;
}
}
}
/**********************************************************
读711 AD数据子程序
**********************************************************/
unsigned long ReadCount(void)
{
unsigned long Count;
unsigned int ADval;
unsigned char i;
ADDO=1;
ADSK=0;
Count=0;
while(ADDO);
for(i=0;i<24;i++) //读24个bit
{
ADSK=1;
Count=Count<<1;
ADSK=0;
if(ADDO)Count++;
}
ADSK=1; //发送第25个脉冲,表示下次转换使用A通道128db
// Count=Count^0x800000;
;
ADSK=0;
/* if((Count & 0x800000) == 0x800000)
{
Count = ~(Count - 1);
} */
// ADval = (int)(Count >> 8);//取高十六位有效值
ADval = (int)(Count>>8);
// ADDO=1;
return(ADval);
}
/**********************************************************
AD采样处理——算术平均数字滤波
**********************************************************/
unsigned long Sampling(void)
{
unsigned int Sam[12],tmpmax,tmpmin,sum=0,Average;
unsigned char i;
for(i=0;i<12;i++)
{
Sam[i]=ReadCount();
if(i==0)
{
tmpmax=Sam[0];
tmpmin=Sam[0];
}
if(i>0)
{
if(Sam[i]>tmpmax)tmpmax=Sam[i];
if(Sam[i]<tmpmin)tmpmin=Sam[i];
}
}
for(i=0;i<12;i++)
{
if(!(Sam[i]==tmpmax||Sam[i]==tmpmin))
{
sum=sum+Sam[i];
}
}
Average=sum/10;
return(Average);
}
/**********************************************************
重量值数码管显示子程序
**********************************************************/
void displayheight(void)
{
unsigned int Lheight;
float Tempheight;
unsigned char i,j,height[2],discode[4];
// while(1)
{
Lheight = ReadCount()-1500;
if(Lheight<0)Lheight=0;
Tempheight=(float)(Lheight/1.4);
Lheight=(int)(Tempheight);
/* discode[0]=Lheight%16;
discode[1]=(Lheight%256)/16;
discode[2]=(Lheight%4096)/256;
discode[3]=(Lheight%65536)/4096; */
// tmp10=discode[3]*4096+discode[2]*256+discode[1]*16+discode[0];
discode[0]=Lheight%10;
discode[1]=(Lheight%100)/10;
discode[2]=(Lheight%1000)/100;
discode[3]=(Lheight%10000)/1000;
for(j=0;j<250;j++)
{
for(i=0;i<4;i++)
{
if(i==0){led1=0;led2=1;led3=1;led4=1;}
if(i==1){led1=1;led2=0;led3=1;led4=1;}
if(i==2){led1=1;led2=1;led3=0;led4=1;}
if(i==3){led1=1;led2=1;led3=1;led4=0;}
P0 = disp_code[discode[i]];
delayms(2);
}
}
led1=1;led2=1;led3=1;led4=1;
Lheight=0;
}
}
/**********************************************************
主函数
**********************************************************/
void main(void)
{
// unsigned long Lheight;
unsigned char i;
P2 = 0x0f; //数码管初始显示"-"
P1 = 0xff;
P0 = 0xbf;
while (1)
{
displayheight();
/* for(i=0;i<4;i++)
{
P2 = seg[i];
P1 = disp_code[i];
delayms(2);
}*/
}
}
/*********************************************************/
MSP430-HX711.rar_HX711 MSP430_MSP430 HX711_hx711_hx711 msp430
版权申诉
63 浏览量
2022-07-15
17:23:38
上传
评论
收藏 1KB RAR 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- Python 程序语言设计模式思路-创建型模式:原型模式:通过复制现有对象来创建新对象,面向对象编程
- 卸载软件geek卸载软件geek
- Python 程序语言设计模式思路-创建型模式:单例模式,确保一个类的唯一实例(装饰器)面向对象编程、继承
- skywalking-plugins.jar skywalking-alarm.jar
- 独栋别墅图纸D020-两层-10.00&11.00米- 施工图.dwg
- Python 程序语言设计模式思路-创建型模式:工厂模式,创建对象的统一接口,封装对象的创建逻辑
- python自学教程-05-json数据格式的介绍.ev4.rar
- python自学教程-04-自定义JavaScript.ev4.rar
- 《淘宝后台系统...》
- skywalking-plugins.jar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈