历史上的今天
返回首页

历史上的今天

今天是:2024年10月08日(星期二)

正在发生

2021年10月08日 | 基于51单片机的电子秤设计-LCD12864

2021-10-08 来源:eefocus

一.硬件方案

本设计利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。此外,还可通过键盘设定所称物品的价格。


主要由51单片机(STC89C51/52、AT89C51/52均可使用)+LCD12864液晶显示屏+HX711AD转换模块+LED指示灯+蜂鸣器电路+矩阵按键+10kg压力传感器等;如图:

二.设计功能

(1)可以输出量程为10kg物体的重量,精度为0.001kg;

(2)可通过按键设置单价,并根据实际重量计算出总价;

(3)支持去皮功能、切换量程等功能,输出的重量和总额采用四舍五入;

(4)采用LCD12864显示屏,支持中文显示;


三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:

在这里插入图片描述

(2)PCB图如下:

在这里插入图片描述

四.软件设计

(1)程序流程图

在这里插入图片描述

(2)主程序源码


void main()

INT_8 j = 0, k = 0, count = 0;

    UINT_8 Key = 0, Num = 0; //Key存储按键的键值,Num存储按下的是那个数字

UINT_32 tmp = 0;   

Init();

while (1)

{

WDT_FeedDog();    //喂狗

if (KeycanFlag == 0) //价格还没输入时可以显示(防止价格输入一半DDRAM地址改变,造成价格不可连续输入)

{   

if (TimeCount >= 50)     //定时时间超过250ms执行AD采集

{

// Offset = AD_Hx711(); //8527820-8475960 =51860

// Display_Int2str(Offset, WeightTable, 0x93);

WeightTemp = AD_Weight(AD_Hx711());  //把AD值转化为以克为单位的质量(含小数)

if (WeightTemp > 4000)    //超出量程4000g报警

{

for (k = 0; k < 4; k++)

{

LcdDdram_Display(1,3,table5);   //输出错误字符串    

}

Beep = 0;   //蜂鸣器鸣叫

Led  = 0;   //Led亮

}

else

{       

Beep = 1;     //重量少于最大量程关闭蜂鸣器

Led  = 1;

tmp = (UINT_32)(WeightTemp); // tmp = (UINT_32)(WeightTemp + 0.5);    //将质量四舍五入,例如1000.50 》1001

if(RangeFlag == 0)   //量程单位为g

{

Init_Weighttab(WeightTable,table6); //初始化字符数组为空格,防止上次字符位数比这次大,没有清除

k = 0; //例如上次显示1234,这次12,残留34

    Weight = tmp; //中间质量变量赋给质量

while (tmp != 0)

{

WeightTable[k++] = 0x30 + tmp % 10; //提取十进制最后一位转换为字符

    tmp /= 10;

}

if (k == 0) //质量为0时

{

WeightTable[k++] = '0';    

}

Write_Cmd(0x93);

count = k;

while (k > 0)        

    {

Write_Data(WeightTable[k-1]);   //质量倒序输出,因为之前是倒序输入,高位地址为高位,由高位到低位

k--;   

}

for (k = count; k < 5; k++ )   //把上次残留的字符清掉

{

Write_Data(WeightTable[k]);

}

}

else

{

Init_Weighttab(WeightTable,table8); //清空字符串数组

k = 0;

Weight = tmp / 1000.0;   //质量/g 1000 =  /kg

  while (tmp != 0)

{

WeightTable[k++] = 0x30 + tmp % 10;

    tmp /= 10;

if (k == 3)     //i=3时就是获得3位小数时插入小数点    

{

WeightTable[k] = '.';

k += 1;

}

}

if (k == 4) //刚好3个小数补0 0.123         

{

WeightTable[k] = '0';

k++;    //和上面统一,k比实际大1,下面再减回

}

if (k < 3) //当不够两位小数时,例如1实际代表的是0.01

{

WeightTable[4] = 0x30; //在最高位插入0

WeightTable[3] = '.'; //在最次高位插入.

for (j = k; j < 3; j++)

{

WeightTable[j] = 0x30; //如果只有0位时插入一个插入两个0 0.00

} //如果只有1位时插入一个插入1个0 0.0

k = 5;         //0.001刚好5个数

}

Write_Cmd(0x93); //重定位液晶DDRAM地址  

while (k > 0)        

    {

Write_Data(WeightTable[k-1]);   //总额结算,倒序输出,因为之前是倒序输入,高位地址为高位

k--;   

}

}  

TimeCount = 0;

Write_Cmd(0x8b); //显示完体重就定位价格显示地址

}    

    }

}  

}

