网站地图
范文同学网


自动化 模具 机械 电子 通信 动画 英语范文 工程管理 金融范文 旅游管理 工业工程 生物工程 给排水范文 西门子PLC 历史学 三菱PLC
单片机 财务 会计 法律 行政 物理 物流范文 电子商务 制药工程 包装工程 土木工程 材料科学 汉语言范文 欧姆龙PLC 电压表 松下PLC
计算机 化工 数电 工商 食品 德语 国贸范文 人力资源 教育管理 交通工程 市场营销 印刷工程 机电一体化 数控范文 变电站 文化产业

  • 网站首页|
  • 文档范文|
  • 人工降重|
  • 职称文章发表|
  • 合作期刊|
  • 范文下载|
  • 计算机范文|
  • 外文翻译|
  • 免费范文|
  • 原创范文|
  • 开题报告

联系方式

当前位置:范文同学网 -> 免费范文 -> 电子专业 -> 单片机电子秤设计软件程序清单
自动化文档范文| 电子机电范文| 测控技术范文| 通信专业范文| 电气工程范文| 通信工程范文| 电子信息工程范文| 免费自动化范文| 免费电子范文| 免费电气范文| 通信范文
·电气自动化原创文章范文 ·学前教育专业原创文章范文 ·国际经济贸易原创文章范文 ·药学专业原创文章范文 ·英语专业原创文章范文 ·公共事业管理原创文章范文
·金融专业原创文章范文 ·广播电视编导原创文章范文 ·电子商务专业原创文章范文 ·法律专业原创文章范文 ·工商管理原创文章范文 ·汉语言文学原创文章范文
·人力资源管理原创文章范文 ·摄影专业原创文章范文 ·心理学专业原创文章范文 ·教育管理原创文章范文 ·市场营销原创文章范文 ·计算机专业原创文章范文
·物流管理专业原创文章范文 ·小学教育专业原创文章范文 ·行政管理专业原创文章范文 ·土木工程管理原创文章范文 ·财务会计专业原创文章范文 ·信息管理信息系统原创范文
·新闻学专业原创文章范文 ·眼视光技术原创文章范文 ·播音与主持原创文章范文 ·广告学专业原创文章范文 ·表演专业原创文章范文 ·动画专业原创文章范文
·视觉传达设计原创文章范文 ·数控技术专业原创文章范文 ·录音艺术原创文章范文 ·光机电应用技术原创范文 ·机电一体化原创文章范文 ·印刷技术专业原创文章范文
·动漫设计与制作原创范文 ·软件技术专业原创文章范文 ·书法学专业原创文章范文 ·应用电子技术原创文章范文 ·电子信息工程技术原创范文 ·机械专业原创文章范文
·酒店管理专业原创文章范文 ·旅游管理专业原创文章范文 ·文化产业管理专业原创范文 ·体育教育专业原创文章范文 ·通信工程专业原创文章范文 ·护理专业原创文章范文

本专业推荐:带proteus仿真程序的文档设计范文  原创文档范文点击进入 → 自动化单片机相关的原创文档范文

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

本文ID:LW10258 ¥
程序清单 ;定义 中文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 DAT..

程序清单
;定义  中文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
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  "
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         ; 第二行显示
         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
 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
 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
                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
;=======================================================
;键盘设定阈值子程序
;=======================================================
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
                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
                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
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次
               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
                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
                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
                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
 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
                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
                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
;=======================================================
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
         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                ; 功能设定
                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
                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            ; 送显示
                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
            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
                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
;=========================================
;清除 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
                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
 

单片机电子秤设计软件程序清单相关范文
上一篇:基于DSP的语音处理系统的设计 下一篇:[免费设计]三相正弦波变频电源的..
点击查看关于 单片机 电子 设计软件 程序 清单 的相关范文题目 【返回顶部】
精彩推荐
电气工程自动化原创范文  电子商务原创文章范文
人力资源专业原创文章范文 土木工程原创文章范文
工商管理专业原创范文    药学专业原创范文
汉语言文学专业原创范文  会计专业原创文章范文
计算机技术原创文章范文  金融学原创文章范文
法学专业原创文章范文   市场营销专业原创范文
信息管理专业原创文章范文 学前教育专业原创范文
公共事业管理专业原创范文 英语专业原创范文
教育管理专业原创范文   行政管理专业原创范文
热门范文

关于我们 | 联系方式 | 范文说明 | 网站地图 | 免费获取 | 钻石会员 | 硕士文章范文


范文同学网提供文档范文,原创文章范文,网站永久域名www.lunwentongxue.com ,lunwentongxue-范文同学网拼音首字母组合

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 17304545@qq.com

Copyright@ 2009-2024 范文同学网 版权所有