久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5782|回復: 5
打印 上一主題 下一主題
收起左側

基于51單片機PIR人體紅外感應和DAC0832信號發生器源程序與電路

[復制鏈接]
跳轉到指定樓層
樓主
信號發生器是一種常用的信號源,廣泛地應用于電子電路、自動控制系統和教學實驗等領域。 本設計采用STC89C52單片機作為控制核心,外圍采用數字/模擬轉換電路(DAC0832)、運放電路(LM358)、按鍵和LCD12864液晶顯示電路。電路采用單片機和一片DAC0832數模轉換器組成數字式低頻信號發生器,可產生正弦波、矩形波和三角波三種波形。系統通過單片機產生數字信號,通過DAC0832轉換為模擬信號,再通過放大器LM358就可以得到雙極性的各種波形,最終由示波器顯示出來。通過鍵盤來控制四種波形的類型選擇、頻率變化,其中頻率調節范圍為5HZ-100HZ,并通過液晶12864顯示其各自的波形類型以及頻率數值。
外加紅外熱釋電傳感器(PIR)現在最常見的就是樓道內的自動風扇基本用到的就是這種方案。

電路原理圖如下:


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "hcsr501.h"
  4. #include "lcd12864.h"
  5. #include "Function Generator.h"
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. /**********主題顯示*****************/
  9. uchar code Theme_one[]="凄凄切切群群瞧瞧";
  10. uchar code Theme_two[]="親戚去去去去瞧瞧";
  11. uchar code Theme_thr[]="凄凄切切群群瞧瞧";
  12. uchar code Theme_fou[]="親親我群群去瞧瞧";
  13. /**********內容顯示****************/
  14. uchar code SOURCE_WAVE[]     ="波形:          ";
  15. uchar code SOURCE_FREQUENCY[]="頻率:        HZ";
  16. uchar code SOURCE_AMPLITUDE[]="  水龍頭的狀態  ";
  17. uchar code SOURCE_STATE[]    ="                ";


  18. /****************1ms延時函數********************/
  19. void DIS_theme()
  20. {
  21.         set_LCD12864_pos(0,0);
  22.         write_12864str(Theme_one);//"桂林電子科技大學""
  23.         set_LCD12864_pos(1,0);
  24.         write_12864str(Theme_two);//學號
  25.         set_LCD12864_pos(2,0);
  26.         write_12864str(Theme_thr);
  27.         set_LCD12864_pos(3,0);
  28.         write_12864str(Theme_fou);
  29.         delay_ms(1000);
  30.         set_LCD12864_pos(0,0);
  31.         write_12864str(SOURCE_WAVE);     //波形
  32.         set_LCD12864_pos(1,0);
  33.         write_12864str(SOURCE_FREQUENCY);//頻率
  34.         set_LCD12864_pos(2,0);
  35.         write_12864str(SOURCE_AMPLITUDE);////狀態
  36.         set_LCD12864_pos(3,0);
  37.         write_12864str(SOURCE_STATE);       

  38. }

  39. /****************主函數************************/
  40. void main()
  41. {
  42.                   Timer0Init();//初始化定時器0
  43.               Timer1Init();//初始化定時器1
  44.                   EA=1;
  45.                   LCD12864_init();//初始化液晶
  46.                   LCD12864_Busy();//液晶判忙
  47.                   DIS_theme();//主題顯示
  48.                 while(1)
  49.                 {
  50.                        
  51.                         PUTOUT_WAVE();//波形輸出
  52.             check_option();//水龍頭感應檢測
  53.                 }
  54. }