推荐阅读

史海拾趣

Amptek Inc公司的发展小趣事

Amptek Inc 是一家专注于放射性测量和分析仪器的公司,提供各种 X 射线和伽马射线探测器以及相关的测试设备和软件。以下是 Amptek 公司发展的五个相关故事:

  1. 公司成立与早期发展:Amptek 公司于1987年成立,总部位于美国马萨诸塞州贝弗利市。公司成立初期,主要从事于放射性测量仪器的研发和生产。创始人团队在核物理和仪器设计领域拥有丰富的经验,致力于提供高性能、高精度的测量和分析解决方案。

  2. 技术创新与产品升级:随着技术的不断进步,Amptek 公司持续进行技术创新和产品升级。公司引入先进的探测器技术和数据处理算法,不断提升产品的性能和精度。公司的 X 射线和伽马射线探测器在放射性测量和分析领域具有很高的声誉,被广泛应用于科学研究、医学诊断、工业检测等领域。

  3. 全球市场拓展:Amptek 公司在全球范围内建立了广泛的销售网络和服务体系。除了在美国设立销售和服务中心外,公司还在欧洲、亚洲等地设立了分支机构和代理商,为全球客户提供及时的技术支持和售后服务。公司的产品远销全球,赢得了国内外客户的信赖和好评。

  4. 科研合作与应用推广:Amptek 公司与世界各地的科研机构、大学和实验室保持着紧密的合作关系,共同开展科研项目和应用研究。公司的产品被广泛应用于粒子物理、天体物理、材料科学、核医学等领域的实验和研究中,为科学家和研究人员提供了强大的实验工具和数据支持。

  5. 持续发展与未来展望:Amptek 公司将继续致力于技术创新和产品研发,不断提升产品的性能和功能,满足客户不断增长的需求。公司将继续拓展国际市场,加强与客户的合作关系,进一步巩固在放射性测量和分析领域的领先地位。同时,公司还将关注新兴市场和新技术的发展趋势,积极布局未来的发展方向。

DLP Design公司的发展小趣事

DLP科技,一家以DLP技术为核心的创新设计公司,在电子行业的快速发展中崭露头角。公司创始人李博士,凭借对DLP技术的深入研究和独到见解,带领团队开发出了一系列具有革命性的产品。从最初的DLP投影机到后来的无屏电视,DLP科技不断突破技术瓶颈,引领市场潮流。通过持续的创新和研发,DLP科技在电子行业树立了技术领先的地位。

Applied Micro Circuits (MACOM)公司的发展小趣事

在某一时期,MACOM宣布收购Applied Micro Circuits Corp.,这一举动标志着公司在业务领域上的又一次重要扩张。收购完成后,MACOM迅速进行了业务分拆,将不感兴趣的服务器芯片业务与自身的主营业务进行剥离。这一战略调整使得MACOM能够更专注于自身擅长的领域,同时也为被剥离的业务提供了更好的发展机会。

High Voltage Power Solutions Inc公司的发展小趣事

在经历了多次的收购与转手后,MACOM公司重新获得了独立地位,并开始了新的发展历程。公司推出了首个GaN功率器件,这一技术创新在行业内引起了广泛关注。随后,MACOM继续通过收购微波和射频公司MIMIX以及高速光通信公司Optomai来扩展其业务范围。这些举措不仅增强了公司的技术实力,也为其在全球市场上取得竞争优势奠定了基础。

Eagle Plastic Devices公司的发展小趣事

