问题不大,挺麻烦,开始的三行都是赋值语句,第三行的话,把0x2E装换为二进制00101110,代码太不全了,那些数组的只有个名称,应该是把某位置为1或者0,一般情况下1为开,0为关,下面的TxBuf的代表某个标志位吧,下面几句意思都差不多,拿TxBuf[0]=0x02;做例子,意思就是TxBuf[0]这个标志位把倒数第二位置为1(0000 0010),下面的依次类推!
不一定,AD 转换器按照转换原理可分为直接AD 转换器和间接AD 转换器。所谓直接AD 转换器,是把模拟信号直接转换成数字信号,如逐次逼近型,并联比较型等。其中逐次逼近型AD 转换器,易于用集成工艺实现,且能达到较高的分辨率和速度,故目前集成化AD 芯片采用逐次逼近型者多;间接AD 转换器是先把模拟量转换成中间量,然后再转换成数字量,如电压/时间转换型(积分型)、电压/频率转换型、电压/脉宽转换型等。 其中积分型A/D 转换器电路简单,抗干扰能力强,切能作到高分辨率,但转换速度较慢。 有些转换器还将多路开关、基准电压源、时钟电路、译码器和转换电路集成在一个芯片内,已超出了单纯A/D 转换功能,使用十分方便。
用c51单片机做AD转换,只要用一个简单的延时就可以,没必要动用定时器这么高级的东西,DMA就更别提了,我写了很多程序,还真没有人能用C51实现DMA,DMA一般在arm系列和FPGA等的高级嵌入式里面才会用到的。
void adchange()//AD采集程序,采集3路
{
uchar temp7,temp8,temp9,temp10,temp11,temp12;//这些变量用来暂存转换结果
ADC_CONTR=ADC_CONTR|0X80; //10000000 开启转换电源
Delay1ms(1); //延时,等待内部电源稳定
P1M0=P1M0|0X07; //设置p10 P11和 p13所在通道为开/漏模式
P1M1=P1M1|0X07;
ADC_CONTR=0xe0; //11100000 开启P10通道开始转换
Delay25us(10); //延时一端时间,使输入电压达到稳定
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,开始转换
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D转换结束
temp7=ADC_DATA; //读取转换结果
temp8=ADC_LOW2;
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
ADC_CONTR=ADC_CONTR&0xe7; //将ADC_FLAG软件清零
Delay25us(1);
ADC_CONTR |= 0x08; //ADC_START=1,开始转换
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D转换结束
temp9=ADC_DATA; //读取转换结果
temp10=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //将ADC_FLAG软件清零
Delay25us(1);
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,开始转换
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D转换结束
temp11=ADC_DATA; //读取转换结果
temp12=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //将ADC_FLAG软件清零
Delay25us(1);
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
}
延时;查询;中断三种方式。
查询方式:先发送bai数据,再查询;先接收数据,再查询。中断模式:发送数据-发送,等待中断,发送中断;接收数据-等待中断,接收中断。
中断模式由事件触发。也就是说,只要一个事件被生成,它就会进入中断状态,得到最优的 *** 作,因此响应速度更快、更及时。查询方法是在主函数中不断循环,查询端口状态,减缓响应速度。
延时:如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。
最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
扩展资料单片机(以及其他处理器)只能处理数字信号,当单片机想要获取电路上某一点的电压值时,就得用到AD转换了,如果你直接把单片机的引脚接到电路这个点上,单片机只知道这个点的电压是低电平还是高电平。
例如数字式的万用表,它测量电压时,先有一个AD转换电路,把电压值转换成一个数值,然后把这个值送个单片机(当然万用表里的用的处理芯片不是单片机),单片机经过计算处理后,再把这电压值显示到显示到屏幕上。不过现在有一些比较强的单片机,其内部已经集成了AD转换器,不需要你再外接AD转换芯片。
以上就是关于MSP430AD转换实验帮忙解释下面程序,尽可能每句都解释全部的内容,包括:MSP430AD转换实验帮忙解释下面程序,尽可能每句都解释、利用ad转换器时一定要用程序运行吗、C51单片机AD转换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)