单片机原理及接口技术课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
--- 智能台式电子秤设计
辽 宁 工 业 大 学
单片机原理及接口技术 课程设计(论文)
题目: 智能台式电子秤设计
I
本科生课程设计(论文)
课程设计,论文,报告的内容及其文本格式
1、课程设计(论文)报告要求用A4纸排版,单面打印,并装订成册
2、页边距:上2.5cm,下2.5cm,左3cm,右2.5cm,页眉1.5cm,页脚1.75cm,左侧装订;
3、字体:一级标题,小二号字、黑体、居中;二级,黑体小三、居左;三级标题,黑体四号;正文文字,小四号字、宋体;
4、行距:20磅行距;
5、页码:底部居中,五号、黑体;
6、对图题和图中文字要求:图题是5号黑体,在图的下方居中图中文字是5号宋体,参照图2.1
7、对表题和表中文字要求:表题是5号黑体,在表的上方居中表中文字是5号宋体,参照表2.1
II
本科生课程设计(论文)
课程设计(论文)任务及评语
院(系):电气工程学院 教研室: 学 号 学生姓名 专业班级
课程设计
(论文)智能台式电子秤设计 题目
该电子秤适用于各种行业的大重量物品的移动称重,车间,库房,物流等环
境测,并可以设置单价,及计算出总费用加以显示,重量测量范围30 kg
~500.000kg。 课
程主要设计内容: 设
计硬件电路设计: )
1. CPU最小系统设计(包括CPU选择,晶振电路,复位电路) 论
文2. 传感器选择及接口电路设计 )
任3. 显示、按键电路及电源电路设计 务 软件设计:1.编程程序流程图2.程序清单编写
第1天 查阅收集资料
第2天 总体
设计方案
关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案
的确定
第4天 CPU最小系统设计
第5天 传感器选择及其接口电路设计
进第6天 显示、按键电路及电源电路设计 度
计第7天 程序流程图设计
划 第8天 软件编写与调试
第9天 设计说明书完成
第10天 答辩
指 导 教
师 评平时: 论文质量: 答辩: 语
及 成总成绩: 指导教师签字: 绩
年 月 日
注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算
III
本科生课程设计(论文)
摘 要
该电子秤适用于各种行业的大重量物品的移动称重,车间,库房,物流等环境测,并可以设置单价,及计算出总费用加以显示,重量测量范围30 kg ~500.000kg。本系统采用单片机AT89S52为控制核心,实现电子秤的基本控制功能。系统的硬件部分包括最小系统板,数据采集、人机交互界面三大部分。最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号的前级处理和A/D转换部分组成。此称测量范围大,精度高,使用方便。
关键词:AT89S52;CPU;电子秤;
IV
本科生课程设计(论文)
目 录
第1章 绪论 .......................................................... 1
1.1 单片机概况 ................................................... 1
1.2 本文研究内容 ................................................. 1 第2章 CPU最小系统设计 .............................................. 2
2.1 智能台式电子秤总体设计
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
................................... 2
2.2 CPU的选择 .................................................... 3
2.3 基于AT89S52的主控电路 ....................................... 4
2.4 CPU最小系统图 ................................................ 5 第3章 智能台式电子秤输入输出接口电路设计 ............................ 7
3.1 智能台式电子秤传感器的选择 ................................... 7
3.2 智能台式电子秤
检测
工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训
接口电路设计 ............................... 8
3.2.1 信号处理电路 ......................................................................................8
3.2.2 A/D转换器选择 ...................................................................................9
3.3 智能台式电子秤输出接口电路设计 ............................... 9
3.4 人机对话接口电路设计 ......................................... 9
3.4.1 键盘控制电路 ......................................................................................9
3.4.2 液晶显示电路 .................................................................................... 10 第4章 智能台式电子秤软件设计 ....................................... 12
4.1 软件实现功能综述 ............................................ 12
4.2 流程图设计 .................................................. 12
4.3 A/D转换程序流程图 ........................................... 13
4.4 LCD显示程序流程图 ........................................... 14
4.5 读键输入子程序流程图 ........................................ 15
4.6 程序清单 .................................................... 16 第5章 课程设计总结 ................................................. 52 参考文献 ............................................................ 52
V
本科生课程设计(论文)
第1章 绪论
1.1 单片机概况
随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。
做为重量测量仪器,智能电子秤在各行各业开始显现其测量准确,测量速度快,易于实时测量和监控的巨大优点,并开始逐渐取代传统型的机械杠杆测量称,成为测量领域的主流产品。
1.2 本文研究内容
首先是通过压力传感器采集到被测物体的重量并将其转换成电压信号。输出电压信号通常很小,需要通过前端信号处理电路进行准确的线性放大。放大后的模拟电压信号经V/F转换电路转换成数字量被送入到主控电路的单片机中,再经过单片机控制译码显示器,从而显示出被测物体的重量。按照设计的基本要求,系统可分为三大模块,数据采集模块、控制器模块、人机交互界面模块。其中数据采集模块由压力传感器、信号的前级处理和V/F转换部分组成。转换后的数字信号送给控制器处理,由控制器完成对该数字量的处理,驱动显示模块完成人机间的信息交换。此部分对软件的设计要求比较高,系统的大部分功能都需要软件来控制。
1
本科生课程设计(论文)
第2章 CPU最小系统设计
2.1 智能台式电子秤总体设计方案
在设计系统时,针对各个模块实现的功能来设计电子秤的方案有以下几种:
方案一 数码管显示:
结构简图如下:
单片机 数据采集 数码显示
图2.1 数码管显示方案
此方案利用数码管显示物体重量,简单可行,可以采用内部带有模数转换功能的单片机。由此设计出的电子秤系统,硬件部分简单,接口电路易于实现,并且在编程时大大减少程序量,在电路结构上只有简单的输出输入关系。缺点是:硬件部分简单,虽然可以实现电子称基本的称重功能,但是不能实现外部数据的输入,无法根据实际情况灵活地设定各种控制参数。由于数码管只能实现简单的数字和英文字符的显示,不能显示汉字以及其他的复杂字符,不能达到显示购物清单的要求。又因为采用了具有模数转换功能的单片机,系统电路过于简单,系统硬件的扩展必受到限制,电子秤的功能过于单一,达不到设计的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
。
方案二 在前一种方案的基础上进行扩展,增加一键盘输入装置,增加外界对单片机内部的数据设定,使电子称实现称重计价的功能。
结构简图如下图所示:
数码管显示
数据采集 单片机
键盘输入
图2.2 带有键盘输入的结构简图
2
本科生课程设计(论文)
此方案设计的电子秤,可以实现称物计价功能,但是局限于数码管的功能,在显示时只能显示单价、购物总额以及简单的货物代码等。在显示重量时,如果数码管没有足够的位数,那么称量物体重量的精度必受到限制,所以此方案需要较多的数码管接入电路中。这样在处理输入输出接口时需要另行扩展足够多的I/O接口供数码管使用,比较麻烦。
方案三 前端信号处理时,选用放大、信号转换等措施,尤其在显示方面采用具有字符图文显示功能的LCD显示器。这种方案不仅加强了人机交换的能力,而且满足设计要求,可以显示购物清单、所称量的物体信息等相关内容。
结构简图如下图所示:
键盘控制
压力传感器 信号转换 信号放大 单片机
LCD显示器
图2.3 LCD显示的方案
目前单片机技术比较成熟,功能也比较强大,被测信号经放大整形后送入单片机,由单片机对测量信号进行处理并根据相应的数据关系译码显示出被测物体的重量。单片机控制适合于功能比较简单的控制系统,而且其具有成本低,功耗低,体积小算术运算功能强,技术成熟等优点。但其缺点是外围电路比较复杂,编程复杂。使用这种方案会给系统设计带来一定的难度。
2.2 CPU的选择
AT89S系列单片机是继AT89C系列之后推出的功能更强的新产品。AT89S系列与AT89C系列相比,运算速度有了较大的提高,它的静态工作频率为0~33MHz,片内集成有双数据指针DPTR、定时监视器(watchdog timer,又称看门狗)、低功耗休闲状态及关电方式、关电方式下的中断恢复等诸多功能,极大地满足了各种不同的应用要求。
AT89S52单片机是AT89S系列中的增强型高档机产品,它片内存储器容量是AT89S51的一倍,即片内8KB的Flash程序存储器和256B的RAM。另外,它还增加了一个功能极强的、具有独特应用的16位定时,计数器2等多种功能。
由此,通过对目前主流型号的比较,我们最终选择了AT89S52通用的普通单
3
本科生课程设计(论文) 片机来实现系统设计。AT89S52是一种兼容MCS51微控制器,工作电压4.0V到5.5V,全静态时钟0 Hz 到33 MHz,三级程序加密,32个可编程I/O口,2/3个16位定时/计数器,6/8个中断源,全双工串行通讯口,低功耗支持Idle和Power-down模式,Power down模式支持中断唤醒, 看门狗定时器,双数据指针,上电复位标志。我们在外面扩展了32K数据存储器,以满足系统要求。
TextText
P1.0VCC140P1.1P0.0239P1.2P0.1338P1.3P0.2437P1.4P0.3536P1.5P0.4635P1.6P0.5734P1.7P0.6833RESETP0.7932RXD P3.0EA VPP1031TXD P3.1ALE PROG1130INT0 P3.2PSEN1229I/N/T/1/ P3.3P2.71328T0 P3.4P2.61427T1 P3.5P2.51526WR P3.6P2.41625RD P3.7P2.31724XTAL2P2.21823XTAL1P2.11922VSSP2.02021
TextText图2.4 AT89S52单片机引脚图
2.3 基于AT89S52的主控电路
数据储存器扩展电路主要采用芯片AT89S52、 74LS373和62256。芯片74LS373是典型的锁存器芯片,它是三态输出的八位锁存器。芯片内含八个D型触发器。P1口和P2.0,P2.6口作为地址总线,其中P1口作为低地址线和数据总线复用,P2.0,P2.6口做高地址线。P2.7作为62256的片选控制总线,ALE接锁存器74LS373的使能端。P3.6和P3.7作为外部数据存储器写/读选通信号输出端分别接62256的/WE和/OE端。
数据储存器扩展电路如图2.5所示:
4
C?XL2VCCC20R?+0.01uFC?S?1K 10uFSW-PB47uFC?RSTXL1本科生课程设计(论文)
0.01uFVCCVCCVCCU7U8U91P1.0VCC4011EVCC2010A0P1.02P1.1P0.03931D1Q29A1Text20P1.1D0P2.73P1.2P0.13842D2Q58A2VCC28P1.2D14P1.3P0.23773D3Q67A3D011P1.3D2D05P1.4P0.33684D4Q96A4D112P1.4D3D16P1.5P0.435135D5Q125A5D213P1.5D4D27P1.6P0.534146D6Q154A6D315P1.6D5D38P1.7P0.633177D7Q163A7D416P1.7D6D49RSTP0.732188D8Q1925A8D517P3.0D7A8D510P3.0(RXD)VPP3110GND/OC124A9D618P3.1A9D611P3.1(TXD)PROG3021A10D719P3.2A10D712P3.2(INTO)PSEN2974LS37323A11GND14P3.3A1113P3.3(INT1)P2.7282A12Text27P3.4P2.7A12P2.614P3.4P2.62726A13/OC22 A14VCCA13P3.715P3.5P2.5261A14A13A1416P3.6(/WD)P2.425P2.4A1217P3.7(/RD)P2.32462256P2.2A1118XTAL2P2.223XL2A1019XTAL1P2.122XL1A9139GNDP2.02120A8
SW-PB
图2.5数据储存器扩展电路
2.4 CPU最小系统图
CPU最小系统图如图2.6所示:
C?XL2VCCC20R?+0.01uFC?S?1K10uFSW-PB47uFC?RSTXL1
0.01uFVCCVCCVCCU7U8U91P1.0VCC4011EVCC2010A0P1.02P1.1P0.03931D1Q29A1Text20P1.1D0P2.73P1.2P0.13842D2Q58A2VCC28P1.2D14P1.3P0.23773D3Q67A3D011P1.3D2D05P1.4P0.33684D4Q96A4D112P1.4D3D16P1.5P0.435135D5Q125A5D213P1.5D4D27P1.6P0.534146D6Q154A6D315P1.6D5D38P1.7P0.633177D7Q163A7D416P1.7D6D49RSTP0.732188D8Q1925A8D517P3.0D7A8D510P3.0(RXD)VPP3110GND/OC124A9D618P3.1A9D611P3.1(TXD)PROG3021A10D719P3.2A10D712P3.2(INTO)PSEN2974LS37323A11GND14P3.3A1113P3.3(INT1)P2.7282A12Text27P3.4P2.7A12P2.614P3.4P2.62726A13/OC22 A14VCCA13P3.715P3.5P2.5261A14A13A1416P3.6(/WD)P2.425P2.4A1217P3.7(/RD)P2.32462256P2.2A1118XTAL2P2.223XL2A1019XTAL1P2.122XL1A9139GNDP2.02120A8
SW-PB
图2.6 CPU最小系统图
AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优
5
本科生课程设计(论文) 先级2层中断嵌套中断,3个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
6
本科生课程设计(论文)
第3章 智能台式电子秤输入输出接口电路设计 3.1 智能台式电子秤传感器的选择
电阻应变式传感器是一种利用电阻应变效应,将各种力学量转换为电信号的结构型传感器。电阻应变片式电阻应变式传感器的核心元件,其工作原理是基于材料的电阻应变效应,电阻应变片即可单独作为传感器使用,又能作为敏感元件结合弹性元件构成力学量传感器。
导体的电阻随着机械变形而发生变化的现象叫做电阻应变效应。电阻应变片把机械应变信号转换为?R/R后,由于应变量及相应电阻变化一般都很微小,难以直接精确测量,且不便处理。因此,要采用转换电路把应变片的?R/R变化转换成电压或电流变化。其转换电路常用测量电桥。
直流电桥的特点是信号不会受各元件和导线的分布电感及电容的影响,抗干扰能力强,但因机械应变的输出信号小,要求用高增益和高稳定性的放大器放大。
下图为一直流供电的平衡电阻电桥,接直流电源E: Ein
图3.1 传感器结构原理图
当电桥输出端接无穷大负载电阻时,可视输出端为开路,此时直流电桥称为电压桥,即只有电压输出。
当忽略电源的内阻时,由分压原理有:
u,u,u,uoBDABAD
RR14 ,E,()R,RR,R1234
7
本科生课程设计(论文)
RR,RR1324 (3-1) ,E,
(R,R)(R,R)1234
当满足条件R1R3=R2R4时,即
RR14,RR(3-2) 23
=0,即电桥平衡。式(2.3)称平衡条件。 uo
应变片测量电桥在测量前使电桥平衡,从而使测量时电桥输出电压只与应变片感受的应变所引起的电阻变化有关。
若差动工作,即R1=R-?R,R2=R+?R,R3=R-?R,R4=R+?R,按式(3-1),则电桥输出为
22(R,,R),(R,,R)E,, uo,,,,,(R,,R),(R,,R)(R,,R),(R,,R)
,R,,E R
(3-3) ,k,E
3.2 智能台式电子秤检测接口电路设计
3.2.1 信号处理电路
滤波放大电路图如图3.2所示:
+12+12R9R3R160.033K41KC71U?C5R151KU2RET22uF0.1uF300KR51RgRg8362Vi1V+7423Vi2V062Vo4V-RET5R17AD62071K3C6C8-12+120.1uF22uF
R?
RES2
+12-12
图3.2 信号滤波放大图
上图中电容C5、C6用来滤除采样信号电压中的高频噪声,选用0.1uF的普通独石电容;电容C7、C84用来滤除采样信号电压中的低频噪声,选用22uF的
8
本科生课程设计(论文) 普通独石电容。电阻R3、R4选用较小的阻值,因为采样信号电压值只有毫伏级,所以其阻值不宜太大,否则导致放大器由于输入电流太小而放大效果不明显。 3.2.2 A/D转换器选择
设计中A/D转换器用的是ADC0809 A/D转换器,它是8路8位逐次逼近式转换器,结果为8位二进制数据,转换时间短(一般在级),满足题目要求的“实时采样”,并且它的转换精度在0.1%上下,比较适中,适用于一般场合。
ADC0809
128IN3IN2227IN4IN1 326IN5IN0425 IN6A524IN7B 623STC722 EOCALE821D3D7 920OED61019 CLKD51118VCCD4 1217VREF+D01316 GNDVREF-1415D1D2
图3.3 ADC0809结构图
外部时钟输入端,时钟频率高,A/D转换速度快。允许范围为10~1280KHZ,典型值为640KHZ,此时,A/D转换时间为10us。通常由MCS-51型单片机ALE端直接或分频后与其相连。当MCS-51型单片机无读写外,RAM操作时,ALE信号固定为CPU时钟频率的1/6,若单片机外接的晶振为6MHZ,则1/6为1MHZ,A/D转换时间为64us。
3.3 智能台式电子秤输出接口电路设计
3.4 人机对话接口电路设计
3.4.1 键盘控制电路
ZLG7289 采用串行方式与微处理器通讯,串行数据从DATA 引脚送入芯片,并由CLK 端同步。当片选信号变为低电平后,DATA 引脚上的数据在CLK 引脚的上升沿被写入ZLG7289 的缓冲寄存器。
电路图如图3.4所示:
9
本科生课程设计(论文)
14
12345C21C22RP3VCC615pF15pF10K7U10R1581RTCCRST2816RST11K2VCCRC271523NCCLKO261434GNDD007251345MCD006241256/CSD0052311P1.567CLKD0042210P1.6J?78DOD00321P2.0899OCEYD00220P2.210SGD0011911SFD0001812SEDP1713SDSA1614SCSB15
RP1RP2ZLG728915116116215215131431424134133512512461161157107106898978 100K100K
图3.4 键盘控制电路图
键盘控制芯片ZLG7289 控制键盘的扫描,当监测到有键按下后ZLG7289 的9脚便产生一个低电平通知单片机,单片机可以采用查询或者中断方式将数据通过P3.0口以串行方式读入。因为查询方式会浪费大量的时间,所以本系统采用的是中断方式。
3.4.2 液晶显示电路
OCM4x8C是具有串/并接口,其内部含有中文字库的图形点阵液晶显示模块。该模块的控制/驱动器采用台湾矽创电子公司的ST7920,因而具有较强的控制显示功能。OCM4x8C的液晶显示屏为128×64点阵,可显示4行、每行8个汉字。为了便于简单、方便地显示汉字,该模块具2Mb的中文字型CGROM,该字型ROM中含有8192个16×16点阵中文字库;同时,为了便于英文和其它常用字符的显示,具有16Kb的16×8点阵的ASCII字符库;为便于构造用户图形,提供了一个64×256点阵的GDRAM绘图区域,且为了便于构造用户所需字型,提供了4组16×16点阵的造字空间。利用上述功能,OCM4x8C可实现汉字、ASCII码、点阵图形、自造字体的同屏显示。为便于和多种微处理器、单片机接口,模块提供了4位并行、8位并行、2线串行、3线串行多种接口方式。
该模块具有2.7V,5.5V的宽工作电压范围,且具有睡眠、正常及低功耗工作模式,可满足系统各种工作电压及便携式仪器低功耗的要求。液晶模块显示负电压,也由模块提供,从而简化了系统电源设计。模块同时还提供LED背光显示功能。除此之外,模块还提供了画面清除、游标显示/隐藏、游标归位、显示打开/
10
本科生课程设计(论文) 关闭、显示字符闪烁、游标移位、显示移位、垂直画面旋转、反白显示、液晶睡眠/唤醒、关闭显示等操作指令。
电路图中PSB接低电平,进入串行接口模式;串行数据线SID接P3.1口;串行时钟线SCLK接P1.6;RS固定接高电平。此为典型二线串行模式。
2/3线串行接口方式:
当模块的PSB脚接低电平时,模块即进入串行接口模式。串行模式使用串行数据线SID与串行时钟线SCLK来传送数据,即构成2线串行模式。
OCM4x8C还允许同时接入多个液晶显示模块以完成多路信息显示功能。此
时,要利用片选端“CS”构成3线串行接口方式,当“CS”接高电位时,模块可正常接收并显示数据,否则模块显示将被禁止。通常情况下,当系统仅使用一个
”可连接固定的高电平。 液晶显示模块时,“CS
11
本科生课程设计(论文)
第4章 智能台式电子秤软件设计 4.1 软件实现功能综述
该电子秤适用于各种行业的大重量物品的移动称重,车间,库房,物流等环境测,并可以设置单价,及计算出总费用加以显示,重量测量范围30 kg
~500.000kg。
4.2 流程图设计
主程序流程图如下:
开始
标致寄存器RO,R1,,R2及显示计算RAM清零
T0,T1,INT0看门狗初始化
T1(定时),INT0开中断
LCD显示初始化
while
T0开始计数
送重量显示RAM中
调用正常显示程序
图4.1主程序流程图
12
本科生课程设计(论文)
4.3 A/D转换程序流程图
A/D转换程序流程图如下:
开始
初始化
启动A/D
N
A/D转换完,
Y
数据输出
清读零标志
图4.2 A/D转换程序流程图
13
本科生课程设计(论文)
4.4 LCD显示程序流程图
LCD显示程序流程图如下
开始
初始化显示参数
关所有位显示
取显示数据
输出段码数据
输出位选通信号
延时
位选通信号移位
指向下一个显示数据
N
6位完成,
返回
图4.3LCD显示程序流程图
14
本科生课程设计(论文)
4.5 读键输入子程序流程图
读键输入子程序流程图如下:
开始
初始化地址参数
输出列扫描信号
列扫描信号移位
读输入行信号 该列有键输入,
Y
N
N 6列扫描完,
Y
返回
按照行列计算键值
查表得键码
等待按键释放
返回
图4.4 读键输入子程序流程图
15
本科生课程设计(论文)
4.6 程序清单
ORG 0100H
MOV SP,#60H
LCALL RAMBLANK KEYIN:
LCALL KEYOP
F0,KEYIN_1 JNB
MOV B,A
LCALL XCHMOV
MOV A,B
MOV DPTR,#TAB ;由键值查找共阴数码管显示字型码
MOVC A,@A+DPTR
CPL A ;由于P1口数码管共阳,A求反
LCALL BELL50 ;蜂鸣器响50毫秒。 KEYIN_2:
LCALL KEYOP
LCALL KEYOUT
JB F0,KEYIN_2 ;判断按键是否释放
KEYIN_1:
LCALL START ;自动运行
16
本科生课程设计(论文)
LJMP KEYIN
;*********************************************************************
******
;按键扫描子程序:
;F0,1表示有键按下,键值在A中。程序使用R2、R3、R4、R5。子程序使用11区,退出时恢复为00区。
;使用R2,R5,MCS,51没有PUSH R 及POP R 指令,使用改变R0,R7映射区。 KEYOP:
SETB RS0 ;改变R0,R7映射区
SETB RS1
CLR F0 ;清标志F,1时有键盘输入
MOV R2,#00H ;R2键值(00,09H)
MOV R3,#00H
MOV R4,#05H ;列数,决定扫描次数
MOV R5,#01111111B ;从第一(D7)列开始 K_AGAIN:
MOV A,R5 ;输出扫描列
MOV DPTR,#0002H
MOVX @DPTR,A
NOP
NOP
17
本科生课程设计(论文)
MOVX A,@DPTR ;输入行值
ORL A,#3FH ;将输入的值变为××111111
CPL A ;求反,输入的值变为××000000
JNZ K_OPRAT ;求反后,如果不是全'0',表示有键按下
MOV A,R5 ;如果是全'0',表示没有键按下
RR A
MOV R5,A ;扫描列右移,表示扫描下一列,保存在R5
MOV A,R2
ADD A,#02H ;扫描列每移动一位,R2的值增加02(每列
2行)
MOV R2,A
DJNZ R4,K_AGAIN ;5列是否扫描完,扫描2行,一次扫描结束
CLR F0 ;没有键按下,强调F0,0,退出子程序
LJMP KEYEND ;有键按下处理
K_OPRAT:
CPL A ;恢复键值
SWAP A ;4位键值置换到低4位
SETB C
K_NEXT:
RRC A
JNC K_OP1 ;移出行位值,0,由R3得到行值
18
本科生课程设计(论文)
INC R3
CJNE R3,#02H,K_NEXT ;行值为00,01,当R3,2,表示2行
;查找结束
MOV R3,#00H
LJMP K_AGAIN ;有键按下,找到行值后出来。 K_OP1:
MOV A,R3 ;由列值、行值得到键值
ADD A,R2
SETB F0 ;设置有键输入标志F0 KEYEND:
CLR RS0 ;恢复R0,R7映射区
CLR RS1
RET
;*********************************************************************
***
按键处理子程序
KEYOUT:
CHULI:
CJNE A,#00H,CHULI0 ;如果第一个键没按下,跳转CHULI0
LCALL START ;自动运行
LCALL XIAN0 ;数码管第六位显示'5'
19
本科生课程设计(论文)
RET
CHULI0:
CJNE A,#01H,CHULI1 ;如果第二个键没按下,跳转CHULI1
LCALL SHOUDONG ;手动控制
LCALL XIAN1 ;数码管第六位显示'6'
RET
SHOUDONG:
手动控制输入单价 ;
CHULI1:
CJNE A,#02H,CHULI2 ;如果第三个键没按下,跳转CHULI2
LCALL XIAN1
LCALL BELL50 ;
MOV P1,#28H ;
LCALL WERSNS ;
LCALL SNSWER ;
RET
;手动控制
CHULI2:
CJNE A,#03H,CHULI3 ;如果第四个键没按下,跳转CHULI3
LCALL XIAN1
20
本科生课程设计(论文)
LCALL BELL50
MOV P1,#048H ;
LCALL WERSNS ;
LCALL SNYWER ;
RET
;手动控制
CHULI3:
CJNE A,#04H,CHULI4 ;如果第五个键没按下,跳转CHULI4
LCALL XIAN1
LCALL BELL50
MOV P1,#18H ;
LCALL WERSNS ;
LCALL SNLWER ;
RET
;手动控制
CHULI4:
CJNE A,#05H,CHULI5 ;
LCALL XIAN1
LCALL BELL50
MOV P1,#82H ;
21
本科生课程设计(论文)
LCALL WESSNR ;
LCALL SNRWES ;
RET
;手动控制
CHULI5:
CJNE A,#06H,CHULI6 ;
LCALL XIAN1
LCALL BELL50
MOV P1,#84H ;
LCALL WEYSNR ;
LCALL SNRWES ;
RET
;手动控制
CHULI6:
CJNE A,#07H,CHULI7 ;
LCALL XIAN1
LCALL BELL50
MOV P1,#81H ;
LCALL WELSNR ;
LCALL SNRWES ;
22
本科生课程设计(论文)
RET
;手动控制设置时间
CHULI7:
CJNE A,#08H,CHULI8 ;如果第九个键没按下,跳转CHULI8
LCALL XIAN2 ;数码管第六位显示'7'
INC R0 ;设置模式下手动加一延长显示时间
RET
CHULI8:
CJNE A,#09H,CHULI ;如果第十个键按下,跳转CHULI9
LCALL XIAN2
DEC R0 ;设置模式下手动减一缩短显示时间
RET
XIAN0:
TESTLED_DIS0:
LCALL BELL50
LCALL TIME_100ms
LCALL BELL50
MOV R2,#05H
DIS_0:
MOV A,R2
23
本科生课程设计(论文)
MOV DPTR, #TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES
DISTES:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00100000B
MOVX @DPTR,A
RET
;*********************************************************************
***
XIAN1:
TESTLED_DIS1:
LCALL BELL50
LCALL TIME_100ms
LCALL BELL50
MOV R2,#06H DIS_1:
24
本科生课程设计(论文)
MOV A,R2
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES1 DISTES1:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00100000B
MOVX @DPTR,A
RET
;*********************************************************************
***
XIAN2:
TESTLED_DIS2:
LCALL BELL50
LCALL TIME_100ms
LCALL BELL50
MOV R2,#07H
25
本科生课程设计(论文) DIS_2:
MOV A,R2
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES2
DISTES2:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00100000B
MOVX @DPTR,A
RET
;*********************************************************************
****
;显示缓存区的其他单元内容地址上移,A的内容放在显示缓存区最低单元。 DISBUF EQU 30H ;要显示的单元地址。 COUNT EQU 08H ;显示缓冲器中连续显示单元的个数。 XCHMOV:
MOV R2,#COUNT
26
本科生课程设计(论文)
MOV R0,#DISBUF XCHMOV_1:
XCH A,@R0
INC R0
DJNZ R2,XCHMOV_1
RET
;*********************************************************************
***
;延时1ms子程序
TIME_1ms:
MOV R7,#00H ;(一个循环256×4,1000微秒) TIME_1ms0:
NOP
NOP
DJNZ R7,TIME_1MS0
RET
;*********************************************************************
****
;延时30ms子程序
;内层循环256×(2,1,1),1ms
;整个延时大约30×1,30ms。
27
本科生课程设计(论文)
TIME_30ms:
MOV R6,#1EH T1MS30:
LCALL TIME_1MS
DJNZ R6,T1MS30
RET
;*********************************************************************
****
;延时50ms子程序,内层循环256×(2,1,1),1ms ;整个延时大约50×1,50ms。
TIME_50ms:
MOV R6,#32H T1MS50:
LCALL TIME_1MS
DJNZ R6,T1MS50
RET
;*********************************************************************
****
;延时1s子程序,内层循环256×(2,1,1),1ms ;整个延时大约1000×1,1s。
TIME_1s:
28
本科生课程设计(论文)
MOV R6,#03E8H T1MS50:
LCALL TIME_1MS
DJNZ R6,T1MS50
RET
;*********************************************************************
****
;使用的DPTR、A 保护。
BELL50:
PUSH DPH
PUSH DPL
PUSH A
MOV A,#0FEH ;蜂鸣器响,持续时间30ms。(蜂鸣器响的时间可
以
MOV DPTR,#0002H ;在1ms、2ms???,作为防抖应当在20ms以上。
MOVX @DPTR, A
LCALL TIME_50ms
MOV A,#0FFH
MOVX @DPTR,A
POP A
POP DPL
29
本科生课程设计(论文)
POP DPH
RET
;*********************************************************************
***
;显示缓存区内容置为“1BH”,其显示代码为“空”。 RAMBLANK:
MOV A,#1BH;
RET
;*********************************************************************
***
;自动运行程序
ORG 300H
START:
MOV DPTR,#TAB ;指向字形表首
MOV SCON,#00H ;设置串行口控制字,方式0工作
LCALL BELL50 ;
MOV P1,#28H ;
LCALL WERSNS ;
LCALL SNSWER ;
MOV R0,#15 ;R0赋值15
30
本科生课程设计(论文)
LEFT:
LCALL TIME_1s ;
DJNZ R0,LP1 ;
LCALL BELL50
MOV P1,#048H ;
LCALL WERSNS ;
LCALL SNYWER ; LP1:
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
LJMP LEFT
MOV R0,#5
LP0:
LCALL TIME_1s ;调用延时1S程序
DJNZ R0,LP2 ;R0>0,转LP2
LCALL BELL50
MOV P1,#18H ;
LCALL WERSNS ;
31
本科生课程设计(论文)
LCALL SNLWER ;
MOV R0,#15
RIGHT:
LCALL TIME_1s ;
DJNZ R0,LP3 ;R0>0,转LP3
LCALL BELL50
MOV P1,#48H ;
LCALL WERSNS ;
LCALL SNYWER ;
MOV R0,#5
LP5:
LCALL TIME_1s ;调用延时1S程序,
DJNZ R0, LP4
LCALL BELL50
MOV P1,#82H ;
LCALL SNRWES ;
MOV R0,#15
LP6:
LCALL TIME_1s ;
DJNZ R0,LP7
32
本科生课程设计(论文)
LCALL BELL50
MOV P1,#84H ;
LCALL WEYSNR ;
LCALL SNRWES ;
MOV R0,#5
LP8:
LCALL TIME_1s ;调用延时1S程序,
DJNZ R0,LP9
LCALL BELL50
MOV P1,#81H ;
LCALL WELSNR ;
LCALL SNRWES ;
MOV R0,#15
LP10:
DJNZ R0,LP11
LCALL BELL50
MOV P1,#84H ;
LCALL WEYSNR ;
MOV R0,#5
LP13:
33
本科生课程设计(论文)
LCALL TIME_1s ;调用延时1S程序,
DJNZ R0,LP12
LJMP START LP2:
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
LJMP LP0 LP3:
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
LJMP RIGHT LP4:
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
34
本科生课程设计(论文)
LJMP LP5 LP7:
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
LJMP LP6 LP9:
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
LJMP LP8 LP11:
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
LJMP LP10 LP12:
35
本科生课程设计(论文)
LCALL DBDB
LCALL DISP0
LCALL DISP1
LCALL DISP2
LJMP LP13
WERSNS:
TESTLED_DIS3:
LCALL TIME_100ms
MOV R2,#04H DIS_3:
MOV A,R2
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES3 DISTES3:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
36
本科生课程设计(论文)
MOV A,#00001000B
MOVX @DPTR,A
RET
;*********************************************************************
***
SNSWER:
TESTLED_DIS4:
LCALL TIME_100ms
MOV R2,#01H DIS_4:
A,R2 MOV
MOV DPTR, #TAB
MOVC A,@A+DPTR
MOV R3, A
LCALL DISTES4 DISTES4:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00010000B
37
本科生课程设计(论文)
MOVX @DPTR,A
RET
;*********************************************************************
***
SNYWER:
TESTLED_DIS5:
LCALL TIME_100ms
MOV R2,#03H DIS_5:
MOV A,R2
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES5
DISTES5:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00010000B
MOVX @DPTR,A
38
本科生课程设计(论文)
RET
;*********************************************************************
***
SNLWER:
TESTLED_DIS6:
LCALL TIME_100ms
MOV R2,#02H DIS_6:
MOV A,R2
MOVDPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES6
DISTES6:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00010000B
MOVX @DPTR,A
RET
39
本科生课程设计(论文)
;*********************************************************************
***
WESSNR:
TESTLED_DIS7:
LCALL TIME_100ms
MOV R2,#01H DIS_7:
MOV A,R2
MOV DPTR,#TAB
A,@A+DPTR MOVC
MOV R3,A
LCALL DISTES7
DISTES7:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00001000B
MOVX @DPTR,A
RET
40
本科生课程设计(论文)
;*********************************************************************
***
SNRWES:
TESTLED_DIS8:
LCALL TIME_100ms
MOV R2,#04H DIS_8:
MOV A,R2
MOV DPTR,#TAB
A,@A+DPTR MOVC
MOV R3,A
LCALL DISTES8
DISTES8:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00010000B
MOVX @DPTR,A
RET
41
本科生课程设计(论文)
;*********************************************************************
***
WEYSNR:
TESTLED_DIS9:
LCALL TIME_100ms
MOV R2,#03H DIS_9:
MOV A,R2
MOV DPTR,#TAB
A,@A+DPTR MOVC
MOV R3,A
LCALL DISTES9
DISTES9:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00001000B
MOVX @DPTR,A
RET
42
本科生课程设计(论文)
;*********************************************************************
***
WELSNR:
TESTLED_DIS10:
LCALL TIME_100ms
MOV R2,#02H DIS_10:
MOV A,R2
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES10
DISTES10:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00001000B
MOVX @DPTR,A
RET
43
本科生课程设计(论文) ;*********************************************************************
***
DBDB:
MOV A,R0 ;A=R0
MOV B,#100 ;B=100
DIV AB ;A/B A=商,B=余数
MOV R1,A ;R1=百位
MOV A,B
MOV B,#10
DIV AB
MOV R2,A ;R2=十位
MOV R5,B ;R5=个位
RET ;返回
DISP0:
TESTLED_DIS11:
LCALL TIME_100ms
DIS_11:
MOV A,R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
44
本科生课程设计(论文)
LCALL DISTES11
DISTES11:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00000001B
MOVX @DPTR,A
JNB TI,$ ;等待发送完一帧
CLR TI ;清中断标志,准备继续发送
RET
;*********************************************************************
***
DISP1:
TESTLED_DIS12:
LCALL TIME_100ms DIS_12:
MOV A,R2
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
45
本科生课程设计(论文)
LCALL DISTES12 DISTES12:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00000010B
MOVX @DPTR,A
JNB TI,$ ;等待发送完一帧
CLR TI ;清中断标志,准备继续发送
RET
DISP2:
TESTLED_DIS13:
LCALL TIME_100ms DIS_13:
MOV A,R5
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R3,A
LCALL DISTES13
46
本科生课程设计(论文)
DISTES13:
MOV DPTR,#0000H
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#00000100B
MOVX @DPTR,A
JNB TI,$ ;等待发送完一帧
CLR TI ;清中断标志,准备继续发送
RET
;延时10ms子程序
TIME_10ms:
MOV R6,#0AH TIME10:
LCALL TIME_1MS
DJNZ R6,TIME10
RET
;延时100ms子程序
;内层循环256×(2,1,1),1ms
47
本科生课程设计(论文) ;整个延时大约100×1,100ms
TIME_100ms:
MOV R6,#64H
T1MS100:
LCALL TIME_1MS
DJNZ R6,T1MS100
RET
;共阴数码管显示字型码表
TAB:
DB 0FCH,60H,0DAH,0F2H,66H ;数字00—04字型码
DB 0B6H,0BEH,0E0H,0FEH,0F6H ;数字05—09字型码
DB 0EEH,3EH,9CH,7AH,9EH,8EH ;字母0--F字型码
DB 00H ;'空'
RET
END
48
本科生课程设计(论文)
49
本科生课程设计(论文)
50
本科生课程设计(论文)
51
本科生课程设计(论文)
第5章 课程设计总结
随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的基础上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。
首先是传感器的精密度,它将直接影响电子秤的称重准确度。课设时由于传感器发出的信号不是很稳定,所以称重时误差很大。如果使用精密度较高的传感器,效果会好的多。
其次是数据采集处理阶段,此阶段是对传感器发出的信号进行量化、采集,主要分为信号放大、采集,然后进行A/D转换。该阶段需注意的地方是对传感器输出的信号进行放大时,应选取合适的运算放大电路。最好是预先计算好应放大的倍数,以便选取。还有就是进行数据处理时,选取适当的数据转换系数,使输出满足量程要求。
52
本科生课程设计(论文)
参考文献
[1] 梅丽凤等编著 单片机原理及接口技术 清华大学出版社2009.7 [2] 赵晶 主编 Prote199高级应用 人民邮电出版社,2000 [3] 于海生 编著 微型计算机控制技术 清华大学出版社2003.4 [5] 《中国集成电路大全》编写委员会编,中国集成电路大全CMOS集成电路。北
京;国防工业出版社,1985.
2、徐恕宏主编,传感器原理及其设计基础。北京;机械工业出版社,1988
3、阎石.数字电子技术基础.北京:高等教育出版社,1998
4、毕满清.电子技术实验与课程设计.北京:机械工业出版社,2005
5、孙余凯.精选实用电子电路260例.北京:电子工业出版社,2007.2
[6]
[7]
[9]
[10]
53