基于51单片机的电子密码锁综合课程设计
时间:2023-09-10 18:37:01
5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数超过10万次,擦写次数超过10万次
6.ISP/IAP,无需编程器/模拟器即可在系统中编程/应用
7.共8个通道10个高速公路ADC,速度可达30万次/秒,8路PWM还可当8路D/A使用
8.6通道15位专用高精度PWM(带死区控制) 2通道CCP(利用它的高速脉冲输出功能可实现11~16位PWM)----可用于再实现8路D/A或两个16位定时器,或两个外部中断(支持上升/下降)和STC15W4K32S4系列单片机6路增强型PWM相关的端口.上电后默认为高阻输入,上电前,用户必须在程序中将这些端口设置为其他模式(如准双向端口或强推拉模式);注意,当这些端口进入断电模式时,它们不能输入高电阻,否则需要在外部增加拉电阻。
9.内部高可靠复位,ISP可选择16级复位门槛电压,可完全节省外部复位电路
10.工作频率范围: 5MHz~28MHz, 600相当于普通8051MHz~336MHz
11.内部精度高R/C时钟( 0.3%), 1%温飘( 40°C~ 85*C),常温下温飘 0.6%(-20*C~ 65*C)
12.输出时钟和低电平复位信号,无需外部晶振和外部复位
13.四组完全独立的高速异步串行通信端口,9组串口可分时切换:串口1(RxD/P3.0,TxD/P3.1)可切换到(RxD_2/P3.6,TxD_2/P3.7),还可以切换到(RxD_3/P1.6,TxD_3/P1.7);串口2(RxD2/P1.0,TxD2/P1.1)可切换到(RxD2_ 2/P4.6,TxD2_2/P4.7);串口3(RxD3/P0.0,TxD3/P0.1)可切换到(RxD3_ 2/P5.0,TxD3_ 2/P5.1);串口4(RxD4/P0.2, TxD4/P0.3)可切换到(RxD4_ 2/P5.2, TxD4_ _2/P5.3)
注:建议用户将串口1放在:P3.6/P3.7或P1.6/ P1.7 (P3.0/P3.1下载/模拟);如果用户不想切换,坚持使用P3.0/P3.1或作为串口1进行通信,下载程序时必须在软件上检查下次冷启动时,P3.2/P3.下载程序需要0/0。
14.一组高速同步串行通信端口SPI.
15.支持程序加密后传输,防止拦截
16.支持RS485下载
17.低功耗设计:低速模式、空闲模式、掉电模式/停机模式.
18.能唤醒掉电模式/停机模式的定时器:内部低功耗电唤醒专用定时器。
19.共7个定时器,5个16个可重装定时器/计数器(TO/T1/T2/T3/T4,其中T0/T1兼容普通8051的定时器/计数器),并均可独立实现对外可编程时钟输出(5通道),另外管脚SysClkO系统时钟可以输出外分频( 1或 2或 4或 16),2路CCP两个定时器也可以再次实现
20.定时器/计数器2也可以实现16位重装载定时器/计数器,定时器/计数器2也可以产生时钟输出T2CLKO
单片机引脚说明
单片机的40个引脚大致可以分为四类:电源、时钟、控制和I/O引脚。
⒈ 电源:
⑴ VCC - 芯片电源,连接 5V;
⑵ VSS - 接地端;
⒉ 时钟:XTAL1、XTAL2 - 相反,晶体振荡电路的输入端和输出端。
⒊ 控制线:共有4条控制线,
⑴ ALE/PROG:允许/片内锁定地址EPROM编程脉冲
① ALE功能:锁定P低8位地址是0口送出的
② PROG功能:片内有EPROM的芯片,在EPROM引脚在编程过程中输入编程脉冲。
⑵ PSEN:外ROM读取通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电时,连接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程电源应用于编程期间Vpp。
⒋ I/O线
80C共有4有48人平行I/O端口:P0、P1、P2、P三口,共32个引脚。P三口还具有特殊信号输入输出和控制信号(属于控制总线)的第二个功能。
3.3LCD1602简介
工业字符液晶可同时显示16x02是32个字符。(16列2行)
1602液晶,又称1602字符型液晶,是一种点阵型液晶模块,专门用于显示字母、数字、符号等。它由若干个5X7或者5X由11等点阵字符位组成,每个点阵字符位可以显示一个字符,每个点之间有一个点距间隔,每行之间也有一个间隔,起到字符间距和行间距的作用。正因为如此,它不能很好地显示图形(自定义CGRAM,显示效果也不好)。
1602LCD指16显示的内容X2.每行可显示两行16个字符液晶模块(显示字符和数字)。
市场上大多数字符液晶都是基于HD基于44780液晶芯片,控制原理完全相同HD44780的控制程序可以很容易地应用于市场上大多数字符液晶。
1602LCD 主要技术参数:
显示容量:16×2 个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
管脚功能:
1602采用标准的16脚接口,其中:
第1脚:VSS为电源地
第2脚:VCC接5V电源正极
第3脚:V0是液晶显示器对比度调整端,连接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生鬼影K调整对比度的电位器)。
第4脚:RS选择寄存器,1时选择数据寄存器,0时选择指令寄存器。
第5脚:RW读写信号线,高电平(1),低电平(0)。
第6脚:E(或EN)端为使能(enable)高电平(1)时读取信息,负跳变时执行指令。
第7~14脚:D0~D7是8位双向数据端。
15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。
特性
3.3V或5V工作电压,对比度可调
包含复位电路
提供清屏、字符闪烁、光标闪烁、显示移位等各种控制命令
80字节显示数据存储器DDRAM
内建有192个5X7点阵字符发生器CGROM
8个可由用户自定义的5X7字符发生器CGRAM
特征应用
袖珍仪表和低功耗应用系统常用于微功耗、体积小、显示内容丰富、超薄轻巧。
操作控制
注:关于E=H脉冲-初始化E为0,然后置E为1。
字符集
1602液晶模块02液晶模块中的字符(CGROM)存储了160个不同的点阵字符图形,包括阿拉伯数字、英文字母大小写、常用符号、日文假名等。每个字符都有一个固定的代码,如大写英文字母A”的代码是01000001B(41H),显示模块显示地址41H显示点阵字符图形,我们可以看到字母A”。
在单片机编程中还可以用字符型常量或变量赋值,如'A’。因为CGROM存储的字符代码和我们PC中间的字符代码基本相同,所以我们在向前DDRAM写C甚至可以直接使用51字符代码程序P1=‘A’这样的方法。PC在编译过程中,A'先转换为41H代码了。
字符代码0x00~0x0F为用户定制的字符图形RAM(对于5X8点阵字符可存储8组和5组X存储4组10点阵字符),即CGRAM了。
0x20~0x7F为标准的ASCII码,0xA0~0xFF日语字符和希腊字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。
以下是160216进制ASCII码表地址:阅读时,先阅读左列,再阅读上行,如:感叹号!ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
1602LCD 指令及时说明
1602 液晶模块内的控制器有11个控制指令。
控制命令表序号指令RSR/WD7D6D5D4D3D2D1D0
1清显示0000000001
2光标返回000000001*
3置输入模式00000001I/DS
4显示开/关控制000000DCB
5光标或字符移位000001S/CR/L**
6置功能00001DLNF**
7.存储器地址0001字符
数据存储器地址001显示数据存储器地址
9阅读繁忙志或地址019BF计数器地址
10写数到CGRAM或DDRAM)10要写的数据内容
11从CGRAM或DDRAM读数11读出的数据内容
1602 通过指令编程实现液晶模块的读写操作、屏幕和光标操作。(说明:1 为高电平、0 为低电平)
指令 清晰显示,指令码 01H,光标复位到地址 00H 位置。
指令 2.光标复位,光标返回地址 00H。
指令 3:设置光标和显示模式 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上的所有文字全部 左右移动。高电平有效,低电平无效。
指令 四、显示开关控制。 D:控制整体显示的开关,高电平显示,低电平显示 C:控 光标的开关光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电
平不闪烁。
指令 5:标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高 电平时双行显示 F: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符。
指令 7:字符发生器 RAM 地址设置。
指令 8:DDRAM 地址设置。
指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如 果为低电平表示不忙。
指令 10:写数据。
指令 11:读数据。
基本操作时序表
读操作时序:
写操作时序:
LCD1602的RAM地址映射
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示 不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图 10-57 是 1602 的内部显示地址。
1602 的内部显示地址:
例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符 的位置呢?这样不行,因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工 干预。每次输入指令前都要判断液晶模块是否处于忙的状态。
1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形,如图 10-58 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有 一个固定的代码,比如大写的英文字母“A”的代码是 01000001B(41H),显示时模块把地址 41H 中 的点阵字符图形显示出来,我们就能看到字母“A”。
1602LCD 的一般初始化(复位)过程
延时 15mS
写指令 38H(不检测忙信号)
延时 5mS
写指令 38H(不检测忙信号)
延时 5mS
写指令 38H(不检测忙信号)
以后每次写指令、读/写数据操作均需要检测忙信号
写指令 38H:显示模式设置
写指令 08H:显示关闭
写指令 01H:显示清屏
写指令 06H:显示光标移动设置
写指令 0CH:显示开及光标设置
矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。矩阵键盘的优点是节约单片机IO口,例如普通键盘8个IO口只能用作8个按键,而矩阵键盘能作16个按键。
组成结构
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU的时间,所以较好的方式也是采用状态机的方法来设计,尽量减少键盘查询过程对MCU的占用时。
单片机系统中,若使用按键较多时如电子密码锁、电话机键盘等一般都至少有12到16个按键,通常采用矩阵键盘。
矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
矩阵键盘的工作原理
最常见的键盘布局如图3所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,4*4矩阵键盘的内部电路如图。
矩阵键盘布局图:
矩阵键盘内部布局图:
当无按键闭合时,P3.0~P3.3与P3.4~P3.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置列线P3.4~P3.7为输入状态,从行线P3.0~P3.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P3.4~P3.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
[1] [2] [3]