以AT89C52为核心,整个电路硬件是怎样运行的(包括DAC0832,LCD1602,放大,等等)???
展开全部
简单!!
工作流程:(具体的看程序,但个人认为差不多是这样)
1、通过按键设置输出电压值,通过LCD1602显示电压值,然后单片机端口输出设定的数据,最后DAC将数字电压转换为模拟电流,电流通过运放转为电压,通过示波器测试电压。没了就这么简单
具体的功能:
1、LCD1602是用来显示的(让人看得见显示什么,具体的是什么看程序设置)
2、DAC0832是数模转化(把数字量转换为模拟量)(你可以看一下DAC0832的数据手册,看一下它大概是怎么工作的)
3、运放(放大),目的是把电流转换为电压,因为DAC0832输出的是电流,而我们测得一般是电压,所以要转换。
4、AT89C52是一个控制芯片(单片机),这个要说的话很麻烦,你先看一下什么是单片机先吧(估计你是大一或大二的还没接触过(*^__^*) 嘻嘻……),如果你要学单片机,我的经验就是:先有C语言基础吧(这样很容易就可以学会这款单片机,入门挺简单的- -、),汇编语言就不要学了,如果你不是做底层开发的话
当你弄懂单片机,对你来说也只是一个很普通的电路(⊙o⊙)哦。
工作流程:(具体的看程序,但个人认为差不多是这样)
1、通过按键设置输出电压值,通过LCD1602显示电压值,然后单片机端口输出设定的数据,最后DAC将数字电压转换为模拟电流,电流通过运放转为电压,通过示波器测试电压。没了就这么简单
具体的功能:
1、LCD1602是用来显示的(让人看得见显示什么,具体的是什么看程序设置)
2、DAC0832是数模转化(把数字量转换为模拟量)(你可以看一下DAC0832的数据手册,看一下它大概是怎么工作的)
3、运放(放大),目的是把电流转换为电压,因为DAC0832输出的是电流,而我们测得一般是电压,所以要转换。
4、AT89C52是一个控制芯片(单片机),这个要说的话很麻烦,你先看一下什么是单片机先吧(估计你是大一或大二的还没接触过(*^__^*) 嘻嘻……),如果你要学单片机,我的经验就是:先有C语言基础吧(这样很容易就可以学会这款单片机,入门挺简单的- -、),汇编语言就不要学了,如果你不是做底层开发的话
当你弄懂单片机,对你来说也只是一个很普通的电路(⊙o⊙)哦。
追问
我的qq:635969467.我把程序发给你,你帮我弄一下。一定给你加分!桃花雨露!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机里运行的是C或者汇编程序,单看硬件是不行的,还要知道软件是什么,图看的不是很清楚,我只能给你按照我认识简单的说说吧:看似好像一个模拟信号发生器。按键负责输入参数给单片机,单片机收到后给0832发数字信号。0832负责把单片机发出的数字信号转变成模拟信号。同时1602负责显示单片机发出的数据。放大电路把0832所转换的模拟信号放大,模拟示波器查看实验结果。附带的给你一些软件的驱动,希望能够帮到你。
1602 C语言驱动
include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
uchar table1[]="CC-DZ MCU";
uchar table2[]="1234567654321";
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void delay1(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void write_com(uchar com)
{
P0=com;
rs=0;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void write_date(uchar date)
{
P0=date;
rs=1;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void init()
{
dula=0;
wela=0;
write_com(0x38);
delay(20);
write_com(0x0f);
delay(20);
write_com(0x06);
delay(20);
write_com(0x01);
delay(20);
}
0832 C语言程序
#include <reg52.H>
#define uint unsigned int
#define uchar unsigned char
sbit ledlk=P2^5;
sbit smglk=P2^6;
sbit smgbitlk=P2^7;
sbit dacs=P3^2;
sbit wr=P3^6;
void delay(uint ms)
{
uint i,j;
for (j=0;j<ms;j++)
for (i=0;i<120;i++);
}
void delayus(uint us)
{
uint i,j;
for (j=0;j<us;j++)
for (i=0;i<12;i++);
}
void da_init()
{
uchar i;
dacs=1;
wr=1;
dacs=0;
for (i=0;i<255;i++)
{
P0=i;
delayus(2);
wr=0;
delay(50);
}
}
1602 C语言驱动
include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
uchar table1[]="CC-DZ MCU";
uchar table2[]="1234567654321";
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void delay1(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void write_com(uchar com)
{
P0=com;
rs=0;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void write_date(uchar date)
{
P0=date;
rs=1;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void init()
{
dula=0;
wela=0;
write_com(0x38);
delay(20);
write_com(0x0f);
delay(20);
write_com(0x06);
delay(20);
write_com(0x01);
delay(20);
}
0832 C语言程序
#include <reg52.H>
#define uint unsigned int
#define uchar unsigned char
sbit ledlk=P2^5;
sbit smglk=P2^6;
sbit smgbitlk=P2^7;
sbit dacs=P3^2;
sbit wr=P3^6;
void delay(uint ms)
{
uint i,j;
for (j=0;j<ms;j++)
for (i=0;i<120;i++);
}
void delayus(uint us)
{
uint i,j;
for (j=0;j<us;j++)
for (i=0;i<12;i++);
}
void da_init()
{
uchar i;
dacs=1;
wr=1;
dacs=0;
for (i=0;i<255;i++)
{
P0=i;
delayus(2);
wr=0;
delay(50);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询