指纹锁—AS608指纹模块

2023-05-16

目录

一、工程内容

二、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;	  //舵机向反转约90
		  delay1ms(500);; //延时500MS让舵机转到其位置
	}
	else
	{
	   	push_val=13;
      buzz=0;		
	}
}

	}   

	

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指纹锁—AS608指纹模块 的相关文章

  • 网络调试助手TCP server不能成功连接

    正文 xff1a 在使用网络调试助手时 xff0c 想一个建立TCP server xff0c 一个建立TCP client xff0c 两者之间进行通信 xff0c 打开网络调试助手其默认读取本地IP地址 xff0c 而端口号默认为808
  • 单片机 GSM 模块应用

    如果你只要发送英文而已 xff0c 那你很幸运 xff0c 因为仅仅为了发送个字符而已是很简单的 TEXT模式满足你的要求 xff0c 但是不爽的是 xff0c 我的上司要求我要中文字符一起混发 xff0c 还好有unicode xff0c
  • OSInit()简介

    在uC OS II的学习中 xff0c OSInit 是一个重要的函数 xff0c 它在OS应用中的void main 函数中首先被调用 xff0c 是OS运行的第一个函数 如下程序 xff0c 它完成各初始变量的初始化 xff0c 建立任
  • OSStart()函数简介

    多任务的的启动是通过调用OSStart xff08 xff09 实现的 xff0c 而在启动uc os之前至少需要建立一个应用任务 OSStart xff08 xff09 函数源码 void OSStart void INT8U y INT
  • SMS编码之PDU – 接收短信篇

    上一篇文章简单介绍了下收发短信需要用到的AT指令 xff0c 这篇文章详细分析SMS编码中的PDU编码 首先我用测试手机向短信猫中的sim卡发送了两条短信 xff0c 内容分别为 xff1a Hello World Hello World
  • PDU短信发送与接收格式分析

    一 PDU发送和接收格式分析 PDU是大多数手机短信通讯的核心 xff0c 仅有少数手机只支持Text模式 PDU模式比起Text模式可以提供能为强大的功能 xff0c 但其编码较Text模式困难 无论哪种模式 xff0c 我们都可以通过A
  • ucos OSTimeDly

    来源 xff1a http blog sina com cn s blog 5f9b3de40100e182 html OSTimeDly 在Task中 xff0c 一般执行一段时间之后调用OSTimeDly推迟一段时间再继续运行 xff0
  • WinCE中断结构分析

    以前写的原创博文 xff0c 这里放一份 前一段时间研究了一下WinCE下的中断结构 xff0c 整理了一下 xff0c 希望与大家讨论 最下面有PDF版本下载 xff0c 便于保存 Windows Embedded CE 中断结构分析 关
  • Google chrome 中文版下载

    Google release了自己的浏览器Chrome xff0c 大家可以试试看 xff0c 我觉得还不错 xff0c 对Web2 0的支持还好 xff0c 不知道安全性如何 我发现看tudou和youku等视频有问题 内存占用太大了 x
  • (下载)WinCE注册表编辑器(PC端)

    可以在PC上通过ActiveSync来查看 xff0c 修改device端的注册表 xff0c 方便调试 http download csdn net source 749005 注 xff1a 本人提供的下载均不要资源点
  • (下载)WinCE镜像传输工具ESHELL

    WinCE镜像传输工具ESHELL 使用这个可以不用装PB也可以传输镜像 xff0c 其实就是一个TFTP的传输 xff0c 适用于CE5 xff0c CE6 http download csdn net source 835336 不用资
  • I/O的控制方式——查询,中断,dma

    早期 xff0c I O串行 xff0c 查询方式 发展 xff0c I O并行 xff0c 两种方式其一是中断方式 xff0c 其二是dma方式 xff0c 使得外部设备能直接与主存储器信息交换 xff0c 减轻了cpu的工作量 技术继续
  • 关于WinCE下MC55使用Unimodem进行GPRS拨号,拨上出现断开连接,检查波特率的问题的另一种可能情况

    http www armce com bbs thread 59 1 1 html

