PIC单片机综合实例.ppt

上传人:桔**** 文档编号:576211591 上传时间:2024-08-19 格式:PPT 页数:62 大小:3.13MB
返回 下载 相关 举报
PIC单片机综合实例.ppt_第1页
第1页 / 共62页
PIC单片机综合实例.ppt_第2页
第2页 / 共62页
PIC单片机综合实例.ppt_第3页
第3页 / 共62页
PIC单片机综合实例.ppt_第4页
第4页 / 共62页
PIC单片机综合实例.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《PIC单片机综合实例.ppt》由会员分享,可在线阅读,更多相关《PIC单片机综合实例.ppt(62页珍藏版)》请在金锄头文库上搜索。

1、第十三章 综合实例【学习目标】!了解字符式液晶的显示原理;了解字符式液晶的显示原理;!掌握字符式液晶的初始化方法;掌握字符式液晶的初始化方法;!掌握根据时序图编程程序的方法;掌握根据时序图编程程序的方法;!掌握掌握LEDLED点阵显示屏电路设计思想;点阵显示屏电路设计思想;!理解汉字显示原理;理解汉字显示原理;!掌握掌握LEDLED点阵显示屏的编程方法;点阵显示屏的编程方法;!掌握光耦的用途和控制方法;掌握光耦的用途和控制方法;8/19/20242机械工业出版社第十三章 综合实例字符式液晶模块原理及编程字符式液晶模块原理及编程1LEDLED点阵显示屏原理及应用点阵显示屏原理及应用2电子密码锁控

2、制器的设计电子密码锁控制器的设计38/19/20243机械工业出版社第十三章 综合实例字符式液晶模块原理及编程字符式液晶模块原理及编程1LEDLED点阵显示屏原理及应用点阵显示屏原理及应用2电子密码锁控制器的设计电子密码锁控制器的设计38/19/20244机械工业出版社液晶分类!笔段式液晶笔段式液晶!字符式液晶字符式液晶!图像式液晶图像式液晶!汉字图像式液晶汉字图像式液晶!彩屏液晶彩屏液晶8/19/20245机械工业出版社字符式液晶模块 8/19/20246机械工业出版社16字符2行显示的字符液晶显示屏简介!内置内置HD44780HD44780控制器:可直接产生控制器:可直接产生192192种

3、常见字符图形;种常见字符图形;!字符编码与字符编码与ASCIIASCII兼容,并且允许用户自编字符用于显示;兼容,并且允许用户自编字符用于显示;!只需单一的只需单一的5V5V供电即可工作;供电即可工作;!重量轻:重量轻:100g100g;!体积小:体积小:11mm11mm厚;厚;!功耗低:功耗低:10 - 15 mw10 - 15 mw;!指令功能强:可组合成各种输入、显示、移位方式以满足指令功能强:可组合成各种输入、显示、移位方式以满足不同的要求;不同的要求;!接口简单方便:可与接口简单方便:可与8 8位微处理器或微控制器相联;位微处理器或微控制器相联;!工作温度宽:工作温度宽:-20 -

4、70-20 - 70;!可靠性高:寿命为可靠性高:寿命为50,00050,000小时小时(25)(25)。8/19/20247机械工业出版社硬件连接图8/19/20248机械工业出版社引脚信号表序号序号 符符 号号 名名 称称 功功 能能 1 1VSS VSS 接地接地 0V 0V 2 2VDD VDD 电路电源电路电源 5V10% 5V10% 3 3VEE VEE 液晶驱动电压液晶驱动电压 保证保证VDDVDDVEEVEE有有4.54.5到到5V5V电压差电压差 4 4RS RS 寄存器选择信号寄存器选择信号 H H:数据寄存器:数据寄存器 L L:指令寄存器:指令寄存器 5 5R/W R/

