找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3501|回复: 2
收起左侧

DAC0832+ADC0804转换仿真实验源码

[复制链接]
ID:322787 发表于 2018-5-6 11:55 | 显示全部楼层 |阅读模式
基于51单片机+protues的AD/DA转换实验
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

AD/DA

AD/DA


0.jpg

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit dula=P0^0;
  6. sbit wela=P0^1;
  7. sbit adwr=P3^6;
  8. sbit adrd=P3^7;
  9. sbit adcs=P0^2;
  10. sbit dacs=P0^3;
  11. sbit beep=P3^0;

  12. uchar code table[]={
  13. 0x3f,0x06,0x5b,0x4f,
  14. 0x66,0x6d,0x7d,0x07,
  15. 0x7f,0x6f,0x77,0x7c,
  16. 0x39,0x5e,0x79,0x71};

  17. uchar code table1[]={
  18. 0xbf,0x86,0xdb,0xcf,
  19. 0xe6,0xed,0xfd,0x87,
  20. 0xff,0xef};
  21. void delayms(uint);
  22. void display(char,char,char,char,char,char,char,char);
  23. void beeeep(uint);
  24. uint ge,ge_10,ge_100;

  25. void main()
  26. {
  27.         uchar k,kk,kkk,freq;
  28.         float temp;
  29.        
  30.         while(1)
  31.         {
  32.                 adcs=0;                      //ad测电阻
  33.                 dacs=1;
  34.                 adwr=1;
  35.                 _nop_();
  36.                 adwr=0;
  37.                 _nop_();
  38.                 adwr=1;
  39.                 display(50,50,50,50,50,ge,ge_10,ge_100);
  40.                 P1=0xff;
  41.                 adrd=1;
  42.                 _nop_();
  43.                 adrd=0;
  44.                 _nop_();
  45.                
  46.                 kk=P1;
  47.                 temp=kk*5/255;
  48.                 ge=temp;                                                     //个位
  49.                 temp=(temp-ge)*10;
  50.                 ge_10=temp;                                                                                 //十分位
  51.                 ge_100=(temp-ge_10)*10;       //百分位
  52.                
  53.                 adrd=1;
  54.                
  55.                 freq=ge*100+ge_10*10+ge_100;
  56.                 dacs=0;                                                                                                //da开蜂鸣
  57.                 adcs=1;
  58.                 beeeep(freq);
  59.         }
  60. }

  61. void delayms(uint xms)
  62. {
  63.         uint i,j;
  64.         for(i=xms;i>0;i--)
  65.                 for(j=110;j>0;j--);
  66. }

  67. void beeeep(uint xfreq)
  68. {
  69.         float t,tt;
  70.         t=1000/xfreq;
  71.         tt=xfreq;
  72.         for(;tt>0;tt--)
  73.         {
  74.                 beep=1;
  75.                 delayms(t);
  76.                 beep=0;
  77.         }
  78.         delayms(300);
  79. }

  80. void display(char aa,char bb,char cc,char dd,char ee,char ff,char gg,char hh)
  81. {
  82.         uint k=1,p=1;
  83.         uchar wei0,AA,BB,CC,DD,EE,FF,GG,HH;
  84.         wei0=~0x01;
  85.         AA=table[aa];
  86.         BB=table[bb];
  87.         CC=table[cc];
  88.         DD=table[dd];
  89.         EE=table[ee];
  90.         FF=table[ff];
  91.         GG=table[gg];
  92.         HH=table[hh];
  93.         for(k=1;k<9;k++)
  94.         {
  95.                 P2=0xff;
  96.                 wela=1;
  97.                 wela=0;
  98.                 switch(k)
  99.                 {
  100.                         case 1:
  101.                                 P2=AA;
  102.                                 break;
  103.                         case 2:
  104.                                 P2=BB;
  105.                                 break;
  106.                         case 3:
  107.                                 P2=CC;
  108.                                 break;
  109.                         case 4:
  110.                                 P2=DD;
  111.                                 break;
  112.                         case 5:
  113.                                 P2=EE;
  114.                                 break;
  115.                         case 6:
  116.                                 P2=FF;
  117.                                 break;
  118.                         case 7:
  119.                                 P2=GG;
  120.                                 break;
  121.                         case 8:
  122.                                 P2=HH;
  123.                                 break;
  124.                 }
  125.                 dula=1;
  126.                 dula=0;
  127.                 P2=wei0;
  128.                 wela=1;
  129.                 wela=0;
  130.                 wei0=_crol_(wei0,1);
  131.                 delayms(2);
  132.         }
  133. }
复制代码

所有资料51hei提供下载:
AD DA.rar (26.73 KB, 下载次数: 73)
回复

使用道具 举报

ID:236171 发表于 2018-6-30 08:11 | 显示全部楼层
学习了学习了
回复

使用道具 举报

ID:378116 发表于 2020-4-5 12:04 | 显示全部楼层
图看不清
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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