基于单片机的电子秤设计_第1页
基于单片机的电子秤设计_第2页
基于单片机的电子秤设计_第3页
基于单片机的电子秤设计_第4页
基于单片机的电子秤设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 论文题目:基于单片机的电子秤设计 基于单片机的电子秤设计基于单片机的电子秤设计 姓名:张延海姓名:张延海 专业:电气工程及其自动化专业:电气工程及其自动化 指导老师:马惠兰指导老师:马惠兰 摘摘 要要 衡器是我们日常生活中不可缺少的重要仪器,衡器的发展是关系国 计民生关键之一。衡器的应用已遍及到国民经济的各个领域,并取得了显 著的经济效益。近年来,随着电子科技的飞速发展,杆秤已越来越难以满 足人们的日常生活需求,电子秤的应用也逐渐越来越重要。本文重点介绍 了基于单片机的简单电子秤的一些基本构造原理和功能。 本设计以 AT89C51 单片机为控制芯片,附以传感器电路,调理放大电 路,模/数转换

2、电路, ,键盘电路和显示电路等,然后利用编程语言进行编程 实现,并由 4x4 矩阵键盘实现简单的操作,最后由 LCD 液晶显示器实现。 此系统可以实现基本的称重显示,单价输入以及总金额计算。放上重物 (即传感器受力) ,当输入单价时,系统会自动计算货物价值。 关键词关键词 电子秤,单片机,AT89C51,LCD ABSTRACT Weighing apparatus is an indispensable important instrument in our daily life. The development of Weighing apparatus has a key factor

3、in our life. The application of weighing apparatus has already spread to national economy in all areas , and have got singnificant economic benefits. In recent years, with the rapid development of electronic technology, the steelyard has become more and more difficult to meet people daily life deman

4、d , so the application of electronic scales have become more and more important. This paper mainly introduced some of the basic construction principle and function of the electronic scales . This design use AT89C51 single-chip microcomputer as the control chip . Attached with sensor circuit , regula

5、te amplifier circuit, A/D conversion circuit, keyboard circuit and display circuit. Then use the programming language and 4x4 matrix keyboard for controlling. AT last ,we use LCD monitor to display the result. This system can realize the basic weighing displaying , unit price input, and total amount

6、. When put things on the electronic scales (the sensor being stressed),if you put in the unit price, the system will automatically calculate the total value of the goods. Key words: Electronic scales ,Single-chip microcomputer,AT89C51,LCD 目目 录录 第第 1 1 章章 绪论绪论 1 1. 1 称重和衡器技术的发展 1 1.2 选题背景和意义2 1.3 设计目

7、的2 1.4 设计要求2 1.5 电子秤简介2 1.5.1 电子秤基本结构3 1.5.2 电子秤的工作原理3 第第 2 2 章章 系统方案的设计系统方案的设计 4 2.1 系统整体设计4 2.2 各模块设计与选择4 2.2.1 控制器部分4 2.2.2 传感器模块5 2.2.3 调理放大模块7 2.2.4 模/数转换模块8 2.2.5 键盘模块10 2.2.6 显示模块11 第第 3 3 章章 电子秤系统设计电子秤系统设计 13 3.1 硬件系统设计13 3.1.1 控制器13 3.1.2 传感器13 3.1.3 A/D 转换14 3.1.4 键盘15 3.1.5 显示器16 3.2 软件系统

8、设计17 3.2.1 单价显示程序设计17 3.2.2 重量显示程序设计18 3.2.3 金额显示程序设计19 3.2.4 运算模块20 第第 4 4 章章 系统调试与仿真系统调试与仿真 21 4.1 系统软件调试21 4.2 仿真22 4.3 仿真程序22 4.4 调试过程中遇到的问题22 结结 论论 24 参考文献参考文献 26 附附 录录 27 致致 谢谢 37 第第 1 1 章章 绪论绪论 1. 1 称重和衡器技术的发展 称重作为计量的一种手段,在国计民生的各个领域被广泛的应用。而 衡器的发展水平,很大程度的影响了各行业的现代化水平和社会的经济效 益。 。人们由最初的等量交换,逐渐发展

