找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8160|回复: 0
打印 上一主题 下一主题
收起左侧

ADC0808采集电压并且用数码管显示(仿真+单片机源码)

[复制链接]
跳转到指定楼层
楼主
ADC0808采集电压并且用数码管显示仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. sbit CLK=P1^3;
  6. sbit ST=P1^2;
  7. sbit EOC=P1^1;
  8. sbit OE=P1^0;

  9. void DelayMS(uint ms)
  10. {
  11.         uchar i;
  12.         while(ms--)
  13.                 for(i=0;i<120;i++);
  14. }
  15. /******************显示采集的电压**********************************/
  16. void Display_Result(uchar d)
  17. {
  18.         P2=0xf7;
  19.         P0=DSY_CODE[d%10];                //注意:当d变为2*d时候,显示正确,但不知why
  20.         DelayMS(5);
  21.         P2=0xfb;
  22.         P0=DSY_CODE[d%100/10];
  23.         DelayMS(5);
  24.         P2=0xfd;
  25.         P0=DSY_CODE[d/100]|0x80;
  26.         DelayMS(5);
  27. }

  28. void main()
  29. {
  30. //        uchar guo;
  31.         TMOD=0x02;
  32.         TH0=0x14;
  33.         TL0=0x00;
  34.         IE=0x82;
  35.         TR0=1;
  36.         
  37.         P1=0x3f; //通道选择
  38.         
  39.         while(1)
  40.         {
  41.                 ST=0;ST=1;ST=0; //ADC启动
  42.                 while(EOC==0); //转换结束信号
  43.                 OE=1;                //输出使能
  44. //                guo=(P3/256)*5*100;
  45.                 Display_Result(P3);
  46.                 OE=0;
  47.         }
  48. }

  49. void Timer0_INT() interrupt 1
  50. {
  51.         CLK=~CLK;
  52. }
复制代码

所有资料51hei提供下载:
ADC0808采集电压并且用数码管显示0.zip (67.46 KB, 下载次数: 146)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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