找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3780|回复: 1
收起左侧

单片机数控电压源的仿真和源码设计

[复制链接]
ID:359001 发表于 2018-6-26 09:34 | 显示全部楼层 |阅读模式
数控电压源的设计

设计并制作一个数控电压源,具体要求:

(1)输出电压范围-5V~+5V;

(2)输出误差≤1%;

(3)显示分辨率满量程的1%以上;
还差一个(4)具有0.1V步进输出功能。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
0.png
单片机源程序如下:
  1. /////////////lcd variable/////////////////
  2. #include <absacc.h>
  3. #include <reg51.h>

  4. #define REG0   XBYTE[0x8000]
  5. #define REG1   XBYTE[0x8100]
  6. #define REG2   XBYTE[0x8200]
  7. #define REG3   XBYTE[0x8300]

  8. unsigned char bdata busyflag;
  9. unsigned char dat,datn,count;

  10. unsigned char str[16] = "Output Vol:0.00V";
  11. sbit busyflag_7=busyflag^7;
  12. sbit p10=P1^0;
  13. sbit p11=P1^1;
  14. sbit p12=P1^2;
  15. /////////////////end of lcd variable////////////
  16. ///////////////start  of  lcd 1602/////////////////
  17. void busy()
  18. {
  19.         do
  20.         {
  21.                 busyflag=REG1;
  22.         }while(busyflag_7);
  23. }

  24. void wrc(unsigned char wcon)
  25. {
  26.         busy();
  27.         REG0=wcon;
  28. }

  29. void wrd(unsigned char wdat)
  30. {
  31.         busy();
  32.         REG2=wdat;
  33. }

  34. void rdd()
  35. {
  36.         busy();
  37.         dat=REG3;
  38. }

  39. void lcdint()
  40. {
  41.         wrc(0x38);
  42.         wrc(0x01);
  43.         wrc(0x06);
  44.         wrc(0x0c);
  45. }
  46. void wrn(unsigned char word[])
  47. {
  48.         unsigned char i = 0;
  49.         while(word[i]) {
  50.                 wrd(word[i++]);
  51.         }
  52. }

  53. sbit PIN_JIA = P1^0;
  54. sbit PIN_JIAN = P1^1;
  55. sbit PIN_SMG0 = P2^0;
  56. sbit PIN_SMG1 = P2^1;

  57. xdata unsigned char DAC0832DATA _at_ 0x7EFF;

  58. void main()
  59. {
  60.         unsigned char out, out1;
  61.         unsigned int v;

  62.         out = out1 = 0;
  63.         lcdint();//初始化液晶
  64.         wrc(0x80);
  65.         wrn(str);

  66.         while(1) {
  67.                 if(PIN_JIA == 0) {       
  68.                         if(out < 0xFF) {
  69.                                 out++;
  70.                                 DAC0832DATA = out;
  71.                         }
  72.                         while(PIN_JIA == 0);                         //等待按键释放
  73.                 } else if(PIN_JIAN == 0) {       
  74.                         if(out > 0x00) {
  75.                                 out--;
  76.                                 DAC0832DATA = out;
  77.                         }
  78.                         while(PIN_JIAN == 0);                         //等待按键释放
  79.                 }

  80. ……………………

  81. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
shukongdianyayuan.rar (60.05 KB, 下载次数: 90)
回复

使用道具 举报

ID:938883 发表于 2021-6-17 10:23 | 显示全部楼层
有没有用数码管的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表