9、为利用简单的秤来作为衡量的标准, ,并开始普及。随着社会的发展,传统的机械秤已越来越难以满足人们的 需求。在电子技术飞速发展的带动下,电子秤应运而生,极大地方便了人 们的需求。 50 年代中期,电子技术的渗入推动了衡器制造业的发展。60 年代初期, 机电结合式电子衡器初步形成,经过 40 多年的不断改进与完善,我国电子 衡器从最初的机电结合型发展到现在的全电子型和数字智能型。我国电子 衡器的技术装备和检测试验手段也基本达到国际 90 年代中期的水平,电子 衡器制造技术及应用得到了新的发展。总结过去,电子称重技术从静态称 重向动态称重发展;计量方法从模拟测量向数字测量发展;测量特点从单 参数测量

10、向多参数测量发展,特别是对快速称重和动态称重的研究与应用。 通过分析这些年电子衡器产品的发展情况及国内外市场的需求,电子衡器 总的发展趋势是小型化、模块化、集成化、智能化;技术性能则趋向于速 率高、准确度高、稳定性高、可靠性高;功能则趋向于称重计量的控制信 息和非控制信息并重的“智能化”功能;其应用性能趋向于综合性和组合 性。衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外 贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各 业的现代化水平和社会经济效益的提高。 21世纪,电力电子技术飞速发展,使得电子产品也变得十分丰富,给 人们带来了极大的方便。作为人们生活中不可缺

11、少的一部分,电子秤的发 展也十分重要。种类丰富,功能多样的电子秤为人们节省了时间,提高了 工作效率。 1.2 选题背景和意义 电子秤是日常生活中常用的电子衡器,广泛应用于大型超市、商场、物 流配送中心。但是在一些偏远地区,电子秤仍难以普及,传统的杠杆机械 秤仍占据着主要地位。目前市场上使用的称量工具,或者是结构复杂,或 者运行不可靠,且成本高,精度稳定性不好,调正时间长,易损件多,维 修困难,装机容量大,能源消耗大,生产成本高等各种因素导致需要一种 有实用价值的电子秤系统,既能满足日常需求,克服上述诸多缺点,又能 很好地普及,具有十分重大的现实意义。 1.3 设计目的 通过所学知识和相关资料,

12、完成基于单片机的简易的电子秤的设计, 掌握以单片机为核心的控制电路和LCD显示技术。并通过设计,了解电子秤 的基本工作原理,将理论知识与现实实际问题相结合,提高自己对所学知 识的应用能力。 1.4 设计要求 (1)有重物时LCD显示重量 (2)开机时“单价”显示为“P:0” (3)当输入单价时,单片机自动将单价和重量两个数据进行乘法运算,结 果显示在“SUM”里。 (4)当按下“清零”键时,单价自动清零,可以重新输入。 (5)当结果溢出时(即结果大于999999) , “SUM”将显示最后一次单价输 入前的值 1.5 电子秤简介 1.5.1 电子秤基本结构 电子秤是利用物体的重力作用来确定物体

13、质量(重量)的测量仪器, 也可用来确定与质量相关的其它量大小、参数、或特性。不管根据什么原 理制成的电子秤均由以下三部分组成: (1)承重、传力复位系统 (2)称重传感器 (3)测量显示和数据输出的载荷测量装置 1.5.2 电子秤的工作原理 当被称物体放置在秤体的托盘上时,其重量便通过托盘传递到称重传 感器,传感器随之产生力电效应,将物体的重量转换成与被称物体重量 成一定函数关系(一般成正比关系)的电信号(电压或电流等)。此信号由调 理放大电路进行放大滤波后再由模/数(A/D)器进行转换,数字信号再送 到 CPU 进行处理,CPU 根据接收到的数据经由 LCD 显示出来,再根据键盘 输入内容进

