课程设计电子秤

合集下载

电子体重秤课程设计

电子体重秤课程设计

电子体重秤课程设计一、课程目标知识目标:1. 学生能理解电子体重秤的工作原理,掌握其基本组成部分及功能。

2. 学生能运用所学的电学知识,分析电子体重秤的电路原理和传感器应用。

3. 学生了解电子体重秤在生活中的应用,认识到其在健康监测中的重要性。

技能目标:1. 学生能运用所学知识,正确操作电子体重秤,进行简单的体重测量。

2. 学生能通过小组合作,分析并解决电子体重秤使用过程中可能出现的问题。

3. 学生能运用图表、报告等形式,展示电子体重秤的使用方法和测量结果。

情感态度价值观目标:1. 学生培养对电子体重秤的兴趣,激发探索科学技术的热情。

2. 学生认识到科技发展对生活的影响,增强对科技创新的信心。

3. 学生通过小组合作,培养团队协作能力和沟通表达能力。

4. 学生在实践操作中,体验科学探究的乐趣,提高问题解决能力。

课程性质:本课程为电子技术及应用领域的一节实践性课程,结合学生特点和教学要求,注重理论与实践相结合,培养学生的动手能力和创新能力。

学生特点:本课程针对初中年级学生,他们对电子技术有一定的基础知识,好奇心强,喜欢动手实践。

教学要求:课程要求教师引导学生主动参与,注重启发式教学,鼓励学生提问和思考,提高学生的实践操作能力。

同时,关注学生的个体差异,因材施教,使每位学生都能在课程中取得进步。

通过本课程的学习,使学生达到上述课程目标,为后续相关课程打下坚实基础。

二、教学内容1. 电子体重秤的原理与结构- 介绍电子体重秤的工作原理,包括传感器、A/D转换器等组成部分。

- 分析电子体重秤的电路原理,理解其测量体重的基本过程。

2. 电子体重秤的使用与操作- 讲解电子体重秤的正确使用方法,包括校准、测量、读取数据等。

- 学生动手操作电子体重秤,体验实际测量过程。

3. 电子体重秤的维护与故障排除- 介绍电子体重秤的日常维护方法,确保其准确性和使用寿命。

- 分析常见故障原因,学会简单的故障排除方法。

4. 电子体重秤在实际生活中的应用- 探讨电子体重秤在健康监测、运动健身等领域的应用。

电子秤设计的课程设计

电子秤设计的课程设计

电子秤设计的课程设计一、课程目标知识目标:1. 让学生理解电子秤的工作原理,掌握其基本组成部分及功能。

2. 使学生掌握电子秤设计中涉及的物理知识,如力的作用、杠杆原理等。

3. 帮助学生了解电子秤在生活中的应用,认识到科技进步对生活的影响。

技能目标:1. 培养学生运用物理知识解决实际问题的能力,学会分析电子秤的设计原理。

2. 提高学生的动手操作能力,学会组装和调试简单的电子秤模型。

3. 培养学生的团队协作能力,学会在小组合作中共同解决问题。

情感态度价值观目标:1. 培养学生对科学技术的兴趣和求知欲,激发他们探索电子秤设计的热情。

2. 引导学生关注生活中的科技产品,认识到科技发展对提高生活品质的重要性。

3. 培养学生的创新意识,鼓励他们勇于尝试,不断优化电子秤设计方案。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程属于科学实践类课程,注重理论知识与实践操作相结合。

2. 学生特点:六年级学生具备一定的物理知识和动手能力,对新事物充满好奇心,喜欢探索和尝试。

3. 教学要求:教师需结合学生特点,设计富有挑战性的实践活动,引导学生主动参与,培养他们的创新精神和实践能力。

1. 知识层面:掌握电子秤的基本原理和组成部分,了解其在生活中的应用。

2. 技能层面:能够独立组装和调试简单的电子秤模型,解决实际问题。

3. 情感态度价值观层面:培养对科技的兴趣,关注生活科技发展,具备创新意识。

二、教学内容1. 电子秤概述- 了解电子秤的发展历程、分类及特点。

- 熟悉电子秤在生活中的应用场景。

2. 电子秤工作原理- 学习力的作用、杠杆原理等基础物理知识。

- 掌握电子秤传感器的工作原理和转换过程。

3. 电子秤的组成与结构- 认识电子秤的主要组成部分,如传感器、显示屏、按键等。

- 了解各组成部分的功能和相互关系。

4. 电子秤设计实践- 学习如何设计简单的电子秤模型,包括电路图绘制、元件选择等。

- 掌握组装和调试电子秤模型的技巧。

高精度电子秤课程设计

高精度电子秤课程设计

高精度电子秤课程设计一、教学目标本课程旨在让学生了解和掌握高精度电子秤的基本原理、使用方法和维护技巧。

通过本课程的学习,学生将能够:1.理解高精度电子秤的工作原理和主要组成部分。

2.掌握高精度电子秤的使用方法和操作技巧。

3.了解高精度电子秤的维护和保养知识。

4.能够运用高精度电子秤进行实际测量和数据处理。

二、教学内容本课程的教学内容主要包括以下几个部分:1.高精度电子秤的基本原理:介绍高精度电子秤的工作原理和主要组成部分,如传感器、显示器、接口等。

2.高精度电子秤的使用方法:讲解如何正确使用高精度电子秤,包括测量范围、测量精度、数据存储和输出等。

3.高精度电子秤的维护和保养:介绍高精度电子秤的日常维护和保养知识,如清洁、校准、更换电池等。

4.实际操作练习:安排实际操作练习环节,让学生亲自动手操作高精度电子秤,巩固所学知识。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:教师讲解高精度电子秤的基本原理、使用方法和维护技巧。

2.演示法:教师现场演示高精度电子秤的操作过程,让学生直观地了解测量过程。

3.实践操作法:学生亲自动手操作高精度电子秤,进行实际测量和数据处理。

4.小组讨论法:学生分组讨论实际操作中遇到的问题,共同解决问题。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的教材,详细介绍高精度电子秤的相关知识。

2.参考书:提供相关的参考书籍,为学生提供更多的学习资料。

3.多媒体资料:制作精美的PPT课件,生动形象地展示高精度电子秤的操作过程。

4.实验设备:准备一定数量的高精度电子秤,供学生进行实际操作练习。

五、教学评估本课程的评估方式将采用多元化的形式,以全面、客观、公正地评价学生的学习成果。

评估方式包括:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现来评估。

数字电子秤课程设计完美

数字电子秤课程设计完美

数字电子秤课程设计 完美一、课程目标知识目标:1. 让学生了解数字电子秤的工作原理,掌握其关键组成部分,如传感器、A/D 转换器等。

2. 使学生理解数字电子秤的精度、分辨率等关键性能指标,并学会如何进行简单计算。

3. 帮助学生掌握数字电子秤的使用方法,包括校准、测量、单位转换等。

技能目标:1. 培养学生动手操作数字电子秤的能力,学会正确使用、维护和保养设备。

2. 培养学生运用数字电子秤进行实验和科学探究的能力,提高实验数据的准确性。

3. 提高学生的团队合作能力,通过小组合作完成数字电子秤的设计与制作。

情感态度价值观目标:1. 激发学生对电子技术的兴趣,培养学习热情和探究精神。

2. 培养学生严谨、细致的科学态度,注重实验数据的真实性。

3. 增强学生的环保意识,让学生在使用数字电子秤时注意节能环保。

本课程针对高年级学生,结合电子技术课程内容,以数字电子秤为载体,培养学生理论联系实际的能力。

课程注重实用性,使学生能够将所学知识应用于生活实际。

通过课程学习,学生能够掌握数字电子秤的基本原理、使用方法和制作技巧,提高实践操作能力和团队合作能力,同时培养科学素养和环保意识。

课程目标的设定旨在确保学生能够达到预期学习成果,为后续教学设计和评估提供明确依据。

