问题可能出在单片机与终端通讯配置上: 1,要做到mega16属性中晶振频率与程序代码中的频率一致。 2,终端中波特率的选择与代码中的一致。 3,单片机与终端连接是叫擦连接即:TXD---RXD 试试看,祝你成功~~ |
我已经转战使用ADS1110了,没有使用ADS1115了。我只需要一个通道就可以。我现在是ADS1110和ATMEGA16。使用上面那个程序,读出来的数据全是0.0 麻烦大神指导指导 |
先生,不能简单地套用啊~~~ 这个ads1110只有一个adc通道。你那个1115有4个通道需另外要配置的 我已上传了别人写的程序及仿真动画图片,你再琢磨琢磨 ![]() |
你好,我参照这个用MEGA16代替了mega8,读出来的数据全部是0,求大佬解答,十分感谢! $regfile = "m16adef.dat" $crystal = 12000000 $baud = 9600 Config Scl = Portc.0 Config Sda = Portc.1 Config Twi = 400000 I2cinit $lib "i2c_twi.lbx" ' 不使用模拟软I2C,使用硬TWI $lib "glcdSSD1306-I2C.lib" ' 用这个特殊的lib覆盖默认lib Config Single = Scientific , Digits = 3 '设置 单精度=科学计数法,保留点后位数 Dim dianya_zhuanhuan As Single '计算电压转换变量 Dim Pga As Integer '增益变量 Dim CELIANGh As Byte , CELIANGl As Byte '数据测量变量 Pga = 1 ' Do Gosub xie '调用测量读取计算子程序 Gosub duqu '调用测量结果子程序 print dianya_zhuanhuan 'dianya_zhuanhuan Waitms 250 Waitms 50 Loop End '------------------------------------------------------------------------------ xie: I2cstart 'start condition I2cwbyte &H90 'slave address I2cwbyte &H8C 'asdress of EEPROM I2cstop 'stop condition Waitms 10 'wait for 10 milliseconds Return duqu: '测量读取计算子程序 I2cstart I2cwbyte &H91 '读取地址 I2crbyte CELIANGh , Ack '测量读数 如果要读取更多字节,请指定ACK。 I2crbyte CELIANGl , Nack '如果NACK是要读取的最后一个字节,则指定NACK I2cstop '停止位 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 |