【TB作品】体重监控系统,ATMEGA16单片机,Proteus仿真

机电荷2018级课程设计题目及要求
题1:电子称重器设计
功能要求:
1)开机显示时间(小时、分)、时分可修改;
2)用滑动变阻器模拟称重传感器(测量范围0-
200g),数码管显示当前重量值,当重量值高于高
值时,红灯长亮;
3)当重量值低于低值时,黄灯长亮;
4)当重量值在正常值时,绿灯亮;
5)重量高值150g-200g和低值30g。
硬件调试:实现以上功能

数码管 段选RORTD八个引脚 位选PC0 PC1 PA1 PA2 PA3 PA4 PA5(只用到7位数码管)
按键四个 PB0 PB1 PB2 PB3
滑动变阻器接PA0
三个灯,黄绿红,接PB4 PB5 PB6

功能:
1数码管前四个显示时和分比如0158代表1点58分。数码管最后三位显示重量000到200表示多少g。
重量低于30,则黄灯亮。
重量正常,则绿灯亮。
重量高于150,则红灯亮。
按键1增加小时,按键2减少小时。(调时)
按键3增加分钟,按键4减少分钟。(调分)
正常走时。

在这里插入图片描述

电子称重器设计

功能要求

  1. 显示时间:开机后显示当前时间(小时和分钟),并且可以通过按键进行时、分的修改。
  2. 重量测量:使用滑动变阻器模拟称重传感器,测量范围为0到200克。数码管实时显示当前重量。
  3. 重量报警:根据测量的重量值,分别控制三种指示灯:
    • 当重量高于150克时,红灯亮。
    • 当重量低于30克时,黄灯亮。
    • 当重量在30克到150克之间时,绿灯亮。

硬件配置

  • 数码管:用于显示时间和重量。段选引脚连接RORTD,位选引脚连接PC0、PC1、PA1、PA2、PA3、PA4、PA5(只使用7位数码管)。
  • 按键:四个按键,分别连接到PB0、PB1、PB2、PB3。用于调整时间。
  • 滑动变阻器:连接到PA0,用于模拟称重传感器。
  • 指示灯:三个灯(黄、绿、红),分别连接到PB4、PB5、PB6。

系统原理

  1. 时间显示与调整

    • 数码管的前四个位置用于显示当前时间。例如,显示"0158"表示当前时间是1点58分。
    • 通过按键1和按键2可以增加或减少小时,通过按键3和按键4可以增加或减少分钟。
    • 时间正常计时,并且每秒钟更新一次。
  2. 重量测量与显示

    • 滑动变阻器模拟称重传感器,通过AD转换器将模拟信号转换为数字信号。
    • AD转换后的数据经过处理,显示在数码管的后三位。例如,显示"050"表示当前重量为50克。
    • 重量的变化实时更新到数码管上。
  3. 重量报警指示

    • 程序根据重量值的范围控制相应的指示灯。
      • 当重量低于30克时,黄灯亮,表示重量过轻。
      • 当重量在30克到150克之间时,绿灯亮,表示重量正常。
      • 当重量超过150克时,红灯亮,表示重量过重。

程序实现与讲解

1. 初始化设置
DDRA = 0xFF - 0x01;  // 配置引脚的输入输出关系
DDRC |= 0x03;        // 配置引脚的输入输出关系
DDRD = 0xFF;         // 配置引脚的输入输出关系
DDRB = 0xF0;         // 配置引脚的输入输出关系

这段代码配置了各个引脚的输入输出关系。数码管、滑动变阻器和指示灯分别连接到不同的端口。

2. 时间更新与显示
SEG_DISP[0] = LED_Disbuf[time_hour % 100 / 10];
SEG_DISP[1] = LED_Disbuf[time_hour % 10];
SEG_DISP[2] = LED_Disbuf[time_minute % 100 / 10];
SEG_DISP[3] = LED_Disbuf[time_minute % 10];

这段代码将当前时间的小时和分钟分解成个位和十位,并将其转换为数码管显示的内容。

