欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机电子秤设计软件程序清单.docx

    • 资源ID:16369707       资源大小:20.54KB        全文页数:40页
    • 资源格式: DOCX        下载积分:9.18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9.18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机电子秤设计软件程序清单.docx

    单片机电子秤设计软件程序清单程序清单;定义中文LCD液晶128X64的地址W_C_GLCDXDATA0E000HW_D_GLCDXDATA0E001HR_B_GLCDXDATA0E002HR_D_GLCDXDATA0E003H;-TIMER0DATA30H;延时时间的初值TIMER1DATA31H;调用延时子程序的次数DATA1DATA32H;点阵显示的变量1DATA2DATA33H;点阵显示的变量2XDATA34H;X方向的位置YDATA35H;Y方向的位置COUNTERDATA36H;计数器NDATA37H;行数变量D1DATA38H;点变量1D2DATA39H;点变量1ADDRDATA3AH;起始的显示位置ADDR1DATA3BH;起始的显示位置临时变量N1DATA3CH;行数的临时变量;*;*主程序开场;*ORG0000HAJMPSTARTORG0030HSTART:CLRP1.0SETBP1.1MOVSP,#60HLCALLINITIAL_GLCD;调用LCD初始化LCALLKAIJI;显示开机画面LCALLDELAY500LCALLDELAY500LCALLDELAY500LCALLTISHI;显示主界面LCALLINI_8279;-;判定能否继续;-KEY_A:MOVDPTR,#8101H;8101H为8279命令MOVXA,DPTR;读状态字ANLA,#07H;判定低三位能否为0CJNEA,#00H,LP1;不为0有键按下则跳转SJMPKEY_A;为0没键按下则继续查询LP1:MOVDPTR,#8100H;8100H为8279数据口MOVXA,DPTR;读键值CJNEA,#0DBH,KEY_A;判定能否按D键AJMPK1K1: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,#08HMOVDPTR,#DHbr2CALLDHZMOVADDR1,#08H;第三行显示MOVN1,#08HMOVDPTR,#DHbr3CALLDHZMOVADDR1,#18H;第四行显示MOVN1,#08HMOVDPTR,#DHbr4CALLDHZRET;=;提示界面子程序;=TISHI:LCALLCLEAR_GLCD;去除LCD显示屏幕MOVADDR1,#00HMOVN1,#08HMOVDPTR,#DHbr5CALLDHZMOVADDR1,#10HMOVN1,#08HMOVDPTR,#DHbr6CALLDHZMOVADDR1,#08HMOVN1,#08HMOVDPTR,#DHbr7CALLDHZMOVADDR1,#18HMOVN1,#08HMOVDPTR,#DHbr8CALLDHZRET;=;阈值设定界面子程序;=SHEDING:LCALLCLEAR_GLCDMOVADDR1,#00HMOVN1,#08HMOVDPTR,#DHbr9CALLDHZMOVADDR1,#10HMOVN1,#08HMOVDPTR,#DHbr10CALLDHZMOVADDR1,#08HMOVN1,#08HMOVDPTR,#DHbr11CALLDHZMOVADDR1,#18HMOVN1,#08HMOVDPTR,#DHbr12CALLDHZRET;=;测量界面子程序;=celianjieguo:LCALLCLEAR_GLCDMOVADDR1,#00HMOVN1,#08HMOVDPTR,#CELIANG1CALLDHZMOVADDR1,#10HMOVN1,#08HMOVDPTR,#CELIANG2CALLDHZMOVADDR1,#08HMOVN1,#08MOVDPTR,#CELIANG3CALLDHZMOVADDR1,#18HMOVN1,#08MOVDPTR,#CELIANG4CALLDHZRET;=;8279初始化子程序;=INI_8279:MOVDPTR,#8101HMOVA,#00HMOVXDPTR,AMOVA,#32HMOVXDPTR,AMOVA,#0DFHMOVXDPTR,ARET;=;键盘设定阈值子程序;=YUZHI:LCALLSHEDINGMOV44H,#00H;44H单元存按键次数,先清0;*键盘按键存储空间*MOV55H,#00H;存入四次按键值MOV56H,#00HMOV57H,#00HMOV58H,#00HMOV50H,#00H;存阈值百位MOV51H,#00H;存阈值十位和个位MOV52H,#00H;存阈值小数位;*KEY_09:MOVDPTR,#8101H;判定能否有键按下MOVXA,DPTRANLA,#07HCJNEA,#00H,LPP1AJMPKEY_09;-;各个键的处理;-LPP1:MOVDPTR,#8100HMOVXA,DPTRB0:CJNEA,#0D8H,B1AJMPKK0B1:CJNEA,#0D0H,B2AJMPKK1B2:CJNEA,#0D1H,B3AJMPKK2B3:CJNEA,#0D2H,B4AJMPKK3B4:CJNEA,#0C8H,B5AJMPKK4B5:CJNEA,#0C9H,B6AJMPKK5B6:CJNEA,#0CAH,B7AJMPKK6B7:CJNEA,#0C0H,B8AJMPKK7B8:CJNEA,#0C1H,B9AJMPKK8B9:CJNEA,#0C2H,BEAJMPKK9BE:CJNEA,#0DAH,YUZHIAJMPKKEKK0:MOV5BH,#00H;5BH存键值AJMPCOUNT_1KK1:MOV5BH,#01HAJMPCOUNT_1KK2:MOV5BH,#02HAJMPCOUNT_1KK3:MOV5BH,#03HAJMPCOUNT_1KK4:MOV5BH,#04HAJMPCOUNT_1KK5:MOV5BH,#05HAJMPCOUNT_1KK6:MOV5BH,#06HAJMPCOUNT_1KK7:MOV5BH,#07HAJMPCOUNT_1KK8:MOV5BH,#08HAJMPCOUNT_1KK9:MOV5BH,#09HAJMPCOUNT_1KKE:AJMPEND_PCOUNT_1:MOVA,44H;44H存按键次数INCAMOV44H,ACJNEA,#05H,CW1;按键次数能否到达4次AJMPYUZHI;五次按键则重设阈值CW1:ADDA,#54H;键盘按键存储空间MOVR0,ACW2:CLRAMOVA,5BHMOVR0,ALCALLPRO_SHOWAJMPKEY_09RET;=;各次报警值按键处理子程序;=PRO_SHOW:NOPPR_1:CLRA;一次按键MOVA,44HCJNEA,#01H,PR_2MOVR0,#55HMOVA,R0SUBBA,#05HJNCSSMOV51H,55HMOVA,55HMOVADDR1,#0AHLCALLSHUZIXIANSHISJMPEND_PPR_2:CLRA;二次按键MOVA,44HCJNEA,#02H,PR_3CLRAMOVA,55HSWAPAADDA,56HMOV51H,AMOVA,55HMOVADDR1,#09HLCALLSHUZIXIANSHIMOVA,56HMOVADDR1,#0AHLCALLSHUZIXIANSHIAJMPEND_PPR_3:CLRA;三次按键MOVA,44HCJNEA,#03H,PR_4CLRAMOV50H,55HMOVA,56HSWAPAADDA,57HMOV51H,AMOVA,55HMOVADDR1,#08HLCALLSHUZIXIANSHIMOVA,56HMOVADDR1,#09HLCALLSHUZIXIANSHIMOVA,57HMOVADDR1,#0AHLCALLSHUZIXIANSHISJMPEND_PPR_4:CLRA;四次按键MOVA,58HSWAPAMOV52H,ASWAPAMOVADDR1,#0CHLCALLSHUZIXIANSHISJMPEND_PEND_P:RETSS:LJMPYUZHI;=;结果显示子程序;=CELIANGJIEGUO:LCALLADC0809;调用0809采样程序LCALLZHH;调用转换程序MOVADDR1,#08H;采数据送LCD显示MOVA,40HLCALLSHUZIXIANSHIMOVADDR1,#09HMOVA,41HSWAPALCALLSHUZIXIANSHIMOVADDR1,#0AHMOVA,41HLCALLSHUZIXIANSHIMOVADDR1,#0CHMOVA,43HSWAPALCALLSHUZIXIANSHICALLDELAY500;调用延时CALLBJ;判定能否超过阈值,超过则报警;-;F键判定能否返回提示界面;-KEY_F:MOVDPTR,#8101HMOVXA,DPTRANLA,#07HCJNEA,#00H,LP2SJMPCELIANGJIEGUOLP2:MOVDPTR,#8100HMOVXA,DPTRCJNEA,#0D9H,CELIANGJIEGUO;判定能否按F键SETBP1.1CLRP1.0AJMPK1;=;报警子程序;=BJ:MOVR1,#50HMOVA,R1CLRCSUBBA,40HJCWARNINGJZCOMP1SETBP1.1CLRP1.0RETCOMP1:INCR1MOVA,R1CLRCSUBBA,41HJCWARNINGJZCOMP2SETBP1.1CLRP1.0RETCOMP2:INCR1MOVA,R1CLRCSUBBA,43HJCWARNINGSETBP1.1CLRP1.0RETWARNING:CLRP1.1SETBP1.0RET;=;0809采样程序ADC0809:PUSHDPLPUSHDPHPUSHACCMOVDPTR,#W_D_0809;AD0809的启动地址MOVA,#00HMOVXDPTR,A;0通道LCALLDELAY01;延时100USMOVXA,DPTR;读出A/D的结果MOV3FH,A;暂存POPACCPOPDPHPOPDPLRET;=;转换子程序:3FH的内容(A/D采样的结果)*(5V/256(FFH)=十进制结果;40H,41H.例如:3FH=0FFH,那么程序执行后:40H=04H,41H=99H既4.99V;=ZHH:PUSHPSWPUSHACCSETBRS0MOVA,#4eHMOVB,3FHMULABMOVR6,BMOVR7,AHB2:CLRAMOVR3,AMOVR4,AMOVR5,AMOVR2,#10HHB3:MOVA,R7RLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,AMOVA,R3ADDCA,R3MOVR3,ADJNZR2,HB3MOV40H,R3MOV41H,R4MOV43H,R5POPACCPOPPSWRET;=;点阵式LCD128X64模块显示部分子程序;下面是公共的程序:;=;LCD初始化子程序;=INITIAL_GLCD:PUSHACCMOVA,#30H;功能设定CALLCOMMAND_GLCDMOVA,#30H;功能设定CALLCOMMAND_GLCDMOVA,#30H;功能设定CALLCOMMAND_GLCDMOVA,#06H;显示器控制:游标不显示;CALLCOMMAND_GLCDMOVA,#01H;去除显示器CALLCOMMAND_GLCDMOVA,#0CH;进入形式设定CALLCOMMAND_GLCDPOPACCRET;=;汉字显示子程序16X16点阵;=DHZ:MOVADDR,ADDR1;开场行位置MOVB,N1;显示数量DHZ1:MOVA,ADDR;ORLA,#80H;送显示地址LCALLCOMMAND_GLCD;调写命令子程序DHZ2:CLRAMOVCA,A+DPTR;查找汉字的高位码INCDPTRLCALLWRITE_GLCD;送显示CLRAMOVCA,A+DPTR;查找汉字的低位码INCDPTRLCALLWRITE_GLCD;送显示DJNZB,DHZ2RET;=;数字显示子程序;=SHUZIXIANSHI:MOV42H,AMOVADDR,ADDR1;开场行位置MOVA,ADDR;ORLA,#80H;送显示地址LCALLCOMMAND_GLCDMOVA,42H;-;将ACC内容,以十六进制值显示;-HEX_LCD:PUSHDPHPUSHDPLPUSHACCANLA,#0FHMOVDPTR,#ASCII_CODE;DPTR指到ASCII_CODEMOVCA,A+DPTR;获得ASCII码CALLWRITE_GLCD;写到LCDPOPACCPOPDPLPOPDPHRETASCII_CODE:DB''''0123456789ABCDEF''''=;检查LCD繁忙标志;=CHKBUSY_GLCD:PUSHDPHPUSHDPLPUSHACCMOVDPTR,#R_B_GLCDCHK:MOVXA,DPTRJBACC.7,CHK;判别是不是忙?POPACCPOPDPLPOPDPHRET;=;写命令到GLCD;=COMMAND_GLCD:PUSHDPHPUSHDPLCALLCHKBUSY_GLCD;判别是不是忙?MOVDPTR,#W_C_GLCDMOVXDPTR,A;写入命令POPDPLPOPDPHRET;=;写资料到GLCD;=WRITE_GLCD:PUSHDPHPUSHDPLCALLCHKBUSY_GLCD;判别是不是忙?MOVDPTR,#W_D_GLCD;写入数据MOVXDPTR,APOPDPLPOPDPHRET;=;去除LCD的显示幕;=CLEAR_GLCD:PUSHACCMOVA,#01H;去除显示器CALLCOMMAND_GLCDPOPACCRET;=;延时子程序;=DELAY:PUSHTIMER1;延时TIMER1*1msfor12MHzPUSHTIMER0DELAY1:MOVTIMER0,#250;时间为4*1SDELAY2:NOP;1个周期NOP;1个周期DJNZTIMER0,DELAY2;2个周期DJNZTIMER1,DELAY1POPTIMER0POPTIMER1RETNOP;-;延时1ms;-DELAY01:NOPPUSHTIMER1MOVTIMER1,#01HLCALLDELAYPOPTIMER1RETNOP;-;延时500ms;-DELAY500:NOPPUSHTIMER1MOVTIMER1,#250LCALLDELAYLCALLDELAYPOPTIMER1RETNOP

    注意事项

    本文(单片机电子秤设计软件程序清单.docx)为本站会员(安***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开