51单片机学习9_DA/AD编程

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 51单片机学习9_DA/AD编程

实验:对DAC0832进行编程;
对AD0804芯片进行编程操作,是发光二极管点亮.
好像是本人的数电,模电没学过,感觉初次接触DA/AD,还是有点模糊的,后来努力的学习了两遍,终于能把程序自己给写下来,调试出来.

DA 跟 AD的操作,都是查看时序图,根据时序图然后对照着开发板原理图,对IO口进行一些操作.
DA在单片机的原理图如下:

da接口原理图

da接口原理图

DA的时序图如下:

da时序图

da时序图

从时序图中,我们可以看到,当CS为低电平的时候,WR置为低电平,然后数据就变成了有效数据,过一会,就趋于稳定了,所以,编程的时候,我们可以让CS默认为低电平,只需要让WR置为低电平,然后发送数据即可,数据口对应的是P0口.
DA代码如下:

#include <reg52.h>

sbit csda = P3 ^ 2;
sbit wr = P3 ^ 6;

void main()
{
	csda = 0;
	wr = 0;
	P0 = 0;
	while (1);
}

AD的原理图如下:

ad原理图

ad原理图

AD的时序图如下:
第一个是启动AD转换的时序图:

ad时序图,启动ad转换

ad时序图,启动ad转换

第二个是AD发送数据的时序图:

ad数据传送时序图

ad数据传送时序图

AD的代码:

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit wr = P3 ^ 6;
sbit rd = P3 ^ 7;
void init();
void start();

void delay(uint time)
{
	uint x, y;
	for (x = time; x > 0; x--)
		for(y = 110; y > 0; y--);
}

void main()
{
	init();
	while (1) {
		start();
		delay(10);
		rd = 0;
		delay(30);
		rd = 1;
		delay(30);
	}
}

void init()
{
	P0 = 0x7f;
}

void start()
{
	wr = 1;
	wr = 0;
	wr = 1;
}
原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 51单片机学习9_DA/AD编程

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: