完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
目前一直在学怎么做基于单片机的数控电源,仿真如下,本来想做一个2v-15v,但是怎么调,要么起始电压是2.5多伏,要么最大电压也是13.9而已,怎么让起始电压跟最大电压符合要求呢?,程序如下,自己没把显示部分做出来。 #include
#define uint unsigned int #define uchar unsigned char #define DAC0832_PORT P1 ***it duanxuan=P2^6; ***it weixuan=P2^5; ***it cs=P2^2; ***it wr1=P2^3; ***it S1=P2^0;//加 ***it S2=P2^1;//减 uchar num=20; uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; void delay(uint z) //延时z ms子程序 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } init()//初始化子函数 { P1=num; } uchar keyscan()//键盘扫描程序 { if(S1==0) { delay(10); //键盘按键消抖 if(S1==0) { if(num==150) { num=20; } else { num++; } } while(!S1); //松手检测 } if(S2==0) { delay(10); if(S2==0) { if(num==20) { num=150; } else { num--; } } while(!S2); //松手检测 } return(num); } void display()//显示程序 { duanxuan=1; P0=table[num/100];//十位 duanxuan=0; weixuan=1; P0=0x80; weixuan=0; delay(1); duanxuan=1; P0=((table[num%100/10])&0xfe);//个位 duanxuan=0; weixuan=1; P0=0x40; weixuan=0; delay(1); duanxuan=1; P0=table[num%10];//小数 duanxuan=0; weixuan=1; P0=0x20; weixuan=0; delay(1); } uchar dazh( uchar n)//D/A转换子程序 { cs=0;选定芯片 wr1=0;允许写入 n=num-13;输出电压值 DAC0832_PORT=n; //把n送给給DA } // 主程序 // void main() { init(); while(1) { keyscan(); display(); dazh(); } } |
|
相关推荐
5个回答
|
|
|
云汉达人
你好 对于你的输出无法达到输入电压15的原因在于两点 1. 你选用的运放如果不是输出轨到轨 那么其最大输出电压一定小于电源电压15 根据运放型号不同 压差从零点几到1v不等 2.即使运放输出轨到轨 能输出15 对于317这类ldo 一定会在输入与输出之间有压差 这是芯片决定的 具体压差能小到多少要看手册 综上 输出是永远到不了输入电压值的 希望对你有帮助 |
|
|
|
|
|
给力给力!!
|
|
|
|
|
|
云汉达人 对了 这个方案做出来的时候注意317的散热 一定要加散热片哦~
|
|
|
|
|
|
|
|
|
|
|
|
LM317应该是有3V的压差的
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1025浏览 1评论
1852浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1362浏览 1评论
1855浏览 0评论
1180浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:00 , Processed in 0.751430 second(s), Total 87, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4022