但你的程序中存在着几个潜在的错误,这种错误不是任何编译器都能容忍的
一、先看程序的全局变量定义部分,定义了一个无符知模或号整型数值型变量 DA_data
即 int 类型的变量
二、之后的自定义函数中又定义了一个无符号长整型数值型变量 DA_date_buf
即 long 类型变量
三、然而这个函数中,又调用了其它函数,并指定了数据类型为无符号字符型变量
即 char 类型变量
四、在函数中,又对数值型的变量进行了位 *** 作,即右移 *** 作,DA_date_buf>>8
这种类型上的区别,某些编译器可以通过,但某些编译器不能通过,不能通过的编译器,则会发生数据类型错误,有时候编译器是无法判断出问题所在的,即不能提示出具体错在哪里。
解决办法则是:
一、数据要是搭伍不大的话,可以全部使用 char 字符型变量,因为只有字符型变量才支持左移和右移的位 *** 作,字符型变量转换成十进制表示,最小数值到最大数值是 0 ~ 254 共255个单位
二、数值比较大码灶的时候,就不要进行位 *** 作,即左移与右移的 *** 作,可以用数值表达式予以替换,即 DA_date_buf=(DA_date_buf + 8)或 DA_date_buf=(DA_date_buf - 8)
DAC714 具有串行数据接口的 16 位数模转换器 DAC715 具有谈信 16 位总线接口的 16 位数模转换器 DAC716 具有串行数据接口的 16 位数模转换器 DAC7631 串腔侍判行输入 16 位电压输出数模转换器 DAC7632 具有串行接口的 16 位双路电压输出 DAC DAC7634 16 位四路电压输出数模转换器 DAC7641 16 位电压输出数模转换器DAC7642 具有并行接口和复位到中间伍改等级功能的 16 位双路电压输出 DAC DAC7643 具有并行接口和复位到最小等级功能的 16 位双路电压输出 DAC DAC7644 16 位四路电压输出数模转换器 DAC7654 16 位四路电压输出数模转换器
DAC7664 数模转换器;四路、16 位、12uS 稳定时间、+/- 1 LSB DNL DAC7731 具有内部 +10V 参考和串行 I/F 的 16 位单通道数模转换器 DAC7734 16 位四路电压输出串行输入数模转换器
DAC7741 具有内部 +10V 参考和并行 I/F 的 16 位单通道数模转换器 DAC7742 具有内部参考的 16 位单通道并行接口 DAC7744 16 位四路电压输出数模转换器
DAC8501 乘法、低功耗、轨至轨输出、16 位串行输入数模转换器
用电阻分压是可行的,计算时要考虑基准电压端要乎棚吸入30~45微安的电流。因此电阻要取小些,比如上分压电阻取1K,下分压电阻取约52欧(我只是估算,你自己精确算下)。型历但分卜顷搜压不是最好的方法,最好还是用可调精密电压基准,如TL431等。DAC8551/8552上电时默认输出为0,如果为了保险,可在控制端加上拉或下拉电阻的方法确保单片机不输出时DAC输出 为0。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)