欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 393|回復: 0
打印 上一主題 下一主題
收起左側

max5481數字電位器測試仿真

[復制鏈接]
跳轉到指定樓層
樓主

BASCOM-AVR代碼:
' ==========================================================
' MAX5481數字電位器測試
'2025年10月17日
' ==========================================================
$regfile = "m16def.dat"     ' 指定ATmega16單片機型號定義文件
$crystal = 8000000          ' 設置晶振頻率為8MHz
$hwstack = 64               ' 設置硬件堆棧大小為64字節
$swstack = 64               ' 設置軟件堆棧大小為64字節
$framesize = 64             ' 設置幀大小為64字節

' ==========================================================
' 引腳定義
' ==========================================================
Cs Alias Portb.4            ' 定義片選引腳CS連接到PORTB.4

' ==========================================================
' SPI 配置
' ==========================================================
' 配置硬件SPI:無中斷、MSB先傳、主機模式、時鐘極性低、相位0、無從機選擇
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1
Spiinit                     ' 初始化SPI接口

' ==========================================================
' 變量定義
' ==========================================================
Dim Command_byte As Byte    ' SPI命令字節
Dim Data_high As Byte       ' 數據高字節
Dim Data_low As Byte        ' 數據低字節
Dim Test As Word            ' 測試值變量
Dim Temp_word As Word       ' 臨時數據變量

' ==========================================================
' 串口配置
' ==========================================================
'Config Serialin = Buffered , Size = 20  ' 注釋掉的串口輸入緩沖配置
'Enable Interrupts                       ' 注釋掉的中斷使能
$baud = 9600                ' 設置串口波特率為9600
Test = 1023                 ' 初始化測試值為1023(10位最大值)

' ==========================================================
' 子程序聲明
' ==========================================================
Declare Sub Write_wiper(byval Value As Word)  ' 聲明寫入Wiper位置的子程序

' ==========================================================
' 主程序開始
' ==========================================================
Waitms 10                   ' 延時10ms,確保系統穩定

' ==========================================================
' 主循環 - 循環測試不同的Wiper位置
' ==========================================================
Do
   ' 測試不同的阻值位置
   Call Write_wiper(Test)    ' 寫入最大阻值位置(1023)
   Waitms 200                ' 延時200ms

   Call Write_wiper(768)     ' 寫入75%位置(768)
   Waitms 200

   Call Write_wiper(512)     ' 寫入50%位置(512)  
   Waitms 200

   Call Write_wiper(256)     ' 寫入25%位置(256)
   Waitms 200

   Call Write_wiper(0)       ' 寫入最小阻值位置(0)
   Waitms 200
Loop
End                         ' 程序結束

' ==========================================================
' 寫入Wiper位置子程序 (10位數字電位器)
' SPI傳輸格式:8位命令 + 16位數據(高10位有效,低6位無效)
' ==========================================================
Sub Write_wiper(byval Value As Word)
   ' 命令字節: 0x00 = 寫入Wiper寄存器并立即更新
   Command_byte = &H00

   ' 數據格式轉換:將10位數據左移6位,放到16位數據的D15-D6位置
   ' 因為數字電位器只使用高10位,低6位被忽略
   Temp_word = Value * 64    ' 相當于左移6位(乘以2^6=64)

   Data_high = High(temp_word)   ' 獲取16位數據的高字節
   Data_low = Low(temp_word)     ' 獲取16位數據的低字節

   ' SPI數據傳輸過程
   Reset Cs                 ' 片選置低,開始SPI傳輸
   Spiout Command_byte , 1  ' 發送命令字節
   Spiout Data_high , 1     ' 發送數據高字節
   Spiout Data_low , 1      ' 發送數據低字節
   Set Cs                   ' 片選置高,結束SPI傳輸

   ' 調試輸出 - 通過串口顯示傳輸的數據
   Print "輸出原始值: " ; Value              ' 輸出原始值
   Print "輸出命令字節: " ; bin(command_byte)    ' 以二進制格式輸出命令字節
   Print "輸出數據高字節: " ; bin(data_high)      ' 以二進制格式輸出數據高字節
   Print "輸出數據低字節: " ; bin(data_low)        ' 以二進制格式輸出數據低字節
   Print "---"                                  ' 輸出分隔線
End Sub


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的獎勵!

查看全部評分

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表