随机推荐

  • WinCE上BINFS实现详解

    作者 wwfiney 64 ARMCE 网上不少介绍三星24x0系列的BIN FS启动方式实现 xff0c 有些内容上描述的不是非常全面 下面就WinCE6上的BINFS实现 xff0c 从基本原理 到修改BSP xff0c 再到如何烧录启
  • i.MX27支持8GBSDHC卡驱动修改

    最近需要给mx27加上SDHC驱动 以支持SDHC的SD卡 网上许多关于2440支持SDHC的文章 xff0c 借鉴很多 xff0c 但是由于MX27驱动的特殊结构 xff0c 需要做更多改动 xff0c 详细如下 xff1a 平台 xff
  • /etc/init.d/rcS文件详解

    我使用的简单rcS文件内容如下 最后的IP地址设定非常重要 xff0c 一定要跟服务器的地址再同一个网段 xff0c 不然会出现无法连接错误 nfs server 192 168 0 102 not responding still try
  • CAN通讯的byte序和bit序

    听别人说起CAN通讯协议的时候总说到Intel格式和motorola格式的时候 Intel格式如何 xff0c Motorola格式又如何 xff1f 觉得很有必要搞懂这些知识 xff0c 也看了相关资料 xff0c 可直到今天还没明白 真
  • ROS学习笔记(一):创建工作空间和功能包

    所有的ROS程序 xff0c 包括我们自己开发的程序 xff0c 都被组织成功能包 xff0c 而ROS的功能包被存放在称之为工作空间的目录下 因此 xff0c 在我们写程序之前 xff0c 第一步是创建一个工作空间以容纳我们的功能包 其实
  • PHP活动报名小程序系统源码 带后台管理程序

    活动报名小程序源码 xff0c 基于thinkphp开发的报名小程序源码 xff0c 带有后台管理 xff0c 用户发布活动信息 报名可以后台管理 xff0c 基本都还是可以的 不过需要注意的是 xff0c 用户注册部分是发送手机短信 xf
  • NVIDIA Jetson Xavier NX部署VINS-fusion-GPU

    组内大佬师兄今天抽出时间总结了一篇博客 xff0c 主要内容是 xff1a 把在阿木P450无人机上 xff0c 对自带的NVIDIA Jetson Xavier NX边缘计算机部署VINS fusion GPU教程 xff0c 并进行实验
  • 接口策略路由配置(通过流策略技术实现)

    策略路由 xff1a xff08 先于路由表 xff0c 且不会生成路由表 xff09 策略路由和路由策略都可以影响数据包的转发过程 xff0c 但他们对数据包的影响方式是不同的 本地策略路由 xff1a 仅对本机 下发的报文进行处理 xf
  • Mac Xcode崩溃 (打开ios项目引起崩溃)

    bug xff1a 每次打开此工程都会导致Xcode崩溃 其他工程没有问题 解决办法 xff1a 1 确定本地跟服务器没有需要更新和提交的代码 2 把本地工程移到废纸篓 3 从新check out工程 4 新工程完美运行 xff08 这样没
  • Mac上VScode使用clang-format格式化c++代码

    一 安装 需要安装插件c c 43 43 xff0c 不推荐使用clang format这个插件 xff0c 毕竟c c 43 43 里面已经支持了clang format格式化操作 安装这个clang format插件也有一个好处 xff
  • C#解决串口通信中接收数据时延迟处理与缓存处理的方法

    C 解决串口通信中接收数据时延迟处理与缓存处理的方法 时间 2011 1 21 14 04 29 来源 www cnblogs com 作者 杨少宁 利用串口进行通信 xff0c 当发送方 xff08 A xff09 将数据写入串口后 xf
  • 在gazebo中对机器人进行控制,并在rviz中同步显示

    在上一篇博客中 xff0c 我一步一步地建立了在gazebo仿真中能用的xacro文件 但是仿真时的模型是自由摆动的 xff0c 文末的时候我想对他进行控制 xff0c 但是篇幅太长 xff0c 所以新开一篇 参考ros control的内
  • 基于esp32-cam的监控小车

    1 购买器材 xff1a Eap32 cam L289N直流步进电机驱动 自锁开关 两节18650电池 5v电源 杜邦线若干 2 程序代码 2 1 下载代码 下载库函数 百度网盘 xff1a 链接 xff1a https pan baidu
  • APP Inventor -环境安装

    APP inventor可以实现直接在网页上操作 1 登录网址 xff1a http ai2 17coding net xff08 我使用的是微软浏览器 xff0c 用谷歌打开时显示无法登录 xff09 选择一键试用 2 下载Ai伴侣 xf
  • App inventor—安安机器人

    1 准备素材 2 程序设计 3 程序编程 3 1 3 2 3 3 总结 xff1a 1 换背景图片的时候 xff0c 设置图片 gt 用文本来存放图片的名称 xff08 特别注意后面的png xff0c 是图片的格式 xff09 2 手机震
  • 按键控制LED灯亮灭——基于arduino单片机

    程序设计 xff1a 函数 xff1a digitalRead 作用 xff1a 用来读取数字串口状态 xff0c HIGH还是LOW xff08 其实还有一种表达方式就是HIGH是 1 LOW是 0 xff0c 只是HIGH LOW更直观
  • JDY-31 蓝牙模块使用(HC-06)

    波特率要相同才能就行通讯 下载串口调试工具 打开串口调试工具 xff0c 配置参数 蓝牙连接 VCC 3 3V GND GND TXD RXD RXD TXD 配置蓝牙参数 发送指令 xff0c 要在指令后面添加 r n xff0c 或者让
  • arduino驱动LD3320语音识别模块

    LD3320 xff1a LD3320 是一颗基于非特定人语音识别 xff08 SI ASR xff1a Speaker Independent Automatic SpeechRecognition xff09 技术的语音识别 声控芯片
  • 无人机学习笔记之电池篇

    电池参数 电池的多少mAh 表示电池容量 xff0c 如1000mah电池 xff0c 如果以1000ma放电 xff0c 可持续放电1小时 如果以500mA放电 xff0c 可以持续放电2小时电池后面多少C 代表电池放电能力 这是普通锂电
  • 指纹锁—AS608指纹模块

    目录 一 工程内容 二 AS608指纹模块使用 1 AS608 与 USB转TTL模块 的接线 2 上位机配置 3 AS608与STC12C60A通讯 三 驱动MG995 xff08 180度舵机 xff09 1 MG995舵机数据手册 2