資源簡介
利用atmega16單片機制作智能鎖,具有矩陣鍵盤掃描、P波控制舵機,藍牙串口控制開舵機,

代碼片段和文件信息
/*
?*/
#include?“iom16v.h“
#include?
void?Serv(void);????????//舵機控制
typedef?unsigned?char?uchar;
uchar?i=0;
uchar?flag?=?1;
uchar?detect();
uchar?judeKey(uchar?iuchar?j);
uchar?Del?=?13;?????????????//后退一步
uchar?d_lock?=?14;??????????//一鍵鎖門
uchar?Bac?=?15;?????????????//一鍵清零
uchar?A_k?=?10;?????????????//按鍵A
uchar?B_k?=?11;?????????????//按鍵B
uchar?C_k?=?12;?????????????//按鍵C
//變量定義:接收緩沖變量,接收標志位
uchar?RX_buffer=0x00Rx_Flag=0;
uchar?OPEN?=?1;?????????????//門處于響應狀態
uchar?LOCK?=?0;?????????????//門出于鎖住狀態
uchar?door_state?=?1;???????//門的狀態
char?RX_cmd[50];????????????//存放接收到的命令
char?pawd[8]?=?{“123137“};
char?s[10];
//unsigned?char?RX_flag
//函數聲明
void?USART_Send(unsigned?char);
void?printLED(int?posint?num);
void?smg(int?p?int?num);
//串口IO初始化函數
void?Serial_PortInit(void)
{
????int?BAUD;
????DDRD?&=?0XFE;
????DDRD?|=?0X02;
????UCSRA?|=?(1?<????UCSRB?|=?((1?<????UCSRB?|=?(?(1<????UCSRB?&=?~(1?<????UCSRC?|=?((1?<????UCSRC?&=?~(1?<????UCSRC?&=?~((1?<????UCSRC?&=?~(1?<????BAUD??=?12;???????????????????????????????????????????????????//波特率9600
????UBRRL?=?(unsigned?char)BAUD;
????UBRRH?=?(unsigned?char)(BAUD>>8);
????SREG|=BIT(7);
}
//串口發送函數
void?USART_Send(unsigned?char?Data)
{
while(!(UCSRA&(BIT(UDRE)))); //數據寄存器UDR是否為空?
UDR=Data; //UDR賦值
while(!(UCSRA&(BIT(TXC)))); //數據是否已經發送完畢?
UCSRA|=BIT(TXC); //清除發送完畢標志位
}
void?UART_Send_String(unsigned?char*?str?unsigned?char?length)
{
? ?unsigned?char?i=0;
?while(length--)
?{
USART_Send(*str);
*str++;
?}
}
#pragma?interrupt_handler?USART_Received_Ir:12
//串口接收完畢中斷函數
uchar?R_i=0;
void?USART_Received_Ir()
{
UCSRB?&=?~BIT(RXCIE); //接收完畢中斷不使能
RX_buffer=UDR; //讀取UDR的數據
if(Rx_Flag)?????????????//將命令存入數組
????????????RX_cmd[R_i++]?=?RX_buffer;
????????if(RX_buffer?==?‘#‘)
????????{
????????????R_i?=?0;
????????????Rx_Flag=1;
????????}
UCSRB?|=?BIT(RXCIE); //接收完畢中斷使能
}
void?Delay_ms(unsigned?int?n)
{
????unsigned?int?i?=?0;
????unsigned?int?j?=?0;
????for(i?=?0;?i?????{
????????for(j?=?0;?j?122;?j++)
????????{
????????}
????}
}
void??main(void)
{
????DDRA?=?0x0f;
????PORTA?=?0xf0;
????MCUCSR?|=?0x80;
????MCUCSR?|=?0x80;
????DDRD?&=?~((1<<2)|(1<<3)|(1<<4)|(1<<5));??//K1和K2?K3?k4按鍵
????Serial_PortInit();??????//藍牙串口初始化
????while(1)
????{
????????BloothContrl();?????????//藍牙命令控制舵機
????????if(?!Rx_Flag)???????????//如果藍牙不在接收數據
????????????pressControl();?????//按鍵、傳感器控制舵機
????}
}
void?pressControl()
{
????uchar?x?=?20;
????x?=?detect();
????if(x!=?20)
????{
????????if(?door_state?==?OPEN)
????????{
????????????if(x?==?A_k?||?x?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????60685??2018-12-27?20:34??testLock\.objs\main.lis
?????文件??????15560??2018-12-27?20:34??testLock\.objs\main.o
?????文件???????7523??2018-12-27?20:30??testLock\main.c
?????文件???????1319??2018-12-27?20:35??testLock\testLock.cbp
?????文件???????6465??2018-12-27?20:35??testLock\testLock.cof
?????文件???????4826??2018-12-27?20:35??testLock\testLock.dbg
?????文件?????????46??2018-12-27?20:35??testLock\testLock.default
?????文件???????4726??2018-12-27?20:35??testLock\testLock.hex
?????文件????????299??2018-12-27?22:24??testLock\testLock.layout
?????文件??????????9??2018-12-15?23:15??testLock\testLock.lk
?????文件??????34336??2018-12-27?20:35??testLock\testLock.lst
?????文件????????373??2018-12-15?23:15??testLock\testLock.mak
?????文件???????3323??2018-12-27?20:35??testLock\testLock.mp
?????文件???????1231??2018-12-27?20:35??testLock\testLock.prj
?????目錄??????????0??2018-12-15?23:15??testLock\.objs
?????目錄??????????0??2018-12-27?22:24??testLock
-----------?---------??----------?-----??----
???????????????140721????????????????????16
- 上一篇:2018華中科技大學計算機考研情況匯總
- 下一篇:brew_install.zip
評論
共有 條評論