5、W 读读/ /写信号写信号 H H:读:读 L L:写:写 6 6E E 片选信号片选信号 下降沿触发,锁下降沿触发,锁存数据存数据 7-147-14DB0-DB7 DB0-DB7 数据线数据线 数据传输数据传输 8/19/20249机械工业出版社寄存器选择功能表 RSRS R/WR/W 操作操作0 00 0指令寄存器(指令寄存器(IRIR)写入写入 0 01 1忙标志和地址计数忙标志和地址计数器读出器读出 1 10 0数据寄存器(数据寄存器(DRDR)写入写入 1 11 1数据寄存器读出数据寄存器读出 8/19/202410机械工业出版社信号操作时序图8/19/202411机械工业出版社关键

6、信号时间宽度 名称名称 功能描述功能描述 要求要求 TasTas 地址建立时间地址建立时间 最小值最小值140ns 140ns TwTw 使能信号脉冲宽度使能信号脉冲宽度 最小值最小值450ns 450ns TdswTdsw 数据建立时间数据建立时间 最小值最小值195ns 195ns TcycETcycE 使能信号周期使能信号周期 最小值最小值1000ns 1000ns 8/19/202412机械工业出版社对于时间要求的说明!对于上表中的数据在用软件编写操作时序时必须对于上表中的数据在用软件编写操作时序时必须遵守,否则可能无法完成正确操作。例如当遵守,否则可能无法完成正确操作。例如当PIC1

7、6F877PIC16F877主频为主频为20MHz20MHz时,一条指令周期仅为时,一条指令周期仅为0.2us0.2us,即,即200ns200ns,这样在用程序实现此操作时序时,这样在用程序实现此操作时序时在使能信号在使能信号E E置置1 1后要延时后要延时3 3个指令周期(用个指令周期(用C C语言可语言可以加入三个以加入三个NOPNOP函数),保证高电平持续时间大于函数),保证高电平持续时间大于使能信号脉冲宽度使能信号脉冲宽度TwTw的最小值的最小值450ns450ns的要求。的要求。 8/19/202413机械工业出版社例题:求向液晶的数据寄存器写入A!题意分析题意分析: :!题目要求

8、向液晶的数据寄存器写入内容。查前表题目要求向液晶的数据寄存器写入内容。查前表 可知,可知,RSRS信号为信号为1 1,R/WR/W信号为信号为0 0,根据图中的连接,根据图中的连接方法可知,方法可知,RC5RC5应输出应输出1 1,RC6RC6应输出应输出0 0。当。当E E信号产信号产生一个脉冲后数据被打入到液晶的数据寄存器中。生一个脉冲后数据被打入到液晶的数据寄存器中。数据由数据由PORTDPORTD提供,提供,E E信号由信号由RC7RC7提供。提供。!根据时序图可得到以上信号的输出顺序。用根据时序图可得到以上信号的输出顺序。用C C语言语言描述如下。描述如下。8/19/202414机械

9、工业出版社1.1.LCD_CMD_W_TimingLCD_CMD_W_Timing () ()2.2. TRISD=0; /PORTD TRISD=0; /PORTD用于输出数据用于输出数据3.3. TRISC5=0; /RC5TRISC5=0; /RC5用于输出用于输出RSRS信号。信号。4.4. TRISC6=0; /RC6TRISC6=0; /RC6用于输出用于输出R/WR/W信号。信号。5.5. TRISC7=0; /RC7TRISC7=0; /RC7用于输出用于输出E E信号。信号。6.6. RC7 = 1 ; / E RC7 = 1 ; / E信号初值是信号初值是0 07.7. R

10、C5 = 1 ; / RS=1 RC5 = 1 ; / RS=1 8.8. RC6 = 0 ; / R/W=0 RC6 = 0 ; / R/W=0 9.9. PORTD = A ; / PORTD = A ; / 要打入的数据放到要打入的数据放到PORTDPORTD中中10.10. RC7 = 1 ; / E RC7 = 1 ; / E信号由低变高,由于每条指令时信号由低变高,由于每条指令时200ns200ns,已经保证,已经保证了了TasTas要求。要求。11.11. NOP();NOP();12.12. NOP(); NOP();13.13. NOP(); / NOP(); / 三个三个N

11、OPNOP满足满足TwTw最小时间宽度最小时间宽度14.14. RC7 = 0 ; / E RC7 = 0 ; / E信号再由高变低,打入数据。由于数据早已经赋值,信号再由高变低,打入数据。由于数据早已经赋值,所以所以TdswTdsw肯定满足肯定满足15.15.NOP();NOP();16.16.NOP(); / NOP(); / 满足满足TcycETcycE最小时间长度要求。最小时间长度要求。E E由低变高执行至此已由低变高执行至此已经消耗了经消耗了1200ns(61200ns(6条指令条指令) )17.17. 8/19/202415机械工业出版社字符液晶的指令集 !对字符液晶的控制命令就是

12、通过的特定信号组合而成,下对字符液晶的控制命令就是通过的特定信号组合而成,下表列出了某种字符液晶能够识别的几条指令。更多内容请表列出了某种字符液晶能够识别的几条指令。更多内容请参考教材。参考教材。 名称名称 指指 令令 码码 说说 明明 执行周期执行周期* * RS R/W DB7DB0 RS R/W DB7DB0 清屏清屏 00 0000 000100 0000 0001清除屏幕,清除屏幕,置置ACAC为零为零 1.64ms1.64msDDRAMDDRAM地址设置地址设置 001 ADD 001 ADD 设设DDRAMDDRAM地址地址 40us 40us 写数据写数据10 10 写数据写数

13、据 写数据到写数据到CGCG或或DDRAM DDRAM 40us40us8/19/202416机械工业出版社指令集的实现1.1. /向向LCDLCD写指令写指令2.2.void void LCD_Write_CMDLCD_Write_CMD( unsigned char LCD_CMD) ( unsigned char LCD_CMD) 3.3. 4.4. LCD_DATA= LCD_CMD;LCD_DATA= LCD_CMD;5.5.LCD_CMD_W_TimingLCD_CMD_W_Timing () ; () ;6.6.DelayMS(1)DelayMS(1) ; ;7.7. 8/19/

14、202417机械工业出版社向LCD写数据1.1./向向LCDLCD写数据写数据2.2.void void LCD_Write_DataLCD_Write_Data( unsigned char ( unsigned char LCD_CMD) LCD_CMD) 3.3. 4.4. LCD_DATA= LCD_CMD; LCD_DATA= LCD_CMD;5.5.LCD_DAT_W_TimingLCD_DAT_W_Timing() ;() ;6.6.DelayMS(1)DelayMS(1) ; ;7.7. 8/19/202418机械工业出版社向LCD输出一个字符! /向向LCDLCD输出一个字符

15、输出一个字符!void void LCD_Put_Char(unsignedLCD_Put_Char(unsigned char char LCD_CharLCD_Char) )! !LCD_Write_Data(LCD_CharLCD_Write_Data(LCD_Char) ;) ;! 8/19/202419机械工业出版社字符液晶的初始化 液晶模块正确初始化后,即可接收命令来显示字符。8/19/202420机械工业出版社字符显示 !字符通过字符通过DDRAMDDRAM(动态显示内存区)来显示,每个(动态显示内存区)来显示,每个字符位都对应一个字符位都对应一个DDRAMDDRAM地址。地址。

16、!第一行地址:第一行地址:0000、0101、0F0F!第二行地址:第二行地址:4040、4141、4F4F8/19/202421机械工业出版社字符液晶能显示常见的数字、字母和英文标点 8/19/202422机械工业出版社常用函数的实现:Set_Cursor1.1./设置显示坐标设置显示坐标2.2./Row = (0 or 1)/Row = (0 or 1)3.3./Column = ( 0 to 15)/Column = ( 0 to 15)4.4.void void LCD_Set_Cursor(unsignedLCD_Set_Cursor(unsigned char Row, char

17、Row, unsigned char Column)unsigned char Column)5.5. 6.6.LCD_Write_CMD(DD_RAM_BASELCD_Write_CMD(DD_RAM_BASE + Row * 0x40 + + Row * 0x40 + Column);Column);7.7.DelayMS(1);DelayMS(1);8.8. 8/19/202423机械工业出版社向LCD输出字符串,字符串在RAM中1.1.void void LCD_Put_StringLCD_Put_String( char *( char *StrStr) )2.2. unsigned

18、 char unsigned char Str_TempStr_Temp; ;3.3. while (1) while (1)4.4. Str_TempStr_Temp = * = *StrStr ; ;5.5.if (if (Str_TempStr_Temp != 0x00 ) != 0x00 )6.6. LCD_Write_Data(Str_TempLCD_Write_Data(Str_Temp) ;) ;7.7. StrStr + ; + ;8.8. 9.9.else return ;else return ;10.10. 11.11. 8/19/202424机械工业出版社第十三章 综合

19、实例字符式液晶模块原理及编程字符式液晶模块原理及编程1LEDLED点阵显示屏原理及应用点阵显示屏原理及应用2电子密码锁控制器的设计电子密码锁控制器的设计38/19/202425机械工业出版社8/19/202426机械工业出版社典型LED点阵显示屏电路设计 !LEDLED点阵显示屏的基本显示元件是点阵显示屏的基本显示元件是88LED88LED显示块,显示块,如图所示。其原理与数码管类似,由如图所示。其原理与数码管类似,由6464个个LEDLED排成排成8 8行行8 8列。同一行的列。同一行的LEDLED阴极连在一起;同一列的阴极连在一起;同一列的LEDLED阳极连在一起。阳极连在一起。8/19/

20、202427机械工业出版社要在88LED显示屏上显示字母E 8/19/202428机械工业出版社用0代表灭的点,用1代表亮的点 !0000000000000000!0011110000111100!0010000000100000!0011110000111100!0010000000100000!0010000000100000!0011110000111100!0000000000000000!0x0,0x3C,0x20,0x3C,0x20,0x20,0x3C,0x0;0x0,0x3C,0x20,0x3C,0x20,0x20,0x3C,0x0;8/19/202429机械工业出版社编程控制8

21、8显示屏K1显示字母E的字形 8/19/202430机械工业出版社题意分析 !H0H0到到H7H7表示行选信号,用表示行选信号,用PORTDPORTD控制。在实际电路控制。在实际电路中由于中由于LEDLED显示块耗电量比较大,单片机无法直接显示块耗电量比较大,单片机无法直接驱动太多的显示块。所以在实际电路中应该为每个驱动太多的显示块。所以在实际电路中应该为每个行选信号上加入驱动电路。行选信号上加入驱动电路。 !L0L0到到L7L7是用来显示每行的字形数据端口,通过是用来显示每行的字形数据端口,通过PORTBPORTB输出。输出。!要想显示要想显示E E的字形,根据扫描法思想,就是先把表的字形,

22、根据扫描法思想,就是先把表示示E E字形的第一行二进制数送字形的第一行二进制数送L0L0到到L7L7,而后仅点亮,而后仅点亮第第1 1行;依次再把表示行;依次再把表示E E字形的第二行二进制数送字形的第二行二进制数送L0L0到到L7L7,而后仅点亮第,而后仅点亮第2 2行;行;. . 。 8/19/202431机械工业出版社关键代码1.1.const unsigned char ZiXing8=const unsigned char ZiXing8=2.2. 0x0,0x3C,0x20,0x3C,0x20,0x20,0x3C,0x0 ; 0x0,0x3C,0x20,0x3C,0x20,0x20

23、,0x3C,0x0 ; !#define LIE_DIR TRISB / #define LIE_DIR TRISB / 列端口方向位,列端口方向位, !#define LIE_PORT PORTB / #define LIE_PORT PORTB / 列端口列端口!#define HANG_DIR TRISD / #define HANG_DIR TRISD / 行端口方向位,行端口方向位, !#define HANG_PORT PORTD / #define HANG_PORT PORTD / 行端口行端口1.1.for(Hangfor(Hang=0;Hang8;Hang+)=0;Hang

24、8;Hang+)2.2. 3.3. LIE_PORT= LIE_PORT=ZiXingHangZiXingHang; /; /字形码送列端口显示字形码送列端口显示4.4. HANG_PORT=(unsigned char)1Hang); / HANG_PORT=(unsigned char)1Hang); /指定行指定行5.5. DelayMS(2); /DelayMS(2); /短暂延时造成视觉暂留现象短暂延时造成视觉暂留现象 6.6. HANG_PORT=0b11111111; /HANG_PORT=0b11111111; /在送新数据前关闭显示在送新数据前关闭显示7.7. 8/19/20

