指纹锁—AS608指纹模块

news/2024/11/18 0:20:52/

目录

一、工程内容

二、AS608指纹模块使用

 1.AS608  与  USB转TTL模块  的接线  

2.上位机配置

3.AS608与STC12C60A通讯

三、驱动MG995(180度舵机)

                  1.MG995舵机数据手册   

2.舵机驱动:

3.定时器定时100us

4.中断函数

一、工程内容

     实现功能:用户通过指纹识别打开宿舍门锁

     电子元件:

主控芯片stc12c60A供电方式   USB供电
指纹模块AS608电流、电压5V、2A
舵机MG995—180度其它元件1个蜂鸣器、2个LED、1个自锁开关
晶振11.0529M其它元件轻触开关

二、AS608指纹模块使用

 1.AS608  与  USB转TTL模块  的接线  (AS608要用3.3V供电不能用5V供电)

       只需要接四根线(Vi   TX  RX  GND)

 

2.上位机配置

    2.1 首先安装USB转TTL的驱动,然后打开串口

   将AS608与USB转TTL模块正确接线后   连接电脑。打开设备管理器找到串口号COMX

(为了避免差错,来回拔插一次,观察设备管理器中串口号的变化)

找到串口号后在AS608的上位机选择正确的串口号。

 2.2 配置波特率     注意:AS608的波特率要与程序设计的波特率相同才能进行通讯

    2.3添加指纹     在我的电脑操作时 ,AS608模块需要先预热  通电一会后才能录入指纹。

3.AS608与STC12C60A通讯

单片机波特率设置:

void Uart_Init(void)

    SCON=0x50;   //UART方式1:8位UART;   REN=1:允许接收 
    PCON=0x80;   //SMOD=0:波特率不加倍             
    TMOD=0x21;   //T1方式2,用于UART波特率 
    TH1=0xFf;      //UART波特率设置
    TL1=0xFf;  
    TR1=1;     //允许T1计数 
    EA=1;

}

波特率计算——THx与TLx

定时器工作模式是8位自动重装载,TH1和TL1赋的初值一样

SMOD:波特率选择位。当用软件置位SMOD,即SMOD=1,则使串行通信方式1、2、3的波特率加倍;SMOD=0,则各工作方式的波特率不加倍。复位时SMOD=0。

一般选择不加倍,所以SMOD为0,SYSclk是单片机时钟,也就是晶振的频率,11.0592MHz,运算时要转化为基本单位Hz,即11059200Hz
 

设置57600(波特率要加倍  SMOD=1):

I2T模式定时器1溢出率:

11059200Hz/12/(256-TH1) = 11059200Hz/12*(256-TH1) = 921600/(256-TH1)

57600 = 2^SMOD/32*(921600/(256-TH1)) = 2/32 * (921600/(256-TH1)) = 57600/(256-TH1)

256-TH1 = 57600/57600 = 1,TH1 = 256-1 = 255,255转为十六进制就是FF

所以TH1 = TL1 = FF

 

三、驱动MG995(180度舵机)

       1.MG995舵机数据手册   

 注意:MG995的舵机一定要用大于1a的电流驱动才能正常转动!!!(正常转动包括按照所写的代码转动90度而不是单纯的能转动)

2.舵机驱动:

        舵机的输入线共有三条,红色中间,是电源正线,一根棕色(有些是黑色)是电源地线,这两根线给舵机提供最基本的能源保证,主要是电机的转动消耗。另外一根线是控制信号线,一般为桔黄色。

         舵机的信号线是做为输入线就是接收PWM信号(定时器产生)。一般PWM的周期是20ms,那么对应的频率是50hz那么改变不同的占空比就可以控制转动的角度。其中占空比从0.5-2.5ms,相对应的舵盘位置为0-180度,呈线性变化。

 上图对应MG995的脉冲宽度与输出轴转角。

周期20ms   脉冲0.5ms  表示在20ms里有0.5ms是高电平,19.5ms是低电平。

用定时器计数100us,5us高电平   95us低电平就可以是舵机反方向转90度。

3.定时器定时100us

定时器有两种工作模式,分别为计数模式和定时模式。

定时器代码初始化

1.确定定时器的计数模式。

2.确定TLx与THx之间的搭配关系。

3.确定计数起点值。即TLx与THx的初值。

4.是否开始计数。TRx

TLx与THx之间256进制。即当TLx计到256个脉冲时,TLx归0同时THx进1。这也称为方式1。在方式1时,最多计65536个脉冲产生溢出。在主频为11.0592M时,每计一个脉冲为1.085us,所以溢出一次的时间为1.085usx65536=71.1ms

1和2可以由工作方式寄存器TMOD来设定,TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:

 定时器工作方式选择

   定时器初始从0开始计数到65536然后溢出。要计数100us,所以初始计数要从(65536-100)计数到65536 然后溢出。

定时器初始化

    TMOD=0X01;                       // 16位计数器
    TH0=(65536-100)/256;        // 高四位                100US定时
    TL0=(65536-100)%256;      //低四位
    TR0= 1;
    ET0= 1;
    EA = 1;

4.中断函数

void timer0( ) interrupt     \\ 5个中断源的排序:0代表外部中断0中断 ,1代表定时器/计数器0

                        中断 , 2代表外部中断1中断, 3代表定时器/计数器1,4代表串行中断的中断 

中断   interrupt  1   数字一定一定要写对,对应设置的定时器/计数器

 中断函数响应条件

