计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

单片机电子秤设计软件程序清单信息工程毕

2013-05-26 01:12
导读:电子信息工程论文毕业论文,单片机电子秤设计软件程序清单信息工程毕论文样本,在线游览或下载,科教论文网海量论文供你参考: 程序清单 ;定义  中文LCD液晶 128X64 的地址 W_C_GLCD 

程序清单
;定义  中文LCD液晶 128X64 的地址
W_C_GLCD   XDATA  0E000H
W_D_GLCD   XDATA  0E001H
R_B_GLCD   XDATA  0E002H
R_D_GLCD   XDATA  0E003H
;-------------------------------------------------------
TIMER0     DATA  30H ;延时时间的初值
TIMER1     DATA  31H ;调用延时子程序的次数
DATA1      DATA  32H ;点阵显示的变量1
DATA2      DATA  33H ;点阵显示的变量2
X          DATA  34H ;X方向的位置
Y          DATA  35H ;Y方向的位置
COUNTER    DATA  36H ;计数器
N          DATA  37H ;行数变量
D1         DATA  38H ;点变量1
D2         DATA  39H ;点变量1
ADDR       DATA  3AH ;起始的显示位置
ADDR1      DATA  3BH ;起始的显示位置临时变量
N1         DATA  3CH ;行数的临时变量
;*******************************************************
;*                                主程序开始                                       
;*******************************************************
ORG     0000H

(科教作文网 zw.nseac.com整理)

AJMP    START
ORG     0030H
START:   CLR     P1.0
         SETB    P1.1
         MOV     SP,#60H
    LCALL   INITIAL_GLCD      ; 调用LCD初始化
         LCALL   KAIJI             ; 显示开机画面
         LCALL   DELAY500
         LCALL   DELAY500
         LCALL   DELAY500
         LCALL   TISHI             ; 显示主界面
         LCALL   INI_8279
;------------------------------------------
;判断是否继续
;------------------------------------------
KEY_A:     MOV     DPTR,#8101H     ; 8101H为8279命令
           MOVX    A,@DPTR         ; 读状态字
            ANL     A,#07H          ; 判断低三位是否为0
           CJNE    A,#00H,LP1      ; 不为0(有键按下)则跳转
           SJMP    KEY_A           ; 为0(没键按下)则继续查询 大学排名
LP1:       MOV     DPTR,#8100H     ; 8100H为8279数据口
           MOVX    A,@DPTR         ; 读键值
           CJNE    A,#0DBH,KEY_A   ; 判断是否按D键
           AJMP    K1
K1:        LCALL   YUZHI            ; 阈值设定
           LCALL   celianjieguo     ; 结果显示界面
           LCALL   CELIANGJIEGUO    ; 结果显示
           AJMP    $
