標(biāo)題:
人體紅外報(bào)警器單片機(jī)代碼搬運(yùn)
[打印本頁(yè)]
作者:
1410936112
時(shí)間:
2017-12-20 21:12
標(biāo)題:
人體紅外報(bào)警器單片機(jī)代碼搬運(yùn)
看到一位厲害小哥自己做的,作為小白覺(jué)得不錯(cuò),分享出來(lái)
紅外報(bào)警器(雙顯示)
單片機(jī)源程序如下:
#include <ioCC2530.h>
#include "lcd.h"
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_0 //定義P1.0口為L(zhǎng)ED1控制端
#define LED2 P1_1 //定義P1.1口為L(zhǎng)ED2控制端
#define LED3 P1_4 //定義P1.4口為L(zhǎng)ED3控制端
#define DATA_PIN P0_4 //定義P0.4口為傳感器的輸入端
//串口初始化函數(shù)
void InitUart(void)
{
PERCFG = 0x00; //外設(shè)控制寄存器 USART 0的IO位置:0為P0口位置1
P0SEL |= 0x0c; //P0_2,P0_3用作串口(外設(shè)功能)
P2DIR &= ~0XC0; //P0優(yōu)先作為UART0
U0CSR |= 0x80; //設(shè)置為UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率設(shè)為115200
UTX0IF = 0; //UART0 TX中斷標(biāo)志初始置位0
}
//串口發(fā)送函數(shù)
void UartSendString(char *Data, int len)
{
uint i;
for(i=0; i<len; i++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
//設(shè)置LED燈和P0.4相應(yīng)的IO口
void InitLed(void)
{
P1DIR |= 0x13; //P1.0、P1.1、P1.4定義為輸出
P0SEL &= ~0x10;
P0DIR &= ~0x10; //P0.4定義為輸入口
P2INP |= 0x20;
LED2 = 0; //點(diǎn)亮D2 提示程序已運(yùn)行
}
void main(void)
{
uchar i=0,j=0;
CLKCONCMD &= ~0x40; //設(shè)置系統(tǒng)時(shí)鐘源為32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振穩(wěn)定為32M
CLKCONCMD &= ~0x47; //設(shè)置系統(tǒng)主時(shí)鐘頻率為32MHZ
InitLed();
InitUart();
InitUart();
LCD_Init();
LCD_Fill(0x00);
for(i=1; i<6; i++)
{
LCD_P16x16Ch_1(i*16,0,i-1);
}
while(1)
{
if(DATA_PIN == 1)
{
LED1 = 0; //有人時(shí)LED1亮
UartSendString("ON ", 3); //串口發(fā)送數(shù)據(jù),提示用戶
for(i=3;i<6;i++)
{
LCD_P16x16Ch_3(i*16,3,i-3);
}
for(i=2;i<7;i++)
{
LCD_P16x16Ch_4(i*16,5,i-2);
}
j = 1;
}
else
{
LED1 = 1; //無(wú)人時(shí)LED1熄滅
UartSendString("OFF ", 4); //串口發(fā)送數(shù)據(jù),提示用戶
if(j == 1)
{
LCD_Fill(0x00);
for(i=1; i<6; i++)
{
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
紅外報(bào)警器(雙顯示).rar
(32.23 KB, 下載次數(shù): 48)
2017-12-20 21:12 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1