⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dianyabiao.asm

📁 利用单片机的压频转换,利用频率从而测量电压的大小.
💻 ASM
字号:
 ;****************************************************************
 ;本电压表可测量0~40v的电压,精确到个位。
 ;测量方法:利用LM331进行压频转换,公式如下:
 ;          f0= Vin*R2/2.09*R8*R13*C5
 ;          则   f0=Vin*10000000/14212
 ; 所以,只要我们能测出在1421.2us内,有多少个f0,就是要测的电压 !
 ;此方法简单巧妙,读者可仔细体会其中的转换关系!!!
 ;将频率接到T1引脚上就可以进行测量了!!!
 ;*****************************************************************
         ORG 0000H
         AJMP BEGIN
         ORG 000BH
         AJMP COUNT0
         ORG 0030H
 BEGIN:  MOV R1,#40H
         CLR 00H
         MOV SP,#50H
         MOV IE,#82H                ;开T0中断,T1只用来计数,不产生中断
         MOV TMOD,#51H              ;T0为定时器,T1为计数器
         MOV TH0,#0FAH              ;T0定时1421us
         MOV TL0,#73H
         MOV TH1,#0                 ;T1所计的个数便是电压的值
         MOV TL1,#0
         MOV 14H,#0EH               ;动态显示的驱动位在开机时的状态
         MOV 15H,#0FH               ;即只显示个位
         MOV 16H,#0FH
         MOV 17H,#0FH
   LOOP: CLR P1.0                   ;  设置行编码"1110"
         SETB P1.1
         SETB P1.2
         SETB P1.3
         JB P1.4,NEXT1              ;判断"1"键是否按下
         ACALL DLY20MS              ; 延时去抖
     K0: JB P1.4,K00                ; 等待"1"键释放
         AJMP K0
    K00:  JB 00H,PUTOFF             ;电压表的开关
          SETB 00H
   NEXT1: JNB 00H,BACK              ;当00H位为1时,动态显示开
          MOV TCON,#50H             ;开计数器
          MOV @R1,14H                ;动态显示数据显示输入时由右向左显示频率
          MOV A,10H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
          MOV @R1,15H
          MOV A,11H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
          MOV @R1, 16H
          MOV A,12H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
          MOV @R1,17H
          MOV A,13H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
          MOV A,#0F0H
          MOV DPTR,#6000H
          MOVX @DPTR,A
  BACK:   SJMP LOOP
  PUTOFF: CLR 00H
          SJMP LOOP



            ORG 0100H
 COUNT0:    PUSH ACC               ;保护A
            MOV TCON,#00H          ;关两个计数器
            MOV A,TL1              ;取计数值进A中等待处理
            MOV B,#10
            DIV AB
            MOV 10H,B              ;电压值个位进10H
            MOV 11H,A              ;十位进11H,由动态显示窗口显示
            MOV 15H,#0D0H
            MOV TL1,#0             ;计数器清零
            MOV TH0,#0FAH          ;T0定时1421us
            MOV TL0,#73H
            MOV TCON,#50H          ;开两个计数器
            POP ACC
            RETI


DLY20MS: MOV 22H,#70H              ; 延时20毫秒子程序       *******占用资源22h,23h****************
    DY1: MOV 23H,#69H
    DY2: DJNZ 23H,DY2
         DJNZ 22H,DY1
         RET
         END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -