找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机5v电压报警器仿真(adc0832+继电器+蜂鸣器)

[复制链接]
ID:385303 发表于 2018-8-16 21:46 | 显示全部楼层 |阅读模式
希望能对各位有所帮助!
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
QQ截图20180816214228.png 0.png QQ截图20180816214252.png

单片机源程序如下:
  1. #include<reg52.h>
  2. sbit adclk=P2^5;
  3. sbit addi=P2^0;
  4. sbit addo=P2^1;
  5. sbit adcs=P2^2;
  6. sbit dian=P0^7;
  7. sbit beep=P2^4;

  8. sbit wela1=P1^0;
  9. sbit wela2=P1^1;
  10. sbit wela3=P1^2;
  11. sbit wela4=P1^3;

  12. char code table[]=
  13. {        0x3f,0x06,0x5b,0x4f,
  14.         0x66,0x6d,0x7d,0x07,
  15.         0x7f,0x6f,0x77,0x7c,
  16.         0x39,0x5e,0x79,0x71
  17. };

  18. void Delay(unsigned char x)
  19. {
  20.      unsigned char i;
  21.      for(i=0;i<x;i++);
  22.        
  23. }

  24. void Delay1(unsigned char y)
  25. {
  26.      unsigned char i,j;
  27.      for(i=0;i<y;i++)
  28.                  for(j=110;j>0;j--);
  29.        
  30. }

  31. unsigned char ADC0832(void)

  32. {
  33.      unsigned char i,data_c;

  34.      data_c=0;
  35.      adcs=0;
  36.      addo=0;
  37.      Delay(2);

  38.      adclk=0;
  39.      Delay(2);
  40.      addi=1;  //第一个脉冲  启动AD转换器
  41.      adclk=1;
  42.      Delay(2);
  43.      adclk=0;

  44.      Delay(2);
  45.      adclk=1; // 第二的脉冲 送出1
  46.      Delay(2);
  47.      adclk=0;

  48.      Delay(2);
  49.      addi=0;
  50.      adclk=1;   //第三个脉冲 送出0
  51.      Delay(2);
  52.      adclk=0;

  53.      addi=0;   //D1口转为高阻态
  54.      addo=1;   //D0口脱离高阻态 为输出做准备

  55.      for (i=0;i<8;i++)//读出数据

  56.      {

  57.           adclk=1;
  58.           Delay(2);
  59.           adclk=0;
  60.           Delay(2);
  61.           data_c=(data_c<<1)|addo;
  62.      }

  63.      adcs=1;
  64.      return(data_c);
  65. }

  66. void display(char bai,char shi,char ge)//数码管显示
  67. {
  68.            wela1=0;
  69.            dian=1;
  70.            Delay1(5);
  71.            wela2=1;
  72.            P0=0x00;
  73.            Delay1(1);
  74.        
  75.      wela1=0;
  76.            P0=table[bai];
  77.            Delay1(5);
  78.            wela1=1;
  79.            P0=0x00;
  80.            Delay1(1);
  81.        
  82.            wela2=0;
  83.            P0=table[shi];
  84.            Delay1(5);
  85.            wela2=1;
  86.            P0=0x00;
  87.            Delay1(1);
  88.        
  89.            wela3=0;
  90.            P0=table[ge];
  91.      Delay1(5);
  92.            wela3=1;
  93.            P0=0x00;
  94.            Delay1(1);
  95.          
  96. }

  97. void main()
  98. {
  99.     unsigned int adval,shi,bai,ge;
  100.     while(1)
  101.     {
  102.                 adval=ADC0832();
  103.                 adval=2*adval;
  104.                 bai=adval/100;
  105.                 shi=adval%100/10;
  106.                 ge=adval%10;
  107.                 display(bai,shi,ge);
  108.                 if(bai>=3)
  109.                       {
  110.               beep=0;
  111.           }
  112.                       else if(bai<=3)
  113.                       {
  114.               beep=1;
  115.           }
  116.     }
  117. }
复制代码
0.png

所有资料51hei提供下载:
adc.zip (72.14 KB, 下载次数: 107)
回复

使用道具 举报

ID:452933 发表于 2018-12-23 21:55 来自手机 | 显示全部楼层
兄弟,用1602显示的会吗
回复

使用道具 举报

ID:455344 发表于 2018-12-28 09:32 | 显示全部楼层
有汇编的吗?楼主
回复

使用道具 举报

ID:468549 发表于 2019-1-16 20:06 | 显示全部楼层
报警器不响哎
回复

使用道具 举报

ID:723510 发表于 2020-5-7 09:42 | 显示全部楼层
老铁  硬件和编程我都打不开,伤心啊
回复

使用道具 举报

ID:723510 发表于 2020-5-7 10:05 | 显示全部楼层
本人亲自认证,编程有问题,硬件连接仿真不出来,大家可以参考。不用下载了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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