找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3951|回复: 5
收起左侧

51单片机ad0809转换 数码管输出工程

[复制链接]
ID:403791 发表于 2018-9-28 21:02 | 显示全部楼层 |阅读模式
这个项目主要是应用51单片机实现,ad转换+数码管输出、

注意:ad0809这个型号在Proteus中没有所以用ad0808代替仿真。

单片机源程序如下:
  1. #include "reg51.h"                        
  2. typedef unsigned int u16;         
  3. typedef unsigned char u8;


  4. sbit sla=P3^0;//选择输入口定义
  5. sbit slb=P3^1;
  6. sbit slc=P3^3;//装置为3.仿真为6
  7. sbit dia=P0^7;


  8. sbit ALE=P3^4        ;//AD锁存器允许信号(4)仿真为3
  9. sbit CLOCK=P3^5;//时钟信号(5)仿真为4
  10. sbit ST=P3^7;//装置为(7)仿真为5
  11. sbit EOC=P3^2;//转换完成信号
  12. sbit OE=P3^6;//允许输出信号装置为(6)仿真为7

  13. sbit dula=P2^6;//数码管锁存信号,装置为6/7,仿真为0/1
  14. sbit wula=P2^7;

  15. u8 code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  16.                                        
  17. u16 t0, votage;

  18. void delay(u16 i)
  19. {
  20.         u16 m,n;
  21.         for(m=i;m>0;m--)
  22.                 for(n=110;n>0;n--);               
  23. }

  24. u16 trans(u16 x)//将二进制转化为十进制
  25. {
  26.         
  27.         u16 d;
  28.         d=(19.6078431372549)*x;
  29.         
  30.         return d;
  31.         
  32. }
  33. void display(u16 v)
  34. {
  35.         P0=0x00;
  36.         dula=1;
  37.         P0=table[v/1000];
  38.         dia=1;
  39.         dula=0;
  40.         P0=0x00;
  41.         wula=1;
  42.         P0=0xfe;
  43.         wula=0;
  44.         delay(2);
  45.         
  46.         P0=0x00;
  47.         dula=1;
  48.         P0=table[(v%1000)/100];
  49.         dula=0;
  50.         P0=0x00;
  51.         wula=1;
  52.         P0=0xfd;
  53.         wula=0;
  54.         delay(2);        
  55.         
  56.         P0=0x00;
  57.         dula=1;
  58.         P0=table[((v%1000)%100)/10];
  59.         dula=0;
  60.         P0=0x00;
  61.         wula=1;
  62.         P0=0xfb;
  63.         wula=0;
  64.         delay(2);
  65.         
  66.         P0=0x00;
  67.         dula=1;
  68.         P0=table[v%10];
  69.         dula=0;
  70.         P0=0x00;
  71.         wula=1;
  72.         P0=0xf7;
  73.         wula=0;
  74.         delay(2);
  75.         
  76.         
  77. }
  78. void main()
  79. {
  80.         
  81.         sla=0;//0号作为口输入模拟信号
  82.         slb=0;
  83.         slc=0;
  84.         
  85.         OE=0;
  86.         ST=0;
  87.         
  88.         TMOD=0x01;
  89.         TH0=(65536-2)/256;
  90.         TL0=(65536-2)%256;
  91.         EA=1;
  92.         ET0=1;
  93.         TR0=1;
  94.         
  95.         
  96.         

  97.         while(1)
  98.   {
  99.                         ST=0;ST=1;ST=0;//启动转换
  100.                         while(EOC==0)
  101.                         {
  102.                         OE=1;
  103.                         display(trans(P1));
  104.                         OE=0;
  105.                         }
  106.                         trans(P1);
  107.   }
  108. }


  109. void T0_time() interrupt 1//TO计时器给ADC提供时钟信号
  110. {
  111.         TH0=(65536-2)/256;
  112.   TL0=(65536-2)%256;
  113.         CLOCK=~CLOCK;
  114. }
复制代码

Keil5工程文件,仿真图在下面jpg图片格式,大家自己打开Proteus画一下吧,下面的附件里面只有代码的Keil文件:
AD_51.rar (12.8 KB, 下载次数: 45)
回复

使用道具 举报

ID:1 发表于 2018-9-28 21:33 | 显示全部楼层
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

ID:403791 发表于 2018-9-28 21:44 | 显示全部楼层
这个就是电路原理图图。

这里是电路图,用到两片74h573锁存器

这里是电路图,用到两片74h573锁存器

评分

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

查看全部评分

回复

使用道具 举报

ID:403791 发表于 2018-9-28 21:48 | 显示全部楼层
admin 发表于 2018-9-28 21:33
补全原理图或者详细说明一下电路连接即可获得100+黑币

好了,老大。
回复

使用道具 举报

ID:675597 发表于 2019-12-27 18:22 | 显示全部楼层

你好,可以电路图详细发一下嘛
回复

使用道具 举报

ID:939357 发表于 2021-6-18 10:25 | 显示全部楼层
亮不起来
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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