资源简介
利用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 << U2X); //倍速模式
UCSRB |= ((1 << RXEN )|(1 << TXEN)); //发送接受使能
UCSRB |= ( (1<< RXCIE)| (1<< TXCIE)); //发送接受结束中断使能
UCSRB &= ~(1 << UCSZ2);
UCSRC |= ((1 << UCSZ1)|(1 << UCSZ0)); //8位数据位
UCSRC &= ~(1 << UMSEL); //异步
UCSRC &= ~((1 << UPM1)|(1 << UPM0)); //无奇偶校验位
UCSRC &= ~(1 << USBS); //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 < n; 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
相关资源
- MCGS与单片机通信
- atmega16硬件产生方波的程序
- AT89C2051多路舵机控制电路详解
- ATmega16A DataSheet
- 自制AVR ATmega16 JTAG2008
- 两轮平衡车源程序,方能仪器,自平
- LOBOT 24路舵机控制软件中文版.rar
- STM32舵机控制的基本代码
- 32路舵机控制器
- ATmega16(L) 中文数据手册.pdf
- 双足机器人及多舵机控制
- 基于STM32的舵机控制系统 20181125
- 基于stm32f4的舵机控制
- STM32F103C8舵机控制程序,原创支持12舵
- 林夕依然ATmega16学习笔记 学习AVR
- stm32f407舵机控制程序
- 32路舵机控制板全套资料
- STM32通过串口HC05蓝牙控制LED的源码
- STC51指纹密码锁.rar
- 基于stm32的HC05蓝牙模块的点灯操作
- 基于STM32F103C8T6的NRF24L01无线通讯模块
- STM32F10x舵机控制
- 32路舵机控制器上位机软件
- 循迹小车 总线舵机控制转向
- STM32智能车舵机控制,电磁寻迹,带滤
- 舵机控制TIM1
- WAY STUDIO 舵机控制器上位机 依梦科技
- ATMEGA16 PROTUES 热水器
- 写字机舵机控制抬笔GBRL源码
- 舵机控制器PCA9685程序 51版本
评论
共有 条评论