二、教学内容1. 数字电子秤概述- 了解电子秤的发展历程、分类及特点- 学习数字电子秤的基本组成及工作原理2. 数字电子秤关键部件- 传感器:学习应变式传感器原理、特点及应用- A/D转换器:了解模数转换器的原理、类型及性能指标3. 数字电子秤性能指标- 精度、分辨率、量程等概念的学习- 简单计算方法:如误差分析、单位转换等4. 数字电子秤的使用与维护- 正确使用数字电子秤的方法- 校准、测量、数据处理等操作步骤- 维护保养知识及注意事项5. 数字电子秤设计与制作- 教学大纲:设计原理、选材、制作流程等- 小组合作完成数字电子秤的设计与制作- 作品展示与评价6. 实践活动与拓展- 结合课程内容,开展数字电子秤实际应用活动- 探究电子秤在其他领域的应用,如物联网、智能制造等教学内容依据课程目标,结合教材相关章节,确保科学性和系统性。

课程设计电子秤

课程设计电子秤

电子信息与电气工程系课程设计报告课程设计任务书目录1 摘要: (4)关键字2 方案论证及选择: (5)2.1输入模块 (5)2.2显示模块 (5)3 系统硬件及功能: (5)3.1 单片机控制电路功能及介绍 (5)3.2 A\D转换 (6)3.3 3×4键盘 (7)3.4 LCD显示 (7)4 设计思路及程序流程图: (8)5 结果仿真: (9)6 总结与心得体会: (10)7 参考文献 (10)附录1:摘要现代社会的发展,对称重技术提出了更高的要求。

目前,台式电了秤在商业贸易中的使用已相当普遍,但存在较大的局限性:体积大、成本高、需要工频交流电源供应、携带不便、应用场所受到制约。

现有的便携秤为杆秤或以弹簧压缩、拉伸变形来实现计量的弹簧秤,居民用户使用的是国家已经明令淘汰的丰卜秤。

多年来,人们一直期待测量准确、携带方便、价格低廉的便携式电子秤投放市场。

木文设计了一种便携式电子秤,论述了仪器的工作原理,介绍了仪器的误差来源与误差分配,给出了仪器电路设计与软件流程,探讨了仪器的工程设计技术。

针对电容式称重传感器非线性影响大的问题,提出并建立了电容式称重传感器的非线性影响模型与校正模型,为便携式电子秤的低成本准确称量奠定了理论基础。

便携式电子秤主要由电源、称重传感器、单片机、键盘/开关、LCD显示器等部分构成。

主要技术指标为:称量范围0^- lOkg;分度值O.Olkg; 精度等级m级;电源DC 1.5V。

关键字:电子秤,A T89C51, LCD2:方案论证及选择:2.1: 输入模块方案一:采用独立式按键作为输入模块,其特点:直接用I/O口构成单个按键电路,接口电路配置灵活、软件结构简单,但是当键数较多时,占用I/O口较多;方案二:采用矩阵式键盘作为输入电路,其特点:电路和软件稍复杂,但相比之下,当键数越多时越节约I/O口。

本设计使用键盘输入价格值,若采用独立按键,对数值进行递增递减需频繁按键,为软件设计增加负担,且操作界面不友好。

简易数字电子秤课程设计

简易数字电子秤课程设计

简易数字电子秤课程设计一、课程目标知识目标:1. 学生能够理解并掌握电子秤的基本原理,包括传感器工作原理、信号转换和显示输出。

2. 学生能够了解简易数字电子秤的电路组成,并识别各部分功能。

3. 学生能够运用数学知识,进行电子秤的校准和测量误差分析。

技能目标:1. 学生能够运用所学的电子知识,完成简易数字电子秤的组装和调试。

2. 学生能够通过实际操作,掌握电子秤的使用方法,并运用其进行物体的质量测量。

3. 学生能够分析和解决电子秤使用过程中可能遇到的问题,具备一定的故障排查能力。

情感态度价值观目标:1. 学生通过课程学习,培养对电子技术的兴趣,激发创新意识和实践能力。

2. 学生在学习过程中,树立团队协作意识,学会分享和交流,培养良好的沟通能力。

3. 学生能够关注电子秤在生活中的应用,认识到科技对生活的影响,提高社会责任感。

本课程针对初中年级学生,结合电子技术课程内容,注重实践操作和理论知识相结合。

通过本课程的学习,使学生能够将所学知识应用于实际生活,提高学生的实践能力和创新能力。

同时,关注学生的情感态度价值观培养,使学生在掌握知识技能的同时,形成良好的团队合作意识和责任意识。

