找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3130|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)水位(上下限)監(jiān)測報(bào)警、斷電24C2存儲(chǔ)報(bào)警器程序仿真(1路模擬量,存儲(chǔ))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:64696 發(fā)表于 2021-9-16 08:36 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單通道模擬量報(bào)警
比如:酒精報(bào)警器,檢測濃度,然后濃度過限報(bào)警;通過按鍵設(shè)置報(bào)警值,同時(shí)報(bào)警值通過24C02保存

當(dāng)然也可以改成別的名字,比如:甲烷報(bào)警、一氧化碳報(bào)警、天然氣報(bào)警等。

程序流程圖:


元件    型號(hào)
單片機(jī)    AT89C51
電容    10uf
電容    30pf
晶振    12MHZ
電阻    10k
按鈕   
存儲(chǔ)器    24C02
模數(shù)芯片    ADC0832
電位器    1k
電阻    1k
三極管    PNP
蜂鳴器    有源
顯示器    LCD1602
排阻    10k

單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include <ADC0832.h>
  3. #include"i2c.h"
  4. #include "lcd1602.h"
  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. sbit k1=P1^0;
  8. sbit k2=P1^1;
  9. sbit beep=P2^3;
  10. uchar disp1[]="Alcohol:000";
  11. uchar disp2[]="limit:050";
  12. uchar Alcohol=0;//酒精濃度
  13. uchar limit =50;//報(bào)警閥值

  14. uchar k=0;
  15. void delay(uint i) //延時(shí)
  16. {
  17.         while(i--);
  18. }

  19. void main()
  20. {
  21.         TMOD|=0X01;
  22.         TH0=0X3C;
  23.         TL0=0XB0;       
  24.         ET0=1;//打開定時(shí)器0中斷允許
  25.         EA=1;//打開總中斷
  26.         TR0=1;//打開定時(shí)器
  27.         init_1602();
  28.         limit=At24c02Read(0);//初始化存儲(chǔ)
  29.         if(limit>200)
  30.         {
  31.                 limit=50;
  32.                 At24c02Write(0,limit);
  33.                 delay(10000);
  34.         }
  35.         write_string(1,0,disp1); //顯示
  36.         write_string(2,2,disp2);
  37.         while(1)
  38.         {
  39.                 if(Alcohol>limit)//報(bào)警判斷
  40.                         beep=0;
  41.                 else
  42.                         beep=1;
  43.                 if(!k1)//加
  44.                 {
  45.                         if(limit<200)
  46.                                 limit++;
  47.                         At24c02Write(0,limit);
  48.                         delay(10000);
  49.                         while(!k1);
  50.                 }
  51.                 if(!k2)//減
  52.                 {
  53.                         if(limit>0)
  54.                                 limit--;
  55.                         At24c02Write(0,limit);
  56.                         delay(10000);
  57.                         while(!k2);
  58.                 }
  59.         }
  60. }
  61. void Timer0() interrupt 1//定時(shí)器中斷
  62. {
  63.         TH0=0X3C;
  64.         TL0=0XB0;
  65.         if(k<10)
  66.                 k++;
  67.         else
  68.         {
  69.                 k=0;
  70.                 Alcohol=ADC();//測酒精
  71.                 disp1[8]=Alcohol/100+0x30;
  72.                 disp1[9]=Alcohol%100/10+0x30;
  73.                 disp1[10]=Alcohol%10+0x30;
  74.                 disp2[6]=limit/100+0x30;
  75.                 disp2[7]=limit%100/10+0x30;
  76.                 disp2[8]=limit%10+0x30;
  77.                 write_string(1,0,disp1); //顯示
  78.                 write_string(2,2,disp2);
  79.         }
  80. }
復(fù)制代碼

所有資料51hei附件下載,注意仿真只能用Proteus7.8版本打開dsn文件:
報(bào)警器(1路模擬量,存儲(chǔ)).rar (617.99 KB, 下載次數(shù): 66)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:795427 發(fā)表于 2021-9-17 16:30 | 只看該作者
可以在proteus8.9上仿真,但是需要將ADC083X.dll文件替換成proteus7,舊版本的文件,再進(jìn)行仿真就可以了。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表