復制代碼
  1. #include "reg52.h"
  2. #include "hcsr501.h"
  3. #include "lcd12864.h"
  4. #define PEOPLE_NEAR_THRESHOLD        10        //人體接近判斷閥值
  5. #define PEOPLE_LEAVE_THRESHOLD        5        //人體離開判斷閥值
  6. uchar PeopleNear = 0;                                  //人體接近判斷標示,0:無人接近或人離開;1:人接近
  7. uchar OutUpCount = 0;                                //HC-SR501輸出高電平計數
  8. uchar OutDowmCount = 0;                                //HC-SR501輸出低電平計數
  9. //uchar IR_flag=0;                    //標志位
  10. //uchar num=0;
  11. /****************1ms延時函數********************/
  12. void delay_ms(uint del)
  13. {
  14.     uint i;
  15.     for(;del>0;del--)
  16.         for(i=124;i>0;i--);
  17. }
  18. /*****************************************************
  19. ** 函數名稱:Timer0Init
  20. ** 函數功能:單片機定時器0初始化,每50MS產生1次中斷
  21. ** 參    數:無
  22. ** 函數返回:無
  23. ******************************************************/
  24. void Timer0Init(void)                //50毫秒@12MHz
  25. {

  26.         TMOD |= 0x01;                //設置定時器模式
  27.         TH0 = (65536 - 50000) / 256;    // 設置定時器0為工作方式1(M1M0為01)
  28.     TL0 = (65536 - 50000) % 256;    // 裝初值12M晶振定時50ms數位50000
  29.         //EA  = 1;                            // 開總中斷
  30.         TR0 = 1;                //定時器0開始計時
  31.         ET0 = 1;
  32. }
  33. /*****************************************************
  34. ** 函數名稱:check_option()
  35. ** 函數功能:判斷人是否走進還是離去
  36. ** 參    數:無
  37. ** 函數返回:無
  38. ******************************************************/
  39. void check_option()
  40. {
  41.         if(PeopleNear)  //熱釋電紅外端口有輸出為0,無輸出為1.
  42.                         {
  43.                                
  44.                                 relay=1;//繼電器吸合
  45.                                 set_LCD12864_pos(3,0);
  46.                                 write_12864str(" OPEN ! Welcome!");//顯示字符串Welcome!
  47.                                 delay_ms(2500);delay_ms(2500);
  48.                                
  49.                         }
  50.                                 else
  51.                                 //IR_flag=0;
  52.                                 relay=0;                //繼電器斷開                                                                          
  53.                                 set_LCD12864_pos(3,0);
  54.                                 write_12864str("CLOSE ! See you!");//顯示字符串See you!
  55. //                                delay_ms(2500);delay_ms(2500);
  56. //                                set_LCD12864_pos(3,4);
  57. //                                write_12864str("no one !");//顯示字符串Welcome!
  58. }
  59. /*****************************************************
  60. ** 函數名稱:Timer0IntPro
  61. ** 函數功能:單片機定時器0中斷處理函數
  62.                          ①連續10次采集到HC-SR501高電平輸出,判斷
  63.                            為有人體接近。
  64.                          ②當已判斷有人體接近年后,連續10次采集到
  65.                            HC-SR501低電平輸出,判斷為人體離開
  66. ** 參    數:無
  67. ** 函數返回:無
  68. ******************************************************/
  69. void Timer0IntPro(void)                interrupt 1        using 0
  70.        
  71. {
  72.         TH0 = (65536-50000)/256;//裝初值,50ms申請一次中斷
  73.         TL0 = (65536-50000)%256;
  74. //  num++;   //申請一次中斷num加1一次
  75. //        if(num==100)
  76. //        {num=0;IR_flag=1;}
  77.         if(Out)
  78.         {
  79.                  OutUpCount++;
  80.                  if(OutUpCount >= PEOPLE_NEAR_THRESHOLD)
  81.                  {
  82.                          PeopleNear = 1;
  83.                          
  84.                  }
  85.         }
  86.         else
  87.         {
  88.                 if(PeopleNear)
  89.                 {
  90.                         OutDowmCount++;
  91.                         if(OutDowmCount >= PEOPLE_LEAVE_THRESHOLD)
  92.                         {
  93.                                 PeopleNear = 0;
  94.                                 OutUpCount = 0;
  95.                                 OutDowmCount = 0;
  96.                         }       
  97.                 }
  98.         }
  99. }
復制代碼


所有資料51hei提供下載:

dac0832中文資料.pdf

324.08 KB, 下載次數: 22, 下載積分: 黑幣 -5

dac0832中文數據手冊

源程序.rar

61.88 KB, 下載次數: 35, 下載積分: 黑幣 -5

源程序

Sheet1.rar

18.17 KB, 下載次數: 27, 下載積分: 黑幣 -5

原理圖

dac0832.pdf

1.82 MB, 下載次數: 13, 下載積分: 黑幣 -5

dac0832數據手冊

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:422637 發表于 2018-11-19 21:37 | 只看該作者
貼主看到可以回復嗎,我現在要設計一個人體紅外感應系統,題目是:當沒有人時,LCD1602顯示“nobody”,LED燈每秒亮1次,當系統感應到有人靠近時,LED燈亮10秒,在液晶LCD1602上顯示10秒倒計時,并顯示“Somebody IN”。
回復

使用道具 舉報

板凳
ID:422637 發表于 2018-11-19 21:37 | 只看該作者
如果可以做,我可以付費的,因為課設需要
回復

使用道具 舉報

地板
ID:748365 發表于 2020-5-11 07:18 來自手機 | 只看該作者
下載打不開啊
回復

使用道具 舉報

5#
ID:328014 發表于 2020-5-15 03:07 | 只看該作者

可以打開,我打開了 正在看程序
回復

使用道具 舉報

6#
ID:668601 發表于 2020-5-15 09:45 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产一二三 | 韩三级在线观看 | 天天躁日日躁狠狠躁2018小说 | 国产精品欧美一区二区三区不卡 | 欧美日韩三级 | 欧美高清视频一区 | 美女午夜影院 | 精品久久九 | 新91视频网 | 国产精品大片 | 精品一区二区av | 成人亚洲网| 国产精品免费一区二区三区四区 | 欧美性受xxxx | 免费激情av | 久久久国产精品视频 | 久久精品无码一区二区三区 | 亚洲精品一区二区三区四区高清 | 日本韩国电影免费观看 | 国产99久久| 少妇黄色| 国产精品免费一区二区三区四区 | h片在线观看免费 | 日本视频在线播放 | 免费福利视频一区二区三区 | 国产一区久久 | 欧美成人h版在线观看 | 羞羞的视频在线观看 | 国产一区二区三区在线看 | 亚洲日产精品 | 欧美一区二区三区在线看 | 欧美色综合一区二区三区 | 欧美一区二区在线免费观看 | 麻豆国产一区二区三区四区 | 亚洲欧美视频在线观看 | 亚洲午夜在线 | 久久99深爱久久99精品 | 国产一区二 | 毛片免费观看 | 97人澡人人添人人爽欧美 | 日韩在线视频网址 |