25、2432机械工业出版社显示汉字的原理8/19/202433机械工业出版社“中”的字型码!0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,0x0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,!0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x00x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x

26、01,0x00,0x01,0x00,0x01,0x00;1,0x00,0x01,0x00,0x01,0x00,0x01,0x00;8/19/202434机械工业出版社行译码电路:4-16译码器8/19/202435机械工业出版社列电路:串联的移位寄存器8/19/202436机械工业出版社组合后的电路8/19/202437机械工业出版社实例:在LED点阵显示屏上显示汉字! 题意分析题意分析 !由于由于PICPIC单片机具有硬件的移位输出接口单片机具有硬件的移位输出接口SPISPI,所,所以本例中列信号以本例中列信号L0:L15L0:L15由由DSDS、SH_CPSH_CP和和ST_CPST_CP

27、控制。控制。DSDS和和SH_CPSH_CP分别连接到分别连接到PICPIC硬件硬件SPISPI模块的模块的SDOSDO和和SCKSCK引脚。引脚。ST_CPST_CP由由RC1RC1控制,出现上升沿时控制,出现上升沿时74HC59574HC595的的移位寄存器内容才会输出到其输出引脚上。移位寄存器内容才会输出到其输出引脚上。CS_NCS_N由由RC0RC0控制。由此可见控制。由此可见C C口的控制信号都是输出状态即口的控制信号都是输出状态即可。可。!行选择信号行选择信号H0:H15H0:H15由由DB0:DB3DB0:DB3和和CS_NCS_N控制。控制。DB3:DB0DB3:DB0用用RD

