找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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, 下载次数: 57)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:282520 发表于 2023-4-21 10:50 | 只看该作者
请问一下没有仿真文件出来啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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