51單片機模擬PWM調製控制實驗

来源:http://www.cnblogs.com/hughdong/archive/2017/05/24/6901078.html
-Advertisement-
Play Games

———————————————————————————————————————————— PWM(脈衝寬度調製) 對模擬信號電平進行數字編碼的方法 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...


————————————————————————————————————————————

PWM(脈衝寬度調製)

  • 對模擬信號電平進行數字編碼的方法

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

設計要求:

  • 由於AT89系列單片機沒有PWM控制器,所以通過定時器產生PWM
  • 通過按鈕控制P2.0輸出高低電平的時間,占空比可調範圍:0~100%,每次按下按鈕以10%步進,通過示波器看到對應波形。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

電路功能:

第一個放大器的作用是反相,將P2.0口輸出的電壓反相,得到一個絕對值相等的負電壓。R1和R2阻止相同,不放大。

第二個放大器的作用是放大電壓,並再次反相。放大倍數是R4:R5=1000:100=10倍。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

實驗現象:

  • 首次按下按鈕時,n=0,占空比0%P2.0低電平10ms,高電平0ms,電機不轉。
  • 第二次按下按鈕,n=1,占空比10%P2.0低電平9ms,高電平1ms,電機轉1ms9ms
  • 第三次按下按鈕,n=2,占空比20%P2.0低電平8ms,高電平2ms,電機轉2ms8ms
  • ...
  • 十次迴圈過後n=0,重新開始

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

元件清單:

  • BUTTON
  • AT89C51
  • MOTOR
  • RES,p.s.嚴格對應圖中阻止
  • OPAMP
  • COUNTER TIMER,p.s.COUNTER TIMER(頻率計)設置OperatingMode項為frequency
  • Digital Oscilloscope

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

實現代碼:

 1 #include <reg52.h>
 2 typedef unsigned char uchar;
 3 typedef unsigned int uint;
 4 sbit PWM = P2 ^ 0;
 5 uchar n = 0;
 6 void Delay(uchar m)
 7 {
 8     uchar a, b, c;
 9     while(m--)
10         for (c = 19; c > 0; --c)
11             for (b = 20; b > 0; --b)
12                 for (a = 130; a > 0; --a);
13 }
14 void PWMout(uchar n)
15 {
16     PWM = 0; //先置PWM信號為低電平,此時可以看到在波形圖上出現波峰
17     Delay(10 - n); //延時10-n(ms)
18     PWM = 1; //置PWM信號為高電平,此時波形圖出現波谷
19     Delay(n); //延時n(ms)
20 }
21 int main()
22 {
23     EA = 1; //通過按鈕中斷來修改n的值
24     EX0 = 1;
25     IT0 = 1;
26     while(1)
27     {
28         PWMout(n); //脈衝輸出子程式
29     }
30 }
31 void Int0()interrupt 0
32 {
33     if (n == 10) //n在0-10中迴圈
34         n = 0;
35     else ++n;
36 }

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在這本書中,我會使用Kotlin作為主要的語言來開發一個android應用。方式是通過開發一個應用來學習這門語言,而不是根據傳統的結構來學習。我會在感興趣的點停下來通過與Java1.7對比的方式講講Kotlin的一些概念和特性。用這種方法你就能知道它們的不同之處,並且知道哪部分語言特性可以讓你提高你 ...
  •   今天我們的用戶輸入手機號之後變成了用戶的名字,沒辦法獲取驗證碼,因為手機格式不對。我還是頭一次遇到這樣的事情。 1.文本替換   遇到這種事情肯定去百度啊,發現還真有人和我遇到相同的情況,原來這個用戶在設置 》通用 》鍵盤 》文本替換把自己的手機號設置自己 ...
  • Scala提供了三種字元串插值方式:s,f和raw。1. s字元串插值器簡單的說就是解析字元串變數。 第2行是最簡單的用法,第3行為了區分變數名加了{},第4行是進行了運算。 運行結果: 2. f字元串插值器 可以進行格式化的輸出,變數名後用%指定格式,如果沒有指定,其作用和s是一樣的。 運行結果: ...
  • 本篇文章主要彙總分享oracle中存儲過程的基礎用法、整體的書寫規範、格式要求,儘可能多的細的講述和存儲過程有關的知識點。 ...
  • 導出: 結束!!! ...
  • 怎樣查看MySql資料庫物理文件存放位置? 使用命令行查找: show global variables like '%datadir%'; 我查找的位置:C:\ProgramData\MySQL\MySQL Server 5.7\Data\ 修改預設保存的位置: 在C:\ProgramData\M ...
  • 1.Mysql中可用存儲過程和函數來實現複雜邏輯處理,兩者的對比如下:存儲過程作為可執行文件,編譯一次放在資料庫中,函數又返回值。可設定使用許可權。 存儲過程中可使用游標,聲明變數。用call調用。 2.Hive可用udf(user defined function)來實現複雜邏輯處理 編輯Pytho... ...
  • 1. 安裝前的準備 1.1 硬體要求 無特殊需求(根據Hadoop各個組件需求及實際情況,一般建議單個集群的機器數量在3台及以上:1台Master結點,2台機器作為Slave結點)。 1.2 軟體要求 1.2.1 操作系統 僅支持如下操作系統: Red Hat Enterprise Linux (R ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...