标题: 89C51单片机PWM仿真及源代码 [打印本页]

作者: 1613130717    时间: 2017-12-24 12:05
标题: 89C51单片机PWM仿真及源代码
89C51PWM控制,包含源程序,仿真图
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. PWMH DATA 30H ;高电平脉冲的个数
  2. PWM DATA 31H ;PWM周期
  3. COUNTER DATA 32H
  4. TEMP DATA 33H

  5. ORG 0000H
  6. AJMP MAIN
  7. ORG 000BH
  8. AJMP INTT0

  9. ORG 0100H
  10. MAIN:
  11.         MOV SP,#60H ;给堆栈指针赋初值
  12.         MOV PWMH,#02H ;
  13.         MOV COUNTER,#01H
  14.         MOV PWM,#15H
  15.         MOV TMOD,#02H ;定时器0在模式2下工作
  16.         MOV TL0,#38H ;定时器每200us产生一次溢出
  17.         MOV TH0,#38H ;自动重装的值
  18.         SETB ET0 ;使能定时器0中断
  19.         SETB EA ;使能总中断
  20.         SETB TR0 ;开始计时
  21. KSCAN:
  22.         JNB P1.1,K1CHECK ;扫描KEY1,
  23.         JNB P1.2,K2CHECK ;扫描KEY2,如果按下KEY2,跳转到KEY2处理程序
  24.         SJMP KSCAN

  25. K1CHECK:
  26.         JB P1.1,K1HANDLE ;去抖动,如果按下KEY1,跳转到KEY1处理程序
  27.         SJMP K1CHECK
  28. K1HANDLE:
  29.         MOV A,PWMH
  30.         CJNE A,PWM,K1H0 ;判断是否到达上边界
  31.         SJMP KSCAN ;是,则不进行任何操作
  32. K1H0:
  33.         MOV A,PWMH
  34.         INC A
  35.         CJNE A,PWM,K1H1 ;如果在加1后到达最大值
  36.         CLR TR0 ;定时器停止
  37.         SETB P1.0 ;P1.0为高电平
  38.         SJMP K1H2
  39. K1H1:
  40.         CJNE A,#02H,K1H2 ;如果加1后到达下边界
  41.         SETB TR0 ;重开定时器
  42. K1H2:
  43.         INC PWMH ;增加占空比
  44.         SJMP KSCAN

  45. K2CHECK:
  46.         JB P1.2,K2HANDLE ;去抖动,如果按下KEY2,跳转到KEY2处理程序
  47.         SJMP K2CHECK
  48. K2HANDLE:
  49.         MOV A,PWMH
  50.         CJNE A,#01H,K2H0 ;判断是否到达下边界
  51.         SJMP KSCAN ;是,则不进行任何操作
  52. K2H0:
  53.         MOV A,PWMH
  54.         MOV TEMP,PWM
  55.         DEC A
  56.         CJNE A,#01H,K2H1 ;如果在减1后到达下边界
  57.         CLR TR0 ;定时器停止
  58.         CLR P1.0 ;P1.0为低电平
  59.         SJMP K2H2
  60. K2H1:
  61.         DEC TEMP
  62.         CJNE A,TEMP,K2H2 ;如果到达上边界
  63.         SETB TR0 ;启动定时器
  64. K2H2:
  65.         DEC PWMH ;降低占空比
  66.         SJMP KSCAN


  67. INTT0:
  68.         PUSH PSW ;现场保护
  69.         PUSH ACC
  70.         INC COUNTER ;计数值加1
  71.         MOV A,COUNTER
  72.         CJNE A,PWMH,INTT01 ;如果等于高电平脉冲数
  73. ……………………

  74. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
89C51PWM.zip (46.45 KB, 下载次数: 60)



作者: 切了    时间: 2023-4-21 10:50
请问一下没有仿真文件出来啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1