- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数控直流电源
功能说明:
本作品采用DAC0832 作为电压信号输出。DAC0832 是一款采用 CMOS 工艺制成的单片电流输出型 8 位数/模转换器。DAC0832 有三种工作方式:不带缓冲工作方式,单缓冲工作方式,双缓冲工作方式。因为输出电压量程为 10V,VREF 基准电压范围为-10V---+10V,基准电压可以为 5.12V,这样在DAC0832 的 8 脚输出电压的分辨率为:即D/A 输入数据端每增加1,电压增加 0.02V。D/A 的电压输出端接放大器 OP27 的输入端,放大器的放大倍数为 5 , 才能得到输出电压的电压分辨率:0.02V×5=0.1V 这样当调节电压的时候,以每次 0.1V 的梯度增加或者降低电压。
硬件电路图:
波形转换与放大部分
选用 51 系列的单片机产生和控制波形。数模转换器用的是 DAC0832,本方案中 DAC0832
采用单缓冲模式。
电路如图五所示,P0 口和 DAC0832 的数据口直接相连,WR 2 和 XFER 接地,DAC 数据寄存器处于直通状态,ILE=1,和连接后接 P2.0。在选中该片的地址(=0)时,写入数字量, 该数字信号就立即传送到 DAC 输入寄存器,并直通至 DAC 数据寄存器,经过短暂的建立时间,即可以获得相应的模拟电压。 写入操作结束, 和立即变为高电平,写入的数据被输入寄存器锁存,直到再次写入刷新。
图一 波形产生与转换电路
图二 电流放大电路
键盘与数码显示部分 电路如图七
稳压电源部分
图三 键盘与显示电路
电源部分输出+5V,+15V,-15V 电压供给系统,另外还制作 +5.12V 直流稳压电源做
DAC0832 的VERF 的基准电压。
软件设计与流程图
软件介绍
软件部分采用模块化程序设计的方法编写,系统软件由主控制程序、数码显示子程序、键盘服务子程序组成。还添加了自动扫描键盘、显示器的自动刷新、过零保护的功能。编程 中 C 函数和汇编函数相互调用。
程序流程图 如图四所示
开始
开始
系统初始化
显 示 0.0
扫描键盘
Y
+ 键按下?
执行电压增加子程序
N
Y
- 键按下?
执行电压减小子程序
N
Y
方波键按下?
执行产生方波
子程序
N
锯齿波键按下
N
Y
执行产生锯齿波
子程序
图四 软件流程图
程序附录:
#includereg51.h
#define uchar unsigned char sbit dp=P1^4;
sbit sh=P1^5;
void delay(unsigned int t); uchar Getkey(void);
void Disp(uchar n);
uchar Disptab[10]={0x11,0x7d,0x23,0x29,0x4d,0x89,0x81,0x3d,0x1,0x9}; main( )
{
uchar key;
char Vol1=0x00,Vol2=0x00; Disp(Disptab[Vol2]);
Disp(Disptab[Vol1]-1);
P0=0x00;
while(1)
{
key=Getkey(); switch(key)
{
case 0x01:break; case 0x02:break;
case 0x04:if(Vol1==0Vol2==0) break;
Vol2--;
if(Vol20)
{ Vol2=9;Vol1--; }
Disp(Disptab[Vol2]); Disp(Disptab[Vol1]-1); P0=4.3*(Vol1*10+Vol2);
break;
case 0x08:if(Vol1==9Vol2==9) break;
Vol2++;
if(Vol2==10)
{
Vol2=0x00;Vol1++;
}
Disp(Disptab[Vol2]); Disp(Disptab[Vol1]-1); P0=4.3*(Vol1*10+Vol2);
break;
default:break;
}
}
}
uchar Getkey(void)
{
uchar key;
P1|=0x0f;
if(!(~(P1|0xf0))) return 0x00; delay(0x20); if(!(~(P1|0xf0))) return 0x00; key=~(P1|0xf0); while(~(P1|0xf0)); return key;
}
void delay(unsigned int t)
{
while(--t);
}
void Disp(uchar n)
{
uchar i; for(i=0;i8;i++)
{
sh=0; if(0x80n)
{
}
else
{
}
dp=1;
dp=0;
sh=1; n=(n1)+1;
}
}
您可能关注的文档
最近下载
- 危险源、环境因素辨识培训试题及答案.doc VIP
- 实验室安全知识培训-完整版.pptx VIP
- 产品设计开发控制程序.docx VIP
- 西门子S7-1500系列PLC技术及应用.pptx VIP
- 现代工程图学习题集葛常清习题答案.pdf VIP
- 金融市场与金融机构 第9版 pdf.docx
- 生猪屠宰兽医卫生检验人员理论考试题库资料及答案.pdf VIP
- 爱国、爱校、爱家教育主题班会课件.pptx VIP
- (高清版)B/T 13813-2023 煤矿用金属材料摩擦火花安全性试验方法和判定规则.pdf VIP
- 3.2《文学作为语言艺术的独特地位》教学设计-中职高二语文(高教版2024拓展模块上册).pdf VIP
文档评论(0)