版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机电子秤设计软件程序清单
程序清单
;定义中文LCD液晶128X64的地址
W_C_GLCDXDATA0E000H
W_D_GLCDXDATA0E001H
R_B_GLCDXDATA0E002H
R_D_GLCDXDATA0E003H
;-------------------------------------------------------
TIMER0DATA30H;延时时间的初值
TIMER1DATA31H;调用延时子程序的次数
DATA1DATA32H;点阵显示的变量1
DATA2DATA33H;点阵显示的变量2
XDATA34H;X方向的位置
YDATA35H;Y方向的位置
COUNTERDATA36H;计数器
NDATA37H;行数变量
D1DATA38H;点变量1
D2DATA39H;点变量1
ADDRDATA3AH;起始的显示位置
ADDR1DATA3BH;起始的显示位置临时变量
N1DATA3CH;行数的临时变量
;*******************************************************
;*主程序开头
;*******************************************************
ORG0000H
AJMPSTART
ORG0030H
START:CLRP1.0
SETBP1.1
MOVSP,#60H
LCALLINITIAL_GLCD;调用LCD初始化
LCALLKAIJI;显示开机画面
LCALLDELAY500
LCALLDELAY500
LCALLDELAY500
LCALLTISHI;显示主界面
LCALLINI_8279
;------------------------------------------
;推断是否连续
;------------------------------------------
KEY_A:MOVDPTR,#8101H;8101H为8279命令
MOA,@DPTR;读状态字
ANLA,#07H;推断低三位是否为0
CJNEA,#00H,LP1;不为0(有键按下)则跳转
SJMPKEY_A;为0(没键按下)则连续查询
LP1:MOVDPTR,#8100H;8100H为8279数据口
MOA,@DPTR;读键值
CJNEA,#0DBH,KEY_A;推断是否按D键
AJMPK1
K1:LCALLYUZHI;阈值设定
LCALLcelianjieguo;结果显示界面
LCALLCELIANGJIEGUO;结果显示
AJMP$
;*******************************************************
;*主程序开头
;*******************************************************
;=======================================================
;各界面显示内容
;=======================================================
DHbr1:DB“欢送使用“
DHbr2:DB“半桥电子秤“
DHbr3:DB“设计人:xxx“
DHbr4:DB“时间:xxxx“
DHbr5:DB“****************“
DHbr6:DB“设置报警上限“
DHbr7:DB“确定“
DHbr8:DB“请按D键“
DHbr9:DB““
DHbr10:DB“报警上限重量:“
DHbr11:DB“.g“
DHbr12:DB“确定(E)“
CELIANG1:DB“电子秤“
CELIANG2:DB“重量是:“
CELIANG3:DB“.g“
CELIANG4:DB“返回(F)“
;=======================================================
;开机界面子程序
;=======================================================
KAIJI:MOVADDR1,#00H;第一行显示
MOVN1,#08H;数量8个
MOVDPTR,#DHbr1;需要显示的汉字位置
CALLDHZ;调用汉字子序
MOVADDR1,#10H;其次行显示
MOVN1,#08H
MOVDPTR,#DHbr2
CALLDHZ
MOVADDR1,#08H;第三行显示
MOVN1,#08H
MOVDPTR,#DHbr3
CALLDHZ
MOVADDR1,#18H;第四行显示
MOVN1,#08H
MOVDPTR,#DHbr4
CALLDHZ
RET
;=======================================================
;提示界面子程序
;=======================================================
TISHI:LCALLCLEAR_GLCD;去除LCD显示屏幕
MOVADDR1,#00H
MOVN1,#08H
MOVDPTR,#DHbr5
CALLDHZ
MOVADDR1,#10H
MOVN1,#08H
MOVDPTR,#DHbr6
CALLDHZ
MOVADDR1,#08H
MOVN1,#08H
MOVDPTR,#DHbr7
CALLDHZ
MOVADDR1,#18H
MOVN1,#08H
MOVDPTR,#DHbr8
CALLDHZ
RET
;=======================================================
;阈值设定界面子程序
;=======================================================
SHEDING:LCALLCLEAR_GLCD
MOVADDR1,#00H
MOVN1,#08H
MOVDPTR,#DHbr9
CALLDHZ
MOVADDR1,#10H
MOVN1,#08H
MOVDPTR,#DHbr10
CALLDHZ
MOVADDR1,#08H
MOVN1,#08H
MOVDPTR,#DHbr11
CALLDHZ
MOVADDR1,#18H
MOVN1,#08H
MOVDPTR,#DHbr12
CALLDHZ
RET
;=======================================================
;测量界面子程序
;=======================================================
celianjieguo:LCALLCLEAR_GLCD
MOVADDR1,#00H
MOVN1,#08H
MOVDPTR,#CELIANG1
CALLDHZ
MOVADDR1,#10H
MOVN1,#08H
MOVDPTR,#CELIANG2
CALLDHZ
MOVADDR1,#08H
MOVN1,#08
MOVDPTR,#CELIANG3
CALLDHZ
MOVADDR1,#18H
MOVN1,#08
MOVDPTR,#CELIANG4
CALLDHZ
RET
;=======================================================
;8279初始化子程序
;=======================================================
INI_8279:MOVDPTR,#8101H
MOVA,#00H
MO@DPTR,A
MOVA,#32H
MO@DPTR,A
MOVA,#0DFH
MO@DPTR,A
RET
;=======================================================
;键盘设定阈值子程序
;=======================================================
YUZHI:LCALLSHEDING
MOV44H,#00H;44H单元存按键次数,先清0
;******************键盘按键存储空间*******
MOV55H,#00H;存入四次按键值
MOV56H,#00H
MOV57H,#00H
MOV58H,#00H
MOV50H,#00H;存阈值百位
MOV51H,#00H;存阈值十位和个位
MOV52H,#00H;存阈值小数位
;*************************************************************
KEY_09:MOVDPTR,#8101H;推断是否有键按下
MOA,@DPTR
ANLA,#07H
CJNEA,#00H,LPP1
AJMPKEY_09
;-------------------------------------------
;各个键的处理
;------------------------------------------
LPP1:MOVDPTR,#8100H
MOA,@DPTR
B0:CJNEA,#0D8H,B1
AJMPKK0
B1:CJNEA,#0D0H,B2
AJMPKK1
B2:CJNEA,#0D1H,B3
AJMPKK2
B3:CJNEA,#0D2H,B4
AJMPKK3
B4:CJNEA,#0C8H,B5
AJMPKK4
B5:CJNEA,#0C9H,B6
AJMPKK5
B6:CJNEA,#0CAH,B7
AJMPKK6
B7:CJNEA,#0C0H,B8
AJMPKK7
B8:CJNEA,#0C1H,B9
AJMPKK8
B9:CJNEA,#0C2H,BE
AJMPKK9
BE:CJNEA,#0DAH,YUZHI
AJMPKKE
KK0:MOV5BH,#00H;5BH存键值
AJMPCOUNT_1
KK1:MOV5BH,#01H
AJMPCOUNT_1
KK2:MOV5BH,#02H
AJMPCOUNT_1
KK3:MOV5BH,#03H
AJMPCOUNT_1
KK4:MOV5BH,#04H
AJMPCOUNT_1
KK5:MOV5BH,#05H
AJMPCOUNT_1
KK6:MOV5BH,#06H
AJMPCOUNT_1
KK7:MOV5BH,#07H
AJMPCOUNT_1
KK8:MOV5BH,#08H
AJMPCOUNT_1
KK9:MOV5BH,#09H
AJMPCOUNT_1
KKE:AJMPEND_P
COUNT_1:MOVA,44H;44H存按键次数
INCA
MOV44H,A
CJNEA,#05H,CW1;按键次数是否到达4次
AJMPYUZHI;五次按键则重设阈值
CW1:ADDA,#54H;键盘按键存储空间
MOVR0,A
CW2:CLRA
MOVA,5BH
MOV@R0,A
LCALLPRO_SHOW
AJMPKEY_09
RET
;=========================================
;各次报警值按键处理子程序
;=========================================
PRO_SHOW:NOP
PR_1:CLRA;一次按键
MOVA,44H
CJNEA,#01H,PR_2
MOVR0,#55H
MOVA,@R0
SUBBA,#05H
JNCSS
MOV51H,55H
MOVA,55H
MOVADDR1,#0AH
LCALLSHUZIXIANSHI
SJMPEND_P
PR_2:CLRA;二次按键
MOVA,44H
CJNEA,#02H,PR_3
CLRA
MOVA,55H
SWAPA
ADDA,56H
MOV51H,A
MOVA,55H
MOVADDR1,#09H
LCALLSHUZIXIANSHI
MOVA,56H
MOVADDR1,#0AH
LCALLSHUZIXIANSHI
AJMPEND_P
PR_3:CLRA;三次按键
MOVA,44H
CJNEA,#03H,PR_4
CLRA
MOV50H,55H
MOVA,56H
SWAPA
ADDA,57H
MOV51H,A
MOVA,55H
MOVADDR1,#08H
LCALLSHUZIXIANSHI
MOVA,56H
MOVADDR1,#09H
LCALLSHUZIXIANSHI
MOVA,57H
MOVADDR1,#0AH
LCALLSHUZIXIANSHI
SJMPEND_P
PR_4:CLRA;四次按键
MOVA,58H
SWAPA
MOV52H,A
SWAPA
MOVADDR1,#0CH
LCALLSHUZIXIANSHI
SJMPEND_P
END_P:RET
SS:LJMPYUZHI
;=============================================================
;结果显示子程序
;=============================================================
CELIANGJIEGUO:LCALLADC0809;调用0809采样程序
LCALLZHH;调用转换程序
MOVADDR1,#08H;采数据送LCD显示
MOVA,40H
LCALLSHUZIXIANSHI
MOVADDR1,#09H
MOVA,41H
SWAPA
LCALLSHUZIXIANSHI
MOVADDR1,#0AH
MOVA,41H
LCALLSHUZIXIANSHI
MOVADDR1,#0CH
MOVA,43H
SWAPA
LCALLSHUZIXIANSHI
CALLDELAY500;调用延时
CALLBJ;推断是否超过阈值,超过则报警
;------------------------------------------
;F键推断是否返回提示界面
;------------------------------------------
KEY_F:MOVDPTR,#8101H
MOA,@DPTR
ANLA,#07H
CJNEA,#00H,LP2
SJMPCELIANGJIEGUO
LP2:MOVDPTR,#8100H
MOA,@DPTR
CJNEA,#0D9H,CELIANGJIEGUO;推断是否按F键
SETBP1.1
CLRP1.0
AJMPK1
;=======================================================
;报警子程序
;=======================================================
BJ:MOVR1,#50H
MOVA,@R1
CLRC
SUBBA,40H
JCWARNING
JZCOMP1
SETBP1.1
CLRP1.0
RET
COMP1:INCR1
MOVA,@R1
CLRC
SUBBA,41H
JCWARNING
JZCOMP2
SETBP1.1
CLRP1.0
RET
COMP2:INCR1
MOVA,@R1
CLRC
SUBBA,43H
JCWARNING
SETBP1.1
CLRP1.0
RET
WARNING:CLRP1.1
SETBP1.0
RET
;=======================================================
;0809采样程序
ADC0809:PUSHDPL
PUSHDPH
PUSHACC
MOVDPTR,#W_D_0809;AD0809的启动地址
MOVA,#00H
MO@DPTR,A;0通道
LCALLDELAY01;延时100US
MOA,@DPTR;读出A/D的结果
MOV3FH,A;暂存
POPACC
POPDPH
POPDPL
RET
;=======================================================
;转换子程序:3FH的内容(A/D采样的结果)*(5V/256(FFH))=十进制结果;40H,41H.例如:3FH=0FFH,那么程序执行后:40H=04H,41H=99H既4.99V
;=======================================================
ZHH:PUSHPSW
PUSHACC
SETBRS0
MOVA,#4eH
MOVB,3FH
MULAB
MOVR6,B
MOVR7,A
HB2:CLRA
MOVR3,A
MOVR4,A
MOVR5,A
MOVR2,#10H
HB3:MOVA,R7
RLCA
MOVR7,A
MOVA,R6
RLCA
MOVR6,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
MOVA,R3
ADDCA,R3
MOVR3,A
DJNZR2,HB3
MOV40H,R3
MOV41H,R4
MOV43H,R5
POPACC
POPPSW
RET
;=======================================================
;点阵式LCD(128X64)模块显示局部子程序;以下是公共的程序:
;=======================================================
;LCD初始化子程序
;=========================================
INITIAL_GLCD:PUSHACC
MOVA,#30H;功能设定
CALLCOMMAND_GLCD
MOVA,#30H;功能设定
CALLCOMMAND_GLCD
MOVA,#30H;功能设定
CALLCOMMAND_GLCD
MOVA,#06H;显示器掌握:游标不显示;
CALLCOMMAND_GLCD
MOVA,#01H;去除显示器
CALLCOMMAND_GLCD
MOVA,#0CH;进入模式设定
CALLCOMMAND_GLCD
POPACC
RET
;=========================================
;汉字显示子程序(16X16点阵)
;=========================================
DHZ:MOVADDR,ADDR1;开头行位置
MOVB,N1;显示数量
DHZ1:MOVA,ADDR;
ORLA,#80H;送显示地址
LCALLCOMMAND_GLCD;调写命令子程序
DHZ2:CLRA
MOVCA,@A+DPTR;查找汉字的高位码
INCDPTR
LCALLWRITE_GLCD;送显示
CLRA
MOVCA,@A+DPTR;查找汉字的低位码
INCDPTR
LCALLWRITE_GLCD;送显示
DJNZB,DHZ2
RET
;=========================================
;数字显示子程序
;=========================================
SHUZIXIANSHI:MOV42H,A
MOVADDR,ADDR1;开头行位置
MOVA,ADDR;
ORLA,#80H;送显示地址
LCALLCOMMAND_GLCD
MOVA,42H
;------------------------------------------
;将ACC内容,以十六进制值显示
;------------------------------------------
HEX_LCD:PUSHDPH
PUSHDPL
PUSHACC
ANLA,#0FH
MOVDPTR,#ASCII_CODE;DPTR指到ASCII_CODE
MOVCA,@A+DPTR;取得ASCII码
CALLWRITE_GLCD;写到LCD
POPACC
POPDPL
POPDPH
RET
ASCII_CODE:DB””””0123456789ABCDEF””””
;=========================================
;检查LCD劳碌标志
;=========================================
CHKBUSY_GLCD:PUSHDPH
PUSHDPL
PUSHACC
MOVDPTR,#R_B_GLCD
CHK:MOA,@DPTR
JBACC.7,CHK;判别是不是忙?
POPACC
POPDPL
POPDPH
RET
;=========================================
;写命令到GLCD
;=========================================
COMMAND_GLCD:PUSHDPH
PUSHDPL
CALLCHKBUSY_GLCD;判别是不是忙?
MOVDPTR,#W_C_GLCD
MO@DPTR,A;写入命令
POPDPL
POPDPH
RE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招标文件购买信用先行
- 旅店服务合同的性质分析
- 专业团队的笔译
- 短期借款人协议合同
- 房屋买卖合同标准模板
- 广场物业服务合同文本
- 面砖供应链合作协议
- 烟草制品保证
- 外加工与采购合同的更新
- 购房贷款合同范本模板示例
- GB/T 18344-2016汽车维护、检测、诊断技术规范
- 神态描写课件
- 医惠内镜消毒质量追溯系统
- 如何提高基层干部群众工作能力课件
- 风险分级管控与隐患排查治理双重预防体系建设资料汇编
- 2022年读者出版集团有限公司招聘笔试试题及答案解析
- NB∕T 33009-2021 电动汽车充换电设施建设技术导则
- 大学《传播学概论》试卷及答案
- 工程设计费收费标准
- -坚定目标赢在执行 主题班会课件
- 英语语法基础知识教学讲义课件
评论
0/150
提交评论