51单片机设计电子秤参考代码

时间: 2023-08-04 12:09:33 浏览: 67
以下是一个简单的基于51单片机的电子秤代码示例: ```c #include <reg52.h> #include <intrins.h> // 数码管显示的段码定义 unsigned char code duanma[10]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; // 74hc595芯片的控制端口定义 sbit DS=P1^0; // 数据 sbit SHCP=P1^1; // 时钟 sbit STCP=P1^2; // 存储 // 按键的端口定义 sbit key0=P3^0; // 清零 sbit key1=P3^1; // 去皮 // 电子秤AD转换函数 unsigned int Get_Weight() { unsigned int ad_val=0; unsigned char i; ADC_CONTR=0x90; // 启动AD转换 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(!ADC_CONTR&0x20); // 等待转换完成 ADC_CONTR&=0xdf; // 清除ADC转换完成标志 ad_val=ADC_RES; ad_val<<=8; ad_val|=ADC_RESL; for(i=0;i<6;i++) // 滤波 ad_val=(ad_val*7+Get_Adc_Average(ADC_CHANNEL_3,10))/8; return ad_val; } // 获取AD转换结果的平均值 unsigned int Get_Adc_Average(unsigned char ch, unsigned char times) { unsigned int temp_val=0; unsigned char t; for(t=0;t<times;t++) { temp_val+=Get_Adc(ch); Delay_Ms(2); } return temp_val/times; } // 获取AD转换结果 unsigned int Get_Adc(unsigned char ch) { ADC_CONTR=0x80|ch|0x10; Delay_Ms(2); while(!(ADC_CONTR&0x20)); ADC_CONTR&=0xdf; return ADC_RES; } // 去皮 void Tare() { unsigned int ad_val=0; unsigned char i; for(i=0;i<10;i++) // 采集10次 { ad_val+=Get_Weight(); Delay_Ms(10); } ad_val/=10; // 计算平均值 EA=0; // 关中断,防止误差 ADRESH=(unsigned char)(ad_val>>8); ADRESL=(unsigned char)ad_val; EA=1; // 开中断 } // 清零 void Clear() { EA=0; // 关中断,防止误差 ADRESH=0; ADRESL=0; EA=1; // 开中断 } // 数码管显示函数 void Display(unsigned int weight) { unsigned char i; unsigned char wei[5]={0,0,0,0,0}; // 存储每一位数码管上的数字 unsigned long tem=weight; // 转换为长整型 for(i=0;i<5;i++) // 将数字分解成每一位 { wei[i]=tem%10; tem/=10; } for(i=0;i<5;i++) // 循环扫描每一位 { P0=0x00; // 关闭显示 DS=0; // 清除数据 SHCP=0; // 清除时钟 STCP=0; // 清除存储 P0=duanma[wei[i]]; // 设置段码 DS=1; // 存储数据 SHCP=1; // 上升沿时钟 STCP=1; // 存储数据 P0=0xff; // 打开显示 Delay_Ms(1); // 延时 } } // 主函数 void main() { unsigned int weight=0; TMOD=0x01; // 定时器0工作在模式1 TH0=0xfc; // 定时器0初值 TL0=0x67; TR0=1; // 启动定时器0 ET0=1; // 使能定时器0中断 EA=1; // 开总中断 while(1) { weight=Get_Weight(); // 获取重量 Display(weight); // 显示重量 if(key0==0) // 清零 { Clear(); while(key0==0); } if(key1==0) // 去皮 { Tare(); while(key1==0); } } } // 定时器0中断函数 void Timer0() interrupt 1 { static unsigned char cnt=0; TH0=0xfc; // 定时器0初值 TL0=0x67; cnt++; if(cnt>=10) // 每100ms获取一次重量 { cnt=0; weight=Get_Weight(); } } ``` 该代码实现了基本的电子秤功能,包括去皮、清零和重量显示。代码中使用了74hc595芯片进行数码管的驱动,通过定时器中断实现了重量的周期性获取和显示。需要根据具体硬件电路进行调整和优化。