14、行必要的判断、分析、运算。运算结果送到内存贮器,并由 CPU 发出指令,从内存贮器中读出送到显示器显示。 第第 2 2 章章 系统方案的设计系统方案的设计 2.1 系统整体设计 按照本设计功能的要求,系统由:传感器模块、调理放大模块,A/D 转换模块、键盘模块、现实模块组成,系统的整体设计框图如图2-1所示: 图2-1 系统整体框图 测量部分是运用称重传感器去检测压力信号,并将得到的微弱的电信 号(本设计为电压信号)经处理电路(本设计为调理放大电路)处理后, 送给 A/D 转换器,将模拟量转化为数字量输出。控制器部分接受来自 A/D 转换器输出的数字信号,经过运算,将数字信号转换为物体的实际重

15、量信 号,并将其存储到存储单元中。控制器还可以通过对扩展 I/O 的控制,扫 描键盘,对整个系统进行控制。数据显示部分根据需要实现显示功能,如 单价和总金额等。 2.2 各模块设计与选择 2.2.1 控制器部分 本设计由于要求必须使用单片机作为系统的主控制器,而且以单片机 为主控制器的设计,可以容易地将计算机技术和测量控制技术结合在一起, 组成新型的只需要改变软件程序就可以更新换代的“智能化测量控制系统” 。 本文采用的AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能

16、CMOS 8位微处理器,由于将多功能 8位CPU和闪烁存储器组合在单个芯片 中,ATMEL的AT89C51是一种高效微控制器 。而且AT89C51是一种比较应 用比较广泛的单片机。 AT89C51单片机引脚结构图如图 2-2所示: 图2-2 AT89C51单片机引脚结构 单片机的主要特性及各引脚功能特点已经学习过,在这里不再介绍。 2.2.2 传感器模块 在设计中,传感器是一个十分重要的元件,因此对传感器的选择也显的特 别的重要,不仅要注意其量程和参数,还有考虑到与其相配置的各种电路的设 计的难以程度和设计性价比等等.本设计采用应变片电桥测量电路作为传感 器模块,由应变片电阻 R1 和另外 3

17、 个电阻 R2、R3、R4 构成电桥。电路图 如图 2-3 所示: 图2-3 应变片电桥测量原理图 电桥输出为: 当R1R4=R2R3时,V0=0,电桥处于平衡状态。当应变片受力后,电桥 差动工作,R1=R-R,R2=R+R,R3=R+R,R4=R-R,则 应变片式传感器有如下特点: (1)应用和测量范围广,应变片可构成各种机械量传感器; (2)分辨率和灵敏度高,精度较高; (3)结构小,适用性好,能应用于多种特殊场合,频率响应好; (4)经济性好,使用方便。 2.2.3 调理放大模块 经由传感器敏感元件转换后输出的信号一般电平较低,经由电桥变换后 的信号也难以直接用来显示、记录、控制或信号转

18、换。因此需要对传感器 的输出信号进行处理,就要采用调理放大电路,对传感器输出的高阻抗, 低电平信号进行处理,才能做进一步的应用。本设计利用TLC1078和INA122 设计的调理放大电路如图2-4所示: 图 2-4 调理放大模块 本电路具有以下特点: 1. 前级采用运放两个 TLC1078 组成并联型差动放大器。在运算放 大器为理想的情况下,并联型差动放大器的输入阻抗为无穷大,共模抑制 比也为无穷大。 2 阻容耦合电路放在并联型差动放大器构成的前级放大器和由 INA122 放大器构成的后级放大器之间,这样不仅为后级仪器放大器提高了 增益,还提高了电路的共模抑制比。而且,由于前置放大器的输出阻抗

19、较 低,又采用共模驱动技术,避免了阻容耦合电路中的阻、容元件参数不匹 配导致共模干扰转换成差模干扰情况发生。 3. 后级电路采用经济的仪器放大器,将双端信号转换为单端信号输 出。由于阻容耦合电路的隔直作用,后级的仪器放大器可以做到很高的增 益,进而得到很高的共模抑制比。 2.2.4 模/数转换模块 本设计采用ADC0832模/数转换器,将放大后的信号转化为数字量送给 单片机,然后由LCD液晶显示器显示出来,即为所称物体的重量。ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于 它体积小,兼容性好,性价比高而深受单片机爱好者及企业欢迎,其目前 已经有很高的普及