1.中断源有中断请求; 
2. 此中断源的中断允许位为1;
3.CPU开中断(即EA=1)。

驱动代码:

#include <STC12C5A60S2.H>sbit Sevro_moto_pwm=P1^2;	   	// 舵机信号线(橙色)
sbit Key=P2^1;                  //按键
sbit buzz = P1^4;   //蜂鸣器unsigned char pwm_val  = 0;//变量定义
unsigned char push_val = 14;//舵机归中,产生约,1.5MS 信号void delay1ms(unsigned int k)   //延时1ms函数,k等于多少就延时多少ms
{unsigned int a,b,c,d;for(d=0;d<k;d++)for(c=1;c>0;c--)for(b=50;b>0;b--)for(a=2;a>0;a--);
}								   /**********************************************************************************************
**                              TIMER1中断服务子函数产生PWM信号
**********************************************************************************************/void time1()interrupt 1   using 2
{	TH0=(65536-100)/256;	  //100US定时TL0=(65536-100)%256;pwm_val++;if(pwm_val<=push_val)	  Sevro_moto_pwm=1;   //PWM信号高电平时间else Sevro_moto_pwm=0;   //PWM信号高电平时间if(pwm_val>=100)pwm_val=0;}/**********************************************************************************************
**                                       主函数
**********************************************************************************************/
void main(void)
{TMOD=0X21;  // TH0=(65536-100)/256;	  //100US定时TL0=(65536-100)%256;TR0= 1;ET0= 1;EA = 1;push_val=13;	  //舵机归中delay1ms(1000);   //延时1S让舵机转到其位置,停留一下
while(1)
{if(Key==0)		    { buzz=1;push_val=4;	  //舵机向正转约90度delay1ms(4000); //延时500MS让舵机转到其位置buzz=0;push_val=13;	delay1ms(500);push_val=4;	  //舵机向反转约90delay1ms(500);; //延时500MS让舵机转到其位置}else{push_val=13;buzz=0;		}
}}   

 


http://www.ppmy.cn/news/178508.html

相关文章

启明云端方案分享| ESP32-S2 摄像头 WIFI方案应用于智能猫眼

提示&#xff1a;启明云端从2013年起就作为Espressif&#xff08;乐鑫科技&#xff09;大中华区合作伙伴&#xff0c;我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程。同时也用心推出了基于乐鑫的相关应用方案&#xff01;希望你能第一时间了解并快速…

可视猫眼门铃雷达方案,人体存在感应雷达模组,智能亮屏响铃

可视猫眼可以实现24小时实时监测&#xff0c;具备防撬、门外可疑抓拍、报警信息实时传送等多重功能&#xff0c;相较指纹识别等传统开锁方式安全系数更高。 可视猫眼门铃&#xff0c;又称电子猫眼&#xff0c;或猫眼可视门铃。是一种替代传统猫眼的家居安防产品&#xff0c;可…

超低功耗摄像头 门锁 猫眼

超低功耗摄像头 门锁 猫眼 简介 介绍一款超低功耗的CMOS 图像传感器。有着超低的功耗&#xff0c;非常适合用在电池供电的系统中。下面先贴一下具体核心参数&#xff1a; 分辨率&#xff1a;324*244 传感器大小&#xff1a;1/11’’ 图像&#xff1a;支持彩色/黑白 数据接口&…

【Linux之shell 环境】

文章目录 什么存储在环境变量中&#xff1f;检查环境变量一些有趣的环境变量如何建立 shell 环境&#xff1f;一个启动文件的内容修改 shell 环境应该修改哪个文件&#xff1f;文本编辑器使用文本编辑器激活修改 1. 什么存储在环境变量中&#xff1f; shell 在环境中存储了两…

oracle 行转列

第一个是max(decode( 两个函数一起应用 的行转列&#xff08;oracle&#xff09; 第二个是 case when的 行转列&#xff08;mysql oracle 都可以 &#xff08;好像&#xff09;&#xff09; 两者需要注意的 这里面 的group by 参数 是和函数一样的数据 不能有不一致的数据 比…

RTX A2000显卡评测

A2000采用了半高双槽的设计的设计。 全卡采用涡轮风扇加散热鳍片全覆盖的设计。 卡背芯片位置有辅助散热片。输出采用了四个DP1.4接口。 RTX A2000显卡怎么样这些点很重要 http://www.adiannao.cn/dq 显卡可以加载更大的图形&#xff0c;能以更流畅的交互性能给用户带来更好的体…

rx580 8g显卡相当于什么n卡 rx580 8g属于什么级别的

rx580显卡相当于GTX 1060&#xff0c;不过在性能方面比GTX 1060公版要强17%~22%&#xff0c;但落后于GTX 1070显卡22%~28%左右。 rx580怎么样这些点很重要看过你就懂了 http://www.adiannao.cn/dq 具体介绍如下&#xff1a;   1、rx580显卡相当于GTX 1060&#xff0c;不过在性…

LINUX下安装NVIDIA显卡驱动

昨晚费了九牛二虎之力&#xff0c;终于成功的在openSUSE 10.2上安装了nVIDIA显卡驱动&#xff0c;有必要记录一下。 软硬件环境&#xff1a; CPU&#xff1a;AMD Athlon64 X2 5000 AM2(65纳米) 显卡&#xff1a;影驰8500GTE魔影”&#xff08;显示芯片&#xff1a;GeForce 8500…