51單片機使用D/A轉換器實現三角波發生器

来源:http://www.cnblogs.com/hughdong/archive/2017/06/09/6974143.html
-Advertisement-
Play Games

———————————————————————————————————————————— D/A轉換器 CS=0、ILE=1時,WR1信號有效時將數據匯流排上的信號寫入8位輸入鎖存器 XFER=0時,WR2信號有效時將輸入寄存器的數據轉移到8位DAC寄存器中,輸出量隨之改變 工作方式: 直通工作方式( ...


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

D/A轉換器

  • CS=0ILE=1時,WR1信號有效時將數據匯流排上的信號寫入8位輸入鎖存器
  • XFER=0時,WR2信號有效時將輸入寄存器的數據轉移到8DAC寄存器中,輸出量隨之改變

工作方式:

  • 直通工作方式(如下實驗)
    • 當某一根地線或地址解碼器的輸出線使CS有效(低電平),ILE高電平,同時WR1/XFER/WR2為低電平時,單片機數據線上的數據位元組直通D/A轉換器,被轉換並輸出
    • CSWR1接引腳,通過軟體置低電平
    • VCCVREFILEPOWER
    • WR2XFERRFBGND*2GND
  • 單緩衝方式
    • 僅適用於只有一路模擬量輸出或幾路模擬量輸出但並不要求同步的系統
    • ILEVCCPOWER
    • CSXFER接單片機引腳,輸入寄存器和DAC寄存器地址都是7FFFH
    • WR1WR2接單片機WR引腳,單片機寫信號
    • 當單片機對DAC0832執行一次寫操作,則把一個位元組數據直接寫入DAC寄存器中,輸出的模擬量隨之變化

  • 雙緩衝方式
    • 當多路D/A轉換介面要求同步進行D/A轉換輸出時必須採用雙緩衝方式。DAC0832數字量的輸入鎖存和D/A轉換輸出時分兩步完成的。即CPU的數據匯流排分時輸出數字量並鎖存在各D/A轉換器的輸入寄存器中;然後CPU對所有D/A轉換器發出控制信號,各輸入寄存器→DAC寄存器,實現同步轉換輸出。
    • 每一路模擬輸出量需要一片DAC0832
    • DAC08321)的輸出鎖存器地址0DFFFH

      DAC08322)的輸出鎖存器地址0BFFFH

      兩個DAC0832DAC寄存器地址同為7FFFH

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

基於DAC0832的三角波發生器實驗

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

實驗說明:

  • 用DAC0832晶元製作一個信號發生器,輸出一個三角波信號
  • 採用直通工作方式

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

接線說明:

DAC0832

DI0-DI7

89C51

P0.0-P0.7

8位數據輸入輸出

  

CS

  

P3.7/RD

輸入寄存器選擇信號

  

WR1

  

P3.6/WR

輸入寄存器寫選通信號

  

WR2/XFER/GND*2/

其他

GND

WR2XFER始終低電平

  

VREF/VCC/ILE

  

POWER

ILE始終允許鎖存

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

實現代碼:

 1 #include <reg52.h>
 2 typedef unsigned char uchar;
 3 typedef unsigned int uint;
 4 sbit cs = P3 ^ 7;
 5 sbit wr = P3 ^ 6;
 6 void Delay(uchar m)
 7 {
 8     while(m--);
 9 }
10 void main()
11 {
12     uchar k = 0; //設置k的初始值為0
13     cs = 0; //當CS與WR1端置低電平時做好寫數據的準備,只要P0口有數據輸出,DAC0832將會轉換成模擬信號
14     wr = 0;
15     while(1) //通過輸出值在 0-255和255-0之間變化,通過示波器可以看到模擬信號的情況
16     {
17         while(1) //輸出值在0-255之間變化
18         {
19             P0 = k++; //輸出k且k+1
20             Delay(1);
21             if (k == 0xff) //到達255時結束迴圈
22                 break;
23         }
24         while(1) //輸出值在255-0之間變化
25         {
26             P0 = k--; //輸出k且k-1
27             Delay(1);
28             if (k == 0x00) //到達0時結束迴圈
29                 break;
30         }
31     }
32 }

 


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

-Advertisement-
Play Games
更多相關文章
  • 1. 先用rpm -qa| grep vsftpd命令檢查是否已經安裝,如果ftp沒有安裝,使用yum -y install vsftpd 安裝,(ubuntu 下使用apt-get install vsftpd) 2. service vsftpd start / service vsftpd r ...
  • 在Ubuntu系統中配置3389遠程桌面連接,這樣,不需要vnc軟體也能夠看到linux系統的桌面了! ...
  • 情景 我們知道,read命令可以讀取文件內容,並把內容賦值給變數。 以如下的數據文件為例。 以上文件的四列分別為序號(index)、學號(number)、姓名(name)、年齡(age)。用shell腳本讀取該文件並輸出每行的值: 執行腳本,查看結果: 不知你發現沒有,這樣的實現方式有著明顯的弊端: ...
  • linux系統下一切皆文件,通過虛擬文件系統(VFS)的機制將所有底層屏蔽掉,用戶可以通過統一的介面來實現對不同驅動的操作,對於每一個文件需要一個引用來指示,此時文件描述符應用而生,文件描述符類似於widows下的handle,對於文件的大部分操作都是通過這個描述符來操作的,例如read,write ...
  • 命令格式:命令 -選項 參數,例如:ls -la /usr;當有多個選項時,可以寫在一起。ifconfig:查看當前機器的IP信息service network restart:重啟網路服務service iptables status:查看當前機器防火牆狀態hostname XX:查看或者修改主機 ...
  • 在Ubuntu系統上安裝vim是遇到的問題: 出現這個問題可能是有另外一個程式正在運行,導致資源被鎖不可用。而導致資源被鎖的原因可能是上次運行安裝或更新時沒有正常完成,進而出現此狀況,解決的辦法其實很簡單: 在終端輸入以下兩句命令: 執行之後即可再次安裝vim文本編輯器了。 ...
  • 預設登錄的是普通用戶許可權顯示$符 從普通用戶切換超級用戶許可權: sudo su 輸入密碼 輸入密碼之後即可切換到超級用戶了。 從超級用戶切換普通用戶:su 用戶名 從超級用戶切換到普通用戶是不需要輸入密碼的,輸入上面的命令之後直接回車即可 這樣就有切換回普通用戶了。 ...
  • 1、檢查一下系統中的jdk版本 顯示: 2、檢測jdk安裝包 顯示: 3、卸載openjdk 之後再次輸入rpm -qa | grep java 查看卸載情況: 4、安裝新的jdk 首先到jdk官網上下載你想要的jdk版本,下載完成之後將需要安裝的jdk安裝包放到Linux系統指定的文件夾下,並且命 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...