【实例简介】这是基于51单片机的硬币电子秤的实现,内含C语言源码和proteus仿真实现

文件:590m.com/f/25127180-489412834-ab5d3d(访问密码:551685)

【源码目录】

硬币电子秤的实现

├── 1Kg电子秤程序(LCD1602显示)
│ ├── HX711.H
│ ├── HX711.LST
│ ├── HX711.OBJ
│ ├── HX711.c
│ ├── LCD1602.LST
│ ├── LCD1602.OBJ
│ ├── LCD1602.c
│ ├── LCD1602.h
│ ├── MAIN.H
│ ├── lcd12864.LST
│ ├── lcd12864.OBJ
│ ├── lcd12864.c
│ ├── lcd12864.h
│ ├── main
│ ├── main.LST
│ ├── main.M51
│ ├── main.OBJ
│ ├── main.c
│ ├── main.hex
│ ├── main.lnp
│ ├── main.plg
│ ├── main.uvgui.Administrator
│ ├── main.uvgui.Cai Chao
│ ├── main.uvgui_Administrator.bak
│ ├── main.uvgui_Cai Chao.bak
│ ├── main.uvopt
│ ├── main.uvproj
│ ├── main_uvopt.bak
│ ├── main_uvproj.bak
│ ├── uart.LST
│ ├── uart.OBJ
│ ├── uart.c
│ └── uart.h
├── HX711模块加载文件
│ └── HX711.hex
├── Last Loaded 电子秤实现3.fv8.5.pdsbak
├── Last Loaded 电子秤实现3.pdsbak
├── 电子秤实现3.pdsprj
├── 电子秤实现3.pdsprj.DESKTOP-SC10NBS.zxh.workspace
└── 电子秤实现3.pdsprj.LAPTOP-KPK9NO8B.浪峰姐姐.workspace

2 directories, 39 files

【核心代码】void main()
{
Uart_Init();
Send_Word(“Weight”);
Send_Word(“Num”);

Init_LCD1602();
LCD1602_write_com(0x80);
LCD1602_write_word(“Weight”);
LCD1602_write_com(0x80 7);
LCD1602_write_word(“Num”);
Delay_ms(1000); //ÑÓʱ,µÈ´ý´«¸ÐÆ÷Îȶ¨

Get_Maopi(); //³ÆëƤÖØÁ¿

while(1)
{
EA = 0;
Get_Weight(); //³ÆÖØ
Number = Weight_Shiwu/(coin_weight*10);
EA = 1;
Scan_Key();

//ÏÔʾµ±Ç°ÖØÁ¿
if( Flag_ERROR == 1)
{
Send_Word(“ERROR\n”);

LCD1602_write_com(0x80 0x40);
LCD1602_write_word(“ERROR “);
}
else
{
Send_ASCII(Weight_Shiwu/1000 0X30);
Send_ASCII(Weight_Shiwu%1000/100 0X30);
Send_ASCII(Weight_Shiwu%100/10 0X30);
Send_Word(”.”);
Send_ASCII(Weight_Shiwu%10 0X30);
Send_Word(“g”);

LCD1602_write_com(0x80 0x40);
LCD1602_write_data(Weight_Shiwu/1000 0X30);
LCD1602_write_data(Weight_Shiwu%1000/100 0X30);
LCD1602_write_data(Weight_Shiwu%100/10 0X30);
LCD1602_write_word(".");
LCD1602_write_data(Weight_Shiwu%10 0X30);
LCD1602_write_word(“g”);

Send_ASCII(Number/100 0x30);
Send_ASCII(Number%100/10 0x30);
Send_ASCII(Number%10 0x30);

LCD1602_write_com(0x80 0x40 7);
LCD1602_write_data(Number/100 0x30);
LCD1602_write_data(Number%100/10 0x30);
LCD1602_write_data(Number%10 0x30);

Send_ASCII(coin/10 0x30);
Send_ASCII(coin%10 0x30);
Send_Word(“jiao”);

LCD1602_write_com(0x80 12);
LCD1602_write_data(coin/10 0x30);
LCD1602_write_data(coin%10 0x30);
LCD1602_write_com(0x80 0x40 12);
LCD1602_write_word(“jiao”);
}
}
}

以下内容无关:

-------------------------------------------分割线---------------------------------------------

