找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC单片机制作磁悬浮程序

[复制链接]
跳转到指定楼层
楼主
ID:367238 发表于 2018-7-8 11:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. ;---------------------------------------------------------------------
  2. ;定义与 ADC 有关的特殊功能寄存器     
  3. ADC_CONTR           EQU     0C5H             ;A/D 转换控制寄存器
  4. ADC_DATA            EQU     0C6H             ;A/D 转换结果寄存器
  5. P1M0                EQU      91H             ;P1口模式寄存器0
  6. P1M1                EQU      92H             ;P1口模式寄存器1
  7. CCON                EQU     0D8H
  8. CMOD                EQU     0D9H
  9. CCAP0L             EQU     0EAH
  10. CCAP0H       EQU     0FAH
  11. CCAP1L       EQU     0EBH
  12. CCAP1H       EQU     0FBH
  13. CCAPM0       EQU     0DAH
  14. CCAPM1       EQU     0DBH
  15. PCA_PWM0     EQU     0F2H
  16. PCA_PWM1     EQU     0F3H
  17. CR                             EQU     0DEH
  18. CL                                  EQU     0E9H
  19. CH                                  EQU     0F9H       
  20. EPCA                          EQU     IE.6       
  21. ;---------------------------------------------------------------------

  22. ;---------------------------------------------------------------------
  23. main:
  24.            ; ACALL initiate_RS232
  25.                 SETB   P1.7                 ;将 P1 口置高, 为 A/D 转换作准备
  26.             ORL   ADC_CONTR, #80H            ;1000,0000 打开 A/D 转换电源
  27.             MOV   P1M0, #80H        
  28.                 MOV  CMOD,#82H
  29.                 MOV  CCON,#00H       
  30.                 MOV  CL,#00H       
  31.                 MOV  CH,#00H       
  32.                 MOV  CCAPM1,#42H       
  33.                 MOV  PCA_PWM1,#00H
  34.                 SETB  EPCA
  35.                 SETB  EA
  36.                 SETB  CR
  37.                   MOV  31H,#40H
  38. main_loop1:
  39.                   MOV   ADC_CONTR, #0E7H           ;1110,0000 清 ADC_FLAG, ADC_START 位和低 3 位
  40.       MOV   ADC_DATA, #00                ;清 A/D 转换结果寄存器  
  41.            ORL   ADC_CONTR, #08H            ;0000,1000 令 ADCS = 1, 启动A/D转换,  
  42. finishe:
  43.       MOV   A, #10H                    ;0001,0000 测试A/D转换结束否
  44.       ANL   A, ADC_CONTR
  45.       JZ    finishe
  46.       ANL   ADC_CONTR, #0E7H           ;1110,0111 清 ADC_FLAG 位, 停止A/D转换
  47.       MOV   A, ADC_DATA                ;保存、返回 A/D 转换结果
  48.       CLR  P3.7
  49.            clr c
  50.                 subb a,#60h
  51.            jc bhx
  52.            mov a,#0
  53.            ljmp fsw
  54. bhx:  MOV   A, ADC_DATA
  55.            clr c
  56.            subb a,31h
  57.            jnc fsw
  58.            mov a,#0

  59. fsw:        MOV  CCAP1H ,a;#0Ch       
  60.       MOV  CCAP1L ,a
  61.    
  62. JKW:  SJMP  main_loop1

  63. ;---------------------------------------------------------------------


  64. ;---------------------------------------------------------------------
  65. set_P1_IO_port:                      ;P1 口设置为普通 I/O 模式
  66.            MOV   P1M0, #00H
  67.       MOV   P1M0, #00H
  68.       ANL   ADC_CONTR, #7FH            ;0111,1111 关闭 A/D 转换电源
  69.       RET

  70. ;---------------------------------------------------------------------

  71. initiate_RS232:                      ;串口初始化
  72.      CLR   ES                         ;禁止串口中断
  73.      MOV   TMOD, #20H                 ;设置 T1 为波特率发生器
  74.      MOV   SCON, #50H                 ;0101,0000 8位数据位, 无奇偶校验
  75.      MOV   TH1, #0FDH                 ;11.0592MHz 晶振, 波特率 = 9600  
  76.      MOV   TL1, #0FDH
  77.      CLR   RI
  78.      SETB  TR1
  79.      SETB  ES                         ;允许串口中断
  80.      RET

  81. ;---------------------------------------------------------------------
  82. Send_Byte:                           ;发送一个字节
  83.      CLR   TI                         ;清零串口发送中断标志
  84.           ;mov a,ADC_DATA        
  85.      MOV   SBUF, A
  86. Send_Byte_wait:                      ;等待发送完毕
  87.      JNB   TI, Send_Byte_wait
  88.      CLR   TI                         ;清零串口发送中断标志
  89.      RET
  90. ;--------------------------------------------------------------------------

  91. ;---------------------------------------------------------------------
  92. delay:                               ;延时
  93.    
  94.      MOV   R4, #1
  95. delay_loop1:
  96.      MOV   R2, #18H
  97.      MOV   R3, #0
  98. delay_loop2:
  99.      DJNZ  R3, delay_loop2
  100.      DJNZ  R2, delay_loop2
  101.      DJNZ  R4, delay_loop1
  102.      RET
  103. ;---------------------------------------------------------------------
  104.      END
复制代码

所有资料51hei提供下载:
STC单片机做的上拉式磁悬浮程序.rar (1.71 KB, 下载次数: 59)


评分

参与人数 1黑币 +1 收起 理由
iritwq + 1 赞一个!

查看全部评分

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

使用道具 举报

沙发
ID:250359 发表于 2018-11-13 14:44 | 只看该作者
正在研究磁悬浮,好料,参考一下。谢谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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