$regfile = "m8def.dat"
$crystal = 8000000
'$baud = 19200
'Config Clockdiv = 1 ' 確保芯片以8 MHz運行
Config Scl = Portc.5 ' 使用i2c引腳
Config Sda = Portc.4
Config Twi = 400000 ' i2c 速度
I2cinit
$lib "i2c_twi.lbx" ' 不使用模擬軟I2C,使用硬TWI
$lib "glcdSSD1306-I2C.lib" ' 用這個特殊的lib覆蓋默認lib
Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
Config Single = Scientific , Digits = 3 '設置 單精度=科學計數法,保留點后位數
'Digits值為0將不會產生尾隨零。1-7之間的值可用于指定逗號后面的位數。
' ADS1110的I2C 地址
' -------------
' ADS1110的I2C地址是1001aaa,其中aaa是出廠時默認設置。ADS1110有8種不同類型,每種類型都有不同的I2C地址。封裝上,
' ADS1110的每種類型都以EDx為標識,其中x表示地址變量。
' 部件 設備I2C設備地址 部件
' 型號 BIN HEX DEC 標記
' --------- ------- ---- --- -------
' ADS1110A0 1001000 0x48 72 ED0
' ADS1110A1 1001001 0x49 73 ED1
' ADS1110A2 1001010 0x4A 74 ED2
' ADS1110A3 1001011 0x4B 75 ED3
' ADS1110A4 1001100 0x4C 76 ED4
' ADS1110A5 1001101 0x4D 77 ED5
'ADS1110A6 1001110 0x4E 78 ED6
' ADS1110A7 1001111 0x4F 79 ED7
' ----------------------------
Const ADS1110_DIZHI = &B10010001 '選擇ED0標識的芯片ADS1110A0 地址:1001000 + 位0(讀/寫)
'Const Addressw = &B10010000 '沒使用
Dim dianya_zhuanhuan As Single '計算電壓轉換變量
Dim Pga As Integer '增益變量
Dim CELIANGh As Byte , CELIANGl As Byte '數據測量變量
Pga = 1 '
Cls
Do
Gosub duqu '調用測量讀取計算子程序
Gosub xianshi '調用測量結果子程序
Waitms 250
Waitms 50
Loop
End
'------------------------------------------------------------------------------
duqu: '測量讀取計算子程序
I2cstart
I2cwbyte ADS1110_DIZHI '讀取地址
I2crbyte CELIANGh , Ack '測量讀數 如果要讀取更多字節,請指定ACK。
I2crbyte CELIANGl , Nack '如果NACK是要讀取的最后一個字節,則指定NACK
I2cstop '停止位
'轉換這兩個字節是通過一些簡單的數學運算完成的。當以15 SPS采樣時,ADS1110返回的值(不是電壓)落在-32768和32767之間。
'該值的較高字節乘以 256,然后添加到較低的字節 – 然后乘以 2.048,最后除以 32768。
dianya_zhuanhuan = CELIANGh * 256 '左移至高8位
dianya_zhuanhuan = dianya_zhuanhuan + CELIANGl '添加低8位
dianya_zhuanhuan = dianya_zhuanhuan * 2.048
dianya_zhuanhuan = dianya_zhuanhuan / 32768
dianya_zhuanhuan = dianya_zhuanhuan / Pga
dianya_zhuanhuan = dianya_zhuanhuan *1000 '擴大1千倍以mV單位顯示
Return
'-----------------------------------------------------------------------------------
xianshi: '在LCD上顯示測量結果子程序
Setfont Font12x16
Lcdat 1, 6 , chr(130);chr(131);chr(132);":";'顯示Font12x16.font中的漢字字符:“電壓值”
Lcdat 5 , 20 , Fusing(dianya_zhuanhuan , "#.&");"mV" ;" " '12x16字體顯示:保留小數點后3位.
Setfont Font8x8tt
Lcdat 2 , 64 , Fusing(dianya_zhuanhuan , "#.&");"mV" ; '8x8字體顯示
Return
'-------------------------------------------------------------------------------------------
$include "../Font12x16.font" ' 字體文件
$include "../font8x8TT.font"
|