课程目标明确、具体,便于教学设计和评估。

二、教学内容本章节教学内容主要包括以下三个方面:1. 电子秤基本原理:- 传感器工作原理,包括应变片传感器和压力传感器;- 信号转换原理,介绍模拟信号转换为数字信号的过程;- 显示输出原理,讲解数字显示技术。

2. 简易数字电子秤电路组成与功能:- 电路组成,包括传感器、信号放大电路、A/D转换器、微处理器、显示电路等;- 各部分功能,分析各组成部分在电子秤中的作用;- 教材章节:第三章“传感器及其应用”。

3. 电子秤的组装与调试:- 组装方法,介绍电子秤的组装步骤和注意事项;- 调试技巧,讲解如何对电子秤进行校准和测量误差分析;- 教材章节:第四章“电子测量与调试”。

教学进度安排:1. 第1课时:电子秤基本原理学习;2. 第2课时:简易数字电子秤电路组成与功能学习;3. 第3课时:电子秤组装实践;4. 第4课时:电子秤调试与测量误差分析。

电子称重仪课程设计

电子称重仪课程设计

电子称重仪课程设计一、课程目标知识目标:1. 学生能理解电子称重仪的基本原理,掌握其操作步骤。

2. 学生能掌握电子称重仪在生活中的应用场景,了解其重要性。

3. 学生能掌握电子称重仪的计量单位及其转换关系。

技能目标:1. 学生能正确使用电子称重仪进行称重操作,并准确读取数据。

2. 学生能通过实际操作,解决与电子称重仪相关的实际问题。

3. 学生能运用电子称重仪进行简单的数据分析和计算。

情感态度价值观目标:1. 学生能培养对电子称重仪的兴趣,认识到其在科技领域的重要性。

2. 学生在操作过程中,养成严谨、细致的学习态度,增强合作意识。

3. 学生通过学习电子称重仪,激发探索科学、创新实践的欲望。

课程性质:本课程为实用技术类课程,旨在让学生掌握电子称重仪的基本知识和操作技能,提高学生的实践能力。

学生特点:六年级学生具备一定的认知能力和动手操作能力,对新鲜事物充满好奇,但需注重引导和激发学习兴趣。

教学要求:结合学生特点和课程性质,教师应注重理论与实践相结合,突出操作实践,注重启发式教学,引导学生主动探索和解决问题。

在教学过程中,关注学生的个体差异,鼓励合作学习,提高学生的综合素养。

通过本课程的学习,使学生在知识、技能和情感态度价值观方面取得具体的学习成果。

二、教学内容1. 电子称重仪的原理与结构:介绍电子称重仪的工作原理、主要部件及其功能,使学生理解其内部构造和运作机制。

教材章节:第三章第三节2. 电子称重仪的操作方法:详细讲解电子称重仪的开关机、校准、称重等操作步骤,并指导学生进行实际操作。

教材章节:第三章第四节3. 电子称重仪的计量单位与换算:教授电子称重仪常用的计量单位及其换算关系,提高学生的数据处理能力。

教材章节:第三章第五节4. 电子称重仪的应用实例:分析电子称重仪在生活、工业等领域的应用,让学生了解其广泛用途。

教材章节:第三章第六节5. 电子称重仪的维护与保养:介绍电子称重仪的日常维护和保养方法,培养学生爱护设备的意识。

多功能电子秤课程设计

多功能电子秤课程设计

多功能电子秤课程设计一、课程目标知识目标:1. 学生能理解并掌握电子秤的基本原理与结构;2. 学生能了解电子秤在日常生活和科技领域的应用;3. 学生掌握电子秤的测量单位转换及精度相关知识。

技能目标:1. 学生能够正确操作多功能电子秤,完成各种测量任务;2. 学生能够通过实践,学会分析电子秤测量数据,解决实际问题;3. 学生能够运用已学知识,设计简单的电子秤使用场景。

情感态度价值观目标:1. 学生培养对电子秤及物理量的兴趣,增强学习动力;2. 学生在小组合作中,学会分享与交流,培养团队协作精神;3. 学生认识到科技与生活的紧密联系,增强科技创新意识。

