找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5991|回复: 4
收起左侧

通过AD0809芯片显示电压值的proteus仿真

[复制链接]
ID:148777 发表于 2017-10-15 16:21 | 显示全部楼层 |阅读模式

仿真

仿真

程序

程序


单片机源程序如下:
  1. /***********************************************************
  2. **程序功能:通过AD0809芯片显示电压值
  3. **程序说明:通过增加电阻值来改变电压值 即显示可变电阻的电压值
  4. **通信格式:无
  5. **创建日期:2017/10/11
  6. *************************************************************/
  7. #include <reg52.h>
  8. #include <intrins.h>

  9. #define uint unsigned int
  10. #define uchar unsigned char
  11.        
  12. uint Data;                                      //输出数据参数

  13. sbit OE=P1^0;                                   //输出使能端口
  14. sbit EOC=P1^1;                                  //转换结束信号
  15. sbit ST=P1^2;                                   //AD转换启动信号端

  16. sbit ADDA=P1^4;
  17. sbit ADDB=P1^5;
  18. sbit ADDC=P1^6;                                 //通道选择IO口定义

  19. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  20.                                                 //0-9

  21. void Delay();
  22. void Ad0809Init();
  23. void Display();                                 //函数声明

  24. /******************************************************************
  25. **函数名称:Ad0809Init()
  26. **函数功能:Ad0809初始化
  27. **输入    :无
  28. **输出    :无
  29. *******************************************************************/
  30. void Ad0809Init()
  31. {
  32.         ADDA=1;
  33.         ADDB=1;
  34.         ADDC=0;
  35. OE=0;ST=0;
  36. ST=1;ST=0;
  37. while(EOC==0);
  38. OE=1;
  39. Data=P3;
  40. OE=0;       
  41. }
  42. /*****************************************************************
  43. **函数名称:Display()
  44. **函数功能:显示函数 显示电压值
  45. **输入    :无
  46. **输出    :无
  47. ******************************************************************/
  48. void Display()
  49. {
  50.         uint i;
  51.         Data=Data*19.61;                        //将输出数据转换为电压值
  52.         /*输出八位 二的八次方正好是255 所以最大为255 用500/255*/
  53. for(i=0;i<4;i++)
  54.         {
  55.                 P0=0x00;
  56.           switch(i)
  57.                 {
  58.                   case 0:P2=0xfe;P0=table[Data/1000]|0x80;break;
  59.                         case 1:P2=0xfd;P0=table[Data%1000/100];break;
  60.                         case 2:P2=0xfb;P0=table[Data%100/10];break;
  61.                         case 3:P2=0xf7;P0=table[Data%10];break;
  62.                 }
  63.                 Delay();
  64.         }
  65. }
  66. /*****************************************************************
  67. **函数名称:Delay()
  68. **函数功能:延时
  69. **输入    :无
  70. **输出    :无
  71. ******************************************************************/
  72. void Delay()
  73. {
  74. ……………………

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

所有资料51hei提供下载:
AD0809.zip (70.8 KB, 下载次数: 195)

评分

参与人数 2黑币 +55 收起 理由
Technitime + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:445115 发表于 2018-12-13 16:46 | 显示全部楼层
很给力
回复

使用道具 举报

ID:535500 发表于 2019-5-11 15:41 | 显示全部楼层
很不错
回复

使用道具 举报

ID:597208 发表于 2019-8-7 20:12 | 显示全部楼层
很厉害
回复

使用道具 举报

ID:990681 发表于 2021-12-11 17:57 | 显示全部楼层
你好,我想问下那个从机是用来传输记录数据的吗,还有其他的作用吗,下面那个从机删掉的话没有影响吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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