标题:
51单片机驱动12位AD MCP3204,含源码,Proteus仿真原理图,1602显示
[打印本页]
作者:
序文哥
时间:
2019-6-15 23:03
标题:
51单片机驱动12位AD MCP3204,含源码,Proteus仿真原理图,1602显示
一个51单片机驱动的12位精度A/DMCP3204,网上资料比较少,自己编写的源码,Proteus中有原理图,能正确仿真出双路采集信号。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
QQ截图20190615230140.png
(28.26 KB, 下载次数: 94)
下载附件
2019-6-15 23:02 上传
单片机源程序如下:
#include<myc51.h>
#include<1602.h>
sbit clk = P1^4; // clock signel
sbit dout = P1^5; // data get out
sbit din = P1^6 ; // data put in
sbit cs = P1^7; // cs selt
void delay50ms(uint t)
{
uint j;
for(t;t>0;t--)
for(j=6245;j>0;j--);
}
sint getdata(uchar ch) //ch=0xe0 选择通道CH0; ch=0xe8 选择通道CH1;ch=0xf0 选择通道CH2;ch=0xf8 选择通道CH3;
{
sint hd=0x00,ld=0x00,dat=0x00,t;
//uchar ch=0xF8; //1 11 0 ;0 000
cs=1;
cs=0;
clk=1;
for(t=0;t<6;t++)
{
clk=0;//delay1us;
if((0x80&ch)==0x80)
din=1;//dIN=1
else
din=0;//dIN=0
ch<<=1;
clk=1;//delay1us;
}
for(t=0;t<13;t++)
{
clk=0;
hd<<=1;
clk=1;
delay1us;delay1us;delay1us;
hd|=dout;
delay1us;delay1us;delay1us;
}
cs=1;
return hd;
}
void main()
{
sint data_wendu,data_yanwu;
float outdat_wendu,outdat_yanwu;
start1602();
delay50ms(10);
goto_xy(0,0);
printf("w:");
goto_xy(0,1);
printf("Y:");
delay50ms(10);
while(1)
{
// delay50ms(10);
// delay50ms(10);
data_wendu=getdata(0xe0); //ch=0xe0 选择通道CH0; ch=0xe8 选择通道CH1;ch=0xf0 选择通道CH2;ch=0xf8 选择通道CH3;
outdat_wendu=((float)data_wendu/4095)*5;
delay50ms(1);
data_yanwu=getdata(0xe8);
outdat_yanwu=((float)data_yanwu/4095)*5;
delay50ms(1);
goto_xy(4,0);
printd(data_wendu);
goto_xy(10,0);
printdf(outdat_wendu);
goto_xy(4,1);
printd(data_yanwu);
goto_xy(10,1);
printdf(outdat_yanwu);
}
}
复制代码
所有资料51hei提供下载:
MCP3204.rar
(71.58 KB, 下载次数: 173)
2019-6-15 23:03 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
堕灵法师的莲刃
时间:
2019-9-24 13:19
谢谢大佬的分享
作者:
1434546204
时间:
2020-3-1 20:20
谢谢楼主分享!!!
作者:
spring9173
时间:
2020-3-12 16:29
谢谢分享
作者:
yang03777
时间:
2020-3-22 09:30
想用单片机做可调电源,正在学习。
作者:
iifangzhu
时间:
2020-3-22 15:01
实现不了,程序错误!
作者:
yang03777
时间:
2020-4-13 13:59
做成功了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1