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

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)產(chǎn)生可變占空比的pwm波Proteus仿真與源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
用51單片機(jī)產(chǎn)生可變占空比的pwm波,并在LCD上顯示波形

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include "1602.h"
  5. #include "delay.h"
  6. #include "key.h"
  7. #include "pwm.h"

  8. // 報(bào)警燈
  9. sbit LED_BLOW = P1^2;
  10. sbit LED_PVER = P1^3;
  11. extern count;
  12. unsigned char DisTempData[16];

  13. int last_state = 0;

  14. #define MAX_DUTY 80
  15. #define MIN_DUTY 20

  16. main()
  17. {
  18.     // LCD 初始化
  19.     lcd_init();

  20.     // 顯示
  21.     print_string("kemao");

  22.     // PWM初始化
  23.     timer0_init();

  24.     // 初始化為50%
  25.     count = 5;
  26.        
  27.         // 初始化LED
  28.           LED_BLOW = 0;
  29.     LED_PVER = 0;
  30.           key1 = 1;
  31.           key2 = 1;

  32.     while(1)
  33.     {

  34.         // 按鍵掃描
  35.         switch(scan())
  36.         {
  37.         case 1:
  38.             count++;
  39.             break;
  40.         case 2:
  41.             count--;
  42.             break;
  43.         default:
  44.             break;
  45.         }

  46.         // 邊界處理
  47.         if (count > 10)
  48.         {
  49.             count = 10;
  50.         }
  51.         if (count < 0)
  52.         {
  53.             count = 0;
  54.         }


  55.         // 占空比閾值判斷
  56.         if (last_state != count)
  57.         {
  58.             // 大于閾值
  59.             if (count*10 > MAX_DUTY)
  60.             {
  61.                 write_com(0x01);     //screen clear
  62.                 print_string("kemao--over");
  63.                                 LED_BLOW = 0;
  64.                                 LED_PVER = 1;
  65.             }
  66.             // 小于閾值
  67.             else if (count*10 < MIN_DUTY)
  68.             {
  69.                 write_com(0x01);     //screen clear
  70.                 print_string("kemao--blow");
  71.                                 LED_BLOW = 1;
  72.                                 LED_PVER = 0;

  73.             }
  74.             // 正常
  75.             else
  76.             {
  77.                 write_com(0x01);     //screen clear
  78.                 print_string(" keamo--ok");
  79.                                 LED_BLOW = 1;
  80.                                 LED_PVER = 1;
  81.             }

  82.             sprintf(DisTempData,"DUTY = %d ",count*10);//打印輸出結(jié)果
  83.             write_com(0xc0);    //DDRAM AD set to 00h,
  84.             print_string(DisTempData);

  85.         }

  86.         last_state = count;


  87.     }
  88. }
復(fù)制代碼

所有資料51hei提供下載:
protues仿真.rar (38.02 KB, 下載次數(shù): 127)
keil程序.rar (35.39 KB, 下載次數(shù): 93)
電路原理圖.rar (123.25 KB, 下載次數(shù): 49)




評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:851900 發(fā)表于 2021-3-29 16:45 | 只看該作者
已下載,要是和keil程序一起打包就好了
回復(fù)

使用道具 舉報(bào)

板凳
ID:428114 發(fā)表于 2021-3-29 19:11 | 只看該作者
效果不好
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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