中国啊啊大学课程设计实验报告(2008~2009 学年夏季学期)课设题目:单片机:数字电子秤课设名称:单片机实验指导教师:爱爱爱班级:啊啊啊啊学号:啊啊啊啊啊啊姓名:嗷嗷嗷目录摘要 (3)关键词 (3)一、电子秤的工作原理 (3)二、电子秤各部分功能及程序介绍 (4)1、A/D转换部分 (4)2、BCD码转换部分 (5)3、LED显示 (6)4、键盘输入 (9)5、乘法子程序 (12)三、设计总结 (13)基于单片机的电子秤设计摘要电子秤是目前城市商店中应用较广的称量、计价工具。
随着微电子技术的应用,市场上使用的传统称重工具已经满足不了人们的需求。
为了改变传统称重工具在使用上存在的问题,在本设计中将智能化、自动化、人性化用在电子称重的控制系统中。
本系统主要由单片机来控制,测量物体重量部分由电位器模拟压力传感器及A/D转换器组成,加上显示单元,键盘输入单价单元,以及总价格计算及显示单元,此电子秤充分体现了自动化的先进性,在很大程度上满足了应用需求。
关键词SST89E564RD A/D转换BCD码转换LED显示键盘输入乘除法计算一、电子秤的工作原理调节电位器(模拟压力传感器)实现质量的测量,电位器的调节将引起电压的变化,电压的变化范围0~5V,而题目中给出的质量范围是0~10.00千克,存在一个两倍的比例问题。
根据A/D转换,十六进制与BCD码转换以及显示程序实现质量的的显示。
编写键盘输入输出程序,实现单价的手动输入及显示。
根据总价=质量*单价,最终显示物品的总价。
设计思路框图二、电子秤各部分功能及程序介绍1、A/D转换部分A/D转换部分是整个设计的关键,这一部分处理不好,会使整个设计不满足要求。
A/D转换过程主要包括采样、量化与编码.本系统中用到AD0804实现功能。
ADC0804是8位全MOS中速A/D转换器,它是逐次逼近式A/D转换器,片内有三态数据输出锁存器,可以和单片机直接接口。
单通道输入,转换时间大约100us。
ADC0804转换时序是:当CS=0许可进行A/D转换。
WR由低到高时,A/D开始转换。
CS与WR同时有效时启动A/D转换,转换结束产生INTR信号(低电平有效),可供查询或者中断信号。
在CS和RD的控制下可以读取数据结果。
本实验没有使用INTR信号。
硬件电路【源程序】//拧动AD旁边的电位器,会在数码管的前三位显示0-255之间的数值。
这就是把模拟信号转换成数字信号,即模数转换。
说明:由于不同AD的自身特性不同,所以时序如果控制不好的话,很有可能在数码管上不会动态显示变化数值,但按下实验板上复位键后可更新内容。
ORG 0000HLJMP MAIN ;长转移指令ORG 0030HMAIN: CLR P2.5GO: CLR P3.6 ;P3.6片外数据写选通控制输出/低电平有效NOPSETB P3.6CLR P3.7 ;P3.7片外数据读选通控制输出/低电平有效MOV A,P1SETB P3.7MOV R1,AMOV B,#100 ;函数主体部分,显示范围0~255DIV ABMOV R3,AMOV A,BMOV B,#10DIV ABMOV R4,AMOV R5,BMOV R2,#10LOOP1:LCALL DISPLAY ;调用显示子程序DJNZ R2,LOOP1SJMP GO2、BCD码转换部分在单片机应用程序设计中,十进制常采用BCD码表示,BCD码有两种形式:一个是字节存放一位的BCD码,适用于显示或输出;一个字节存放两位的压缩的BCD码,适用于运算和数据存储。
本程序中实现双字节十六进制的BCD码转换问题。
【源程序】/*程序:双字节十六进制整数转换为BCD码子程序*/待转换的双字节字符存放在R6、R7,由高到低转换后的双字节字符存放在R2、R3、R4,由高到低BCDT:MOV R6,#0ADHMOV R7,#0B3HCLR A ;BCD码初始化MOV R2,AMOV R3,AMOV R4,AMOV B,#10H ;转换双字节十六进制整数LOP2:MOV A,R7 ;从高端移出待转换的一位到CY中RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R4ADDC A,R4DA A ;十进制调整MOV R4,AMOV A,R3ADDC A,R3DA AMOV R3,AMOV A,R2ADDC A,R2DA AMOV R2,ADJNZ B,LOP2RET3、LED显示数据显示是电子秤的一项总要功能,是人际交换的主要组成部分,它可以将测量电路测得的数据经过微处理器处理后直观的显示出来。
本系统中采用共阴极LED数码管显示。
硬件电路共阴极数码管LED显示器是由发光二极管作为为显示字段的数码显示器件,图1为一位LED 显示器的外形和引脚图,其中七只发光二极管(a~g七段)构成字型“8”,另外还有一只发光二极管dp作为小数点。
当显示器的某一段发光二极管通电时,该段发光,例如,使b、c、f、g这4段发光二极管通电,则显示字符“4”。
数码管外形和引脚:见图共阴极结构:LED显示器有共阴极和共阳极两种结构,下面只介绍共阴极结构。
见上图,在共阴极结构中,各段发光二极管的阴极连在一起,将此公共点接地,某一段发光二极管的阴极为高电平时,该段发光。
共阴极字段码:LED显示0~9某个字符时,则要求在a~dp送固定的字段码,如要使LED 显示“0”,则要求a、b、c、d、f各引脚为高电平,g和dp为低电平,字段码为“3fh”。
dp g f e d c b a0 0 1 1 1 1 1 1 3fh共阴极字符0~9七段码如下:字符: 0 1 2 3 4 5 6 7 8 9字段码:3fh 06h 5bh 4fh 66h 6dh 7dh 07h 7fh 6fh【源程序】DISPLAY: CLR P2.6MOV A,R5MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ASETB P2.6CLR P2.6CLR P2.7MOV P0,#1FH ;00 0 11111SETB P2.7CLR P2.7LCALL DELAYCLR P2.6 ;锁存MOV A,R4MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ASETB P2.6 ;解锁,传输数据CLR P2.6CLR P2.7 ;选择哪一个数码管亮MOV P0,#2FH ;001 0 1111SETB P2.7CLR P2.7LCALL DELAYCLR P2.6MOV A,R3MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ASETB P2.6CLR P2.6CLR P2.7MOV P0,#37H ;0011 0 111SETB P2.7CLR P2.7LCALL DELAYRETDELAY: MOV R7,#100 ;延时子程序L1: MOV R6,#30L2: DJNZ R6,L2DJNZ R7,L1RETTAB: DB 3FH,06H,5BH,4FH,66H ;字段码DB 6DH,7DH,07H,7FH,6FHEND4、键盘输入计算机键盘的功能就是及时发现被按下的键,并将该按键的信息送入计算机。
键盘中有发现下按键位置的键扫描电路,产生被按下键代码的编码电路,将产生代码送入计算机的接口电路。
因此一个完善的键盘控制程序应能完成下述任务:1)检测有无键按下;2)有键按下后,在无硬件去抖动电路时,应用软件延时方法除去抖动影响;3)有可靠的逻辑处理办法,如N键锁定,即只处理一个键,其间任何按下又松开的键不产生影响,不管一次按键持续有多长时间,仅执行一次按键功能程序;4)输出确定的键号以满足散转指令要求。
硬件电路【源程序】ORG 0000HLJMP MAINORG 0100HMAIN: LCALL KEYLCALL DISPLAYSJMP MAINKEY: MOV P3,#0FFHLCALL KS ;调用KS 判断是否有键按下JNZ K1 ;有键按下转移K1LCALL DELAY ;无键按下延时子程序LJMP KEYK1: LCALL DELAY ;加长延时时间,消除键抖动LCALL DELAYLCALL KS ;调用KS再次判别有无键闭合JNZ K2 ;键按下,转移行扫描LJMP KEY ;误读键返回K2: MOV R2,#00HJNB P3.0,PP0 ;检查是否低电平,低电平转移列扫描JNB P3.1,PP1JNB P3.2,PP2JNB P3.3,PP3LJMP KEY;列扫描过程:先使输出口输出FEH,然后进入列状态,判断是否有低电平。
如果没有低电平,再使输出口输出FDH,以此类推。
当列线中有低电平时,找到闭合键。
根据此时零电平所在的行号和列号得到闭合键键码值。
闭合键键码值=行号+列号PP0: MOV R4,#00HMOV P3,#0FEHJNB P3.4,LKINC R2JNB P3.5,LKINC R2JNB P3.6,LKINC R2LJMP LKPP1: MOV R4,#04HMOV P3,#0FDHJNB P3.4,LKINC R2JNB P3.5,LKINC R2JNB P3.6,LKINC R2LJMP LKPP2: MOV R4,#08HMOV P3,#0FBHJNB P3.4,LKINC R2JNB P3.5,LKINC R2JNB P3.6,LKINC R2LJMP LKPP3: MOV R4,#0CHMOV P3,#0F7HJNB P3.4,LKINC R2JNB P3.5,LKINC R2JNB P3.6,LKINC R2LJMP LKLK: MOV A,R4 ;形成键码送入AADD A,R2PUSH ACC ;键码入栈保护K3: LCALL DELAYLCALL KS ;等待键释放JNZ K3 ;未释放,等待POP ACC ;键释放,弹栈送ACCRET ;键扫描结束,返回KS: MOV P3,#0FHMOV A,P3XRL A,#0FHRETDELAY: MOV R7,#00HMOV R6,#00HMOV R7,#50 ;5msL1: MOV R6,#50L2: DJNZ R6,L2DJNZ R7,L1RETDISPLAY: ;数码管显示子程序CLR P2.6MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ASETB P2.6CLR P2.6CLR P2.7MOV P0,#1FHSETB P2.7CLR P2.7LCALL DELAYRETTAB: DB 0x3f,0x06,0x5b,0x4f,0x66 ;0,1,2,3,4DB 0x6d,0x7d,0x07,0x7f,0x6f ;5,6,7,8,9DB 0xbf,0x86,0xdb,0xcf,0xe6 ;0.,1.,2.,3.,4.DB 0xed,0xfd,0x87,0xff,0xef ;5.,6.,7.,8.,9.END5、乘法子程序当物品的质量通过调节电位器显示出来,单价通过键盘输入显示出来以后,根据物品总价=物品质量*输入单价计算出物品总价,通过数码管显示。