3. 按键检测与时间调整
int GetKey(void) {if ((PINB & 0x01) == 0) {return 1; // 第1个按键} else if ((PINB & 0x02) == 0) {return 2; // 第2个按键} else if ((PINB & 0x04) == 0) {return 3; // 第3个按键} else if ((PINB & 0x08) == 0) {return 4; // 第4个按键}return 0;
}

这个函数检测哪个按键被按下,并返回相应的按键编号。通过这个返回值可以调整时间。

if (keyvalue == 1) { // 按键1的功能time_hour++;if (time_hour == 24) time_hour = 0;
} else if (keyvalue == 2) { // 按键2的功能if (time_hour == 0) {time_hour = 23;} else {time_hour--;}
} else if (keyvalue == 3) { // 按键3的功能time_minute++;if (time_minute == 60) time_minute = 0;
} else if (keyvalue == 4) { // 按键4的功能if (time_minute == 0) {time_minute = 59;} else {time_minute--;}
}

根据按键检测结果,调整小时和分钟。按键1和按键2用于增加和减少小时,按键3和按键4用于增加和减少分钟。

4. 重量检测与显示
unsigned int AD_GetData(void) {unsigned int ADData0;ADMUX = (1 << REFS0); // ADC参考电压为AVcc,ADC结果右对齐,选择通道ADC0ADCSRA |= (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); // 使能AD转换,ADC时钟64分频ADCSRA |= (1 << ADSC); // 开始AD转换while (!(ADCSRA & (1 << ADIF)));ADCSRA |= (1 << ADIF); // 清零ADC中断标志位ADData0 = ADC;ADData0 = ((long)ADData0 * 5010 / 1024); // 将获得的AD值转换为电压值,单位为mvADData0 = ADData0 / 25; // 数值换算到0~200greturn ADData0;
}

该函数通过AD转换器获取滑动变阻器的电压值,并将其转换为重量值,显示在数码管上。

5. 指示灯控制
if (ADData0 < 30) { // 重量低于30PORTB &= ~0x10; // PB4低电平,黄灯亮PORTB |= 0x20; // PB5高电平,绿灯不亮PORTB |= 0x40; // PB6高电平,红灯不亮
} else if (ADData0 < 150) {PORTB &= ~0x20; // PB5低电平,绿灯亮PORTB |= 0x10; // PB4高电平,黄灯不亮PORTB |= 0x40; // PB6高电平,红灯不亮
} else {PORTB &= ~0x40; // PB6低电平,红灯亮PORTB |= 0x20; // PB5高电平,绿灯不亮PORTB |= 0x10; // PB4高电平,黄灯不亮
}

根据重量值控制相应的指示灯。当重量低于30克时,黄灯亮;重量在30克到150克之间时,绿灯亮;重量超过150克时,红灯亮。

通过以上功能模块的合理设计和实现,可以完成电子称重器的主要功能,包括时间显示与调整、重量测量与显示以及重量报警指示。

资源

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/866555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot学生档案信息管理系统-计算机毕业设计源码96509

目 录 第 1 章 引 言 1.1 选题背景 1.2 研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析…

JAVA程序打包时报错,但是运行时正常。

报错&#xff1a;Could not transfer artifact com.alibaba:fastjson:pom:1.2.83 from/to clojars... 背景&#xff1a;需要将fastjson从1.2.70升级到1.2.83&#xff1b;并且编译环境是局域网不可以连接互联网&#xff1b;每个项目组都是独立的私有仓库。 操作&#xff1a;在本…

海外发稿: 秘鲁-区块链新闻媒体通稿宣发

秘鲁媒体单发 随着全球化的不断深入&#xff0c;海外发稿已经成为众多企业宣传推广的重要方式之一。而在海外发稿的选择中&#xff0c;秘鲁媒体的地位尤为重要。秘鲁作为南美洲的重要国家之一&#xff0c;拥有众多知名媒体平台&#xff0c;包括diariodelcusco、serperuano、el…

mysql8 导入导出工具类,支持windows 和linux

概述 1&#xff09;导入导出工具类 支持windows 和linux&#xff0c;详见第3部分 2&#xff09;导入、导出参数在 dbeaver 中应用&#xff0c;详见第4部分 整理原因: 1&#xff09;中文乱码 --default-character-setutf8 2&#xff09;BLOB 导出后&#xff0c;导入失败 --he…

Qt(二)弹窗类 颜色对话框 字体对话框 资源文件

文章目录 一、QDebug类和QMessagebox类&#xff08;一&#xff09;QDebug类&#xff1a;打印调试类&#xff08;二&#xff09;QMessagebox类&#xff1a;弹窗类2. 修改组件图标&#xff08;1&#xff09;通过ui界面&#xff08;2&#xff09;通过QIcon的方式&#xff08;3&…

【笔试记录】腾讯音乐 | 20230903 | cpp (更新ing)

1 完美数 1.1 题目描述 小红定义一个数为“完美数”&#xff0c;当且仅当该数仅有一个非零数字。例如 5000, 4, 1, 10, 200 都是完美数。 小红拿到了一个大小为 n&#xff08;2 < n < 2000&#xff09;的数组 a&#xff0c;她希望选择数组中的两个元素&#xff08;1 …

TTS文本转声音:fish-speech 推理、requests访问接口案例

参考: https://hub.docker.com/r/lengyue233/fish-speech https://speech.fish.audio/inference/#http-api 下载 下载模型: HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2下载的内容有…

maven项目、idea抽风问题解决

开发的时候遇到奇奇怪怪的非技术问题&#xff0c;解决起来会费时间&#xff0c;做无用功。   这里记录常见的情况和解决方法 1.未识别maven项目 文件的图标变成了这种橙色的&#xff0c;而且有主启动函数也不能run 右键pom文件&#xff0c;点击Add as Maven Project 如果…

【在大模型RAG系统中应用知识图谱】

【引子】 关于大模型及其应用方面的文章层出不穷&#xff0c;聚焦于自己面对的问题&#xff0c;有针对性的阅读会有很多的启发&#xff0c;本文源自Whyhow.ai 上的一些文字和示例。对于在大模型应用过程中如何使用知识图谱比较有参考价值&#xff0c;特汇总分享给大家。 在基于…

知识图谱构建助手安装配置使用!Sapphire Ventures最全Sales AI图谱:AI如何重塑销售行业?

知识图谱构建助手安装配置使用!Sapphire Ventures最全Sales AI图谱:AI如何重塑销售行业? 项目简介 llmgraph 使您能够从给定的源实体维基百科页面创建 GraphML、GEXF 和 HTML 格式(通过 pyvis 生成)的知识图。知识图谱是通过从 ChatGPT 或 LiteLLM 支持的其他大型语言模型…

14-8 小型语言模型的兴起

过去几年&#xff0c;我们看到人工智能能力呈爆炸式增长&#xff0c;其中很大一部分是由大型语言模型 (LLM) 的进步推动的。GPT-3 等模型包含 1750 亿个参数&#xff0c;已经展示了生成类似人类的文本、回答问题、总结文档等能力。然而&#xff0c;虽然 LLM 的能力令人印象深刻…

SonarWiz 8.0.1侧扫 浅剖 测深软件License获取

SonarWiz 8.0.1是功能强大的测绘软件&#xff01;提供强大的数据采集、后处理等功能操作&#xff0c;您将获得灵活完整的报告&#xff0c;并提供丰富的选项以便进行定制和更灵活的进行操作&#xff0c;软件功能齐全&#xff0c;包括完整的海底测绘解决方案&#xff0c;方便实时…

国产麒麟v10、UOS系统在线比较两个Word文件的内容差异

调用PageOffice的WordCompare方法&#xff0c;同时在线打开两个Word文档&#xff0c;可以切换显示其中的一个文档&#xff0c;或者显示两个文档的对比结果&#xff0c;即可实现在线的文档内容比较功能。此功能可以应用在以下方面&#xff1a; 文档管理中&#xff0c;比较两个版…

C++11|左、右值引用和移动语义

目录 一、左值引用 && 右值引用 1.1什么是左值&#xff1f;什么是左值引用&#xff1f; 1.2什么是右值&#xff1f;什么是右值引用&#xff1f; 1.3左值引用与右值引用比较 二、左、右值引用使用场景(为什么要有右值引用?) 2.1左值引用使用场景&#xff1a; 2.2右…

秋招突击——设计模式补充——简单工厂模式和策略模式

文章目录 引言正文简单工厂模式策略模式策略模式和工厂模式的结合策略模式解析 总结 引言 一个一个来吧&#xff0c;面试腾讯的时候&#xff0c;问了我单例模式相关的东西&#xff0c;自己这方面的东西&#xff0c;还没有看过。这里需要需要补充一下。但是设计模式有很多&…

数字IC设计-VCS和Verdi的使用

#学习记录# 前言&#xff1a;本文以一个简单的计数器来说明vcs和verdi的使用 1 代码文件 1.1 计数器代码 //Engineer&#xff1a;Mr-pn-junction module counter(input clk,input rst,output reg [5:0] count); always(posedge clk or negedge rst)beginif(!rst)coun…

【算法】(C语言):二分查找

二分查找&#xff1a; 获取查找区域的中间位置。若中间位置的数据就是要找的值&#xff0c;则返回true。若要找的值 小于 中间位置的数据&#xff0c;则往左边查找。若要找的值 大于 中间位置的数据&#xff0c;则往右边查找。重复1和2&#xff0c;若没有要找的值&#xff0c;…

业界数据架构的演变

目录 一、概述 二、业务处理-单体架构 三、业务处理-微服务架构 四、数据分析-大数据Lambda架构 五、数据分析-Kappa架构 六、数据分析-LambdaKappa混合架构 七、湖仓一体架构 一、概述 近年来随着越来越多的大数据技术被开源&#xff0c;例如&#xff1a;HDFS、Spark等…

【Linux进程通信】共享内存

目录 共享内存函数 头文件 shmget ftok函数​ shmat shmdt shmctl 共享内存区是最快的IPC 形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到操作系统内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据…