课程性质:本课程为实践性、应用性强的课程,旨在通过多功能电子秤的学习,让学生将理论知识与实际应用相结合。

学生特点:针对中学生好奇心强、动手能力逐渐提高的特点,课程设计注重实践操作,激发学生兴趣。

教学要求:教师应引导学生主动参与实践,关注学生个体差异,鼓励学生提出问题,培养学生解决问题的能力。

通过课程学习,将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容1. 电子秤原理与结构- 电子秤的工作原理- 电子秤的主要组成部分及功能2. 电子秤的应用- 电子秤在生活中的应用实例- 电子秤在科技领域的应用3. 电子秤的使用与操作- 多功能电子秤的操作步骤- 电子秤的测量单位转换及精度处理4. 实践操作与数据分析- 设计实践任务,让学生动手操作电子秤- 对测量数据进行整理、分析,解决实际问题5. 电子秤与创新设计- 鼓励学生思考电子秤的改进与创新- 学生设计电子秤使用场景,展示创意教学内容安排与进度:第一课时:电子秤原理与结构,电子秤的应用第二课时:电子秤的使用与操作,实践操作与数据分析第三课时:电子秤与创新设计,学生作品展示与评价教材章节及内容:第一章:电子技术基础- 第三节:传感器及其应用(电子秤原理与结构)第二章:电子测量技术- 第四节:电子秤及其应用(电子秤的使用与操作)第三章:实践与创新- 第二节:电子秤创新设计(电子秤与创新设计)三、教学方法本课程采用以下教学方法,旨在激发学生的学习兴趣,提高学生的主动性和实践能力:1. 讲授法:- 通过生动的语言和形象的比喻,讲解电子秤的基本原理与结构,使抽象的理论知识变得具体易懂;- 结合多媒体课件,展示电子秤的内部构造和实际应用,增强学生的学习兴趣。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子信息与电气工程系课程设计报告课程设计任务书目录1 摘要: (4)关键字2 方案论证及选择: (5)2.1输入模块 (5)2.2显示模块 (5)3 系统硬件及功能: (5)3.1 单片机控制电路功能及介绍 (5)3.2 A\D转换 (6)3.3 3×4键盘 (7)3.4 LCD显示 (7)4 设计思路及程序流程图: (8)5 结果仿真: (9)6 总结与心得体会: (10)7 参考文献 (10)附录1:摘要现代社会的发展,对称重技术提出了更高的要求。

目前,台式电了秤在商业贸易中的使用已相当普遍,但存在较大的局限性:体积大、成本高、需要工频交流电源供应、携带不便、应用场所受到制约。

现有的便携秤为杆秤或以弹簧压缩、拉伸变形来实现计量的弹簧秤,居民用户使用的是国家已经明令淘汰的丰卜秤。

多年来,人们一直期待测量准确、携带方便、价格低廉的便携式电子秤投放市场。

木文设计了一种便携式电子秤,论述了仪器的工作原理,介绍了仪器的误差来源与误差分配,给出了仪器电路设计与软件流程,探讨了仪器的工程设计技术。

针对电容式称重传感器非线性影响大的问题,提出并建立了电容式称重传感器的非线性影响模型与校正模型,为便携式电子秤的低成本准确称量奠定了理论基础。

便携式电子秤主要由电源、称重传感器、单片机、键盘/开关、LCD显示器等部分构成。

主要技术指标为:称量范围0^- lOkg;分度值O.Olkg; 精度等级m级;电源DC 1.5V。

关键字:电子秤,A T89C51, LCD2:方案论证及选择:2.1: 输入模块方案一:采用独立式按键作为输入模块,其特点:直接用I/O口构成单个按键电路,接口电路配置灵活、软件结构简单,但是当键数较多时,占用I/O口较多;方案二:采用矩阵式键盘作为输入电路,其特点:电路和软件稍复杂,但相比之下,当键数越多时越节约I/O口。

本设计使用键盘输入价格值,若采用独立按键,对数值进行递增递减需频繁按键,为软件设计增加负担,且操作界面不友好。

若采用矩阵式按键,可以方便地输入一个价格值,节约了宝贵的I/O口资源。