20、率。ADC0832的引脚结构如图2-5所示: 图2-5 ADC0832引脚结构 ADC0832 特点: 8 位分辨率; 双通道 A/D 转换; 输入输出电平与 TTL/CMOS 相兼容; 5V 电源供电时输入电压在 05V 之间; 工作频率为 250KHZ,转换时间为 32S; 一般功耗仅为 15mW; 8P、14PDIP(双列直插) 、PICC 多种封装; 商用级芯片温宽为 0C to +70C,工业级芯片温宽为40C to +85C; 芯片接口说明: CS_ 片选使能,低电平芯片使能。 CH0 模拟输入通道 0,或作为 IN+/-使用。 CH1 模拟输入通道 1,或作为 IN+/-使用。

21、GND 芯片参考 0 电位(地) 。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用) 。 ADC0832 是 8 位分辨率的 A/D 转换芯片,其最高分辨可达 256 级, 能适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使 得芯片的模拟电压输入在 05V 之间。芯片转换时间为 32S,具有双 数据输出可作为数据校验,以减少数据误差,转换速度快 ,而且稳定性 能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。 通过 DI 数据输入端,可以轻易的实现通道功能的选择。 2.2.

22、5 键盘模块 方案一:采用独立式按键作为输入模块。这种键盘的硬件比较容易实 现,直接用 I/O 口构成单个按键电路,接口电路配置灵活,按键识别和软 件结构简单;但每一个按键就要用一个 I/O 口,非常浪费单片机的 I/O 口 资源。其原理图如图 2-6 所示。 图 2-6 独立式功能按键 方案二:采用 4*4 矩阵式键盘作为输入模块。采用矩阵式键盘作为输 入电路,其特点:电路和软件稍复杂,但相比之下,当按键数越多时越节 约 I/O 口,节约了资源。这种键盘的硬件结构简单,而且这种键盘的编程 方法比较成熟。其原理图如图 2-7 所示。 图2-7 4x4矩阵式键盘原理图 由于本设计键盘输入预置用于

23、计算,清零等,按键较多,若是采用独 立按键,按键麻烦,为软件设计增加负担;但是采用矩阵式按键,既可以 节约 I/O 口资源,输入数值又方便,而且使操作界面更具人性化。通过对 比,故采用方案二作为系统的输入模块。 2.2.6 显示模块 方案一:采用 LED 数码管静态显示。采用 LED 数码管串行静态显示, 这种显示方式接口,编程容易且管理简单;虽然其显示亮度高,但是如果 显示器的位数较多,需要增加锁存器,故而静态显示占用 I/O 口线较多, CPU 的开销较大。如图 2-8 所示。 图 2-8 4 位数码管静态显示 方案二:采用 LED 数码管动态显示。采用 LED 数码管动态显示,显示 亮度

24、不及静态显示,但其电路简单,适合于显示位数较多的情况。如图 2-9 所示。 图 2-9 4 位数码管的动态显示 方案三:采用 LM016L 液晶显示。LM016L 作为一个成熟的产品,使用 简单,模式固定,便于移植到各种类型的程序,但是要注意结合 LCD 本身 的时序图来完善初始化程序。又以其微功耗、体积小、显示内容丰富、超 薄轻巧、可以调节其背光亮度,这种显示方式接口,编程虽然有些麻烦, 但管理较方便,占用的 I/O 口资源线也不多。 在计算器运算中,需显示的数字、符号较多,通过对比,根据各方面的 特点,故采用LM016L液晶显示屏显示输出。 第3章 电子秤系统设计 3.1 硬件系统设计 3

25、.1.1 控制器 本设计采用AT89C51单片机作为控制器,其最小系统如图3-1所示: 图3-1 单片机最小系统 本设计单片机的硬件分配: 1. P2 口:作为输入口,与键盘连接,实现数据的输入; 2. P1 口:作为输出口,控制 LCD 液晶显示屏显示数据的结果; 3. 3.P3.5-P3.7 口:作为控制端口,控制 LCD 液晶显示屏显示输出数据。 3.1.2 传感器 本设计采用 MOTOROLA 公司的 MPX4250 系列传感器, MPX4250 传感 器产生的信号可以直接送给 ADC0832A/D 转换器进行模 /数转换, MPX4250 将接收到的压力信号和电压信号送给 A/D 转

26、换器的模拟量输入 通道 CH0,经过处理的信号就可以送给单片机了。 MPX4250 与 A/D 转换 器的连接如图 3-2 所示: 图 3-2 传感器接口线路 3.1.3 A/D 转换 本设计中 ADC0832 的数据输出口接单片机的串行输出口 P3.1,时 钟输入接单片机的外部中断 0 引脚,正常情况下 ADC0832 与单片机的 接口应为 4 条数据线,即 CS、CLK、DO、DI。但由于 DO 端与 DI 端在通 信时并未同时有效 ,而且与单片机的接口是双向的,所以 设计电路时可 以将 DO 和 DI 并联在一根数据线上使用。当 ADC0832 未工作时,CS 输 入端应为高电平,此时芯

27、片禁用, CLK 和 DO/DI 的电平可任意。当要 进行 A/D 转换时,须先将 CS 使能端置于低电平 ,并且保持低电平直到 转换完全结束。 其与单片机的引脚连接如图 3-3 所示: 图 3-3 A/D 转换器与单片机接口电路 3.1.4 键盘 本次设计所选的4X4矩阵键盘采用四条I/O 线作为行线,四条I/O 线作 为列线组成。C采用这种键盘结构能够提高单片机系统中I/O 口的利用率。 本设计矩阵键盘与单片机的P1口相连作为输入。 键盘包括数字键(09)和清零键。本次设计计算器键盘布局及与单片 机接口电路如图 3-4 所示。 图 3-4 仿真中矩阵键盘按键布局 实际实现的功能如图 3-5

28、 所示。 图 3-5 实际键盘功能与矩阵键盘布局对比 由于本设计的键盘功能比较简单, 4x4 矩阵键盘没有被充分利用,主 要是考虑到仿真过程中布局方便而采用的。在实际应用中,若功能简单, 为了节省材料可以适当减少几个按键, 。电子秤采用 4x4 矩阵键盘的其余功 能还有待开发。 3.1.5 显示器 由于液晶显示器可以多段显示,鉴于设计要求显示三个数据,即“重 量” “单价” “金额” ,所以本设计采用液晶显示器 P1 口作为液晶显示的数 据端口,P3.5-P3.7 口作为其控制端口,控制 LCD 液晶显示屏显示输出数据。 这样即实现了目的,又经济方便。LM016L 与单片机的接口电路如图 3-

29、6 所 示。 图 3-6 LCD 接口线路 3.2 软件系统设计 程序设计比较复杂,要把复杂的工作条理化,就得有相应的步骤和 方法。大致可概括为以下三点: 分析系统控制要求,然后确定算法:并对复杂的问题进行具体的分 析,找出合理的计算方法及适当的数据结构,从而确定编写程序的步骤。 由算法画流程图:画程序流程可以把算法和解题步骤逐步具体化, 从而减少出错。 编写程序:根据程序流程图所表示的算法和步骤,选用适当的指令 排列起来,即编写程序。 编程的理想方法就是结构化程序设计法。结构化程序设计是对所用到 的控制结构类程序做适当的限制,尤其是限制转向语句或指令的使用,控 制了程序的复杂性,并使程序的上

30、、下文顺序与执行流程保持一致性,令 程序更易懂,减少了逻辑错误,而且易于修改、调试。 3.2.1 单价显示程序设计 开机启动时 LCD 显示器上单价模块显示为“P: ” ,需要输入价格方能 显示,系统中连接的是 4*4 行列式按键键盘,其中“0-9”为数字键; “ON/C”为功能键(清零键) ,数字键按下则将相应的数字送入数字缓冲区; 功能键按下则执行相应的程序;最终进行运算后,综合结果将送入结果缓 冲区,并在 LCD 液晶显示屏上显示出来。 其程序流程图如图3-7所示: 图 3-7 单价显示程序流程图 3.2.2 重量显示程序设计 MPX4250产生的信号送给ADC0832进行模数转换,然后