28、3:RD0RD3:RD0控制,所以控制,所以PORTDPORTD应为输出状态。应为输出状态。8/19/202438机械工业出版社 题意分析续!要想显示汉字要想显示汉字“中中”的字形,根据扫描法思想,的字形,根据扫描法思想,把表示把表示“中中”字字形码数组的第一和第二个字节依字字形码数组的第一和第二个字节依次输出到次输出到L0:L15L0:L15,这可以通过,这可以通过SPISPI方式顺序发送字方式顺序发送字形码数组中的前两个字节来实现;而后仅点亮第形码数组中的前两个字节来实现;而后仅点亮第1 1行;再把字形码数组的第三和第四个字节通过行;再把字形码数组的第三和第四个字节通过SPISPI方式发送

29、到方式发送到L0:L15L0:L15,而后仅点亮第,而后仅点亮第2 2行;行;. . 。 8/19/202439机械工业出版社关键代码1.1.#define CTRL_DIR TRISC / #define CTRL_DIR TRISC / 控制字节方向位,控制字节方向位, 2.2.#define CTRLBYTE PORTC / #define CTRLBYTE PORTC / 控制字节控制字节 3.3.#define SH_CP RC3 /shift #define SH_CP RC3 /shift clcokclcok plusepluse 移位时移位时钟钟 4.4.#define DS