;*******************************************************
;*                                主程序开始                                       
;*******************************************************
;=======================================================
;各界面显示内容
;=======================================================
DHTABLE1:  DB      "  欢  迎  使  用  "
DHTABLE2:  DB      "  半桥电子秤  "
DHTABLE3:  DB      " 设计人: x x x  " (科教作文网http://zw.ΝsΕAc.Com编辑整理)
DHTABLE4:  DB      " 时间:xxxx "
DHTABLE5:  DB      "****************"
DHTABLE6:  DB      "  设置报警上限    "
DHTABLE7:  DB      "  确定  "
DHTABLE8:  DB      "  请按D 键  "
DHTABLE9:  DB      "                "
DHTABLE10: DB      " 报警上限重量:   "
DHTABLE11: DB      "      .     g  "
DHTABLE12: DB      "        确定(E) "
CELIANG1:  DB      "  电子秤  "
CELIANG2:  DB      " 重量是:         "
CELIANG3:  DB      "      .     g   "
CELIANG4:DB      "      返回 (F)  "
;=======================================================
;开机界面子程序
;=======================================================
KAIJI:   MOV     ADDR1,#00H        ; 第一行显示
         MOV     N1,#08H           ; 数量 8 个
 MOV     DPTR,#DHTABLE1     ; 需要显示的汉字位置
    CALL    DHZ               ; 调用汉字子序 
 MOV     ADDR1,#10H         ; 第二行显示 (科教范文网http://fw.ΝsΕΑc.com编辑)
         MOV     N1,#08H
 MOV     DPTR,#DHTABLE2
  CALL    DHZ
         MOV     ADDR1,#08H            ; 第三行显示
         MOV     N1,#08H
 MOV     DPTR,#DHTABLE3 
 CALL    DHZ
         MOV     ADDR1,#18H       ; 第四行显示
         MOV     N1,#08H
         MOV     DPTR,#DHTABLE4
         CALL    DHZ
         RET
;=======================================================
;提示界面子程序
;=======================================================
TISHI:   LCALL   CLEAR_GLCD           ; 清除LCD显示屏幕
         MOV     ADDR1,#00H
         MOV     N1,#08H
 MOV     DPTR,#DHTABLE5
 CALL    DHZ
 MOV     ADDR1,#10H
         MOV     N1,#08H
         MOV     DPTR,#DHTABLE6
         CALL    DHZ
 MOV     ADDR1,#08H
         MOV     N1,#08H

(科教作文网http://zw.ΝsΕac.cOM编辑)


 MOV     DPTR,#DHTABLE7
 CALL    DHZ
           MOV     ADDR1,#18H
           MOV     N1,#08H
           MOV     DPTR,#DHTABLE8
           CALL    DHZ
           RET
;=======================================================
;阈值设定界面子程序
;=======================================================
SHEDING:        LCALL   CLEAR_GLCD
                MOV     ADDR1,#00H
                MOV     N1,#08H
                MOV     DPTR,#DHTABLE9
                CALL    DHZ
                MOV     ADDR1,#10H
                MOV     N1,#08H
                MOV     DPTR,#DHTABLE10
                CALL    DHZ
 MOV     ADDR1,#08H
                MOV     N1,#08H
(转载自http://zw.NSEAC.com科教作文网)

 MOV     DPTR,#DHTABLE11
 CALL    DHZ
                MOV     ADDR1,#18H
                MOV     N1,#08H
                MOV     DPTR,#DHTABLE12
                CALL    DHZ
                RET
;=======================================================
;测量界面子程序
;=======================================================
celianjieguo:   LCALL   CLEAR_GLCD
                MOV     ADDR1,#00H
                MOV     N1,#08H
 MOV     DPTR,#CELIANG1
 CALL    DHZ
                MOV     ADDR1,#10H
                MOV     N1,#08H
 MOV     DPTR,#CELIANG2
 CALL    DHZ
                MOV     ADDR1,#08H
                MOV     N1,#08
                MOV     DPTR,#CELIANG3

(转载自科教范文网http://fw.nseac.com)


                CALL    DHZ
                MOV     ADDR1,#18H
                MOV     N1,#08
                MOV     DPTR,#CELIANG4
                CALL    DHZ
                RET
;=======================================================
;8279初始化子程序
;=======================================================
INI_8279:       MOV     DPTR,#8101H
                MOV     A,#00H
                MOVX    @DPTR,A
                MOV     A,#32H
                MOVX    @DPTR,A
                MOV     A,#0DFH
                MOVX    @DPTR,A
                RET
;=======================================================
;键盘设定阈值子程序
;======================================================= (转载自中国科教评价网http://www.nseac.com
YUZHI:        LCALL   SHEDING
              MOV     44H,#00H      ; 44H单元存按键次数,先清0
;******************键盘按键存储空间   *******
                MOV     55H,#00H        ;存入四次按键值
                MOV     56H,#00H
                MOV     57H,#00H
                MOV     58H,#00H
                MOV     50H,#00H          ; 存阈值百位
                MOV     51H,#00H      ; 存阈值十位和个位
                MOV     52H,#00H          ; 存阈值小数位
;*************************************************************
KEY_09:         MOV     DPTR,#8101H   ; 判断是否有键按下
                MOVX    A,@DPTR
                ANL     A,#07H
                CJNE    A,#00H,LPP1 您可以访问中国科教评价网(www.NsEac.com)查看更多相关的文章。
                AJMP    KEY_09
;-------------------------------------------
;各个键的处理
;------------------------------------------
LPP1:           MOV     DPTR,#8100H
                MOVX    A,@DPTR
B0:             CJNE    A,#0D8H,B1
                AJMP    KK0
B1:             CJNE    A,#0D0H,B2
                AJMP    KK1
B2:             CJNE    A,#0D1H,B3
                AJMP    KK2
B3:             CJNE    A,#0D2H,B4
                AJMP    KK3
B4:             CJNE    A,#0C8H,B5
                AJMP    KK4
B5:             CJNE    A,#0C9H,B6
                AJMP    KK5
B6:             CJNE    A,#0CAH,B7

(科教范文网 lw.nseaC.Com编辑发布)


                AJMP    KK6
B7:             CJNE    A,#0C0H,B8
                AJMP    KK7
B8:             CJNE    A,#0C1H,B9
                AJMP    KK8
B9:             CJNE    A,#0C2H,BE
                AJMP    KK9
BE:             CJNE    A,#0DAH,YUZHI
                AJMP    KKE
KK0:            MOV     5BH,#00H            ; 5BH存键值
                AJMP    COUNT_1
KK1:            MOV     5BH,#01H
                AJMP    COUNT_1
KK2:            MOV     5BH,#02H
                AJMP    COUNT_1
KK3:            MOV     5BH,#03H
               AJMP    COUNT_1 内容来自www.nseac.com
KK4:           MOV     5BH,#04H
               AJMP    COUNT_1
KK5:           MOV     5BH,#05H
               AJMP    COUNT_1
KK6:           MOV     5BH,#06H
               AJMP    COUNT_1
KK7:           MOV     5BH,#07H
               AJMP    COUNT_1
KK8:           MOV     5BH,#08H
               AJMP    COUNT_1
KK9:           MOV     5BH,#09H
               AJMP    COUNT_1
KKE:           AJMP    END_P
COUNT_1:       MOV     A,44H            ; 44H存按键次数
               INC     A
               MOV     44H,A
               CJNE    A,#05H ,CW1       ; 按键次数是否达到4次 (转载自http://zw.NSEaC.com科教作文网)
               AJMP    YUZHI       ; 五次按键则重设阈值
CW1:           ADD     A,#54H        ; 键盘按键存储空间
               MOV     R0,A
CW2:           CLR     A
               MOV     A,5BH
               MOV     @R0,A
               LCALL   PRO_SHOW
               AJMP    KEY_09
               RET
;=========================================
;各次报警值按键处理子程序
;=========================================
PRO_SHOW:       NOP
    PR_1:       CLR     A                     ; 一次按键
                MOV     A,44H
                CJNE    A,#01H,PR_2
                MOV     R0,#55H
                MOV     A,@R0 中国大学排名
                SUBB    A,#05H
                JNC     SS
                MOV     51H,55H
                MOV     A,55H
                MOV     ADDR1,#0AH
                LCALL   SHUZIXIANSHI
                SJMP    END_P
  PR_2:        CLR     A                     ; 二次按键
                MOV     A,44H
                CJNE    A,#02H,PR_3
                CLR     A
                MOV     A,55H
                SWAP    A
                ADD     A,56H
                MOV     51H,A (转载自中国科教评价网www.nseac.com )
                MOV     A,55H
                MOV     ADDR1,#09H
                LCALL   SHUZIXIANSHI
                MOV     A,56H
                MOV     ADDR1,#0AH
                LCALL   SHUZIXIANSHI
                AJMP    END_P
   PR_3:       CLR     A                     ; 三次按键
                MOV     A,44H
                CJNE    A,#03H,PR_4
                CLR     A
                MOV     50H,55H
                MOV     A,56H
                SWAP    A
                ADD     A,57H (科教作文网http://zw.ΝsΕAc.Com编辑整理)
                MOV     51H,A
                MOV     A,55H
                MOV     ADDR1,#08H
                LCALL   SHUZIXIANSHI
                MOV     A,56H
                MOV     ADDR1,#09H
                LCALL   SHUZIXIANSHI
                MOV     A,57H
                MOV     ADDR1,#0AH
                LCALL   SHUZIXIANSHI
                SJMP    END_P
         PR_4:       CLR     A             ; 四次按键
                MOV     A,58H
                SWAP    A
                MOV     52H,A
(科教作文网 zw.nseac.com整理)

                SWAP    A
                MOV     ADDR1,#0CH
                LCALL   SHUZIXIANSHI
                SJMP    END_P
   END_P:       RET
   SS:          LJMP    YUZHI
;=============================================================
;结果显示子程序
;=============================================================
CELIANGJIEGUO:   LCALL ADC0809     ; 调用0809采样程序
 LCALL ZHH        ; 调用转换程序
 MOV ADDR1,#08H       ; 采数据送LCD显示
                 MOV A,40H
                 LCALL   SHUZIXIANSHI
                 MOV ADDR1,#09H
                 MOV     A,41H
                 SWAP    A
                 LCALL   SHUZIXIANSHI
                 MOV ADDR1,#0AH
(科教作文网http://zw.ΝsΕAc.Com编辑整理)

 MOV A,41H
                 LCALL   SHUZIXIANSHI
                 MOV ADDR1,#0CH
                 MOV     A,43H
                 SWAP    A
                 LCALL   SHUZIXIANSHI
 CALL    DELAY500              ; 调用延时
                 CALL    BJ     ; 判断是否超过阈值,超过则报警
;------------------------------------------
 ;F键判断是否返回提示界面
;------------------------------------------
KEY_F:          MOV     DPTR,#8101H
                MOVX    A,@DPTR
                ANL     A,#07H
                CJNE    A,#00H,LP2
                SJMP    CELIANGJIEGUO
LP2:            MOV     DPTR,#8100H
                MOVX    A,@DPTR
您可以访问中国科教评价网(www.NsEac.com)查看更多相关的文章。

                CJNE    A,#0D9H,CELIANGJIEGUO ;判断是否按F键
                SETB    P1.1
                CLR     P1.0
                AJMP    K1
;=======================================================
;报警子程序
;=======================================================
BJ:             MOV     R1,#50H
                MOV     A,@R1
                CLR     C
                SUBB    A,40H
                JC      WARNING
                JZ      COMP1
                SETB    P1.1
                CLR     P1.0
                RET
COMP1:          INC     R1
                MOV     A,@R1

内容来自www.nseac.com


                CLR     C
                SUBB    A,41H
                JC      WARNING
                JZ      COMP2
                SETB    P1.1
                CLR     P1.0
                RET
COMP2:          INC     R1
                MOV     A,@R1
                CLR     C
                SUBB    A,43H
                JC      WARNING
                SETB    P1.1
                CLR     P1.0
                RET
WARNING:        CLR     P1.1
                SETB    P1.0
                RET
;=======================================================
;0809采样程序
ADC0809:       PUSH    DPL
             PUSH    DPH
             PUSH    ACC
              MOV     DPTR,#W_D_0809    ; AD0809的启动地址
             MOV     A,#00H
             MOVX    @DPTR,A               ; 0 通道
             LCALL   DELAY01               ; 延时100US
             MOVX    A,@DPTR             ; 读出A/D的结果
             MOV     3FH,A        ; 暂存
 POP     ACC
             POP     DPH
             POP     DPL
             RET
;=======================================================
;转换子程序 : 3FH的内容(A/D采样的结果)*(5V/256(FFH))=十进制结果;40H,41H.例如:3FH=0FFH,  那么程序执行后:40H=04H  , 41H=99H 既4.99V
(转载自http://www.NSEAC.com中国科教评价网)

;=======================================================
ZHH:          PUSH    PSW
              PUSH    ACC
                SETB    RS0
              MOV     A,#4eH
                MOV     B,3FH
                 MUL     AB
              MOV     R6,B
              MOV     R7,A
HB2:          CLR     A
              MOV     R3,A
              MOV     R4,A
         MOV     R5,A
         MOV     R2,#10H
HB3:     MOV     A,R7
         RLC     A
         MOV     R7,A
         MOV     A,R6
          RLC     A
         MOV     R6,A
         MOV     A,R5 (科教作文网http://zw.NSEaC.com编辑发布)
         ADDC    A,R5
         DA      A
         MOV     R5,A
         MOV     A,R4
         ADDC    A,R4
         DA      A
         MOV     R4,A
         MOV     A,R3
         ADDC    A,R3
         MOV     R3,A
         DJNZ    R2,HB3
         MOV     40H,R3
         MOV     41H,R4
           MOV     43H,R5
         POP     ACC
         POP     PSW
         RET
;=======================================================
;点阵式 LCD(128X64)模块显示部分子程序 ;以下是公共的程序:
;=======================================================
;LCD 初始化子程序
;=========================================
INITIAL_GLCD:   PUSH    ACC
                MOV     A,#30H                ; 功能设定

(科教作文网http://zw.NSEaC.com编辑发布)


                CALL    COMMAND_GLCD
                MOV     A,#30H                ; 功能设定
                CALL    COMMAND_GLCD
                MOV     A,#30H                ; 功能设定
                CALL    COMMAND_GLCD
                MOV     A,#06H         ; 显示器控制:游标不显示;
                CALL    COMMAND_GLCD
                MOV     A,#01H              ; 清除显示器
                CALL    COMMAND_GLCD
                MOV     A,#0CH            ; 进入模式设定
                CALL    COMMAND_GLCD
                POP     ACC (科教作文网 zw.nseac.com整理)
                RET
;=========================================
;汉字显示子程序(16X16点阵)
;=========================================
DHZ:            MOV    ADDR,ADDR1       ; 开始行位置
                MOV   B,N1        ; 显示数量
DHZ1:           MOV    A,ADDR;
                ORL    A,#80H         ; 送显示地址
                LCALL  COMMAND_GLCD       ; 调写命令子程序
DHZ2:           CLR   A
                MOVC   A,@A+DPTR    ; 查找汉字的高位码
                INC    DPTR
             LCALL  WRITE_GLCD       ; 送显示
                CLR   A
               MOVC   A,@A+DPTR         ; 查找汉字的低位码
                INC    DPTR
                LCALL  WRITE_GLCD            ; 送显示 (转载自中国科教评价网www.nseac.com )
                DJNZ   B,DHZ2
                RET
;=========================================
;数字显示子程序
;=========================================
SHUZIXIANSHI:   MOV     42H,A
                MOV     ADDR,ADDR1       ; 开始行位置
                MOV     A,ADDR;
                ORL     A,#80H         ; 送显示地址
             LCALL   COMMAND_GLCD
                MOV     A,42H
;------------------------------------------
;将 ACC 内容,以十六进制值显示
;------------------------------------------
HEX_LCD:    PUSH    DPH
            PUSH    DPL
            PUSH    ACC
         ANL     A,#0FH
            MOV     DPTR,#ASCII_CODE    ; DPTR 指到 ASCII_CODE
            MOVC    A,@A+DPTR        ; 取得 ASCII 码
            CALL    WRITE_GLCD            ; 写到 LCD (转载自http://zw.nseac.coM科教作文网)
            POP     ACC
            POP     DPL
            POP     DPH
            RET
ASCII_CODE:     DB     '0123456789ABCDEF'
;=========================================
;检查LCD 忙碌标志
;=========================================
CHKBUSY_GLCD:   PUSH    DPH
              PUSH    DPL
                PUSH    ACC
                MOV     DPTR,#R_B_GLCD
CHK:            MOVX    A,@DPTR
                JB      ACC.7,CHK       ; 判别是不是忙?
                POP     ACC
                POP     DPL
  POP     DPH
                RET
;=========================================
;写命令到 GLCD
;=========================================
COMMAND_GLCD:   PUSH    DPH
              PUSH    DPL

(转载自http://www.NSEAC.com中国科教评价网)


                CALL    CHKBUSY_GLCD     ; 判别是不是忙?
                MOV     DPTR,#W_C_GLCD
                MOVX    @DPTR,A        ; 写入命令
                POP     DPL
              POP     DPH
                RET
;=========================================
;写资料到 GLCD
;=========================================
WRITE_GLCD:     PUSH    DPH
                PUSH    DPL
                CALL    CHKBUSY_GLCD     ; 判别是不是忙?
                MOV     DPTR,#W_D_GLCD        ; 写入数据
                MOVX    @DPTR,A
                POP     DPL
              POP     DPH
                RET
;=========================================
(科教作文网 zw.nseac.com整理)

;清除 LCD 的显示幕
;=========================================
CLEAR_GLCD:     PUSH    ACC
                MOV     A,#01H              ; 清除显示器
                CALL    COMMAND_GLCD
                POP     ACC
                RET
;=======================================================
;延时子程序
;=======================================================
DELAY:          PUSH    TIMER1   ; 延时TIMER1*1 ms for 12MHz
             PUSH    TIMER0
DELAY1:         MOV     TIMER0,#250       ;时间为4*1μS
DELAY2:         NOP         ; 1个周期
                NOP         ; 1个周期
                DJNZ    TIMER0,DELAY2         ; 2个周期
             DJNZ    TIMER1,DELAY1
             POP     TIMER0
             POP     TIMER1

(转载自中国科教评价网www.nseac.com )


                RET
                NOP
;------------------------------------------
;延时 1 ms
;------------------------------------------
DELAY01:        NOP
                PUSH    TIMER1
                MOV     TIMER1,#01H
                LCALL   DELAY
                POP     TIMER1
                RET
                NOP
;------------------------------------------
;延时500ms
;------------------------------------------
DELAY500:       NOP
             PUSH    TIMER1
             MOV TIMER1,#250
             LCALL DELAY
             LCALL   DELAY
             POP     TIMER1
             RET
             NOP
 

    上一篇:[免费论文]仓库温湿度的监测系统设计(一)信 下一篇:没有了