找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2532|回復: 0
打印 上一主題 下一主題
收起左側(cè)

人體紅外報警器單片機代碼搬運

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:264511 發(fā)表于 2017-12-20 21:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
看到一位厲害小哥自己做的,作為小白覺得不錯,分享出來
紅外報警器(雙顯示)
單片機源程序如下:
  1. #include <ioCC2530.h>
  2. #include "lcd.h"

  3. typedef unsigned char uchar;
  4. typedef unsigned int  uint;

  5. #define LED1 P1_0       //定義P1.0口為LED1控制端
  6. #define LED2 P1_1       //定義P1.1口為LED2控制端
  7. #define LED3 P1_4       //定義P1.4口為LED3控制端
  8. #define DATA_PIN P0_4   //定義P0.4口為傳感器的輸入端


  9. //串口初始化函數(shù)
  10. void InitUart(void)
  11. {
  12.     PERCFG = 0x00;           //外設控制寄存器 USART 0的IO位置:0為P0口位置1
  13.     P0SEL |= 0x0c;           //P0_2,P0_3用作串口(外設功能)
  14.     P2DIR &= ~0XC0;          //P0優(yōu)先作為UART0   
  15.     U0CSR |= 0x80;           //設置為UART方式
  16.     U0GCR |= 11;                                       
  17.     U0BAUD |= 216;           //波特率設為115200
  18.     UTX0IF = 0;              //UART0 TX中斷標志初始置位0
  19. }

  20. //串口發(fā)送函數(shù)
  21. void UartSendString(char *Data, int len)
  22. {
  23.     uint i;   
  24.     for(i=0; i<len; i++)
  25.     {
  26.         U0DBUF = *Data++;
  27.         while(UTX0IF == 0);
  28.         UTX0IF = 0;
  29.     }
  30. }


  31. //設置LED燈和P0.4相應的IO口
  32. void InitLed(void)
  33. {
  34.     P1DIR |= 0x13;           //P1.0、P1.1、P1.4定義為輸出
  35.     P0SEL &= ~0x10;
  36.     P0DIR &= ~0x10;          //P0.4定義為輸入口   
  37.     P2INP |= 0x20;   
  38.     LED2 = 0;                //點亮D2 提示程序已運行
  39. }



  40. void main(void)
  41. {   
  42.     uchar i=0,j=0;
  43.     CLKCONCMD &= ~0x40;               //設置系統(tǒng)時鐘源為32MHZ晶振
  44.     while(CLKCONSTA & 0x40);          //等待晶振穩(wěn)定為32M
  45.     CLKCONCMD &= ~0x47;               //設置系統(tǒng)主時鐘頻率為32MHZ  
  46.     InitLed();                        
  47.     InitUart();
  48.     InitUart();
  49.     LCD_Init();
  50.     LCD_Fill(0x00);  
  51.     for(i=1; i<6; i++)
  52.     {
  53.       LCD_P16x16Ch_1(i*16,0,i-1);            
  54.     }
  55.    
  56.    
  57.     while(1)                        
  58.     {
  59.         if(DATA_PIN == 1)
  60.         {
  61.             LED1 = 0;                 //有人時LED1亮
  62.             UartSendString("ON ", 3); //串口發(fā)送數(shù)據(jù),提示用戶
  63.             for(i=3;i<6;i++)
  64.             {
  65.                LCD_P16x16Ch_3(i*16,3,i-3);
  66.             }
  67.             for(i=2;i<7;i++)
  68.             {
  69.               LCD_P16x16Ch_4(i*16,5,i-2);  
  70.             }
  71.             j = 1;           
  72.         }
  73.           
  74.         else
  75.         {
  76.             LED1 = 1;                  //無人時LED1熄滅
  77.             UartSendString("OFF ", 4); //串口發(fā)送數(shù)據(jù),提示用戶
  78.             if(j == 1)
  79.             {
  80.               LCD_Fill(0x00);  
  81.               for(i=1; i<6; i++)
  82.               {
  83. ……………………

  84. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
紅外報警器(雙顯示).rar (32.23 KB, 下載次數(shù): 48)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表