30、 RC5 /Serial Data #define DS RC5 /Serial Data 串行数据串行数据 5.5.#define ST_CP RC1 /store clock #define ST_CP RC1 /store clock plusepluse 锁存脉锁存脉冲冲, , 下降沿锁存下降沿锁存6.6.#define CS_N RC0 / 74138#define CS_N RC0 / 74138片选信号,低电平有效片选信号,低电平有效7.7.#define LINESEL PORTD /#define LINESEL PORTD /行选择,低行选择,低4 4位有效位有效8.8.#

31、define LINESEL_DIR TRISD /#define LINESEL_DIR TRISD /行选择方向位行选择方向位8/19/202440机械工业出版社SPIInit()1.1.void void SPIInitSPIInit()()2.2.TRISC3=0; / RC3/SCKTRISC3=0; / RC3/SCK为输出为输出3.3. TRISC5=0; / RC5/SDOTRISC5=0; / RC5/SDO为输出为输出4.4. TRISC1=0; / RC1TRISC1=0; / RC1用来控制用来控制74HC59574HC595的锁存信号的锁存信号5.5. SSPIF=0

32、; / SSPIF=0; / 清空标志位清空标志位6.6. CKE=0; / CKE=0; / 上升沿发送数据,为了与上升沿发送数据,为了与74HC59574HC595时序匹配时序匹配7.7. CKP=1; / CKP=1; / 空闲为高电平空闲为高电平8.8. SSPEN=1; / SSPEN=1; / 使能使能MSSPMSSP模块模块9.9. SSPM3=0;SSPM3=0;10.10. SSPM2=0; SSPM2=0;11.11. SSPM1=1; SSPM1=1;12.12. SSPM0=0; / SSPM=0010, SSPM0=0; / SSPM=0010,工作模式为工作模式为S

33、PISPI主控主控13.13. 8/19/202441机械工业出版社SPISend1.1.void void SPISend(unsignedSPISend(unsigned char data) char data)2.2. 3.3. SSPBUF=data; / SSPBUF=data; / 把要发送的数据放在把要发送的数据放在SSPBUFSSPBUF中中4.4. while(SSPIFwhile(SSPIF=0) / SSPIF=0) / SSPIF为为0 0说明未发送完成说明未发送完成5.5. 6.6. 7.7. / /循环退出说明发送完毕循环退出说明发送完毕 8.8. SSPIF=0

34、; / SSPIFSSPIF=0; / SSPIF必须手动清零必须手动清零9.9. 8/19/202442机械工业出版社显示字形的代码1.1.for(Linefor(Line=0;Line16;Line+)=0;Line16;Line+)2.2. 3.3. SPISend(ZiXingLineSPISend(ZiXingLine1); / 1); / 低八位低八位4.4. SPISend(ZiXing(LineSPISend(ZiXing(Line1)+1); / 1)+1); / 高八位高八位5.5. LINESEL=Line; /LINESEL=Line; /选择要显示的行选择要显示的行6

35、.6. ST_CP=1; / ST_CP=1; / 产生上升沿使产生上升沿使595595芯片输出数据芯片输出数据7.7. ST_CP=0; / ST_CP=0; / 回到低电平回到低电平, ,为下次上升沿做准备为下次上升沿做准备8.8. CS_N=0; / CS_N=0; / 使能使能74LS13874LS138芯片输出芯片输出9.9. DelayMS(2); /DelayMS(2); /延时产生视觉暂留现象延时产生视觉暂留现象10.10. CS_N=1; / CS_N=1; / 关闭关闭74LS13874LS138芯片输出芯片输出11.11. 8/19/202443机械工业出版社第十三章 综

36、合实例字符式液晶模块原理及编程字符式液晶模块原理及编程1LEDLED点阵显示屏原理及应用点阵显示屏原理及应用2电子密码锁控制器的设计电子密码锁控制器的设计38/19/202444机械工业出版社电子密码锁控制器:需求分析!不需要钥匙,开锁者输入密码即可控制锁打开,不需要钥匙,开锁者输入密码即可控制锁打开,锁的关闭是手动或自动的;锁的关闭是手动或自动的;!开锁者有权利修改自己的密码;开锁者有权利修改自己的密码;!为了防止开锁者穷举密码,密码输入错误三次后为了防止开锁者穷举密码,密码输入错误三次后即报警,即报警,5 5分钟后方能继续使用;分钟后方能继续使用;!为了提示开锁者正确操作,应该用显示设备输

37、出为了提示开锁者正确操作,应该用显示设备输出相关提示信息;相关提示信息;!当开锁者有误操作时应该有声音警告;当开锁者有误操作时应该有声音警告;!电池供电;电池供电;8/19/202445机械工业出版社硬件设备需求!为了输入密码,需要设计按键输入电路,为了提为了输入密码,需要设计按键输入电路,为了提高安全性,又考虑到密码锁的空间,一般的系统都高安全性,又考虑到密码锁的空间,一般的系统都是数字密码,这里可以采用是数字密码,这里可以采用4444矩阵键盘来实现。矩阵键盘来实现。 !为了防止断电后密码丢失,需要把用户密码记录为了防止断电后密码丢失,需要把用户密码记录在非易失性存储器中,例如在非易失性存储

38、器中,例如EEPROMEEPROM中。由于中。由于PICPIC单单片机大都内置片机大都内置EEPROMEEPROM,可以省略外挂,可以省略外挂EEPROMEEPROM。 !为了实现报警和误操作提示,可以采用简单的声为了实现报警和误操作提示,可以采用简单的声音报警。为了降低成本,一般采用简单的音报警。为了降低成本,一般采用简单的5V5V压电式压电式蜂鸣器来实现声音的播放,这种蜂鸣器驱动电流在蜂鸣器来实现声音的播放,这种蜂鸣器驱动电流在10mA10mA左右,用左右,用PICPIC单片机的单片机的I/OI/O引脚可以直接驱动。引脚可以直接驱动。8/19/202446机械工业出版社硬件设备需求续!由于

39、提示信息由很多种。为了能让使用者看明白,由于提示信息由很多种。为了能让使用者看明白,这里采用字符式液晶来显示,在实际应用中,读者这里采用字符式液晶来显示,在实际应用中,读者可以购买内置中文字库的液晶来代替字符式液晶。可以购买内置中文字库的液晶来代替字符式液晶。!单纯的电子锁的种类很多,但其控制原理都是通单纯的电子锁的种类很多,但其控制原理都是通过输入信号的导通和断开来实现锁的开关,一般的过输入信号的导通和断开来实现锁的开关,一般的电子锁都需要电子锁都需要10V10V乃至更高的驱动电压。这样无法乃至更高的驱动电压。这样无法用一个用一个I/OI/O引脚直接驱动,需要外加适当的隔离和引脚直接驱动,需

