找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6261|回复: 4
收起左侧

单片机实现直流电机调速汇编语言源程序+电路

[复制链接]
ID:463114 发表于 2019-1-6 16:50 | 显示全部楼层 |阅读模式
1在键盘上输入数字,可以在数码管上循环左移显示。
2直流电机控制:在键盘定义功能键,包括正转键,反转键,速度设定键,复位键。可以实现按下速度设定键,然后用数字键输入速度,并在数码管上显示这一数字,然后按下正转或者反转键,直流电机开始按照这一速度正转或者反转,同时在数码管上显示目前运行时输出的电压。按下复位键,电机按照原运转方向相反的方向倒转回到原位。
(附件分别为两个的汇编程序)
捕获1.PNG 捕获.PNG

单片机源程序如下:
  1.              ;直流电机调速实验

  2. ;实验连线
  3. ;1) DA0832单元的CS连接端口地址300CS
  4. ;2) DA0832单元的AOUT连接直流电机INV

  5. CS0832  EQU 0300H
  6. CS8279C equ 0fff1h
  7. CS8279D equ 0fff0h
  8. DA0V    EQU 000H
  9. DA2V5   EQU 07FH
  10. DA5V    EQU 0fFH
  11. led0 equ 0fff0h
  12. led1 equ 0fff1h
  13.         org 0
  14. mloop:  ; mov dptr,#CS0832
  15.            MOV SP,#40H
  16.   
  17. ;------------------------
  18. ;    初态送显示缓冲区
  19. ;------------------------
  20.   xmos:   mov r0,#30h
  21.            mov a,#10h
  22.   x35s:   mov @r0,a
  23.         inc r0
  24.         cjne r0,#36h,x35s
  25.         inc a
  26.         mov @r0,a
  27. ;-----------------------------
  28. ;     扫描待令入口区
  29. ;-----------------------------


  30.   xmon:    mov r1,#30h
  31.            call dikey        ;调显示键扫
  32.            cjne a,#10h,next  ;判数字键还是功能键
  33.   next:    cjne a,#20h,next1
  34.            sjmp xmon
  35.   next1:   cjne r1,#10h,krds
  36.   keep:    jNb p1.0,L0
  37.            jNb p1.1,L1
  38.            jNb p1.2,L2
  39.   krds:    jnc krdy           ;转功能键处理
  40. ;----------------------------
  41. ;    功能键处理入口
  42. ;-----------------------------
  43.   krdy:    mov dptr,#CKEY
  44.            anl a,#03h
  45.            clr c
  46.            rl a
  47.            mov r2,a
  48.            inc a
  49.            movc a,@a+dptr
  50.            push acc
  51.            mov a,r2
  52.            movc a,@a+dptr
  53.            push acc
  54.            ret  
  55. ;-----------------------------
  56. ;    速度设置键入口
  57. ;------------------------------

  58.   VSET:    mov r1,#30h
  59.            call dikey
  60.            cjne a,#20h,ste1
  61.            sjmp VS
  62.    ste1:   mov @r1,a
  63.            call diled
  64.            ljmp xmon
  65. ;----------------------------
  66. ;    反转键处理入口
  67. ;----------------------------

  68. LEFT:      mov dptr,#CS0832
  69.            mov r1,#30h
  70.            mov a,#DA0V
  71.            cjne @r1,#10h,qia1
  72.            sjmp qia2
  73.     qia1:  mov a,#0fh
  74.            mov b,@r1
  75.            mul ab
  76.     qia2:  movx @dptr,a
  77.            acall disp0
  78.            clr p1.0
  79.            setb p1.1
  80.            setb p1.2
  81.            ljmp mloop
  82. ;----------------------------
  83. ;    正转键处理入口
  84. ;----------------------------
  85.       
  86.         
  87. RIGHT:     mov dptr,#CS0832
  88.            mov r1,#30h
  89.            mov a,#DA5V
  90.            cjne @r1,#10h,qia3
  91.            sjmp qia4
  92.   qia3:    mov a,#0fh
  93.            mov b,@r1
  94.            mul ab
  95.            add a,#7fh

  96.   qia4:    movx @dptr,a
  97.            clr p1.1
  98.            setb p1.0
  99.            setb p1.2
  100.            acall disp1
  101.            ljmp mloop
  102. ;----------------------------
  103. ;    停止键处理入口
  104. ;----------------------------
  105.         
  106.         
  107.         
  108. STOP:      mov dptr,#CS0832
  109.            mov a,#DA2V5
  110.            movx @dptr,a
  111.            clr p1.2
  112.            setb p1.1
  113.            setb p1.0
  114.            acall disp1
  115.            ljmp mloop

  116. ;-----------------------
  117. ;     刷新显示子程序
  118. ;-----------------------
  119. diled:     mov r1,#35h        ;从高位开始
  120.            mov 38h,#80h
  121. dilex:     mov dptr,#led1     ;送字位代码
  122.            mov a,38h
  123.            movx @dptr,a
  124.            mov dptr,#ZOE0     ;索字形代码
  125.            mov a,@r1
  126.            movc a,@a+dptr
  127.            mov dptr,#led0     ;送当前字形
  128.            movx @dptr,a
  129.            inc 38h
  130.            dec r1
  131.                   cjne r1,#2fh,dilex ;末满六位转
  132.            Ret
  133. ;-----------------------
  134. ;    键盘扫描子程序
  135. ;-----------------------
  136. dikey:     mov r4,#00h        ;设査键次数
  137. dikrd:     mov dptr,#led1     ;指状态端口
  138.            movx a,@dptr       ;索键盘标志
  139.            anl a,#07h         ;屏敝无效位
  140.            jnz keys           ;有键按下转
  141.            djnz r4,dikrd      ;末完继续査
  142.            mov a,#20h         ;定义无键码
  143.            ret                ;返回
  144. keys:      mov dptr,#led0     ;指键入端口
  145.            movx a,@dptr       ;读当前键码
  146.            mov r2,a           ;存当前键码
  147.            anl a,#03h         ;保留低二位
  148.            xch a,r2           ;取当前键码
  149.            anl a,#38h         ;舍弃无效位
  150.            rr a               ;键码的压缩
  151.            orl a,r2           ;与低二拼接
  152.            mov dptr,#GOJZ     ;指键码表首
  153.            movc a,@a+dptr     ;索取键码值
  154.            ret                ;返回
  155. ;------------------------
  156. ;    电压显示子程序
  157. ;------------------------



  158. disp0:
  159.           xrl a,#0FFh
  160.           clr c
  161.           subb a,#7Fh
  162.           mov r7,a
  163.           mov r2,#85h
  164.           mov r0,#11
  165.           mov dptr,#CS8279C
  166.           mov a,r2
  167.           movx @dptr,a
  168.           mov dptr,#ledmap    ;指字形表首
  169.           mov a,r0               ;取送显数据
  170.           movc a,@a+dptr       ;索字形代码
  171.           mov dptr,#CS8279D   ;指向字形口
  172.           movx @dptr,a        ;送当前字形
  173.           mov b,#50
  174.           mov a,r7
  175.           div ab
  176.           mov r0,a
  177.           dec r2
  178.           mov dptr,#CS8279C
  179.           mov a,r2
  180.           movx @dptr,a
  181.           mov dptr,#ledmap    ;指字形表首
  182.           mov a,r0               ;取送显数据
  183.           movc a,@a+dptr       ;索字形代码
  184.           mov dptr,#CS8279D   ;指向字形口
  185.           movx @dptr,a        ;送当前字形
  186.           dec r2
  187.           mov r0,#10
  188.           mov dptr,#CS8279C
  189.           mov a,r2
  190.           movx @dptr,a
  191.           mov dptr,#ledmap    ;指字形表首
  192.           mov a,r0            ;取送显数据
  193.           movc a,@a+dptr       ;索字形代码
  194.           mov dptr,#CS8279D   ;指向字形口
  195.           movx @dptr,a        ;送当前字形
  196.           dec r2
  197.           mov a,#5
  198.           xch a,b
  199.           div ab
  200.           mov r0,a
  201.           mov dptr,#CS8279C
  202.           mov a,r2
  203.           movx @dptr,a
  204.           mov dptr,#ledmap    ;指字形表首
  205.           mov a,r0            ;取送显数据
  206.           mov dptr,#CS8279D   ;指向字形口
  207.           movx @dptr,a        ;送当前字形
  208.           dec r2
  209.           mov dptr,#CS8279C
  210.           mov a,r2
  211.           movx @dptr,a
  212.           mov dptr,#ledmap    ;指字形表首
  213.         mov a,b            ;取送显数据
  214.         movc a,@a+dptr       ;索字形代码
  215.         mov dptr,#CS8279D   ;指向字形口
  216.         movx @dptr,a        ;送当前字形
  217.         ret
  218. disp1:  clr c
  219.         subb a,#7Fh
  220.         mov r7,a
  221.         mov r2,#85h
  222.         mov r0,#0
  223.         mov dptr,#CS8279C
  224.         mov a,r2
  225.         movx @dptr,a
  226.         mov dptr,#ledmap    ;指字形表首
  227.         mov a,r0            ;取送显数据
  228.         movc a,@a+dptr      ;索字形代码
  229.         mov dptr,#CS8279D   ;指向字形口
  230.         movx @dptr,a        ;送当前字形
  231.         mov b,#50
  232.         mov a,r7
  233.         div ab
  234.         mov r0,a
  235.         dec r2
  236.         mov dptr,#CS8279C
  237.         mov a,r2
  238.         movx @dptr,a
  239.         mov dptr,#ledmap    ;指字形表首
  240.         mov a,r0             ;取送显数据
  241.         movc a,@a+dptr       ;索字形代码
  242.         mov dptr,#CS8279D   ;指向字形口
  243.         movx @dptr,a        ;送当前字形
  244.         dec r2
  245.         mov r0,#10
  246.         mov dptr,#CS8279C
  247.         mov a,r2
  248.         movx @dptr,a
  249.         mov dptr,#ledmap    ;指字形表首
  250.         mov a,r0            ;取送显数据
  251.         movc a,@a+dptr       ;索字形代码
  252.         mov dptr,#CS8279D   ;指向字形口
  253.         movx @dptr,a        ;送当前字形
  254.         dec r2
  255.         mov a,#5
  256.         xch a,b
  257.         div ab
  258.         mov r0,a
  259.         mov dptr,#CS8279C
  260.         mov a,r2


  261.         movx @dptr,a
  262.         mov dptr,#ledmap    ;指字形表首
  263.         mov a,r0            ;取送显数据
  264.         movc a,@a+dptr       ;索字形代码
  265.         mov dptr,#CS8279D   ;指向字形口
  266.         movx @dptr,a        ;送当前字形
  267.         dec r2
  268.         mov dptr,#CS8279C
  269.         mov a,r2
  270.         movx @dptr,a
  271.         mov dptr,#ledmap    ;指字形表首
  272.         mov a,b            ;取送显数据
  273.         movc a,@a+dptr       ;索字形代码
  274.         mov dptr,#CS8279D   ;指向字形口
  275.         movx @dptr,a        ;送当前字形
  276.    
  277.         ret
  278.    




  279. ledmap: db 0ch,9fh,4ah,0bh,99h,29h,28h,8fh  ;01234567
  280.         db 08h,09h,0f7h,0fbh,6ch,1ah,68h,0e8h ;89ABCDEF



  281. ;------------------------
  282. ;-------功能键定义
  283. CKEY:  dw LEFT,RIGHT,STOP,VS
  284. ;------字形代码
  285. ZOE0:   DB 0ch,9fh,4ah,0bh,99h,29h,28h,8fh,08h,09h,88h
  286. ;          0   1   2   3   4   5   6   7   8   9   a
  287.         DB 38h,6ch,1ah,68h,0e8h,0ffh,0c0h
  288. ;          b   c   d   e   f    关闭  p.
  289. ;------按键代码(20h为溢出码)
  290. GOJZ:   db 13h,12h,11h,10h,0dh,0ch,0bh,0ah,0eh,03h   ;0~9
  291.         db 06h,09h,0fh,02h,05h,08h,00h,01h,04h,07h   ;a~13
  292.         db 20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h;



  293.         END
