因论坛发帖的字数限制,所以上一篇没有发完全。现补发如下:; v7 z: X5 c5 o0 b B+ ]( j' q; d
本密码锁可频繁、无限制次数的随意设置、修改、存储新开锁密码。根据Microchip公司PIC16F877A数据手册资料数据说明,PIC16F877A单片机内置的EEPROM存储器的擦写次数高达万次乃至百万次以上,单片机断电后其保存在EEPROM中的数据也不会丢失,并且可以保存长达四十年以上。 供电电源部分:硬件电路电源部分采用了两路供电方式供电工作。保险箱内部采用6V蓄电池或干电池作为本机的供电电源。该6V电压经以Q7、R23、D5、C7、C8组成了简单的5V稳压电路供给单片机工作,数码管及电磁铁则直接用6V电压供电工作。为了防止机内电池电压在低落时不能驱动电磁铁而无法开启密码锁,本机又辅以了一个外加DC直流电压输入接口CZ1,在内置电池电力不足的情况下,可将外部DC12V~DC30V电压通过保险箱外接的直流电源插口CZ1输入给密码锁电路板供电,考虑到外接电源供电电压的不确定性,电路中添加了一只限制电压极性的防反接二极管D3,防止外加电源电压极性与内电源极性相反时烧毁密码锁电路板。由U2集成三端稳压块LM7808稳压后的8V直流电压再经D4、R22降压、限流加在机内电池的“+、—”极电源上给整机供电。保证了密码锁电路能正常、可靠、稳定地工作。 元器件的选用与电路的安装:电路中多数元器件均采用普通常用的电子元器件,无特殊要求,电磁铁按实际需要选用,数码管采用共阳极4位一体化数码管为好,这样不但可降低成本,也可以简化PCB上的布线设计,数码管的大小、发光颜色均依个人喜好和客观条件选用。电路中S3~S6数码输入按键、S7开锁确认按键安装于一个独立的PCB电路板上,并且装于保险箱的面板上,以便于按键的操作。密码修改、存储、确认按键S1、单片机系统复位按键S2(K-reset)则需要装于密码锁电路的主板之上,电路主板则装于保险箱体内,在保险箱门没有被打开之前任何人是触及不到这两个按键的。 程序设计要领:程序设计首先要对PIC16F877A单片机I/O端口进行初始化设置。源程序包含:主程序,按键子程序、按键短按与长按识别子程序,定时中断子程序,密码存储子程序,数码管动态显示子程序,蜂鸣器鸣响子程序,延时子程序,限制开锁次数子程序,存储、修改密码确认子程序,读、识别开锁密码子程序等组成。整个源程序用汇编语言书写,(.asm)文本文件大小约为22KB;烧写(.HEX)码大小:2.36KB。 密码锁初始化程序段书写如下: ;*************引用PIC16F877A单片机头文件******************************** LIST P=PIC16F877A #INCLUDE <P16F877A.INC> ;************程序开始***************************************************** ORG 0000H NOP ;【MLAB IDE调试时需要】 GOTO START ;【程序跳到到START标号处执行】 ORG 004H ;【PIC单片机唯一的中断服务程序入口地址】 GOTO TMR0_SERV ;【产生中断后程序跳到TMR0_SERV标号处执行】 ORG D'10' ;【从地址D'10'存放程序】 ;================================================================= START ;【程序从这里开始】 BCF STATUS,6 ;【BANKΩ1】 BSF STATUS,5 ;【选择体1】 CLRF TRISC ;【设:RC端口为输出】 ;【其中RC7为蜂鸣器输出驱动】【1电平使能】 MOVLW 0FFH ;【置数:0FFH到B口方向设置寄存器】 MOVWF TRISB ;【设置B口为输入,用于按键控制端口】 MOVLW 0C0H ;【设A口为输出】驱动数码管【位码】和【电磁铁】 MOVWF TRISA ;【RA0用于驱动电磁铁】 CLRF OPTION_REG ;【清选项寄存器】 MOVLW 07H ;【bit7=0禁止PORTB上拉,分频器分配给TMI0】 MOVWF OPTION_REG ;【分频比=1:256】 MOVLW 07H ;【置数到ADCON1寄存器】 MOVWF ADCON1 ;【设置RA为普通数字I/O口】 BCF STATUS,5 ;【到体0】 ;=================================================================; 密码锁主程序工作流程图如图2所示: 图2 密码锁主程序工作流程图 密码锁定时中断子程序工作流程框图如图3所示。 图3密码锁定时中断子程序工作流程图 密码锁EEPROM密码存储子程序工作流程框图如图4所示 图4 EEPROM密码存储子程序工作流程框图 数码管显示子程序工作流程图如图5所示。 图5 数码管显示子程序工作流程图 程序中数码管显示电路采的是动态扫描法进行的,这样可以简化硬件电路设计,降低电路成本。本制作中采用的是LG5641BH四位一体化封装式共阳极型LED数码管,由于本程序中数码管的段码和蜂鸣器同用一个RC端口,这样在数码管正常显示的非报警状态下,蜂鸣器是不能出声的,因此,此查表显示码非彼查表显示码。 |