进入21世纪后,随着信息化和智能化技术的快速发展,Eagle Plastic Devices公司开始积极推动数字化转型和智能制造。公司引入了先进的信息化管理系统和智能生产设备,实现了生产过程的自动化和智能化。这不仅提高了生产效率和产品质量,还降低了生产成本和人力资源投入。同时,公司还利用大数据和人工智能技术优化供应链管理、市场营销等方面的工作,进一步提升了公司的综合竞争力。

ESS [ESS Technology,Inc]公司的发展小趣事

随着公司规模的不断扩大和市场份额的增加,ESS开始在全球范围内扩张其业务。ESS的分支机构遍布美国各地,同时也在中国、日本、韩国等地设立了海外机构。这些海外机构不仅有助于ESS更好地了解当地市场需求和竞争态势,还为公司在全球范围内推广其产品和服务提供了有力支持。ESS的全球战略布局为其在竞争激烈的半导体芯片市场中保持领先地位提供了有力保障。

问答坊 | AI 解惑

请问后缀为PCB的文件用什么软件打开呢

请问后缀为PCB的文件用什么软件打开呢请问后缀为PCB的文件用什么软件打开呢 谢谢了…

查看全部问答>

程序滤波(很多信号采集实用)

1、限幅滤波法(又称程序判断滤波法)     A、方法:         根据经验判断,确定两次采样允许的最大偏差值(设为A)         每次检测到新值时判断:    &n ...…

查看全部问答>

飞凌S3C2440开发板路由实验代码

PS:本文转自 飞凌嵌入式技术交流群 这个是由群里一些工程师朋友做的小实验,可以作为参考。 嵌入式Linux简单路由实验     本实验所用硬件平台为飞凌(www.witech.com.cn)TE2440V2型开发板;该开发板上有两个网卡芯片,分别为C ...…

查看全部问答>

关于WINCE6.0 VS2005 “go to definition ”功能 无法定位相关内容

关于WINCE6.0 VS2005 “go to definition ”功能 无法定位相关内容 大家好!向大家请教一个问题: 我现在装了VS2005 打开mini2440的BSP包(缺省内核工程),可以编译内核通过。 我想用go to definition 功能跟踪一下程序,比如定位一个函数或 ...…

查看全部问答>

请教一个电路

    各位大大,我有一块GR47模块,想做一个最简单的外围电路,只要SIM卡槽和一些必要电路。用串口和PC连,可以发彩信。。。哪位可以告诉我这个电路可以怎么做啊?…

查看全部问答>

在手机上,如何实现自己的软件中嵌入摄像头功能,

请问大家-有没有从事过在自己的软件中嵌入摄像头功能,就是自己的软件能够同过手机的摄像头照相,并且存储,而不是用手机自带的照相机。 有这方面的书也可以,大家介绍下吧,急用。 …

查看全部问答>

大侠帮忙

现在小弟我手上有款ARM开发板、是周立功出的。型号是easyarm2104 但是所有相关的资料全丢了。有哪位大侠有的,能共享下吗?不胜感激。…

查看全部问答>

EVC3.0+PPC202程序编译出错,关于StdAfx.sbr

Compiling resources... Compiling... Error spawning clarm.exe Creating browse info file... BSCMAKE: error BK1506 : cannot open file \'.\\ARMRel\\StdAfx.sbr\': No such file or directory Error executing bscmake.exe. Main.exe - ...…

查看全部问答>

5438与仿真器终于连上了

可以连上,必须把JTAG口RST脚上的电容拿掉,但又碰到了新问题:在线仿真5438时速度极慢,下载操作需1分钟左右,执行一个单步需十几秒,执行一次复位需半分钟,运算结果倒是正确的。iar是4.20.1版,操作系统是vista,仿真器是USB型的LSD-FET430UIF, ...…

查看全部问答>

急求助:Linux无法从NFlash(K9F1208U0A)启动

自己开了一个ARM架构板, CPU: S5PC100, SDRAM: K4T1G164QQ(两颗),Nand flash: K9F1208U0A。现在系统能从SD卡启动,对FLASH擦除操作后返回OK,但将SD卡取后,从FLASH启动串口不出现任何信息。有没有人知道是哪里出了问题,急求大家的帮助,不甚 ...…

查看全部问答>