相关推荐

zip
基于BERT构建新闻文本分类模型,并结合node.js + vue完成了一个可视化界面。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

最新推荐

毕业设计——PHM and 航空发动机健康指标构建.zip

毕业设计是高等教育阶段学生完成学业的一个重要环节,通常在学士或硕士学业即将结束时进行。这是学生将在整个学业中所学知识和技能应用到实际问题上的机会,旨在检验学生是否能够独立思考、解决问题,并展示其专业能力的一项综合性任务。 毕业设计的主要特点包括: 独立性: 毕业设计要求学生具备独立思考和解决问题的能力。学生需要选择一个合适的课题,研究相关文献,进行实地调查或实验,并提出独立见解。 实践性: 毕业设计是将理论知识应用到实际问题中的一次实践。通过完成毕业设计,学生能够将所学的专业知识转化为实际的解决方案,加深对专业领域的理解。 综合性: 毕业设计往往要求学生运用多个学科的知识,综合各种技能。这有助于培养学生的综合素养,提高他们的综合能力。 导师指导: 学生在毕业设计过程中通常由一名指导老师或导师团队提供指导和支持。导师负责引导学生确定研究方向、制定计划、提供建议,并在整个过程中监督进展。 学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。

python爬虫获取人民网、新浪等网站新闻作为训练集.zip

基于BERT构建新闻文本分类模型,并结合node.js + vue完成了一个可视化界面。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

2021年之前的一些IC领域的笔试面试合集,及秋招相关资料

整理了2021年之前的一些IC领域(包含FPGA)的笔试面试合集,华为、中兴、联发科、大疆等等,还有一些秋招的笔记资料。2021校招华为FPGA逻辑、FPGA&ASIC笔面试题全新版本、FPGA工程师面试试题、IC笔试-面试-题目集合、华为中兴FPGA面试题、联发科技2021校招数字IC笔试题、数字IC设计工程师笔试面试经典100题、ASIC设计流程和方法、FPGA的指导性原则等等。

单片机培训教程基础实验例程实验8:矩阵按键.zip

内含程序

ISO 9557-2024.pdf

ISO 9557-2024.pdf

GIS设备运行管理重点及运行注意事项PPT课件.pptx

GIS设备运行管理重点及运行注意事项PPT课件.pptx

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

电子商务中的多渠道销售管理技术

# 1. 多渠道销售管理技术的概述 1.1 电子商务中的多渠道销售概念及特点 在当今数字化时代,多渠道销售已成为企业成功的关键。多渠道销售是指企业通过多种不同的销售渠道(如线下实体店铺、线上电子商务平台、移动应用等)向消费者提供产品或服务的销售模式。这种模式的特点包括覆盖面广、销售渠道多样化、服务体验多样化等。 1.2 多渠道销售管理技术的重要性 多渠道销售管理技术的引入可以有效帮助企业实现跨渠道销售数据的整合与分析,提高销售效率,优化用户体验,增强市场竞争力。通过技术手段的支持,企业可以更好地监控和管理不同销售渠道的表现,及时作出调整和改进。 1.3 多渠道销售管理技术对商业发展的影响

cuda 的库目录环境变量, 在cmake中

在 CMake 中,可以使用 `find_library()` 函数来查找 CUDA 库文件并将其链接到目标中。此函数会自动查找 CUDA 库文件所在的目录,并将该目录添加到目标的链接器路径中。如果需要指定 CUDA 库文件的目录,可以在 `find_library()` 函数中设置 `PATHS` 参数。例如,以下代码段可以在 CMake 中查找 CUDA 库文件并将其链接到目标中: ``` find_library(CUDA_LIBS cudart PATHS /path/to/cuda/lib) target_link_libraries(my_target ${CUDA_LIBS}

知识产权大数据平台建设方案.docx

知识产权大数据平台建设方案.docx