找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于proteus/keil51单片机的 AD/DA转换实验程序

[复制链接]
ID:545489 发表于 2019-5-23 13:56 | 显示全部楼层 |阅读模式
0.png
一、实验目的
1.    掌握单片机与A/D转换器ADC0809的接口技术;
2.    熟悉模拟信号采集与数据输出显示的综合程序设计与调试方法。
3.    掌握硬件仿真软件ISIS的使用。
二、实验设备(仪器)
计算机
三、实验内容
将调节器一端接+5V,另一端接地,中间抽头接A/D转换芯片ADC0809的任意通道,ADC0809采集来自调节器的0~5V连续可变的模拟电压信号,将其转换为8位数字信号00~FFH后,送单片机处理,并在最右端两位数码管上显示出电压值(显示格式:0.0~5.0),同时最左端数码管显示采集的通道数。
四、实验步骤
1.硬件仿真原理图如图1所示。
2.创建ISIS设计文件,绘制图1仿真原理图。
3.运行Keil uVision2软件,新建工程项目,编写简易数字电压表功能的源程序。
4.对源程序调试,连接,生成可执行文件。
5.切换到ISIS仿真界面,双击AT89C51器件,弹出“edit component”对话框,打开”Program   File”文件夹,选中简易数字电压表程序所对应的可执行文件,再点击确定按钮。
6.在ISIS仿真界面中,点击运行按钮,观察运行结果,若结果不正确,再重新调试,编译,直至结果正确。
复习A/D转换器ADC0809芯片的功能引脚及其控制方法和数码管的动态显示控制,并按题目要求编写程序。

单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned  char
  3. #define uint unsigned int
  4. void delay();
  5. void display();
  6. sbit START=P2^4;
  7. sbit EOC=P3^2;
  8. sbit OE=P3^0;
  9. sbit ADDA=P2^5;
  10. sbit ADDB=P2^6;
  11. sbit ADDC=P2^7;
  12. uint result;
  13. uchar code tabe0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  14. uchar code tabe1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

  15. void main()
  16. {
  17.         while(1)
  18.         {
  19.                 ADDA=1;                           //通道5
  20.                 ADDB=0;
  21.                 ADDC=1;
  22.                 START=0;
  23.                 START=1;
  24.                 START=0;
  25.                 while(EOC==0);
  26.                 OE=1;
  27.                 result=P1;
  28.                 OE=0;
  29.                 display();
  30.         }
  31. }                                                                                                               
  32. void delay(uint k)
  33. {
  34.         uint i,t;
  35.         for(i=0;i<100;i++)
  36.         for(t=0;t<k;t++);
  37. }
  38. //void delay()
  39. //{
  40. //        uint i;
  41. //        for(i=0;i<1000;i++);
  42. //        
  43. //}
  44. void display()                                                               
  45. {
  46.         P2=0x0b;
  47.         P0=tabe1[result/51];    //个位
  48.         delay(10);

  49.         P2=0x07;
  50.         P0=tabe0[((result*10)/51)%10];   //小数点后位
  51.         delay(10);

  52.         P2=0x0e;
  53.         P0=tabe0[5];
  54.         delay(10);

  55. }
复制代码

所有资料51hei提供下载:
AD8(1).zip (71.95 KB, 下载次数: 68)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:545489 发表于 2019-5-23 13:58 | 显示全部楼层
C语言的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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