为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机电子秤重量检测与显示设计

2010-11-05 37页 pdf 368KB 58阅读

用户头像

is_796476

暂无简介

举报
单片机电子秤重量检测与显示设计 1 第一章 微控制器应用系统综合设计的目的意义 1.1 设计目的 通过课程设计进一步锻炼同学们在微型计算机应用方面的实际工作能力。计 算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际: 掌握这方面的知识更要强调解决实际问题的能力。同学们要着重学会面对一个实 际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决 问题的方案并通过实践不断地去分析和解决前进道路上的一切问题,最终到达胜 利的彼岸。 本实验是设计单片机重量检测与显示电路,对 5种以上不同单价的商品进行 键盘参数...
单片机电子秤重量检测与显示设计
1 第一章 微控制器应用系统综合的目的意义 1.1 设计目的 通过课程设计进一步锻炼同学们在微型计算机应用方面的实际工作能力。计 算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际: 掌握这方面的知识更要强调解决实际问题的能力。同学们要着重学会面对一个实 际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决 问题的并通过实践不断地去分析和解决前进道路上的一切问题,最终到达胜 利的彼岸。 本实验是设计单片机重量检测与显示电路,对 5种以上不同单价的商品进行 键盘参数设置,称量,计价和显示。这个课题与我们现实生活联系密切,具有很 大的实际用途。做好本实验对我们今后学习和生活具有重要意义。 1.2 课程在教学计划中的地位和作用 《微控制器应用系统综合设计》课程是测控技术专业本科生必修的一 门技术基础课程。通过该课程的学习使学生对单片机有一个全面的了解、掌握常 规芯片的使用方法、掌握简单微型计算机应用系统软硬的设计方法。为了使我们 微机应用课程设计目标更明确,要求更具体,学生收获更大,我们特编写课程设 计任务书,学生可根据本人的爱好任选其中一个课题,要求独立完成课题,写出 课程设计,设计出电路原理图,说明工作原理,画出电路板图,编写程序 及程序流程图。希望同学认真阅读本任务书,认真查阅资料与上机调试,圆满完 成课程设计。 2 第二章 电子计价称软硬件设计任务 2.12.12.12.1 设计内容及要求 设计单片机称重测量检测,处理与显示电路,对五种不同单价的商品进行 键盘参数设置,称量,计价和显示。由 A/D0809 把输入的 0—5V的电压转换, 当电压为 5V时,对应的重量为 500 克,进行数值转换,并在 LCD 液晶显示器 上显示商品的克数,程序设置了五种不同单价的商品,由键盘输入 0—4显示不 同商品的单价,并显示总的价钱,显示三位数。 2.2 课程设计的要求 1.利用现有的硬件电路,构成单片机称重检测,处理与显示系统。 2.编写程序,实现称量和计价显示的功能。 3.设计出原理图,说明工作原理,画出程序流程图。 3 第三章 总体 3.13.13.13.1 设计思想 实验需要设计一个系统可以对 5 种以上不同的商品进行键盘参数设 置,称量,计价和显示。可以把系统分为以下几个模块,分别进行编写程 序,调试。 (1)8279可编程键盘,输入 0—4时,通过比较键值,使程序跳到不 同的子程序,在子程序中进行 A/D采样,设定单价,经过数值转换与乘法 程序,将重量和价钱转换成十进制数,调用显示程序。执行完返回判断有 无键按下。 (2)A/D采样部分,给 A/D0 通道输入一个 0---5V 的电压,将转换 成 0—FF输出,对应 0—500G,把 A/D采样值存入内部寄存器 51H中, 经过数值转换成十进制数,调用 LCD显示程序显示。当质量大于 500 克 时,转到报警程序。 (3)LCD液晶显示,分三个区分别显示单价,重量,价钱,并且都 分为三位显示。 (4)实验中还需要用到双字节与单字节乘法及十六进制转十进制报 警等子程序。 4 P0.0-p0.7 8031 /RD /WR RESET 3 7 3 1 3 8 IN0 D0—D7 ADC0809 /RD /WR CLK 0—5V T4 74LS02 D0—D7 8279 /RD SL2 /WR SL1 RESET SL0 74L S13 8 D0-D7 C/D /CE LCD /RD /WR /RESET FS 图 3.1 硬件系统结构图 5 第四章 硬件设计 4.1 硬件设计概要 本次设计主要用到的芯片有 8088、ADC0809 模数转换器 、可编程键盘显示 8279、LCD 液晶显示共同完成这个课题。A/D 实现数据的采集和转换,可编程键盘 显示 8279 实现键盘输入编号显示不同商品的单价,LCD 液晶显示器显示单价,重 量以及三位价钱。8088 实现各个芯片之间的连接。 4.2 所用到的芯片及其各自功能说明 4.2.1 芯片列表 AT89C528 位单片机 ADC0809 模数转换器 可编程键盘显示 8279 LCD 液晶器 4.2.2 AT89C528 位单片机 AT89C52 是 一个低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的 可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器 (RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容 MCS-51 指令系统,片内置通用 8位中央 处理器和 Flash 存储单元,功能强大 的 AT89C52 单片机可提供许多较复杂系统控制应用场合。 4.2.3 ADC0809 的功能简介 ADC0809 是 8 位逐次逼近式单片 A/D 转换芯片,可对 8路 0~5V 的输入模 拟电压信号分时进行转换。它内部包括 8路模拟开关,以及地址锁存译码器,有 三条地址输入线。该芯片还有便于和微机数据总线相连的三台输出锁存器。 ADC0809 的内部结构为:ADC0809 是 CMOS 单片型逐次逼近式 A/D 转换器, 它由 8路模拟开关、地址锁存译码器、比较器、8位开关树型 A/D 转换器、逐次 逼近寄存器、三态输出锁存器等其他一些电路组成。其内部原理图如下: 6 图 4.1 ADC0809 芯片管脚功能如下: IN0~IN7:8 路模拟量输入通道。 ADDA~ADDC:地址线用于选择模拟量输入通道。 ALE:地址锁存允许信号。 START:转换启动信。 D0~D7:数据输线 。 OE:输出允许信号,低电平允许转换结果输出。 EOC:A/D 转换结束信号,当转换结束时,此端口输出一个高电平。 CLOCK:时钟信号输入引脚,通常使用 500KHz。 EOC:转换结束信号,为 0代表正在转换,1代表转换结束。 REF(-)、REF(+):基准电压。 Vcc:+5V 电压。 GND:接地。 ADC0809 的管脚图如下: N 位 寄存器 N位D/A 位置控制逻辑 模拟量输入 DONE 启动 A B 7 图 4.2 4.2.4 可编程键盘显示 8279 8279 是可编程的键盘,显示接口芯片.它既具有按键处理功能,又具有 自动显示功能,在单片机系统中应用很广泛.8279 内部有键盘 FIFO(先进先 出堆栈)/传感器,双重功能的 8*8=64B RAM,键盘控制部分可控制 8*8=64 个 按键或 8*8 阵列方式的传感器.该芯片能自动消抖并具有双键锁定保护功 能. (1)数据线 DB0→DB7 是双向三态数据总线,在接口电路中与系统数据总线相连,用以传 送 CPU 和 8279 之间的数据和命令. (2)地址线 /CS=0选中8279,当A0=1时,为命令字及状态字地址;当A0=0时,为片内数据 地址,故 8279 芯片占用 2个端口地址. (3)控制线 CLK:8279 的时钟输入线. IRQ:中断请求输出线,高电平有效. /RD,/WR:读,写输入控制线. SL0---SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线. 8 RL0---RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线. SHIFT:来自外部键盘或传感器矩阵的输入信号,它是 8279 键盘数据的次高 位即 D6 位的 状态,该位状态控制键盘上/下档功能.在传感器方式和选通方式中,该引脚 无用. CNTL/S:控制/选通输入线,高电平有效.键盘方式时,键盘数据最高位(D7)的 信号输 入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把 RL0---RL7 的数 据存入 FIFO RAM 中. OUTA0---OUTA3:通常作为显示信号的高 4位输出线. OUTB0---OUTB3:通常作为显示信号的低 4位输出线. /BD:显示熄灭输出线,低电平有效.当/BD=0 时将显示全熄灭. 图 4.3 8279引脚及引线功能 4.2.5 LCD 液晶器 T6963C液晶显示控制器多用于中小规模的液晶显示器件,常被装配 在图形液晶显示模块上,以内藏控制器型图形液晶显示模块的形式出 现。 一、T6963C的特点 9 (1) T6963C是点阵式液晶图形显示控制器,它能直接与 80系列的 8位微处 理器接口; (2) T6963C的字符字体可由硬件或软件设置,其字体有 4种:5×8、6×8、 7×8、8×8; (3) T6963C的占空比可从 1/16到 1/128; (4) T6963C可以图形方式、文本方式及图形和文本合成方式进行显示, 以及文本方式下的特征显示,还可以实现图形拷贝操作等等; (5) T6963C 具有内部字符发生器 CGROM,共有 128 个字符,T6963C 可管理 64K显示缓冲区及字符发生器 CGRAM。并允许MPU随时访 问显示缓冲区,甚至可以进行位操作。 二、T6963C的引脚说明及其功能 T6963C的 QFP封装共有 67个引脚(见图三),各引脚说明如下: (1) D0--D7:T6963C与MPU接口的数据总线,三态; (2) /RD, /WR:读、写选通信号,低电平有效,输入信号; (3) /CE:T6963C的片选信号,低电平有效; (4) C/D:通道选择信号,1为指令通道,0为数据通道; (5)/RESET, /HALT:/RESET为低电平有效的复位信号,它将行、列计 数器和显示寄存器清零,关显示;/HALT具有/RESET的基本功能,还将 中止内部时钟振荡器的工作; 以上引脚为 T6963C与MPU接口的引脚。 10 图 4.4 T6963C管脚外形图 (6) DUAL, SDSEL: DUAL = 1为单屏结构,DUAL = 0为双屏结构; SDSEL = 0 为一位串行数据传输方式,SDSEL = 1 为二位并行数据传输 方式; (7) MD2, MD3:设置显示窗口长度,从而确定了列数据传输个数的最 大值,其组合逻辑关系如下: 表 4.1 MD3 1 1 0 0 MD2 1 0 1 0 每行字符 数 32 40 64 80 当 DUAL = 0时,以上设置中的字符行和总行数增至原来的 2倍,其 它都不变,这种情况下的液晶屏结构为双屏结构; (9) FS1,FS0:显示字符的字体选择 表 4.2 FS1 1 1 0 0 FS0 1 0 1 0 字体 5×8 6×8 7×8 8×8 (10) XI,XO:振荡时钟引脚; (11) ad0-ad15:输出信号,显示缓冲区 16位地址总线; (12) d0-d7:三态,显示缓冲区 8位数据总线; (13) r/w:输出,显示缓冲区读、写控制信号; (14) /ce:输出,显示缓冲区片选信号,低电平有效; (15) /ce0,/ce1:输出,DUAL = 1时的存储器片选信号; (16) T1,T2,CH,CH2:用来检测 T6963C 工作使用情况,T1,T2 作为 测试信号输入端,CH,CH2作为输出端; (17) HOD,HSCP,ED,LP,CDATA,FR为 T6963C驱动部信号 11 连线 AD0809接线: 1.把 A/D区 0809的 0通道 IN0用插针接至W1的中心抽头 V01插孔(0-5V)。   2.0809的 CLK插孔与分频输出端 T4相连。  3.把 VREF  端接到为+5V。  4.连好 74LS02 5.将 A/D区 D0-D7 用排线与 BUS1区 XD0-XD7相连。 扩展键盘接线: 1.将 DVCC实验系统上 J8 插座与键盘显示板用扁平电缆相连。  2.将 KEY区 D0—D7 用 8芯排线连到 BUS2区 XD0—XD7上。  3.将 KEY区WR、RD、ALE 分别连到 BUS3区 XWR、XRD、ALE 上。  4.KEY区 A0 连到 BUS1 区 XA0 上。  5.KEY区 RST连到MP区 SP上。  6.KEY区 KCS连到 SELET 区的 Y3上。 LCD液晶显示器连线: 1.液晶板 C/D 连主机 XA0,液晶板/CS连主机 Y0 2.液晶板 D0---D7 连主机 XD0---XD7 3.液晶板 / RESET 连主机 /RST,液晶板/WR 连主机 XWR,液晶板/RD 连主机 XRD 4.液晶板 FS 接地。 12 13 第五章 软件设计 5.15.15.15.1 流程图及其说明 开始 8279初始化 显示器显示 P 有键按下吗? 计算键值散转 商品 2 商品 3 商品 4 商品 5商品 1 A/D采样 A/D采样 A/D采样 A/D采样 A/D采样 调 乘 法 及 转 换 子程序 调 显 示 子程序 调 乘 法 及 转 换 子程序 调 乘 法 及 转 换 子程序 调 乘 法 及 转 换 子程序 调 乘 法 及 转 换 子程序 调 显 示 子程序 调 显 示 子程序 调 显 示 子程序 调 显 示 子程序 ,Y N 图 5.1 主程序流程图 14 开始 A/D 采样值转化为相应的十六进制数 转化为十进制数 转化为十进制数 调 LCD 显示子程序 乘单价,调乘法子程序 调 LCD 显示子程序 返回 图 5.2 乘法及数值转换子程序 15 设置显示指针地址,写控制字 设置自动写方式,分区,字体,字数 一行显示完,改变指针地址指向下一行 全部显示完,等待下一次设置 调清屏子程序 开 始 图 5.3 LCD液晶显示子程序 5.2源程序及其说明 ORG 0000H DAT1 EQU 30H ;第一参数存放地址 DAT2 EQU 31H ;第二参数存放地址/数据存放地址 COM EQU 32H ;指令代码存放地址 C_ADD EQU 8001H ;指令通道地址(片选 Y1端口地址 8000H开始) D_ADD EQU 8000H ;数据通道地址 S_ADD_H EQU 33H ;LCD显示指针地址高位 S_ADD_L EQU 34H ;LCD显示指针地址低位 S_ADD_HF EQU 35H ;LCD显示指针地址高位备份 S_ADD_LF EQU 36H ;LCD显示指针地址低位备份 SEL_FONT EQU 37H ;LCD字体选者,16X16则为#16H,8X16则为#8H WORD_NUM EQU 38H ;已经显示的字数 ATTR EQU 39H ;字符属性码(低四位有效) CODED EQU 40H ;字符代码 CGR_NUM EQU 41H ;CGRAM显示程序显示的字数 HA7S: MOV SP,#60H MOV DPTR,#0B001H 16 MOVA,#00H MOVX @DPTR,A MOVA,#32H MOVX @DPTR,A MOVA,#0DFH MOVX @DPTR,A HA7S1 MOVXA,@DPTR JBACC.7,HA7S1 MOV DPTR,#0B000H MOVA,#0C8H MOVX @DPTR,A INC DPTR MOVA,#80H MOVX @DPTR,A HA7S2: MOV 42H,#80H MOV 43H,#40H HA7S3: MOV DPTR,#0B001H MOVXA,@DPTR ANLA,#07H CJNEA,#00H,HA7S4 AJMP HA7S3 HA7S4: MOV DPTR,#0B000H MOVXA,@DPTR MOV B,A MOV R1,#00H MOV DPTR,#KEYTAB HA7S5:MOVA,#00H MOVCA,@A+DPTR CJNEA,B,HA7S6 AJMP HA7SA HA7S6:INC DPTR INC R1 MOVA,R1 JNBACC.2,HA7S5 AJMP HA7S2 HA7SA: CJNEA,#0C1H,L1 MOVA,42H MOV DPTR,#0B001H MOVX @DPTR,A MOVA,R1 MOV R0,43H MOV@R0,A INC 43H MOV DPTR,#CDATA 17 MOVCA,@A+DPTR MOV DPTR,#0B000H MOVX @DPTR,A LJMP LOOP0 L1: CJNEA,#0C8H,L2 MOVA,42H MOV DPTR,#0B001H MOVX @DPTR,A MOVA,R1 MOV R0,43H MOV@R0,A INC 43H MOV DPTR,#CDATA MOVCA,@A+DPTR MOV DPTR,#0B000H MOVX @DPTR,A LJMP LOOP1 L2: CJNEA,#0C9H,L3 MOVA,42H MOV DPTR,#0B001H MOVX @DPTR,A MOVA,R1 MOV R0,43H MOV@R0,A INC 43H MOV DPTR,#CDATA MOVCA,@A+DPTR MOV DPTR,#0B000H MOVX @DPTR,A LJMP LOOP2 L3: CJNEA,#0D0H,L4 MOVA,42H MOV DPTR,#0B001H MOVX @DPTR,A MOVA,R1 MOV R0,43H MOV@R0,A INC 43H MOV DPTR,#CDATA MOVCA,@A+DPTR MOV DPTR,#0B000H MOVX @DPTR,A LJMP LOOP3 L4: CJNEA,#0D8H,L5 18 MOVA,42H MOV DPTR,#0B001H MOVX @DPTR,A MOVA,R1 MOV R0,43H MOV@R0,A INC 43H MOV DPTR,#CDATA MOVCA,@A+DPTR MOV DPTR,#0B000H MOVX @DPTR,A LJMP LOOP4 L5: LJMP HA7S KEYTAB: DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH,0D1H,0D9H DB 0DAH,0C3H,0CBH,0D2H,0D3H,0DBH CDATA: DB 0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H,38H DB 6CH,1AH,68H,0E8H LOOP0: MOVA,#00H MOV DPTR,#9000H ;A/D通道 Y1 MOVX @DPTR,A MOV R7,#0FFH H55S: DJNZ R7,H55S MOVXA,@DPTR MOV 51H,A LCALL COMP LCALL DMUL LCALL CONT2 LCALLMAIN MOV R5,#0CH PP0: MOV R4,#12H LCALL DDMUL LCALL CONT0 LJMPMAIN ;显示 LJMP XIAN1 LOOP1: MOVA,#00H MOV DPTR,#9000H ;A/D通道 Y1 MOVX @DPTR,A MOV R7,#0FFH H55S1: DJNZ R7,H55S1 MOVXA,@DPTR MOV 51H,A LCALL COMP 19 LCALL DMUL LCALL CONT2 LCALLMAIN MOV R5,#9FH PP1: MOV R4,#0FH LCALL DDMUL LCALL CONT0 LJMPMAIN LJMP XIAN1 LOOP2: MOVA,#00H MOV DPTR,#9000H ;A/D通道 Y1 MOVX @DPTR,A MOV R7,#0FFH H55S2: DJNZ R7,H55S2 MOVXA,@DPTR MOV 51H,A LCALL COMP LCALL DMUL LCALL CONT2 LCALLMAIN MOV R5,#4AH PP2: MOV R4,#0CH LCALL DDMUL LCALL CONT0 LJMPMAIN LJMP XIAN1 LOOP3: MOVA,#00H MOV DPTR,#9000H ;A/D通道 Y1 MOVX @DPTR,A MOV R7,#0FFH H55S3: DJNZ R7,H55S3 MOVXA,@DPTR MOV 51H,A LCALL COMP LCALL DMUL LCALL CONT2 LCALLMAIN MOV R5,#0BH PP3: MOV R4,#08H LCALL DDMUL LCALL CONT0 LJMPMAIN 20 LJMP XIAN1 LOOP4: MOVA,#00H MOV DPTR,#9000H ;A/D通道 Y1 MOVX @DPTR,A MOV R7,#0FFH H55S4: DJNZ R7,H55S4 MOVXA,@DPTR MOV 51H,A LCALL COMP LCALL DMUL LCALL CONT2 LCALLMAIN MOV R5,#99H PP4: MOV R4,#05H LCALL DDMUL LCALL CONT0 LJMPMAIN LJMP XIAN1 XIAN1: MOV R6,#80H DISPC1: MOVA,r6 MOV DPTR,#0B001H MOVX @DPTR,A MOVA,R5 MOV DPTR,#0B000H MOVX @DPTR,A MOV R2,#20H LCALL DELAY4 MOVA,#0FFH MOVX @DPTR,A ;关显示 INC R6 LJMP ha7s2 dELAY4: PUSH 02H DELAY5: PUSH 02H DELAY6: PUSH 02H DELAY7: DJNZ R2,DELAY7 POP 02H DJNZ R2,DELAY6 POP 02H DJNZ R2,DELAY5 POP 02H DJNZ R2,DELAY4 21 RET ;/////////////128X64液晶显示程序////////////////// MAIN: MOV SP,#60H LCALL INT_LCD ;液晶初始化 MOVWORD_NUM,#00H ;实现字数清零 LCALL CLEAR ;清屏 ;-----------------------------显示方式一 ;在第一区显示,128X64液晶显示模块可人为分为四个区,每个区大小为 128X16 ;区一显示完毕 ;----------------------------显示方式二 ;在区二显示,以单个字循环方式显示“测控技术实验室”,16X16 字体,一般用 于汉字显示 MOV S_ADD_H,#01H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#01H ;低位 MOV SEL_FONT,#16H ;采用 16X16字体 MOV DPTR,#TAB0 ;danjia MOV R7,#02H ;显示字的个数 ER: LCALL SHOW_A_WORD DJNZ R7,ER MOV S_ADD_H,#01H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#06H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOV DPTR,#TAB03 ;显示 0 SSS2: LCALL SHOW_A_WORD MOV S_ADD_H,#01H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#07H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOV DPTR,#TAB3 SSS1: LCALL SHOW_A_WORD ;显示小数点 MOV S_ADD_H,#01H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#08H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOVA,4FH ;显示的字从 4F中读取 ANLA,#0F0H ;取 4F高位 22 SWAPA ACALL BIAO ER2: LCALL SHOW_A_WORD ;显示千位 MOV S_ADD_H,#01H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#09H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOVA,4FH ;显示的字从 4F中读取 ANLA,#0FH ;取 4F低位 ACALL BIAO ER1: LCALL SHOW_A_WORD MOV S_ADD_H,#01H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#0AH ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOV DPTR,#TAB05 ;Y/G MOV R7,#03H ;显示字的个数 ER3: LCALL SHOW_A_WORD DJNZ R7,ER3 ;----------------------------显示方式三 ;在区三显示,以单个字循环方式显示“GOOD”,8X16字体,一般用于数字和字母 的显示 MOV S_ADD_H,#02H ;设置一个字的显示起始地址高位 MOV S_ADD_L,#01H ;低位 MOV SEL_FONT,#16H ;采用 8X16字体 MOV DPTR,#TAB01 ;zhongliang MOV R7,#02H ;显示字的个数 SAN: LCALL SHOW_A_WORD DJNZ R7,SAN MOV S_ADD_H,#02H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#0BH ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOV DPTR,#TAB ;显示字的个数 : g SAN1: LCALL SHOW_A_WORD MOV S_ADD_H,#02H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#06H ;低位 MOV SEL_FONT,#08H MOVA,46H ;显示的字从 46中读取 ANLA,#0FH ;取 46低位 ;SWAPA 23 ACALL BIAO SAN2: LCALL SHOW_A_WORD ;显示 MOV S_ADD_H,#02H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#07H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOVA,47 ;显示的字从 47中读取 ANLA,#0F0H ;取 47低位 SWAPA ACALL BIAO SAN3: LCALL SHOW_A_WORD ;显示 MOV S_ADD_H,#02H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#08H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOVA,47H ;显示的字从 47中读取 ANLA,#0FH ;取 47高位 ACALL BIAO SAN5: LCALL SHOW_A_WORD ;显示 ;----------------------------显示方式四 MOV S_ADD_H,#03H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#01H ;低位 MOV SEL_FONT,#16H ;采用 16X16字体 MOV DPTR,#TAB02 ;jiaqian MOV R7,#02H ;显示字的个数 ER4: LCALL SHOW_A_WORD DJNZ R7,ER4 MOV S_ADD_H,#03H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#06H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOVA,4CH ;显示的字从 4C中读取 ANLA,#0F0H ;取 4C高位 SWAPA ACALL BIAO SAN7: LCALL SHOW_A_WORD ;显示千位 MOV S_ADD_H,#03H MOV S_ADD_L,#07H MOV SEL_FONT,#08H MOVA,4CH ;显示的字从 4C中读取 ANLA,#0FH ;取 4C低位 ACALL BIAO 24 SAN8: LCALL SHOW_A_WORD MOV S_ADD_H,#03H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#08H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOV DPTR,#TAB3 SSS: LCALL SHOW_A_WORD 显示小数点 MOV S_ADD_H,#03H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#09H ;低位 MOV SEL_FONT,#08H ;采用 8X16字体 MOVA,4DH ;显示的字从 4D中读取 ANLA,#0F0H ;取 4D高位 SWAPA ACALL BIAO SAN6: LCALL SHOW_A_WORD MOV S_ADD_H,#03H ;设置第一个字的显示起始地址高位 MOV S_ADD_L,#0AH ;低位 MOV SEL_FONT,#16H ;采用 16X16字体 MOV DPTR,#TAB04 ;元 MOV R7,#01H ;显示字的个数 ER9: LCALL SHOW_A_WORD DJNZ R7,ER9 LJMP HA7S ;----------------------------延时子程序 DELAY: MOV R7,#01H DY1:MOV R2,#0FH DY11:DJNZ R2,DY11 DJNZ R7,DY1 RET ;----------------------------清屏子程序 CLEAR: MOV DAT1,#00H ;GRAPHIC HOMEADDRESS MOV DAT2,#00H MOV COM,#24H LCALL PR1 ;设置起始地址指针 MOV COM,#0B0H ;设置自动写方式 LCALL PR12 MOV R0,#00H ;分四个区清屏,每个区 256个字节 MOV R1,#04H ;有四个区 CLEARG: 25 CLRA MOV DPTR,#8000H MOVX @DPTR,A DJNZ R0,CLEARG ;清 256个字节 DJNZ R1,CLEARG MOV COM,#0B2H ;设置自动写结束指令 LCALL PR12 MOV DAT1,#00H ;TEXT HOMEADDRESS MOV DAT2,#10H MOV COM,#24H LCALL PR1 MOV COM,#0B0H ;设置自动写方式 LCALL PR12 MOV R0,#80H ;16COLUMNS*8LINES=128=80H CLEART: MOVA,#00H MOV DPTR,#8000H MOVX @DPTR,A DJNZ R0,CLEART ; MOV COM,#0B2H ;设置自动写结束指令 LCALL PR12 RET ;--------------------------显示一个 16X16或 8X16 的字体子程序 ;要求-调用该程序前要将被显示的字的字码表地址送 DPTR,显示指针 ;地址送 S_ADD_H显示地址高位,S_ADD_L显示地址低位 ;SEL_FONT 显示字体控制,#16H为 16X16,#8H为 8X16 ;[S_ADD_HF显示地址高位备份,S_ADD_LF 显示地址低位备份] ;[WORD_NUM已经显示的字数] SHOW_A_WORD: ;16x16或 8x16显示程序 SETB 0D4H PUSH DPH ;;开始循环的第一个字符的地址设置 PUSH DPL MOV DAT1,S_ADD_L ;重新设置显示地址指针 MOV DAT2,S_ADD_H MOV COM,#24H LCALL PR1 ;-------------------- POP DPL POP DPH ;开始循环的第一个字符的地址设置结束 MOV R0,#10H ;行控制 MOV S_ADD_HF,S_ADD_H ;高位备份 MOV S_ADD_LF,S_ADD_L ;低位备份 26 PUSH DPH ;存字库指针 PUSH DPL MOV COM,#0B0H ;设置自动写方式 LCALL PR12 ;------------------- POP DPL ;取出字库指针 POP DPH LINE_STA: CLR A MOVCA,@A+DPTR ;A暂存左半行字码 INC DPTR ;字码表指针加 1,指向下一个字节 PUSH DPH ;保存字库指针 PUSH DPL MOV DPTR,#8000H MOVX @DPTR,A ;写入左半行字码 MOVA,SEL_FONT CJNEA,#16H,FONT_8 POP DPL ;取出字库指针 POP DPH CLRA MOVCA,@A+DPTR ;A暂存右半行字码 INC DPTR ;字码表指针加 1,指向下一个字节 PUSH DPH ;保存字码表指针 PUSH DPL MOV DPTR ,#8000H MOVX @DPTR,A ;写入右半行字码,写完一个字的一行(1/16) FONT_8: MOVA,S_ADD_L ;改变显示 RAM低位地址到下一行 ADDA,#10H MOV S_ADD_L,A MOVA,S_ADD_H ;低位满 FFH,则显示 RAM高位地址加 1 ADDCA,#0H MOV S_ADD_H,A MOV COM,#0B2H ;设置自动写结束指令 LCALL PR12 ;----------------- MOV DAT1,S_ADD_L ;重新设置显示地址指针 MOV DAT2,S_ADD_H MOV COM,#24H LCALL PR1 ;-------------------- MOV COM,#0B0H ;设置自动写方式 LCALL PR12 ;------------------- POP DPL ;取出字库指针 POP DPH DJNZ R0,LINE_STA ;没有完成一个字(16行),则继续 INC WORD_NUM ;已经显示的字数加一 27 EE: MOVA,S_ADD_LF ;调整显示 RAM区下一个字的起始地址 MOV R0,SEL_FONT CJNE R0,#16H,DD ADDA,#2H ;一个字为两个字节宽(16x16) SJMPASDF DD: ADDA,#1H ;一个字为一个字节宽(8x16) ASDF: MOV S_ADD_LF,A MOVA,S_ADD_HF ADDCA,#0H MOV S_ADD_HF,A N_ENTER: MOV S_ADD_L,S_ADD_LF MOV S_ADD_H,S_ADD_HF PUSH DPH PUSH DPL MOV COM,#0B2H ;设置自动写结束指令 LCALL PR12 ;----------------- MOV DAT1,S_ADD_L ;重新设置显示地址指针 MOV DAT2,S_ADD_H MOV COM,#24H LCALL PR1 ;-------------------- POP DPL POP DPH CLR 0D4H RET ;--------------------------液晶模块初始化子程序 INT_LCD: MOV DAT1,#00H ;设置图形显示区域首地址 MOV DAT2,#00H ;或为文本属性区域首地址 MOV COM,#42H ;[0000H] LCALL PR1 MOV DAT1,#00H ;设置文本显示区域首地址 MOV DAT2,#10H ;[1000H] MOV COM,#40H LCALL PR1 MOV DAT1,#10H ;设置图形显示区域宽度 MOV DAT2,#00H ;或为文本属性区域宽度 MOV COM,#43H ;即一行显示所占字节数 LCALL PR1 MOV DAT1,#10H ;设置文本显示区域宽度 MOV DAT2,#00H ;即一行显示所占字节数 MOV COM,#41H LCALL PR1 MOV COM,#0A7H ;光标形状设置 28 LCALL PR12 MOV COM,#80H ;显示方式设置,逻辑“或”合成,使用内部字符 LCALL PR12 MOV COM,#9CH ;显示开关设置,文本开,图形开,光标闪烁及 显示均打开 LCALL PR12 RET ;------------------------读状态字子程序 R_ST: MOV DPTR,#C_ADD ;设置指令通道地址 MOVXA,@DPTR RET ;-----------------------判断 STA1,STA0子程序,在指令和数据的读写之前这两个标 志位必须同时为 1 ST01: LCALL R_ST JNBACC.0,ST01 JNBACC.1,ST01 RET ;-----------------------判断 STA2(数据自动读状态)子程序,在连续读过程中每读 一次之前都要确认 STA2=1 ST2: LCALL R_ST JNBACC.2,ST2 RET ;-----------------------判断 STA3(数据自动写状态)子程序 ST3: LCALL R_ST JNBACC.3,ST3 RET ;-----------------------写指令和写数据子程序 PR1: LCALL ST01 ;双字节参数指令写入入口 MOVA,DAT1 ;取第一参数 LCALL PR13 ;写入参数 PR11: LCALL ST01 ;1字节参数指令写入入口 MOVA,DAT2 ;取第二参数 LCALL PR13 ;写入参数 PR12: LCALL ST01 ;无参数指令写入入口 MOVA,COM ;取指令代码 LJMP PR14 ;写入指令代码 PR13: MOV DPTR,#D_ADD ;设置数据通道地址/数据写入入口 PR14: MOVX @DPTR,A ;写入操作 RET ;------------------------读数据子程序 PR2: PUSHACC PUSH DPH PUSH DPL LCALL ST01 ;判断状态位 29 MOV DPTR,#D_ADD ;设置数据通道地址 MOVXA,@DPTR ;读数据操作 MOV DAT2,A ;数据存入第二参数/数据的存放地址 POP DPL POP DPH POPACC RET BIAO: MOV DPTR,#TABDDR MOV R2,A RLA RLA ADDA,R2 JMP@A+DPTR TABDDR:MOV DPTR,#DTAB0 SJMP FANHUI MOV DPTR,#DTAB1 SJMP FANHUI MOV DPTR,#DTAB2 SJMP FANHUI MOV DPTR,#DTAB3 SJMP FANHUI MOV DPTR,#DTAB4 SJMP FANHUI MOV DPTR,#DTAB5 SJMP FANHUI MOV DPTR,#DTAB6 SJMP FANHUI MOV DPTR,#DTAB7 SJMP FANHUI MOV DPTR,#DTAB8 SJMP FANHUI MOV DPTR,#DTAB9 SJMP FANHUI FANHUI:RET TAB0: DB 008H,020H,006H,030H,004H,040H,03FH,0F8H,021H,008H,03FH,0F8H,021H,008 H,021H,008H DB 03FH,0F8H,021H,008H,001H,000H,0FFH,0FEH,001H,000H,001H,000H,001H,000 H,001H,000H;dan 30 DB 008H,040H,00CH,040H,018H,0A0H,011H,010H,032H,018H,064H,00EH,0A9H,01 4H,021H,010H DB 021H,010H,021H,010H,021H,010H,022H,010H,022H,010H,024H,010H,024H,010 H,028H,010H;jia TAB01: DB 001H,0F0H,03FH,000H,001H,000H,0FFH,0FEH,001H,000H,01FH,0F0H,011H,010 H,01FH,0F0H DB 011H,010H,01FH,0F0H,001H,000H,03FH,0F8H,001H,000H,001H,000H,0FFH,0FE H,000H,000H;zhong DB 01FH,0F0H,010H,010H,01FH,0F0H,010H,010H,01FH,0F0H,000H,000H,0FFH,0F EH,011H,010H DB 01FH,0F0H,011H,010H,01FH,0F0H,001H,000H,01FH,0F8H,001H,000H,0FFH,0F EH,000H,000H;liang TAB02: DB 008H,040H,00CH,040H,018H,0A0H,011H,010H,032H,018H,064H,00EH,0A9H,01 4H,021H,010H ;价 DB 021H,010H,021H,010H,021H,010H,022H,010H,022H,010H,024H,010H,024H,010 H,028H,010H DB 020H,0A0H,020H,090H,03CH,090H,020H,0FCH,043H,080H,078H,080H,0A0H,0 BCH,023H,0C0H DB 0FCH,044H,020H,048H,020H,030H,020H,060H,028H,092H,033H,00AH,020H,006 H,000H,002H;钱 tab: DB 000H,000H,000H,000H,000H,000H,000H,03EH,044H,044H,038H,040H,03CH,042 H,042H,03CH;g TAB3: DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,060H,060 H,000H,000H;小数点 31 TAB03: DB 000H,000H,000H,018H,024H,042H,042H,042H,042H,042H,042H,042H,024H,018 H,000H,000H;0 TAB04: DB 000H,000H,01FH,0F8H,000H,000H,000H,000H,000H,000H,07FH,0FEH,004H,040 H,004H,040H DB 004H,040H,004H,040H,008H,040H,008H,040H,010H,042H,020H,042H,040H,03E H,000H,000H;元 TAB05: DB 000H,000H,000H,000H,000H,000H,000H,0E7H,042H,024H,024H,028H,018H,010 H,010H,0E0H;y DB 000H,000H,001H,002H,002H,004H,004H,008H,008H,010H,010H,020H,020H,040 H,040H,000H;/ DB 000H,000H,000H,000H,000H,000H,000H,03EH,044H,044H,038H,040H,03CH,042 H,042H,03CH;g DTAB0: DB 000H,000H,000H,018H,024H,042H,042H,042H,042H,042H,042H,042H,024H,018 H,000H,000H;0 DTAB1: DB 000H,000H,000H,010H,070H,010H,010H,010H,010H,010H,010H,010H,010H,07C H,000H,000H;1 DTAB2: DB 000H,000H,000H,03CH,042H,042H,042H,004H,004H,008H,010H,020H,042H,07E H,000H,000H;2 DTAB3: DB 000H,000H,000H,03CH,042H,042H,004H,018H,004H,002H,002H,042H,044H,038 H,000H,000H;3 DTAB4: DB 000H,000H,000H,004H,00CH,014H,024H,024H,044H,044H,07EH,004H,004H,01E H,000H,000H;4 32 DTAB5: DB 000H,000H,000H,07EH,040H,040H,040H,058H,064H,002H,002H,042H,044H,038 H,000H,000H;5 DTAB6: DB 000H,000H,000H,01CH,024H,040H,040H,058H,064H,042H,042H,042H,024H,018 H,000H,000H;6; DTAB7: DB 000H,000H,000H,07EH,044H,044H,008H,008H,010H,010H,010H,010H,010H,010 H,000H,000H;7 DTAB8: DB 000H,000H,000H,03CH,042H,042H,042H,024H,018H,024H,042H,042H,042H,03C H,000H,000H;8 DTAB9: DB 000H,000H,000H,018H,024H,042H,042H,042H,026H,01AH,002H,002H,024H,038 H,000H,000H;9 RET ;///////////////////双字节十六进制转十进制子程序////////////// CONT2: CLR A MOV 45H,A ;入口 R1R2 MOV 46H,A ;出口 45H46H47H MOV 47H,A MOV R6,#10H CONT3: CLR C MOVA,R2 RLCA MOV R2,A MOVA,R1 RLCA MOV R1,A MOVA,47H ADDCA,47H DAA MOV 47H,A MOVA,46H ADDCA,46H DAA MOV 46H,A MOVA,45H ADDCA,45H 33 DAA MOV 45H,A DJNZ R6,CONT3 RET ;////////////////单字节十六进制转化十进制程序/////////// CONT0: CLR A ;入口 R4,出口 4E4FH MOV 4EH,A MOV 4FH,A MOV R7,#10H CONT1: CLR C MOVA,R4 RLCA MOV R4,A MOVA,4FH ADDCA,4FH DAA MOV 4FH,A MOVA,4EH ADDCA,4EH DAA MOV 4EH,A DJNZ R7,CONT1 RE
/
本文档为【单片机电子秤重量检测与显示设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索