标题: 51单片机ADC0808两路输入的数字电压表设计 Proteus仿真程序 [打印本页]

作者: 叫我哥哥555    时间: 2020-5-22 19:49
标题: 51单片机ADC0808两路输入的数字电压表设计 Proteus仿真程序
见附件
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>
  2. unsigned char a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71},b[4],c=0x01;

  3. sbit  START=P2^4;
  4. sbit  OE=P2^6;
  5. sbit  EOC=P2^5;
  6. sbit  add_a=P2^2;
  7. sbit  add_b=P2^1;
  8. sbit  add_c=P2^0;
  9. sbit  led=P2^7;
  10. sbit  buzzer=P2^3;

  11. void Delay1ms(unsigned int count)
  12. {
  13.         unsigned  int i,j;
  14.         for(i=0;i<count;i++)
  15.         for(j=0;j<120;j++);
  16. }

  17. void show()    //显示函数
  18. {
  19.         unsigned int r;
  20.         for(r=0;r<4;r++)
  21.         {
  22.                 P1=(c<<r);
  23.                 P3=b[r];
  24.                 if(r==2)    //显示小数点
  25.                 P3=P3|0x80;
  26.                 Delay1ms(1);
  27.         }
  28. }


  29. void main(void)
  30. {
  31.         unsigned int addata=0,i;
  32.         while(1)
  33.   {              //采集第一路信号
  34.     add_a=0;
  35.     add_b=0;
  36.     add_c=0;               
  37.                 START=1;
  38.                 START=0;
  39.                 while(EOC==0)
  40.                 {
  41.                         OE=1;
  42.                 }
  43.         addata=P0;
  44.         if(addata>=0x40)    //当大于1.25v时,则使用LED和蜂鸣器报警
  45.         {
  46.                 for(i=0;i<100;i++)
  47.                 {
  48.                         led=~led;
  49.                         buzzer=~buzzer;
  50.                 }
  51.                 led=1;   //控制发光二极管D2闪烁,发出光报警信号
  52.                 buzzer=1;     //控制蜂鸣器发声,发出声音报警信号
  53.         }
  54.         else     //否则取消报警
  55.         {
  56.                 led=0;     //控制发光二极管D2灭
  57.                 buzzer=0;  //控制蜂鸣器不发声
  58.         }
  59.         addata=addata*1.96;  //将采集的二进制数转换成可读的电压值
  60.         OE=0;
  61.         b[0]=a[addata%10];
  62.         b[1]=a[addata/10%10];
  63.         b[2]=a[addata/100%10];
  64.         b[3]=a[addata/1000];
  65.         for(i=0;i<=200;i++)
  66.         {
  67.                 show();
  68.         }
  69.         
  70.         
  71.           add_a=1;     //采集第二路信号
  72.     add_b=0;
  73.     add_c=0;               
  74.                 START=1;     //启动ADC0808开始转换
  75.                 START=0;
  76.                 while(EOC==0)
  77.                 {
  78.                         OE=1;
  79.                 }
  80.         addata=P0;
  81.         if(addata>=0x80)    //当大于2.5v时,则使用LED和蜂鸣器报警
  82.         {
  83.                 for(i=0;i<100;i++)
  84.                 {
  85.                         led=~led;
  86.                         buzzer=~buzzer;
  87.                 }
  88.                 led=1;   //控制发光二极管D2闪烁,发出光报警信号
  89.                 buzzer=1;     //控制蜂鸣器发声,发出声音报警信号
  90.         }
  91.         else     //否则取消报警
  92.         {
  93.                 led=0;     //控制发光二极管D2灭
  94.                 buzzer=0;  //控制蜂鸣器不发声
  95.         }
  96.         addata=addata*1.96;  //将采集的二进制数转换成可读的电压值
  97.         OE=0;
  98.         b[0]=a[addata%10];
  99.         b[1]=a[addata/10%10];
  100.         b[2]=a[addata/100%10];
  101.         b[3]=a[addata/1000];
  102.         for(i=0;i<=200;i++)
  103.         {
  104.                 show();
  105.         }
  106. }
  107. }
复制代码


所有资料51hei提供下载:
源程序 仿真.rar (93.63 KB, 下载次数: 206)


作者: qwertyq    时间: 2020-5-25 19:05
protues仿真图的左边是什么图画呀,看不完整
作者: anheipaidaxing    时间: 2020-5-26 10:58
感谢大佬
作者: 柚子100    时间: 2020-5-28 23:22
实在是太棒了
作者: 虚幻的斗士    时间: 2020-6-3 23:29
感谢大佬

作者: sandiyago    时间: 2020-6-6 09:02
仿真用不了
作者: 乐甜甜    时间: 2020-6-23 14:47
sandiyago 发表于 2020-6-6 09:02
仿真用不了

你是自己画的图还是下载作者的安装包啊?我自己画的没毛病啊,就是仿真不对
作者: 米老头fairy    时间: 2020-11-8 13:51
sandiyago 发表于 2020-6-6 09:02
仿真用不了

转换以下格式
作者: 川人在柳    时间: 2020-12-16 22:53
实际应用中,基准电压怎么获得?




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