找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5007|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

89C51單片機(jī)PWM仿真及源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:265818 發(fā)表于 2017-12-24 12:05 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
89C51PWM控制,包含源程序,仿真圖
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. PWMH DATA 30H ;高電平脈沖的個(gè)數(shù)
  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 ;定時(shí)器0在模式2下工作
  16.         MOV TL0,#38H ;定時(shí)器每200us產(chǎn)生一次溢出
  17.         MOV TH0,#38H ;自動(dòng)重裝的值
  18.         SETB ET0 ;使能定時(shí)器0中斷
  19.         SETB EA ;使能總中斷
  20.         SETB TR0 ;開始計(jì)時(shí)
  21. KSCAN:
  22.         JNB P1.1,K1CHECK ;掃描KEY1,
  23.         JNB P1.2,K2CHECK ;掃描KEY2,如果按下KEY2,跳轉(zhuǎn)到KEY2處理程序
  24.         SJMP KSCAN

  25. K1CHECK:
  26.         JB P1.1,K1HANDLE ;去抖動(dòng),如果按下KEY1,跳轉(zhuǎn)到KEY1處理程序
  27.         SJMP K1CHECK
  28. K1HANDLE:
  29.         MOV A,PWMH
  30.         CJNE A,PWM,K1H0 ;判斷是否到達(dá)上邊界
  31.         SJMP KSCAN ;是,則不進(jìn)行任何操作
  32. K1H0:
  33.         MOV A,PWMH
  34.         INC A
  35.         CJNE A,PWM,K1H1 ;如果在加1后到達(dá)最大值
  36.         CLR TR0 ;定時(shí)器停止
  37.         SETB P1.0 ;P1.0為高電平
  38.         SJMP K1H2
  39. K1H1:
  40.         CJNE A,#02H,K1H2 ;如果加1后到達(dá)下邊界
  41.         SETB TR0 ;重開定時(shí)器
  42. K1H2:
  43.         INC PWMH ;增加占空比
  44.         SJMP KSCAN

  45. K2CHECK:
  46.         JB P1.2,K2HANDLE ;去抖動(dòng),如果按下KEY2,跳轉(zhuǎn)到KEY2處理程序
  47.         SJMP K2CHECK
  48. K2HANDLE:
  49.         MOV A,PWMH
  50.         CJNE A,#01H,K2H0 ;判斷是否到達(dá)下邊界
  51.         SJMP KSCAN ;是,則不進(jìn)行任何操作
  52. K2H0:
  53.         MOV A,PWMH
  54.         MOV TEMP,PWM
  55.         DEC A
  56.         CJNE A,#01H,K2H1 ;如果在減1后到達(dá)下邊界
  57.         CLR TR0 ;定時(shí)器停止
  58.         CLR P1.0 ;P1.0為低電平
  59.         SJMP K2H2
  60. K2H1:
  61.         DEC TEMP
  62.         CJNE A,TEMP,K2H2 ;如果到達(dá)上邊界
  63.         SETB TR0 ;啟動(dòng)定時(shí)器
  64. K2H2:
  65.         DEC PWMH ;降低占空比
  66.         SJMP KSCAN


  67. INTT0:
  68.         PUSH PSW ;現(xiàn)場(chǎng)保護(hù)
  69.         PUSH ACC
  70.         INC COUNTER ;計(jì)數(shù)值加1
  71.         MOV A,COUNTER
  72.         CJNE A,PWMH,INTT01 ;如果等于高電平脈沖數(shù)
  73. ……………………

  74. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
89C51PWM.zip (46.45 KB, 下載次數(shù): 60)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:282520 發(fā)表于 2023-4-21 10:50 | 只看該作者
請(qǐng)問(wèn)一下沒(méi)有仿真文件出來(lái)啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表