$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"
|