复制代码

所有资料51hei提供下载:
汇编程序.rar (3.34 KB, 下载次数: 35)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:74784 发表于 2019-1-6 17:05 | 显示全部楼层
有换向功能吗?
回复

使用道具 举报

ID:7485 发表于 2019-1-6 20:08 | 显示全部楼层
本帖最后由 ahshmj 于 2019-1-7 00:35 编辑

这个电路和程序现在基本上没人会再用了。

在单片机普及应用之前,由于受技术和成本的影响,多使用8031单片机。由于这种单片机没有片内ROM,所以必须外挂并行ROM(当时没有串行ROM)。这样就必须占用P0和P2口,这样一来往往是IO不够用,所以就有了8279这种专门配套数码管显示+键盘功能的芯片,其功能非常强大。
8031+ROM+8279+373等必须的电路,构成一个叫做“单板机”的系统。

楼主给出的图还仅仅是8279的电路部分,其他的8031、74ls373、ROM等,还包括程序中出现的0832等都在另外的电路图中。
、从楼主给出的电路图可以看出其电路相当的复杂,现在一般很少用了。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:164988 发表于 2019-1-6 20:22 | 显示全部楼层
下载后解压缩时提示:这个文件压缩格式未知或文件已被破坏     没有找到压缩文件
回复

使用道具 举报

ID:164988 发表于 2019-1-6 20:25 | 显示全部楼层
压缩文件下载后,解压不了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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