31、通过单片机的串 行输出口和外部中断接口,控制显示在LCD液晶显示器上。其程序流程图如 图3-8所示: 图3-8 称重程序流程图 3.2.3 金额显示程序设计 对于金额显示“SUM” ,其原理是先检测是否有重物,即传感器是否受 力,然后再判断单价输入情况,当两个显示都不为空时,将两个数据传给 单片机进行乘法运算,结果送给显示缓冲区,由LCD液晶显示器显示出来, 其程序流程图如图3-9所示: 图3-9 计价程序流程图 3.2.4 运算模块 本次设计应用了乘法运算,其运算程序流程图如图3-10所示: 图3-10 运算模块程序流程图 第4章 系统调试与仿真 4.1 系统软件调试 软件调试方法与所选用的

32、软件和编写的程序有关。由于本次设计采用 模块化程序设计,首先要逐个模块进行调试,然后进行软件功能调试。调 试模块程序时,要符合现场环境,确定好入口条件和出口状态。各程序模 块调试完成后,应把个功能模块联合起来进行程序综合调试。全部软件调 试完成后,应反复运行,观察系统的稳定性及系统的功能是否达到设计的 要求。在软件调试过程中,对出现的错误进行认真的分析和修改,能较好 的达到既定的设计效果。 本设计的调试是应用Keil uVision4软件进行程序的编译调试,在没有 错误后,会生成一个扩展名为.hex的十六进制文件, 调试结果如图4-1所 示: 图4-1 程序调试图 如图所示,当调试结果没有错误

33、时,才可以将文件加载入单片机进行仿 真。 4.2 仿真 打开Proteus仿真软件,将搭建好的仿真模块打开,然后鼠标左键双击 单片机,在弹出的对话框中加载调试程序时生成的“.hex”文件,然后运 行,即可实现简易的电子秤。系统整体仿真结构图及仿真结果如图4-2、图 4-3所示: 图4-2 系统仿真全图 图4-3 仿真结果图 4.3 仿真程序 见附录 4.4 调试过程中遇到的问题 在设计过程中,首先是找不到合适的信息输入模块, ,即传感器。因为 没有输入信息,仿真无从谈起。通过查找大量的传感器资料,再从 “Proteus”元件库中选取合适的型号,经过筛选,发现MPX4250比较适合 本设计,它随

34、时可以改变输入的信号值(即重量变化) 。MPX4250是一种硅 半导体压力传感器,输出的是模拟型信号,市场应用也比较广泛,比较适 合本次设计。其次是在A/D转换器的选型上也遇到了困难,在设计之初,我 选的是ADC0809,主要是因为我们在课堂上学习过ADC0809的引脚功能和特 性,对其比较了解。但是在软件调试过程中,编好的程序无法使LCD液晶显 示器将传感器的信号显示出来,即不能进行模数转换。首先我想到的是程 序出了问题,但是经过检查发现,程序是正确的,然后我又仔细的检查了 ADC0809与单片机的引脚连接,仍然不能显示数据。有同学建议我换一个 A/D转换器,于是我尝试了ADC0804和AD

35、C0832,最终发现ADC0832能很好地 满足本次设计的目的。还有一个问题就是在编写乘法运算程序时,也就是 LCD显示函数“SUM”时,在函数的拆分问题上遇到了麻烦。如何将一个六 位数拆分,在哪一位上先整除再求余,或者是先求余再整除,在这个算法 上困惑了我很久,我查阅了一些资料,但仍然不能解决。后来我就去向精 通C语言同学请教,经过一番讨论和研究,终于把这个问题弄明白了。由于 个人能力有限,本文所设计的电子秤功能单一,与市场上实际使用的电子 秤相比功能不够完善,不足之处还请见谅。 以上几个问题是设计过程中比较突出的问题,还有一些其他小问题, 在老师和同学的帮助下都迎刃而解了,在此不一一详述。

