标题: 基于proteus/keil51单片机的 AD/DA转换实验程序 [打印本页]

作者: hxy970426    时间: 2019-5-23 13:56
标题: 基于proteus/keil51单片机的 AD/DA转换实验程序

一、实验目的
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)
实验八 AD转换实验.docx (42.7 KB, 下载次数: 30)



作者: hxy970426    时间: 2019-5-23 13:58
C语言的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1