1、基于单片机的电子秤设计 毕业设计 论文题目:基于单片机的电子秤设计基于单片机的电子秤设计姓名:张延海 专业:电气工程及其自动化 指导老师:马惠兰摘 要 衡器是我们日常生活中不可缺少的重要仪器,衡器的发展是关系国计民生关键之一。衡器的应用已遍及到国民经济的各个领域,并取得了显著的经济效益。近年来,随着电子科技的飞速发展,杆秤已越来越难以满足人们的日常生活需求,电子秤的应用也逐渐越来越重要。本文重点介绍了基于单片机的简单电子秤的一些基本构造原理和功能。本设计以AT89C51单片机为控制芯片,附以传感器电路,调理放大电路,模/数转换电路,键盘电路和显示电路等,然后利用编程语言进行编程实现,并由4x4
2、矩阵键盘实现简单的操作,最后由LCD液晶显示器实现。此系统可以实现基本的称重显示,单价输入以及总金额计算。放上重物(即传感器受力),当输入单价时,系统会自动计算货物价值。关键词 电子秤,单片机,AT89C51,LCD ABSTRACTWeighing apparatus is an indispensable important instrument in our daily life. The development of Weighing apparatus has a key factor in our life. The application of weighing apparatu
3、s 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 demand , so the application of electronic scales have
4、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 , regulate amplifier circuit, A/D conversion circuit, key
5、board 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. When put things on the electronic scales (the s
6、ensor 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章 绪论11. 1称重和衡器技术的发展11.2 选题背景和意义21.3 设计目的21.4 设计要求21.5 电子秤简介21.5.1 电子秤基本结构31.5.2 电子秤的工作原理3第2章 系统方案的设计42.1 系
7、统整体设计42.2 各模块设计与选择42.2.1 控制器部分42.2.2 传感器模块52.2.3 调理放大模块72.2.4 模/数转换模块82.2.5 键盘模块102.2.6 显示模块11第3章 电子秤系统设计133.1 硬件系统设计133.1.1 控制器133.1.2 传感器133.1.3 A/D转换143.1.4 键盘153.1.5 显示器163.2 软件系统设计173.2.1 单价显示程序设计173.2.2 重量显示程序设计183.2.3 金额显示程序设计193.2.4 运算模块20第4章 系统调试与仿真214.1 系统软件调试214.2 仿真224.3 仿真程序224.4 调试过程中遇
8、到的问题22结 论24参考文献26附 录27致 谢37第1章 绪论1. 1称重和衡器技术的发展称重作为计量的一种手段,在国计民生的各个领域被广泛的应用。而衡器的发展水平,很大程度的影响了各行业的现代化水平和社会的经济效益。人们由最初的等量交换,逐渐发展为利用简单的秤来作为衡量的标准,并开始普及。随着社会的发展,传统的机械秤已越来越难以满足人们的需求。在电子技术飞速发展的带动下,电子秤应运而生,极大地方便了人们的需求。50年代中期,电子技术的渗入推动了衡器制造业的发展。60年代初期,机电结合式电子衡器初步形成,经过40多年的不断改进与完善,我国电子衡器从最初的机电结合型发展到现在的全电子型和数字
9、智能型。我国电子衡器的技术装备和检测试验手段也基本达到国际90年代中期的水平,电子衡器制造技术及应用得到了新的发展。总结过去,电子称重技术从静态称重向动态称重发展;计量方法从模拟测量向数字测量发展;测量特点从单参数测量向多参数测量发展,特别是对快速称重和动态称重的研究与应用。通过分析这些年电子衡器产品的发展情况及国内外市场的需求,电子衡器总的发展趋势是小型化、模块化、集成化、智能化;技术性能则趋向于速率高、准确度高、稳定性高、可靠性高;功能则趋向于称重计量的控制信息和非控制信息并重的“智能化”功能;其应用性能趋向于综合性和组合性。衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外贸易
10、不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高。21世纪,电力电子技术飞速发展,使得电子产品也变得十分丰富,给人们带来了极大的方便。作为人们生活中不可缺少的一部分,电子秤的发展也十分重要。种类丰富,功能多样的电子秤为人们节省了时间,提高了工作效率。1.2 选题背景和意义电子秤是日常生活中常用的电子衡器,广泛应用于大型超市、商场、物流配送中心。但是在一些偏远地区,电子秤仍难以普及,传统的杠杆机械秤仍占据着主要地位。目前市场上使用的称量工具,或者是结构复杂,或者运行不可靠,且成本高,精度稳定性不好,调正时间长,易损件多,维修困难,装机容量大,能源消耗
11、大,生产成本高等各种因素导致需要一种有实用价值的电子秤系统,既能满足日常需求,克服上述诸多缺点,又能很好地普及,具有十分重大的现实意义。1.3 设计目的通过所学知识和相关资料,完成基于单片机的简易的电子秤的设计,掌握以单片机为核心的控制电路和LCD显示技术。并通过设计,了解电子秤的基本工作原理,将理论知识与现实实际问题相结合,提高自己对所学知识的应用能力。1.4 设计要求(1)有重物时LCD显示重量(2)开机时“单价”显示为“P:0”(3)当输入单价时,单片机自动将单价和重量两个数据进行乘法运算,结果显示在“SUM”里。(4)当按下“清零”键时,单价自动清零,可以重新输入。(5)当结果溢出时(
12、即结果大于999999),“SUM”将显示最后一次单价输入前的值1.5 电子秤简介1.5.1 电子秤基本结构 电子秤是利用物体的重力作用来确定物体质量(重量)的测量仪器,也可用来确定与质量相关的其它量大小、参数、或特性。不管根据什么原理制成的电子秤均由以下三部分组成:(1)承重、传力复位系统 (2)称重传感器 (3)测量显示和数据输出的载荷测量装置1.5.2 电子秤的工作原理当被称物体放置在秤体的托盘上时,其重量便通过托盘传递到称重传感器,传感器随之产生力电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。此信号由调理放大电路进行放大滤波后再由模/
13、数(A/D)器进行转换,数字信号再送到CPU进行处理,CPU根据接收到的数据经由LCD 显示出来,再根据键盘输入内容进行必要的判断、分析、运算。运算结果送到内存贮器,并由CPU发出指令,从内存贮器中读出送到显示器显示。第2章 系统方案的设计2.1 系统整体设计按照本设计功能的要求,系统由:传感器模块、调理放大模块,A/D转换模块、键盘模块、现实模块组成,系统的整体设计框图如图2-1所示: 图2-1 系统整体框图测量部分是运用称重传感器去检测压力信号,并将得到的微弱的电信号(本设计为电压信号)经处理电路(本设计为调理放大电路)处理后,送给A/D转换器,将模拟量转化为数字量输出。控制器部分接受来自
14、A/D转换器输出的数字信号,经过运算,将数字信号转换为物体的实际重量信号,并将其存储到存储单元中。控制器还可以通过对扩展I/O的控制,扫描键盘,对整个系统进行控制。数据显示部分根据需要实现显示功能,如单价和总金额等。2.2 各模块设计与选择2.2.1 控制器部分本设计由于要求必须使用单片机作为系统的主控制器,而且以单片机为主控制器的设计,可以容易地将计算机技术和测量控制技术结合在一起,组成新型的只需要改变软件程序就可以更新换代的“智能化测量控制系统”。本文采用的AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read
15、Only Memory)的低电压、高性能CMOS 8位微处理器,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。而且AT89C51是一种比较应用比较广泛的单片机。AT89C51单片机引脚结构图如图2-2所示:图2-2 AT89C51单片机引脚结构单片机的主要特性及各引脚功能特点已经学习过,在这里不再介绍。2.2.2 传感器模块在设计中,传感器是一个十分重要的元件,因此对传感器的选择也显的特别的重要,不仅要注意其量程和参数,还有考虑到与其相配置的各种电路的设计的难以程度和设计性价比等等.本设计采用应变片电桥测量电路作为传感器模块,由应变片电阻R1
16、和另外3个电阻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 调理放大模块经由传感器敏感元件转换后输出的信号一般电平较低,经由电桥变换后的信号也难以直接用来显示、记录、控制或信号转换。因此需要对传感
17、器的输出信号进行处理,就要采用调理放大电路,对传感器输出的高阻抗,低电平信号进行处理,才能做进一步的应用。本设计利用TLC1078和INA122设计的调理放大电路如图2-4所示:图2-4 调理放大模块本电路具有以下特点:1. 前级采用运放两个TLC1078组成并联型差动放大器。在运算放大器为理想的情况下,并联型差动放大器的输入阻抗为无穷大,共模抑制比也为无穷大。2 阻容耦合电路放在并联型差动放大器构成的前级放大器和由INA122放大器构成的后级放大器之间,这样不仅为后级仪器放大器提高了增益,还提高了电路的共模抑制比。而且,由于前置放大器的输出阻抗较低,又采用共模驱动技术,避免了阻容耦合电路中的
18、阻、容元件参数不匹配导致共模干扰转换成差模干扰情况发生。 3. 后级电路采用经济的仪器放大器,将双端信号转换为单端信号输出。由于阻容耦合电路的隔直作用,后级的仪器放大器可以做到很高的增益,进而得到很高的共模抑制比。 2.2.4 模/数转换模块本设计采用ADC0832模/数转换器,将放大后的信号转化为数字量送给单片机,然后由LCD液晶显示器显示出来,即为所称物体的重量。ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性好,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。ADC0832的引脚结构如图2-5所示:图2-5 ADC08
19、32引脚结构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+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出
20、。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)。 ADC0832 是8位分辨率的A/D转换芯片,其最高分辨可达256级,能适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间为32S,具有双数据输出可作为数据校验,以减少数据误差,转换速度快,而且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。2.2.5 键盘模块方案一:采用独立式按键作为输入模块。这种键盘的硬件比较容易实现,直接用I/O口构成单个按键电路,接口电路配置灵活,按键识别和软件结
21、构简单;但每一个按键就要用一个I/O口,非常浪费单片机的I/O口资源。其原理图如图2-6所示。图2-6 独立式功能按键方案二:采用4*4矩阵式键盘作为输入模块。采用矩阵式键盘作为输入电路,其特点:电路和软件稍复杂,但相比之下,当按键数越多时越节约I/O口,节约了资源。这种键盘的硬件结构简单,而且这种键盘的编程方法比较成熟。其原理图如图2-7所示。 图2-7 4x4矩阵式键盘原理图由于本设计键盘输入预置用于计算,清零等,按键较多,若是采用独立按键,按键麻烦,为软件设计增加负担;但是采用矩阵式按键,既可以节约I/O口资源,输入数值又方便,而且使操作界面更具人性化。通过对比,故采用方案二作为系统的输
22、入模块。2.2.6 显示模块方案一:采用LED数码管静态显示。采用LED数码管串行静态显示,这种显示方式接口,编程容易且管理简单;虽然其显示亮度高,但是如果显示器的位数较多,需要增加锁存器,故而静态显示占用I/O口线较多,CPU的开销较大。如图2-8所示。图2-8 4位数码管静态显示方案二:采用LED数码管动态显示。采用LED数码管动态显示,显示亮度不及静态显示,但其电路简单,适合于显示位数较多的情况。如图2-9所示。图2-9 4位数码管的动态显示方案三:采用LM016L液晶显示。LM016L作为一个成熟的产品,使用简单,模式固定,便于移植到各种类型的程序,但是要注意结合LCD本身的时序图来完
23、善初始化程序。又以其微功耗、体积小、显示内容丰富、超薄轻巧、可以调节其背光亮度,这种显示方式接口,编程虽然有些麻烦,但管理较方便,占用的I/O口资源线也不多。在计算器运算中,需显示的数字、符号较多,通过对比,根据各方面的特点,故采用LM016L液晶显示屏显示输出。 第3章 电子秤系统设计3.1 硬件系统设计3.1.1 控制器本设计采用AT89C51单片机作为控制器,其最小系统如图3-1所示: 图3-1 单片机最小系统本设计单片机的硬件分配:1. P2口:作为输入口,与键盘连接,实现数据的输入;2. P1口:作为输出口,控制LCD液晶显示屏显示数据的结果;3. 3.P3.5-P3.7口:作为控制
24、端口,控制LCD液晶显示屏显示输出数据。3.1.2 传感器本设计采用MOTOROLA公司的MPX4250系列传感器,MPX4250传感器产生的信号可以直接送给ADC0832A/D转换器进行模/数转换,MPX4250将接收到的压力信号和电压信号送给A/D转换器的模拟量输入通道CH0,经过处理的信号就可以送给单片机了。MPX4250与A/D转换器的连接如图3-2所示: 图3-2 传感器接口线路3.1.3 A/D转换本设计中ADC0832的数据输出口接单片机的串行输出口P3.1,时钟输入接单片机的外部中断0引脚,正常情况下ADC0832 与单片机的接口应为4条数据线,即CS、CLK、DO、DI。但由
25、于DO端与DI端在通信时并未同时有效,而且与单片机的接口是双向的,所以设计电路时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时,CS输入端应为高电平,此时芯片禁用,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
26、)和清零键。本次设计计算器键盘布局及与单片机接口电路如图3-4所示。图3-4 仿真中矩阵键盘按键布局实际实现的功能如图3-5所示。图3-5 实际键盘功能与矩阵键盘布局对比由于本设计的键盘功能比较简单,4x4矩阵键盘没有被充分利用,主要是考虑到仿真过程中布局方便而采用的。在实际应用中,若功能简单,为了节省材料可以适当减少几个按键,。电子秤采用4x4矩阵键盘的其余功能还有待开发。3.1.5 显示器由于液晶显示器可以多段显示,鉴于设计要求显示三个数据,即“重量”“单价”“金额”,所以本设计采用液晶显示器P1口作为液晶显示的数据端口,P3.5-P3.7口作为其控制端口,控制LCD液晶显示屏显示输出数据
27、。这样即实现了目的,又经济方便。LM016L与单片机的接口电路如图3-6所示。图3-6 LCD接口线路3.2 软件系统设计 程序设计比较复杂,要把复杂的工作条理化,就得有相应的步骤和方法。大致可概括为以下三点: 分析系统控制要求,然后确定算法:并对复杂的问题进行具体的分析,找出合理的计算方法及适当的数据结构,从而确定编写程序的步骤。 由算法画流程图:画程序流程可以把算法和解题步骤逐步具体化,从而减少出错。编写程序:根据程序流程图所表示的算法和步骤,选用适当的指令排列起来,即编写程序。编程的理想方法就是结构化程序设计法。结构化程序设计是对所用到的控制结构类程序做适当的限制,尤其是限制转向语句或指
28、令的使用,控制了程序的复杂性,并使程序的上、下文顺序与执行流程保持一致性,令程序更易懂,减少了逻辑错误,而且易于修改、调试。 3.2.1 单价显示程序设计开机启动时LCD显示器上单价模块显示为“P: ”,需要输入价格方能显示,系统中连接的是4*4行列式按键键盘,其中“0-9”为数字键; “ON/C”为功能键(清零键),数字键按下则将相应的数字送入数字缓冲区;功能键按下则执行相应的程序;最终进行运算后,综合结果将送入结果缓冲区,并在LCD液晶显示屏上显示出来。其程序流程图如图3-7所示:图3-7 单价显示程序流程图3.2.2 重量显示程序设计MPX4250产生的信号送给ADC0832进行模数转换
29、,然后通过单片机的串行输出口和外部中断接口,控制显示在LCD液晶显示器上。其程序流程图如图3-8所示:图3-8 称重程序流程图3.2.3 金额显示程序设计对于金额显示“SUM”,其原理是先检测是否有重物,即传感器是否受力,然后再判断单价输入情况,当两个显示都不为空时,将两个数据传给单片机进行乘法运算,结果送给显示缓冲区,由LCD液晶显示器显示出来,其程序流程图如图3-9所示:图3-9 计价程序流程图3.2.4 运算模块本次设计应用了乘法运算,其运算程序流程图如图3-10所示: 图3-10 运算模块程序流程图第4章 系统调试与仿真4.1 系统软件调试软件调试方法与所选用的软件和编写的程序有关。由
30、于本次设计采用模块化程序设计,首先要逐个模块进行调试,然后进行软件功能调试。调试模块程序时,要符合现场环境,确定好入口条件和出口状态。各程序模块调试完成后,应把个功能模块联合起来进行程序综合调试。全部软件调试完成后,应反复运行,观察系统的稳定性及系统的功能是否达到设计的要求。在软件调试过程中,对出现的错误进行认真的分析和修改,能较好的达到既定的设计效果。 本设计的调试是应用Keil uVision4软件进行程序的编译调试,在没有错误后,会生成一个扩展名为.hex的十六进制文件, 调试结果如图4-1所示: 图4-1 程序调试图如图所示,当调试结果没有错误时,才可以将文件加载入单片机进行仿真。4.
31、2 仿真打开Proteus仿真软件,将搭建好的仿真模块打开,然后鼠标左键双击单片机,在弹出的对话框中加载调试程序时生成的“.hex”文件,然后运行,即可实现简易的电子秤。系统整体仿真结构图及仿真结果如图4-2、图4-3所示: 图4-2 系统仿真全图 图4-3 仿真结果图4.3 仿真程序 见附录4.4 调试过程中遇到的问题 在设计过程中,首先是找不到合适的信息输入模块,即传感器。因为没有输入信息,仿真无从谈起。通过查找大量的传感器资料,再从“Proteus”元件库中选取合适的型号,经过筛选,发现MPX4250比较适合本设计,它随时可以改变输入的信号值(即重量变化)。MPX4250是一种硅半导体压
32、力传感器,输出的是模拟型信号,市场应用也比较广泛,比较适合本次设计。其次是在A/D转换器的选型上也遇到了困难,在设计之初,我选的是ADC0809,主要是因为我们在课堂上学习过ADC0809的引脚功能和特性,对其比较了解。但是在软件调试过程中,编好的程序无法使LCD液晶显示器将传感器的信号显示出来,即不能进行模数转换。首先我想到的是程序出了问题,但是经过检查发现,程序是正确的,然后我又仔细的检查了ADC0809与单片机的引脚连接,仍然不能显示数据。有同学建议我换一个A/D转换器,于是我尝试了ADC0804和ADC0832,最终发现ADC0832能很好地满足本次设计的目的。还有一个问题就是在编写乘
33、法运算程序时,也就是LCD显示函数“SUM”时,在函数的拆分问题上遇到了麻烦。如何将一个六位数拆分,在哪一位上先整除再求余,或者是先求余再整除,在这个算法上困惑了我很久,我查阅了一些资料,但仍然不能解决。后来我就去向精通C语言同学请教,经过一番讨论和研究,终于把这个问题弄明白了。由于个人能力有限,本文所设计的电子秤功能单一,与市场上实际使用的电子秤相比功能不够完善,不足之处还请见谅。以上几个问题是设计过程中比较突出的问题,还有一些其他小问题,在老师和同学的帮助下都迎刃而解了,在此不一一详述。结 论本次设计使我了解了电子秤的一些基本的工作原理,也使我明白,理论与实际的差别还是很大的,比如在仿真时
34、传感器的选择上,现实中所使用的电子秤得传感器必须经过信号放大才能进行模/数转换。设计中应用了硬件单片机芯片模块,结合软件程序借助Keil软件调试实现显示功能。在设计过程中由于所学知识的欠缺而导致设计无法快速的完成。单片机种类繁多,功能多种多样。本设计采用了AT89C51单片机,原因之一是我们对51系列的单片机比较熟悉,而且51单片机的功能比较齐全,市场应用广泛。编程语言则是利用我们所学过的C语言编程方法。由于C语言功能强大,便于模块化开发,所带库函数丰富,编写的程序易于移植等诸多优点使之成为单片机应用系统开发最快速高效的程序设计语言。采用C语言,充分体现了结构化的思想,当每个模块都完成时,将其
35、功能加到一起就完成了整体的设计。但是仅仅进行简单的叠加无法真正的实现软件与硬件的统一,而是还需要不断地进行调试。此次设计过程中遇到了许多困难,根本原因是自己所学知识不够全面,对知识的掌握也不够扎实。出现问题后,我首先是努力去寻找问题的所在,然后用自己所掌握的知识去试着分析问题,尽可能地通过查阅资料来独立解决问题。但是个人能力有限,有些问题实在解决不了的,就去请教同学或老师。特别是在C语言的编程方面,非常感谢老师和同学们的帮助。在这分析问题、解决问题的过程中不仅巩固了以前所学的知识,通过查阅资料还掌握了一些新的知识,使得个人能力得到了提高,专业水平也有了进步。这次设计是大学四年来一个总结,不仅是
36、对自己所学专业知识的考核,也锻炼了将所学专业理论知识应用于实际问题中的能力。通过本次设计,考验了我将理论应用于实践和独立解决问题的能力,也加强了我老师,同学一起协作的能力,更使我认识到自己在知识方面存在的不足,明确了今后的学习方向,也为将来的的就业提前打了下坚实的基础。我会好好珍惜这次设计过程中所经历的一切,这将是我人生中一笔宝贵的财富。参考文献1 李朝青 单片机原理及接口技术,北京航天航空大学出版社,2005年第3版2 谭浩强 C程序设计,清华大学出版社, 2005年第3版3 贾石峰 传感器原理与传感器技术,机械工业出版社,2009.84 李移伦 单片机原理及应用,中南大学出版社2006.7
37、5 于军胜 显示器件技术,国防工业出版社,2010.76 杨居义 单片机课程设计指导,清华大学出版社,2009年7 楼然苗 51些列单片机设计实例 北京航天航空出版社,2003.38 李全利,迟荣强 单片机原理及接口技术M 北京: 教育出版社2004.19 张毅刚 MCS-51单片机应用设计,哈工大出版 2004第二版附 录程序清单#include#include#include #include#define uchar unsigned char#define uint unsigned int/*定义变量区*sbit lcden=P37; /LCD使能信号sbit lcdrs=P35;
38、/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 tab1=w:; uchar code tab2=SUM:; uchar n=0,temp,key;unsigned char CH=0x02;/*延时函数开始*void delay(uint k)uint i,j;for(i=k;i0;i-) for(j=50;j0;j-);
39、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_();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
40、; _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 = 0; _nop_(); _nop_(); */CS = 1;/return (dat1 = dat2) ? dat1:0;return dat1;/*写命令函数开始*void write_com(uchar com)lcdrs=0; /低电平写命令P1=com; /写入命令delay(3); /延时约3mslcden
41、=1; /LCD使能端置高电平delay(5); /延时约5mslcden=0; /LCD使能端拉低电平/*写数据函数开始*void write_data(uchar dat) lcdrs=1; /低电平写数据 P1=dat; /写入命令 delay(3); /延时约3ms lcden=1; /LCD使能端置高电平 delay(5); /延时约5ms lcden=0; /LCD使能端拉低电平/*LCD初始化函数开始*void lcd_init()lcden=0;write_com(0x38); /设置显示模式:16X2,5X7,8位数据接口write_com(0x0c); /开显示,显示光标,
42、光标闪烁write_com(0x06); /读写一个字符后,地址指针及光标加一,且光标加一整屏显示不移动write_com(0x80); /设置光标指针/*键盘功能分配函数群开始*void key_manage1()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()ta
43、b_keyn=5;if(n4)n+;void key_manage7()tab_keyn=6;if(n4)n+;void key_manage8()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(0x01);write_com(0x0c);write_com(0x80);for(i=0;i2;i+)write_data(tab0i);write_data(0+0);write_com(0x89);for(i=0;i2;i+)write_data(tab1i);write_data(0+0);wri
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100