36、 结 论 本次设计使我了解了电子秤的一些基本的工作原理,也使我明白,理 论与实际的差别还是很大的,比如在仿真时传感器的选择上,现实中所使 用的电子秤得传感器必须经过信号放大才能进行模/数转换。设计中应用了 硬件单片机芯片模块,结合软件程序借助 Keil 软件调试实现显示功能。在 设计过程中由于所学知识的欠缺而导致设计无法快速的完成。单片机种类 繁多,功能多种多样。本设计采用了 AT89C51 单片机,原因之一是我们对 51 系列的单片机比较熟悉,而且 51 单片机的功能比较齐全,市场应用广泛。 编程语言则是利用我们所学过的 C 语言编程方法。由于 C 语言功能强大, 便于模块化开发,所带库函数

37、丰富,编写的程序易于移植等诸多优点使之 成为单片机应用系统开发最快速高效的程序设计语言。采用 C 语言,充分 体现了结构化的思想,当每个模块都完成时,将其功能加到一起就完成了 整体的设计。但是仅仅进行简单的叠加无法真正的实现软件与硬件的统一, 而是还需要不断地进行调试。 此次设计过程中遇到了许多困难,根本原因是自己所学知识不够全面, 对知识的掌握也不够扎实。出现问题后,我首先是努力去寻找问题的所在, 然后用自己所掌握的知识去试着分析问题,尽可能地通过查阅资料来独立 解决问题。但是个人能力有限,有些问题实在解决不了的,就去请教同学 或老师。特别是在 C 语言的编程方面,非常感谢老师和同学们的帮助

38、。在 这分析问题、解决问题的过程中不仅巩固了以前所学的知识,通过查阅资 料还掌握了一些新的知识,使得个人能力得到了提高,专业水平也有了进 步。 这次设计是大学四年来一个总结,不仅是对自己所学专业知识的考核, 也锻炼了将所学专业理论知识应用于实际问题中的能力。通过本次设计, 考验了我将理论应用于实践和独立解决问题的能力,也加强了我老师,同 学一起协作的能力,更使我认识到自己在知识方面存在的不足,明确了今 后的学习方向,也为将来的的就业提前打了下坚实的基础。我会好好珍惜 这次设计过程中所经历的一切,这将是我人生中一笔宝贵的财富。 参考文献 1 李朝青 单片机原理及接口技术,北京航天航空大学出版社,

39、2005 年第 3 版 2 谭浩强 C 程序设计,清华大学出版社, 2005 年第 3 版 3 贾石峰 传感器原理与传感器技术 ,机械工业出版社,2009.8 4 李移伦 单片机原理及应用 ,中南大学出版社 2006.7 5 于军胜 显示器件技术,国防工业出版社,2010.7 6 杨居义 单片机课程设计指导,清华大学出版社,2009 年 7 楼然苗 51 些列单片机设计实例 北京航天航空出版社,2003.3 8 李全利,迟荣强 单片机原理及接口技术M 北京: 教育出版社 2004.1 9 张毅刚 MCS-51 单片机应用设计,哈工大出版 2004 第二版 附 录 程序清单 #include #

40、include #include #include #define uchar unsigned char #define uint unsigned int /*定义变量区* sbit lcden=P37; /LCD 使能信号 sbit lcdrs=P35; /LCD 数据/命令选择信号 sbit CS =P33; sbit CLK=P32; sbit DIO =P31; uchar tab_key50; uchar weight; long int money,money1; uchar code tab=0123456789; uchar code tab0=p:; uchar code