40、要外加适当的隔离和驱动电路控制。驱动电路控制。!电池供电的系统一般都要求低功耗,本系统对速电池供电的系统一般都要求低功耗,本系统对速度要求不高,所以可采用度要求不高,所以可采用38.768KHz38.768KHz的低主频晶振的低主频晶振作为系统主频。作为系统主频。8/19/202447机械工业出版社硬件设备需求续!需要一片单片机来完成各种设备之间的逻辑控制,需要一片单片机来完成各种设备之间的逻辑控制,由于本书以由于本书以PIC16F877PIC16F877为例讲解,这里就采用为例讲解,这里就采用PIC16F877PIC16F877,在具体项目,可根据,在具体项目,可根据I/OI/O引脚等特殊需

41、引脚等特殊需求选择其它款求选择其它款PICPIC单片机。例如本项目中要求有矩单片机。例如本项目中要求有矩阵键盘输入、字符液晶输出,这样所用引脚大约阵键盘输入、字符液晶输出,这样所用引脚大约2222个左右(不考虑引脚复用情况下)。为了给将来的个左右(不考虑引脚复用情况下)。为了给将来的升级留出余地,建议选择升级留出余地,建议选择2828脚的单片机。为了适应脚的单片机。为了适应电池供电,建议采用低功耗型号。为了记录密码,电池供电,建议采用低功耗型号。为了记录密码,最好有内置最好有内置EEPROMEEPROM。为了简化电路设计,最好。为了简化电路设计,最好I/OI/O引脚可以直接驱动蜂鸣器。综上所述

42、,可以选择引脚可以直接驱动蜂鸣器。综上所述,可以选择PIC16F886PIC16F886单片机。单片机。8/19/202448机械工业出版社硬件设计!密码键盘部分电路的设计;密码键盘部分电路的设计;!字符液晶部分电路的设计;字符液晶部分电路的设计;!锁控制部分电路的设计;锁控制部分电路的设计;!发声部分电路的设计发声部分电路的设计8/19/202449机械工业出版社密码键盘部分电路的设计;8/19/202450机械工业出版社字符液晶部分电路的设计8/19/202451机械工业出版社锁控制部分电路的设计;8/19/202452机械工业出版社发声部分电路的设计8/19/202453机械工业出版社系

43、统上电初始化,读出掉电前密码。用户密码输入开锁重试次数到3次?报 警 5分钟是否改密码?密码正确?修改密码关锁关锁信号有效?是否是否是否是否软件设计8/19/202454机械工业出版社题意分析 !程序的主循环应该是等待用户的按键输入。为了简单起见,设定密码程序的主循环应该是等待用户的按键输入。为了简单起见,设定密码为为6 6位数字。使用前文完成的函数位数字。使用前文完成的函数GetKeyValueGetKeyValue即可获得输入的键值。即可获得输入的键值。而后根据键值来决定下一步的动作。输入的按键有五种情况:而后根据键值来决定下一步的动作。输入的按键有五种情况:!第一种是第一种是0 0到到9

44、 9之间的数字,应将其按顺序作为密码的一部分并在液晶之间的数字,应将其按顺序作为密码的一部分并在液晶上显示上显示“*”“*”号;号;!第二种是退格按键,在密码内容中应删除上次输入的数字,显示上也第二种是退格按键,在密码内容中应删除上次输入的数字,显示上也应退一格并删除一个应退一格并删除一个“*”“*”号;号;!第三种是确定键,表示密码输入完毕,进入密码比较流程;当密码匹第三种是确定键,表示密码输入完毕,进入密码比较流程;当密码匹配时则发出开锁信号,否则显示错误信息并用声音提示,当连续输入配时则发出开锁信号,否则显示错误信息并用声音提示,当连续输入三次密码不对,则长时间发声报警。过一段时间后方能

45、继续重试密码;三次密码不对,则长时间发声报警。过一段时间后方能继续重试密码;!第四种是修改密码键,只有密码输入正确开锁后才有效,其它状态时第四种是修改密码键,只有密码输入正确开锁后才有效,其它状态时无效按键,无效时按下应通过声音提示用户输入错误。修改密码过程无效按键,无效时按下应通过声音提示用户输入错误。修改密码过程与输入密码过程类似;与输入密码过程类似;!第五种是第五种是C C、D D和和E E键,本系统中未用到这几个键,应提示用户输入错误;键,本系统中未用到这几个键,应提示用户输入错误;8/19/202455机械工业出版社题意分析续!为了防止系统掉电,用户的密码应该保存在非易为了防止系统掉