通过对比,故采用方案二作为系统输入模块。

2.2:显示模块方案一:用LCD显示,液晶显示屏具有低耗电量,无辐射危险,以及影像不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。

方案二:采用LED数码管并行动态显示,电路简单,同样的功率驱动下,显示亮度不及静态显示,且占用I/O口较多。

综上所述,我们采用方案一使用了1602型号的的LCD进行显示,能显示出更多的重量值以及显示更大的总额从而扩大了称量范围。

3 系统硬件及功能:3.1单片机控制电路功能及介绍本设计中单片机控制电路是由AT89C51组成,它是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

图此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

3.2 A/D转换8 位 A/D 精度: 10Kg/1204=2.44g考虑到其他部分所带来的干扰 ,12 位 A/D 无法满足系统精度要求。

所以我们需要选择 14位或者精度更高的A/D。

方案一、逐次逼近型 A/D转换器,如:ADS7805、ADS7804等。

逐次逼近型 A/D转换,一般具有采样/保持功能。

采样频率高,功耗比较低,是理想的高速、高精度、省电型 A/D 转换器件。

高精度逐次逼近型 A/D转换器一般都带有内部基准源和内部时钟,基于89C52构成的系统设计时仅需要外接几个电阻、电容。

但考虑到所转换的信号为一慢变信号,逐次逼近型 A/D转换器的快速的优点不能很好的发挥,且根据系统的要求,14位AD足以满足精度要求,太高的精度就反而浪费了系统资源。

所以此方案并不是理想的选择。

方案二、双积分型 A/D转换器:如:ICL7135、ICL7109 ADC0808等。

双积分型 A/D转换器精度高,但速度较慢(如:ICL7135),具有精确的差分输入,输入阻抗高,可自动调零,超量程信号,全部输出于TTL电平兼容。

双积分型 A/D转换器具有很强的抗干扰能力。

对正负对称的工频干扰信号积分为零,所以对50HZ的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)已有良好的滤波作用。

只要干扰电压的平均值为零,对输出就不产生影响。

尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的影响。

故而采用双积分型A/D转换器可大大降低对滤波电路的要求。

作为电子秤,系统对 AD的转换速度要求并不高,精度上8位的AD足以满足要求。

另外双积分型A/D转换器较强的抗干扰能力,和精确的差分输入,低廉的价格。

综合的分析其优点和缺点,我们最终选择了ADC0808。

3.3 3×4键盘3×4键盘采用扫描技术进行识别,处值是七个端口都是高电平,对各行进行扫描时,先令第一列全是低电平,若第一列为低电平就表示一行一列为选中即有键按下,若第二行为低电平即二行一列为选中即有键按下,以此类推就可以对所有的见进行编码了。

3.4 LCD显示1602型号的的LCD是能够显示16列2行的液晶显示器,功率小显示面积大。

4 设计思路及程序流程图压力传感器在我设计的系统中,由于只是仿真层面的所有我用力电位器代替,应为单片机只是采集变化的数字量,A\D转换器是将变化的模拟量即电压量,转化为数字量从而可以用电位器改变电压值得到数字量给单片机。

当改变电位器时就会得到相应的数字量,单片机对数字进行运算处理,处理好的数据就是所称的重量,当要输入物品单价时先把键盘的打开键闭合,此时就启动了键盘,然后输入数值,结束时按下确定键,当输入值超出了范围是系统会把最后一位输入同时对系统确定这时:单片机就会对数据处理,最终得到总价。

并且显示会没一步进行显示在对应的位置。

软件流程图5 结果仿真1:当输入不超出位时:开始键盘启动输入单价调节电位器计算总金额结束显示单价及重量显示总金额2:当输入超出位时:6.总结与体会两周的课程设计结束了,虽然不轻松但是我学到是很多知识,尽管单片机我们课堂上学了而且感觉还不错但是在实际应用中会发现很多问题,即使很小的错误都能导致很大的错误,我经常会犯的错误就是重复定义不知为什么但是经过了这个课程设计之后,我会不自觉的注意这个问题,特别当对共阴还是共阳管道应用上,在定义时老会出现反的情况,这样就导致根本就的不到值,还有一个问题是我在写键盘程序时用了死循环,然后在最后把所有模块连接时就出现键盘和称重不能同时进行的情况。