Block Formatting Context

块盒子布局发生的区域,浮动元素和其他元素交互的区域

浮动定位和清除浮动的时候只会应用于同一个BFC内的元素。浮动不会影响其他BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。

外边距的折叠也只会发生在同一BFC中的块级元素之间。可以创建新的BFC来消除外边距的折叠问题。

常见的定位布局方案有,普通流,浮动和绝对定位。

BFC 是一块渲染区域,有一套渲染定位规则。决定子元素定位其他元素的关系和相互作用,是属于普通流的。具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。

其实也不是什么新鲜东西,可能都在用但不知道这个概念。

案例1:使浮动元素和周围内容等高
对于以下代码:

I am a floated box!

I am content inside the container.

显示的效果如下:

因为浮动盒子脱离了文档流。浮动的div元素更大,就穿出了边框。

一般是需要将盒子和浮动元素做成等高的,即浮动元素应该包含在box内部,要达到这个效果,可以这样:

使用display: flow-root

一个新的display属性值,可以创建无副作用的BFC。在父级元素中使用display: flow-root就可以创建新的BFC。

可以理解为和创建根元素一样,创建一个文档流的上下文。

使用overflow:auto

只要设置overflow为一个非visible的值就可以。使用overflow创建一个新的BFC,overflow会告诉浏览器如何处理超出部分的内容。

但是如果只是用来创建BFC的话,可能引发其他情况。

案例2: 清除外部浮动
对于以下代码:

Try to resize this outer float

Normal

Try to resize this outer float

display:flow-root

这里需要关注的是float元素上的margin-right这个属性。

上面的两个元素之间,margin-right 没有生效。但是对box添加display:flow-root属性之后,margin-right 属性就生效了,左边的元素缩放的时候始终都保持有25px的距离。也就是display:flow-root对同级的外部元素的浮动也清除了。

如果对HTML部分写成这样:

Try to resize this outer float
Try to resize this outer float

Normal

Try to resize this outer float
Try to resize this outer float

display:flow-root

xx

消除同级元素的float, 显示出 margin-right 的效果就更明显了。

需要注意的是:清除同一BFC中的浮动,只能清除在它前面元素的浮动。

案例3: 外边距塌陷问题
对于如下代码:

red inner

显示的效果如下:

可以看到,对red-inner的margin没法撑起盒子,两个蓝色盒子之间的距离是50px.

使用display: flow-root;

两个蓝色盒子就距离100px了,而且margin也完全显示了出来。

创建BFC的方法
使用这些BFC的特性,需要创建出BFC:

根元素()
浮动元素(元素的 float 不是 none)
绝对定位元素(元素的 position 为 absolute 或 fixed)
行内块元素(元素的 display 为 inline-block)
表格单元格(元素的 display 为 table-cell,HTML表格单元格默认为该值)
表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)
匿名表格单元格元素(元素的 display 为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、row、tbody、thead、tfoot 的默认属性)或 inline-table) overflow 计算值(Computed)不为 visible 的块元素 display 值为 flow-root 的元素 contain 值为 layout、content或 paint 的元素 弹性元素(display 为 flex 或 inline-flex元素的直接子元素) 网格元素(display 为 grid 或 inline-grid 元素的直接子元素) 多列容器(元素的 column-count 或 column-width (en-US) 不为 auto,包括column-count 为 1)
column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更,Chrome bug)
什么又是 IFC?
相对于块级格式化上下文,还有行内格式化上下文,Inline formatting context。

对于IFC,行内框一个接一个地排列,排列顺序和书写方向一致。

水平书写模式,行内框从左边开始水平排列
垂直书写模式,行内框从顶部开始水平排列
一个行内框在被分割到多行中的时候,margin,border以及padding的设定不会在断裂处生效(边框跨行连续,不会产生两块border)

Margin,border和padding的设置在行方向上生效。

垂直方向上对齐
垂直方向上的位置主要是用vertical-align

Before that night—a memorable night, as it was to prove—hundreds of millions of people had watched the rising smoke-wreaths of their fires without drawing any special inspiration from the fact.”

显示效果:

而如果将vertical-align: bottom设置为top,效果则是顶部对齐:

需要注意的是,如果文字方向是垂直书写模式的话,对齐方式不变,但实际上应该是左右对齐,与vertical-align的字面意思稍有出入。在vertical-align:top再加上writing-mode: vertical-rl。

水平方向上对齐
行内元素在水平方向上的位置主要是用text-align

One Two Three
One Two Three

基于51单片机的硬币电子秤的实现相关推荐

  1. 【034】基于51单片机的HX711电子秤Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...

  2. 基于51单片机的智能电子秤设计

    具体实现功能 系统由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+按键模块+10kg压力传感器构成. 具体功能: 1.数码管显示当前的重量,单位 ...

  3. 基于51单片机语音播报电子秤体重秤系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Protues仿真 七.流程图 八.程序源码 九.资料包括 摘要 秤是一 ...

  4. 14、基于51单片机智能硬币分拣机 投币分类筛查计数器 电子存钱罐系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus图 七.程序源码 八.资料包括 摘要 近年来,随着我国经济 ...

  5. 基于51单片机的简易电子秤

    首先看看题目要求: 1.方案论证 (1)压力传感器的论证与选择 方案一:采用惠更斯电桥,当电阻应变片承受载荷产生变形时,其阻值将发生变化.从而使电桥失去平衡,产生相应的差动信号,但其线性度不理想. 方 ...

  6. 基于51单片机的蓝牙电子秤设计

    1.设计方案 本设计以STC89C52单片机为主控芯片制作了一款数字电子秤,以电阻应变式压力传感器来进行称重,将感应到的被测物体的重力转化为微弱的毫伏级电压信号,在HX711芯片内部进行128的增益放 ...

  7. 基于51单片机的智能电子秤设计课程设计毕业设计

    微信公众号:创享日记 对话框发送:单片机电子秤 获取仿原理图.真源文件.源程序代码和论文报告等 由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+ ...

  8. 基于51单片机的智能电子秤

    1.概述 (1)系统原理 本电子秤系统利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机.单片机经过相应的处理后,得出当前所 ...

  9. 用单片机c51电子秤的c语言,基于51单片机的电子秤系统设计

    微机原理论文第八篇:基于51单片机的电子秤系统设计 摘要:本文主要分析51单片机下的数字电子秤.在设计过程中,这种电子秤具体包括电源.传感器.蓝牙.转换器.单片机.键盘.开关.显示器等组成部分,在实践 ...

最新文章

  1. F# 4.0于全平台发布
  2. mysql创建字段非空NOT NULL的好处
  3. Windows环境下利用VS和mingw编译LLVM
  4. JSON数据格式解析库(cJSON、Jansson)的使用在STM32上移植和使用
  5. Binary String Matching(C++)
  6. java 注册页面正则式_Java使用正则表达式对注册页面进行验证功能实现
  7. 利用Python发送短信,用处多多
  8. 高可用性HA及Cluster集群
  9. win2003域迁移实战记录
  10. UEFI 文件类型.efi
  11. 使用 DUET/REFIND 方法将 NVME 添加为引导驱动器
  12. 利用纯m文件生成ui(二)
  13. 智能陈桥输入法软件测试,智能陈桥输入法无法使用.怎么办?
  14. 联想System X 3650M5 服务器装机问题记录
  15. 计算机 键盘启动,键盘开机如何打开键盘
  16. VS解决方案下文件的含义(记录)
  17. idea用JAVA连接mysqlAccess denied for user ‘root‘@‘localhost‘ (using password: YES)错误
  18. 和平精英分数计算机制,和平精英掉分机制怎么计算
  19. mysql按1-12月查询统计数据
  20. Actions(鼠标事件)方法列表

热门文章

  1. 后疫情时代品牌何去何从:营销机会就藏在百度的这些搜索大数据里
  2. 用Excel完成专业化数据统计、分析工作
  3. asp毕业设计—— 基于asp+access的论坛网站设计与实现(毕业论文+程序源码)——论坛网站
  4. 爬虫学习:爬取京东图书
  5. 【自动化办公】python批量替换word中的内容
  6. Wireshark | 猿如意
  7. 有没有人可以解答一下?
  8. 《C语言程序设计》江宝钏主编-习题1-4-圆柱体
  9. 荣耀MagicOS 7.0正式发布 打造以人为中心的智慧生活解决方案
  10. 浅谈CPU位数和操作系统位数