41、 tab1=w:; uchar code tab2=SUM:; uchar n=0,temp,key; unsigned char CH=0 x02; /*延时函数开始* void delay(uint k) uint i,j; for(i=k;i0;i-) for(j=50;j0;j-); unsigned char ADconv(void) uchar i,dat1=0,dat2=0; CS = 0; CLK = 0; DIO = 1; _nop_(); _nop_(); CLK = 1; _nop_(); _nop_(); CLK = 0;DIO = 1; _nop_(); _nop_(

42、); CLK = 1; _nop_(); _nop_(); CLK = 0;DIO = 1; _nop_(); _nop_(); CLK = 1;DIO = 1; _nop_(); _nop_(); CLK = 0;DIO = 1; _nop_(); _nop_(); for(i=0;i8;i+) CLK = 1; _nop_(); _nop_(); CLK = 0; _nop_(); _nop_(); dat1 = dat1 1 | DIO; /*for(i=0;i8;i+) dat2 = dat2 (uchar)(DIO)i); CLK = 1; _nop_(); _nop_(); CLK

43、 = 0; _nop_(); _nop_(); */ CS = 1; /return (dat1 = dat2) ? dat1:0; return dat1 ; /*写命令函数开始* void write_com(uchar com) lcdrs=0; /低电平写命令 P1=com; /写入命令 delay(3); /延时约 3ms lcden=1; /LCD 使能端置高电平 delay(5); /延时约 5ms lcden=0; /LCD 使能端拉低电平 /*写数据函数开始* void write_data(uchar dat) lcdrs=1; /低电平写数据 P1=dat; /写入命令

44、delay(3); /延时约 3ms lcden=1; /LCD 使能端置高电平 delay(5); /延时约 5ms lcden=0; /LCD 使能端拉低电平 /*LCD 初始化函数开始* void lcd_init() lcden=0; write_com(0 x38); /设置显示模式:16X2,5X7,8 位数据接口 write_com(0 x0c); /开显示,显示光标,光标闪烁 write_com(0 x06); /读写一个字符后,地址指针及光标加一,且光标加一整屏显 示不移动 write_com(0 x80); /设置光标指针 /*键盘功能分配函数群开始* void key_m

45、anage1() tab_keyn=0; if(n4) n+; void key_manage2() tab_keyn=1; if(n4) n+; void key_manage3() tab_keyn=2; if(n4) n+; void key_manage4() tab_keyn=3; if(n4) n+; void key_manage5() tab_keyn=4; if(n4) n+; void key_manage6() tab_keyn=5; if(n4) n+; void key_manage7() tab_keyn=6; if(n4) n+; void key_manage8

46、() tab_keyn=7; if(n4) n+; void key_manage9() tab_keyn=8; if(n3) n+; void key_manage10() tab_keyn=9; if(n4) n+; void key_manage11() uchar i; n=0; tab_key50=0; money=0; money1=0; write_com(0 x01); write_com(0 x0c); write_com(0 x80); for(i=0;i2;i+) write_data(tab0i); write_data(0+0); write_com(0 x89);

47、for(i=0;i2;i+) write_data(tab1i); write_data(0+0); write_com(0 xc0); for(i=0;i4;i+) write_data(tab2i); write_data(0+0); write_com(0 xcf); write_data($); /*键盘扫描函数开始* void key_scan() /*扫描第一行* P2=0 xfe; temp=P2; temp=temp if(temp!=0 xf0) delay(100); if(temp!=0 xf0) temp=P2; switch(temp) case 0 xee: key

48、_manage8(); break; case 0 xde: key_manage9(); break; case 0 xbe: key_manage10(); break; case 0 x7e: break; while(temp!=0 xf0) temp=P2; temp=temp /*扫描第二行* P2=0 xfd; temp=P2; temp=temp if(temp!=0 xf0) delay(100); if(temp!=0 xf0) temp=P2; switch(temp) case 0 xed: key_manage5(); break; case 0 xdd: key_manage6(); break; case 0 xbd: key_manage7(); break; case 0 x7d: break; while(temp!=0 xf0) temp=P2; temp=temp /*扫描第三行* P2=0 xfb; temp=P2; temp=temp if(temp!=0 xf0) delay(100); if(temp!=0 xf0) temp=P2; switch(temp) case 0 xeb: key_manage2(); break; case 0 xdb: key_manage3()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论