找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 751|回复: 8
打印 上一主题 下一主题
收起左侧

大佬能不能帮萌新看下汇编温测程序,仿真数码管没动静

[复制链接]
跳转到指定楼层
楼主


我的仿真图也改了下,用的共阳极数码管,自己也用了别的显示程序测了,没得问题。但是我程序一仿真数码管就没得动静
  1. TEMP_ZH EQU 30H       ;温度存放单元
  2. TEMPL   EQU        25H                  ;低字节存放
  3. TEMPH   EQU 26H       ;高字节存放
  4. TEMP_TH EQU 27H                  ;高温报警温度
  5. GEW     EQU 24H       ;定义个位
  6. SHI     EQU 23H       ;定义十位
  7. BAI     EQU 22H       ;定义百位

  8. K1      EQU P1.0
  9. K2      EQU P1.1
  10. K3      EQU P1.2

  11. BUZ     EQU P2.4          ;蜂鸣
  12. FLAG    EQU 21H.0          ;温度传感器标志位
  13. DQ      EQU P3.3

  14. ;******************主程序************************
  15.         ORG   0000H
  16.                 SJMP  START
  17.                 ORG   0030H
  18. START:  MOV   SP,   #60H
  19.                 MOV   P0,   #0FFH  ;让p0输出高电平,熄灭数码管
  20.                 MOV   P2,        #0FFH
  21.                 MOV   R7,   #0   
  22. MIAN:   MOV   TEMP_TH, #85 ;设立高温报警温度为85
  23. LOOP4:  ACALL RESET        ;18B20复位程序
  24. LOOP1:        JNB   FLAG, LOOP4
  25. LOOP:        ACALL ZXD                   ;调用读取温度子程序
  26.                 ACALL TURN                   ;调用数据转化程序
  27.                 ACALL DISPLAY           ;调用显示程序
  28. LOOP2:        ACALL KEY                   ;调用键盘
  29.                 INC   TEMP_ZH
  30.                 JMP   LOOP

  31. ;*******************DS18B20复位初始化程序************************
  32. RESET:  SETB  DQ
  33.         NOP
  34.                 NOP
  35.                 CLR   DQ
  36.                 MOV   R1,   #3
  37. DLY:    MOV   R0,   #107
  38.         DJNZ  R0,   $
  39.                 DJNZ  R1,   DLY                ;延时648μs程序
  40.                 SETB  DQ                         ;拉高数据线
  41.                 NOP
  42.                 NOP
  43.                 NOP
  44.                 MOV   R0,   #25H
  45. T2:     JNB   DQ,   T3
  46.         DJNZ  R0,   T2
  47.                 JMP   T4
  48. T3:     SETB  FLAG
  49.         JMP   T5
  50. T4:     CLR   FLAG
  51.         JMP   T7
  52. T5:     MOV   R0,   #249
  53. T6:     DJNZ  R0,   T6
  54. T7:     SETB  DQ
  55.         RET
  56. ;*************************温度读写指令**************************
  57. ZXD:    MOV   SP,   #60H
  58.         JNB   FLAG, ZXD
  59.         ACALL RESET                          
  60.                 MOV   A,    #0CCH          ;跳过rom指令
  61.                 ACALL WRITE
  62.                 MOV   A,    #44H          ;温度转换指令
  63.                 ACALL WRITE
  64.                 MOV   R2,   #6
  65. DLY1:        MOV   R1,   #255
  66. DLY2:        MOV   R0,   #255
  67.         DJNZ  R0,   $
  68.                 DJNZ  R1,   DLY2
  69.                 DJNZ  R2,   DLY1          ;延时780ms
  70.                 ACALL RESET
  71.                 MOV   A,    #0CCH
  72.                 ACALL WRITE
  73.                 MOV   A,    #0BEH          ;读取寄存器指令
  74.                 ACALL WRITE
  75.                 ACALL READ                          ;读取温度
  76.                 RET



  77. ;*************************写入DS18B20程序***********************
  78. WRITE:  MOV   R2,   #8                 ;一共8位数据
  79.         CLR   C
  80. WR1:        CLR   DQ
  81.                 MOV   R3,   #6
  82.                 DJNZ  R3,   $
  83.                 RRC   A                                 ;右移A将数据给C
  84.                 MOV   DQ,    C                 ;写入一个位
  85.                 MOV   R0,   #23
  86.                 DJNZ  R0,   $
  87.                 SETB  DQ
  88.                 NOP
  89.                 DJNZ  R2,   WR1                 ;循环8次
  90.                 SETB  DQ
  91.                 RET

  92. ;************************读DS18B20程序****************************
  93. READ:   MOV   R4,   #2   
  94.         MOV   R1,   #TEMPL   ;将25H,26H写入
  95. RE0:    MOV   R2,   #8
  96. RE1:    CLR   C
  97.         SETB  DQ
  98.                 NOP
  99.                 NOP
  100.                 CLR   DQ
  101.                 NOP
  102.                 NOP
  103.                 NOP
  104.                 SETB  DQ                          ;拉高数据线
  105.                 MOV   R3,   #9
  106.                 DJNZ  R3,   [        DISCUZ_CODE_1        ]nbsp;                 
  107.                 MOV   C,    DQ
  108.                 MOV   R3,   #23      
  109.                 DJNZ  R3,   [        DISCUZ_CODE_1        ]nbsp;             ;等待50us
  110.                 RRC   A
  111.                 DJNZ  R2,   RE1                  ;读下个位
  112.                 MOV   @R1,  A
  113.                 INC   R1
  114.                 DJNZ  R4,   RE0
  115.                 RET                                                                          

  116. ;************************数据转化程序******************************
  117. TURN:   ANL   26H,  #07H          ;取后3位
  118.         ANL   25H,  #0F0H          ;取前4位
  119.                 MOV   A,    25H
  120.                 ORL   26H,  A
  121.                 MOV   A,    26H
  122.                 SWAP  A                           ;高低互换
  123.                 MOV   TEMP_ZH,  A
  124.                 RET

  125. ;*************************温度比较及报警**********************************
  126. BJ:     MOV   A,    TEMP_TH         
  127.         SUBB  A,    TEMP_ZH
  128.                 JC    TCL
  129.                 JNC   TCL1
  130.                 RET
  131. TCL1:   CLR   BUZ
  132.         RET
  133. TCL:    SETB  BUZ
  134.         RET
  135.                                                                   
  136.                   
  137.                                                                                                                
  138. ;************************显示程序***************************************
  139. DISPLAY:MOV   A,         TEMP_ZH
  140.         MOV   B,    #100
  141.                 DIV   AB                       ;商送A,余送B
  142.                 MOV   BAI,   A
  143.                 MOV   A,     B
  144.                 MOV   B,    #10
  145.                 DIV   AB
  146.                 MOV   SHI,   A
  147.                 MOV   GEW,    B
  148.                 MOV   DPTR, #TAB
  149.                 MOV   A,     BAI
  150.                 MOVC  A,     @A+DPTR
  151.                 MOV   P0,    A
  152.                 CLR   P2.0
  153.                 ACALL DELAY
  154.                 SETB  P2.0
  155.                 MOV   A,     SHI
  156.                 MOVC  A,     @A+DPTR
  157.                 MOV   P0,    A
  158.                 CLR   P2.1
  159.                 ACALL DELAY
  160.                 SETB  P2.1
  161.                 MOV   A,     GEW
  162.                 MOVC  A,     @A+DPTR
  163.                 MOV   P0,    A
  164.                 CLR   P2.2
  165.                 ACALL DELAY
  166.                 SETB  P2.2
  167.                 MOV   P0,    #39H          ;显示c代码
  168.                 CLR   P2.3
  169.                 ACALL DELAY
  170.                 SETB  P2.3
  171.                 ACALL BJ      
  172.                 JB    K1,    LOOP3
  173.                 JB    K2,    JIAN
  174.                 JB    K3,    JIA                  
  175.                 SJMP  DISPLAY
  176. LOOP3:  LJMP  LOOP2

  177. ;**********************显示段码(共阳)*********************
  178. TAB:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  179. ;*****************************小延时程序***********************************
  180. DELAY:  MOV   R0,    #25
  181. A1:     MOV   R1,    #20
  182. A2:     DJNZ  R1,         A2
  183.         DJNZ  R0,    A1
  184.                 RET
  185.                  
  186.                  

  187. ;****************************键盘程序***************************************
  188. KEY:    CJNE  R7,#00H,HD
  189.                RET
  190. JIAN:   DEC   TEMP_ZH                  ;TEMP_ZH位地址减一
  191.         INC   R7
  192.                 ACALL DISPLAY
  193. JIA:    INC   TEMP_ZH         ;TEMP_ZH位地址加一
  194.         DEC   R7
  195.                 ACALL DISPLAY
  196.                 RET
  197. HD:     INC   TEMP_ZH
  198.         DJNZ  R7,    HD
  199.                 RET
  200.                 END      