46、电,用户的密码应该保存在非易失性存储器中,本例中直接保存在失性存储器中,本例中直接保存在PICPIC单片机内部单片机内部的的EEPROMEEPROM中即可,中即可,HT-PICHT-PIC有专用的内部有专用的内部EEPROMEEPROM读写读写函数函数eeprom_readeeprom_read和和eeprom_writeeeprom_write,很容易实现,很容易实现EEPROMEEPROM的存取。在系统初始化时需要从的存取。在系统初始化时需要从EEPROMEEPROM读取读取掉电前的用户密码,用于与开锁者输入的密码做比掉电前的用户密码,用于与开锁者输入的密码做比较。密码修改成功后,新密码应

47、该写入较。密码修改成功后,新密码应该写入EEPROMEEPROM;8/19/202456机械工业出版社题意分析续!本设计中采用字符式液晶作为显示界面,应该通本设计中采用字符式液晶作为显示界面,应该通过液晶模块显示每一次操作的提示语,便于用户理过液晶模块显示每一次操作的提示语,便于用户理解。解。!在发声功能上,警告声音为蜂鸣器发一短声音,在发声功能上,警告声音为蜂鸣器发一短声音,报警声音为一长声音即可。报警声音为一长声音即可。8/19/202457机械工业出版社关键代码:把旧密码从PIC内置EEPROM读出1.1. for(ifor(i=0;i6;i+)=0;i9) /9) /用键盘输入的密码肯

48、定小于用键盘输入的密码肯定小于9 95.5. / / 若读出的某个密码大于若读出的某个密码大于9 9说明密码已经被意外修改过了说明密码已经被意外修改过了 6.6. / / 加载默认密码加载默认密码7.7. for(ifor(i=0;i6;i+) / =0;i6;i+) / 执行到这里上一层循环的执行到这里上一层循环的i i就不用了就不用了8.8. / / 默认密码是默认密码是1234561234569.9. strPasswordistrPasswordi=i+1;=i+1;10.10. 11.11. break; break;12.12. 13.13. 8/19/202458机械工业出版社键

49、盘处理代码说明1.1. key=key=GetKeyValueGetKeyValue(); / (); / 从从4*44*4小键盘获得按键键值小键盘获得按键键值2.2. if(keyif(key!=NO_KEY) /!=NO_KEY) /如果有按键按下如果有按键按下3.3. 4.4. if(keyif(key =9) / =9) / 无符号数肯定大于等于无符号数肯定大于等于0 05.5. 6.6. if(InputNumbersif(InputNumbersMAX_PASSWORD_LENGTH)MAX_PASSWORD_LENGTH)7.7. / / 记录用户密码记录用户密码8.8. use

50、rPasswordInputNumbersuserPasswordInputNumbers=key; =key; 9.9. LCD_Put_CharLCD_Put_Char(*); / (*); / 显示字形显示字形% %10.10. InputNumbersInputNumbers+; /+; /输入的数字数目加一输入的数字数目加一11.11. 12.12. else else13.13. 14.14. beep(); / beep(); / 发出警告声音发出警告声音15.15. 16.16. 8/19/202459机械工业出版社键盘处理代码说明续1.1.elseelse2.2. 3.3.

51、switch(keyswitch(key) )4.4. 5.5. case ENTER : case ENTER : 6.6. / /逐个键值比较,看密码是否匹配逐个键值比较,看密码是否匹配, ,7.7. / / 这是有问题的,因为用户可能没输入这是有问题的,因为用户可能没输入6 6个字母个字母8.8. / / 当然为了保险起见,要求用户必须输入当然为了保险起见,要求用户必须输入6 6个数字也是可行的个数字也是可行的9.9. for(ifor(i=0;i=0;iMAX_PASSWORD_LENGTH;iMAX_PASSWORD_LENGTH;i+)+)10.10. 11.11. if(user

52、Passwordiif(userPasswordi!=!=strPasswordistrPasswordi)12.12. break; break; 13.13. 14.14. if(iif(i=MAX_PASSWORD_LENGTH) /=MAX_PASSWORD_LENGTH) /密码匹配密码匹配15.15. / / 显示显示: :密码正确锁打开密码正确锁打开16.16. LOCK=OPEN; /LOCK=OPEN; /开锁开锁 8/19/202460机械工业出版社作业!编程控制编程控制1616LED1616LED点阵显示汉字点阵显示汉字“国国”的字形的字形 8/19/202461机械工业出版社提问时间8/19/202462机械工业出版社

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号