从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高。

参考文献1.《手把手教你学单片机》周兴华著北京航空航天出版社 2005.42.《单片机原理及接口技术》余锡存曹国华著西安电子科技出版社 1999.113.李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19984.李广弟.单片机基础[M].北京:北京航空航天大学出版社,19945.阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19896.廖常初.现场总线概述[J].电工技术,1999.附录:源程序#include <reg52.h>#include "chushi.h"#include"jianpan.h"void main(){ void jianpan();void delay2();OE=0; //定时1开TMOD=0x02;TH1=(65536-400)/256;TL1=(65536-400)%256;TR1=1;ET1=1;EA=1;ST=1;ST=0;Lcd_Init();while(1){if(ctrl==0){set=!set;while(ctrl==0);geat=1;t=0;num5=0;}if(set==1){jianpan();}if(EOC==1&&set==0){OE=1;num1=P3;delay2();OE=0;delay2();ST=1;ST=0;num1=num1*9999/255;count[0]=num1%10000/1000;count[1]=num1%1000/100;count[2]=num1%100/10;count[3]=num1%10;max=num1*up;count[7]=max%10000000/1000000; count[8]=max%1000000/100000; count[9]=max%100000/10000;count[10]=max%10000/1000;count[11]=max%1000/100;count[12]=max%100/10;count[13]=max%10;DisplayOneChar(0,1,'j'); DisplayOneChar(1,1,'g'); DisplayOneChar(2,1,':'); DisplayString(6,1,"max:"); DisplayOneChar(9,1,count[7]+0x30); DisplayOneChar(10,1,count[8]+0x30); DisplayOneChar(11,1,count[9]+0x30); DisplayOneChar(12,1,count[10]+0x30); DisplayOneChar(13,1,count[11]+0x30); DisplayOneChar(14,1,count[12]+0x30); DisplayOneChar(15,1,count[13]+0x30);DisplayString(0,0,"dj:");DisplayOneChar(3,0, count[0]+0x30); DisplayOneChar(4,0,count[1]+0x30); DisplayOneChar(5,0,count[2]+0x30); DisplayOneChar(6,0,count[3]+0x30);}}}void delay2(){unsigned char i,j,k;for(k=2;k>0;k--)for(i=2;i>0;i--)for(j=248;j>0;j--);}void Lcd_Init(void);void Lcd_WriteCmd(unsigned char TempData,unsigned char BuysC); void Lcd_WriteData(unsigned char TempData);void Lcd_ReadStatus(void);//unsigned char Lcd_ReadData(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); void DisplayString(unsigned char X, unsigned char Y, unsigned char *DData); void Delay(unsigned int delaytime);void Lcd_WriteData(unsigned char TempData){Lcd_ReadStatus();Lcd_Data = TempData;Lcd_RS = 1;Lcd_RW = 0;Lcd_E = 0;Lcd_E = 0;Lcd_E = 1;}//写指令void Lcd_WriteCmd(unsigned char TempData,unsigned char BuysC) {if (BuysC) Lcd_ReadStatus();Lcd_Data = TempData;Lcd_RS = 0;Lcd_RW = 0;Lcd_E = 0;Lcd_E = 0;Lcd_E = 1;}//读数据/*unsigned char Lcd_ReadData(void){Lcd_RS = 1;Lcd_RW = 1;Lcd_E = 0;Lcd_E = 0;Lcd_E = 0;Lcd_E = 0;Lcd_E = 1;return(Lcd_Data);}*/void Lcd_ReadStatus(void){Delay(500);}void Lcd_Init(void) //LCM初始化{Lcd_Data = 0;Lcd_WriteCmd(0x38,0); //三次显示模式设置,不检测忙信号Delay(6000);Lcd_WriteCmd(0x38,0);Delay(6000);Lcd_WriteCmd(0x38,0);Delay(6000);Lcd_WriteCmd(0x38,1); //显示模式设置,开始要求每次检测忙信号Lcd_WriteCmd(0x08,1); //关闭显示Lcd_WriteCmd(0x01,1); //显示清屏Lcd_WriteCmd(0x06,1); // 显示光标移动设置Lcd_WriteCmd(0x0C,1); // 显示开及光标设置}//按指定位置显示一个字符void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) {Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码Lcd_WriteCmd(X, 0); //这里不检测忙信号,发送地址码Lcd_WriteData(DData);}//按指定位置显示一串字符void DisplayString(unsigned char X, unsigned char Y, unsigned char *DData){unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]!='\0') //若到达字串尾则退出{if (X <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符ListLength++;X++;}}}void Delay(unsigned int delaytime){while(delaytime--);}void t1(void) interrupt 3 using 0{clock1=!clock1;TH1=(65536-4000)/256;TL1=(65536-4000)%256;}int count[20],up=0,down=0;unsigned char tab1[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; unsigned char tab2[3]={0x9d,0xfd,0xff};long int num1,max;int wd=25,a=0,b=0;char aa,ab,ac,ad,ae=0,af=0,ag=0;unsigned char num3=0,num4;float num2;sbit L0=P2^0;sbit L1=P2^1;sbit L2=P2^2;sbit L3=P2^3;sbit clock1=P2^4;sbit OE=P2^7;sbit ST=P2^5;sbit EOC=P2^6;sbit hot=P2^0;sbit cold=P2^1;sbit lie1=P1^0;sbit lie2=P1^1; sbit lie3=P1^2;sbit han1=P1^3;sbit han2=P1^4;sbit han3=P1^5;sbit han4=P1^6;sbit ctrl=P1^7;unsigned char temp,i,j,key,set=0,geat,t=0,num5,c,d=1;void Lcd_Init(void);void Lcd_WriteCmd(unsigned char TempData,unsigned char BuysC);void Lcd_WriteData(unsigned char TempData);void Lcd_ReadStatus(void);unsigned char Lcd_ReadData(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); void DisplayString(unsigned char X, unsigned char Y, unsigned char *DData); void Delay(unsigned int delaytime);sbit Lcd_RW=P2^1;sbit Lcd_RS=P2^0;sbit Lcd_E=P2^2;//sbit KM=P3^7;//sbit led=P3^4;//sbit speak=P3^5;#define Lcd_Data P0#define Busy 0x80void jianpan(){if(geat==1){count[1]=tab1[0];count[2]=tab1[0];count[3]=tab1[0];count[4]=tab1[0];}geat=0;P1=0xff;lie1=0;temp=P1;temp=temp&0xf8;if(temp!=0xf8){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P1;temp=temp&0xf8;if(temp!=0xf8){if(han1==0) key=3;if(han2==0) key=6;if(han3==0) key=9;if(han4==0) {key=11;set=0;}}while(han1==0||han2==0||han3==0||han4==0);if(t==1) { up=key;}if(t==2) { up=up*10+key;}if(t==3) {up=up*10+key;}}P1=0xff;lie2=0;temp=P1;temp=temp&0xf8;if(temp!=0xf8){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P1;temp=temp&0xf8;if(temp!=0xf8){if(han1==0) key=2;if(han2==0) key=5;if(han3==0) key=8;if(han4==0) key=0;}while(han1==0||han2==0||han3==0||han4==0); t++;if(t==1) { up=key;}if(t==2) { up=up*10+key;}if(t==3) {up=up*10+key;}}P1=0xff;lie3=0;temp=P1;temp=temp&0xf8;if(temp!=0xf8){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P1;temp=temp&0xf8;if(temp!=0xf8){if(han1==0) key=1;if(han2==0) key=4;if(han3==0) key=7;if(han4==0) key=10;}while(han1==0||han2==0||han3==0||han4==0);if(t==1) { up=key;}if(t==2) { up=up*10+key;}if(t==3) {up=up*10+key;}if(key==10) {t=0;up=0;}}count[4]=up%1000/100;count[5]=up%100/10;count[6]=up%10; DisplayOneChar(0,1,'j'); DisplayOneChar(1,1,'g'); DisplayOneChar(2,1,':'); DisplayOneChar(3,1,count[4]+0x30); DisplayOneChar(4,1,count[5]+0x30); DisplayOneChar(5,1,count[6]+0x30); }。

相关文档
最新文档