复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:96682 发表于 2019-5-30 06:14 | 只看该作者
电路图有误,元器件连线选择及数值不恰当
回复

使用道具 举报

板凳
ID:415123 发表于 2019-5-30 10:09 | 只看该作者
程序我没看,但你的硬件电路有问题。按照原理图,每一段使用高电平来驱动,那么你使用的是共阴数码管。可是你的共阴驱动管却是使用了PNP管,三极管永远不会工作,数码管也就不会点亮。你换一个NPN管也许就亮了
回复

使用道具 举报

地板
ID:515805 发表于 2019-5-30 10:16 | 只看该作者
wc86110 发表于 2019-5-30 06:14
电路图有误,元器件连线选择及数值不恰当

能不能具体指导一下,模电什么的没学明白,很多地方瞎弄的
回复

使用道具 举报

5#
ID:401564 发表于 2019-5-30 10:30 | 只看该作者
仿真无意义,直接上开发板
自下向上编程,先把显示部分写好,可以正常显示了再去写温度部分
你的电路不对,上拉和限流只选一种就可以了,有上拉电阻就不要限流电阻
有限流电阻就可以不需要上拉电阻,自己再把电路搞对了再编程
回复

使用道具 举报

6#
ID:515805 发表于 2019-5-30 10:54 | 只看该作者
wc86110 发表于 2019-5-30 06:14
电路图有误,元器件连线选择及数值不恰当

您好,是把三极管那的电阻改成4.7k吗?还是别的,能不能稍微讲细一点
回复

使用道具 举报

7#
ID:542241 发表于 2019-5-30 11:31 | 只看该作者
原理图有问题的,数码管驱动那部分,需要明确是数码管的驱动类型
回复

使用道具 举报

8#
ID:515805 发表于 2019-5-30 12:00 | 只看该作者
Y_G_G 发表于 2019-5-30 10:30
仿真无意义,直接上开发板
自下向上编程,先把显示部分写好,可以正常显示了再去写温度部分
你的电路不对,上 ...

好的,谢谢。我自己改了下,现在温度显示部分算是解决了吧。
回复

使用道具 举报

9#
ID:517466 发表于 2019-5-30 14:22 | 只看该作者
上拉电阻和限流电阻共存没有问题,看你的电路,不显示的原因,应该是限流电阻的大小,设成330欧姆,保证P0口输出0、P2.0/P2.1/P2.2/P2.3中某位输出0时,对应的数码管的笔段能流过10mA的电流,就能点亮数码管。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表