北京交大单片机课程设计电子密码锁设计报告Word文档下载推荐.docx
- 文档编号:19673824
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:19
- 大小:259.97KB
北京交大单片机课程设计电子密码锁设计报告Word文档下载推荐.docx
《北京交大单片机课程设计电子密码锁设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《北京交大单片机课程设计电子密码锁设计报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
3.1MAX7219
MAX7219是一种高集成化的串行输入/输出的共阴极LED显示驱动器。
每片可驱动8位7段加小数点的共阴极数码管,可以数片级联,而与微处理器的连接只需3根线。
MAX7219内部设有扫描电路,除了更新显示数据时从单片机接收数据外,平时独立工作,极大地节省了MCU有限的运行时间和程序资源。
MAX7219芯片上包括BCD译码器、多位扫描电路、段驱动器、位驱动器和用于存放每个数据位的8×
8静态RAM以及数个工作寄存器。
通过指令设置这些工作寄存器,可以使MAX7219进入不同的工作状态。
以下将从管脚功能、操作指令、与单片机的连接三个方面全面介绍MAX7219这个芯
3管脚功能:
(1)DIN为串行数据输入端。
当
CLK为上升沿时,数据被载入16b内部移位寄存器。
(2)CLK为串行时钟输入端。
其最大工作频率可达10MHz。
(3)LOAD为片选端,当LOAD为低电平时,芯片接收来自DIN的数据,接收完毕,LOAD回到高电平时,接收的数据将被锁定。
(4)DIG0~DIG7为吸收显示器共阴极电流的位驱动线。
其最大值可达500mA,关闭状态时,输出+VCC。
(5)SEGA~SEGG,DP为驱动显示器7段及小数点的输出电流,一般为40mA左右,可软件调整,关闭状态时,接入GND。
(6)DOUT为串行数据输出端,通常直接接入下片MAX7219的DIN端。
译码方式选择
操作代码为“09H”,操作数为“0”或“0FFH”。
选中“0”则不使用BCD译码器,在显示数字或符号时,按每段点亮与否编排传送码。
而选中“0FFH”时,则按8421标准二进制编码来代表相应的显示数字,如下:
显示内容
0
1
2
3
4
5
6
7
8
9
操作数(使用BCD译码)
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
操作数(不用BCD译码)
7EH
30H
6DH
79H
33H
5BH
5FH
70H
7FH
7BH
表1译码与不译码的比较
亮度调节选择
操作代码为“0AH”,这个指令可以用来调节显示器的亮度,改变其操作数可以改变MAX7219内部扫描脉冲的宽度,从而使电流的平均值有所变化,这个电流平均值可以从最小的1/32至最大的31/32之间进行16级调节,如表2所示。
操作数
……
0CH
0DH
0EH
0FH
驱动电流
1/32
3/32
5/32
7/32
9/32
25/32
27/32
29/32
31/32
表2亮度调节操作数
扫描位数设定
操作代码为“0BH”,如果所用的显示器少于8位,则应通过这条
指令设置相应的位数。
因为设置的位数如果比实际使用的位数大,就会形成“虚位”,而一旦对“虚位”进行操作,将会引起整个显示器的混乱,另外,扫描位数的设置,会影响到扫描频率的变化,相应地,显示器亮度也会随着变化,所以应该先确定扫描位数,再设置显示器亮度.
如表3所示
扫描位数(位)
表3扫描位数设定操作数
待机开关
操作代码为“0CH”,操作数为“0”或“1”。
操作数为“0”,则显示器不工作(灭灯),反之,显示器正常工作。
待机状态下,7219的工作电流仅为150μA。
显示器检测
操作代码为“0FH”,操作数为“0”或“1”。
选择操作数为“1”时,可点亮整个显示器,通常用来检查数码管及连接电路是否存在故障。
检测时,不会改变各位原有的显示数据,即检测完毕后,再送入不检测指令“0”,又可恢复显示原数据。
位操作指令
位操作指令就是对8个数码管显示内容的操作,也是2个字节,第1个字节是位的代码,如表4所示,第2个字节则根据译码方式的选择来使用表1中的编码。
操作代码
位
表4位的代码
上述所有指令的输入,不分先后(但每个指令2个字节的秩序不能颠倒)。
通常,前5条指令一般在上电初始化程序中加以设置,而在工作程序中,仅使用位操作指令即可。
另外,MAX7219上电时,译码方式、亮度调节、扫描位数、待机开关、显示检测等5个控制寄存器全部归零。
3.1.3与单片机的连接
MAX7219与51单片机的连接形式有2种:
一种是将MAX7219的3个输入端DIN,CLK和LOAD与51单片机的任意3个端口连接;
一种则是直接与51单片机的串行接口相连。
在此次实验中,我们采用第一种连接方式,以下将只介绍第一种方式。
4、程序流程图
5、在课程设计中遇到的困难及解决办法
从设计到焊板子过程中遇到了很多问题,最惨的是第一块板子,用万用表测电路一切正常,可是数码光就是死活不亮,不亮不亮不亮!
!
查了两个下午电路也没差出哪里错误,估计是元器件的问题,十分郁闷,结果以做快的速度重新焊了一个板子,结果一切正常,明明是完全一样的电路,可是一个好用一个不好用,!
在上电复位后,我发现不论按什么键,数码管都不能显示数字,经检查后才发现没有对MAX7219进行初始化,然后编了MAX7219的初始化程序,经调用后问题得到解决。
在蜂鸣器模块中,开始发现在程序没问题的情况下出不来想要的结果,进行研究后才发现三极管在功率放大的同时也起到了非门的作用,将蜂鸣器初值置1后问题得到解决。
做为指示的发光二极管指示时不太亮,经测量电压后测得单片机输出的电压较低,加了三极管对其进行功率放大后问题得到解决。
我开始时编写的程序只能进行密码的输入和修改,而且报警功能也不完善,后来经过与同学讨论后,加了一管理员密码并对报警模块进行了完善。
总之,过程十分艰难,不但联系了电工技巧,编程经验,就是对中发电子市场也是越来越熟悉…绝对是一次全身心,大脑和身体的全面锻炼和发展!
附件
源程序清单:
ORG0000H
DINBITP3.0;
定义变量
CLKBITP3.1
LOADBITP3.2
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#70H
SETBP3.5
SETBP3.6
SETBP3.7
LCALLPROCESS
M_Z:
MOVR1,#40H
MOVR2,#30H
M_Z1:
MOV@R1,#00H
INCR1
DJNZR2,M_Z1
MOVR1,#60H
LCALLDISPLAY
MOV55H,#01H
MOV56H,#01H
MOV57H,#00H
MOV58H,#05H
M_START:
LCALLSCAN;
调用扫描程序
LCALLDELAY
MOVA,R1
CJNEA,#0EH,M_NEXT1
AJMPM_Z
M_NEXT1:
CJNEA,#0BH,M_NEXT2
AJMPINPUT
M_NEXT2:
CJNEA,#0CH,M_START
AJMPMODIFY1
SJMP$
;
显示模块;
MAX7219初始化子程序
PROCESS:
MOVA,#0BH;
A中存入操作代码--扫描位数设定
MOVB,#03H;
B中存入操作数--4位
LCALLW_7219
MOVA,#09H;
MOVB,#0FFH;
使用BCD译码器
MOVA,#0AH;
亮度调节
MOVB,#09H;
从最小的1/32至最大的31/32之间进行16级调节(00H-0FH)
MOVA,#0CH;
MOVB,#01H;
显示器正常工作
RET
把操作代码和操作数传送给MAX7219
W_7219:
CLRLOAD
LCALLSD_7219
MOVA,B
SETBLOAD
将8位数据传入MAX7219
SD_7219:
MOVR6,#08H
C_SD:
NOP
CLRCLK
RLCA
MOVDIN,C
NOP
SETBCLK
DJNZR6,C_SD
RET
MAX7219显示子程序
DISPLAY:
MOVR4,#04H
MOVA,@R1
MOV21H,R1
MOV20H,A
ADDA,R1
MOVR0,A
C_DISP:
MOVA,@R0
MOVB,A
MOVA,R4
LCALLW_7219
DECR0
DEC@R1
DJNZR4,C_DISP
MOVR1,21H
MOVA,20H
MOV@R1,A
扫描模块;
扫描程序
SCAN:
MOVR3,#0F7H;
扫描初始值
MOVR1,#00H;
取码数值
SCAN1:
MOVA,R3;
开始扫描
LCALLMOVP;
将扫描值输出到P
LCALLMOVA;
读入P判断是否有按下
MOVR4,A;
存到R4,判断是否放开
SETBC;
C=1
MOVR5,#04H;
扫描列
L1:
RLCA;
将按键值左移一位元
JNCKEYIN;
若C=0,有按,执行KEYIN
GO:
INCR1;
将指标值加1,继续扫描下一行
DJNZR5,L1;
扫描四行
MOVA,R3;
载入扫描值
SETBC;
RRCA;
扫描下一行
MOVR3,A;
存回扫描值
JCSCAN1;
C=1,尚未完成扫描
AJMPSCAN;
结束键盘扫描,回到SCAN
KEYIN:
MOVR7,#10消除弹跳
L2:
MOVR6,#248
DJNZR6,$
DJNZR7,L2
LCALLMOVA;
读入P
XRLA,R4
JNZGO
CJNER1,#0AH,L3
MOVR1,#00H
L3:
数值传递
MOVA:
RRCA
MOVC,P1.4
MOVC,P1.5
MOVC,P1.6
MOVC,P1.7
MOVC,P1.3
MOVC,P1.2
MOVC,P1.1
RRCA
MOVC,P1.0
MOVP:
MOVP1.4,C
MOVP1.5,C
MOVP1.6,C
MOVP1.7,C
MOVP1.3,C
MOVP1.2,C
MOVP1.1,C
MOVP1.0,C
延时函数;
DELAY:
MOV40H,#20
DELAY1:
MOV41H,#100
DELAY2:
MOV42H,#100
DJNZ42H,$
DJNZ41H,DELAY2
DJNZ40H,DELAY1
功能模块;
输入模块;
INPUT:
LCALLCONFIRM
LCALLCOMP1
LJMPM_START
CONFIRM:
MOV50H,#04H
MOV60H,#00H
MOVR0,#61H
LOOP1:
LCALLSCAN
MOV@R0,A
INCR0
INC60H
MOV6EH,R0
MOVR0,6EH
DJNZ50H,LOOP1
LOOP2:
CJNEA,#0DH,LOOP2
COMP1:
MOVA,61H
CJNEA,55H,NO0
MOVA,62H
CJNEA,56H,NO0
MOVA,63H
CJNEA,57H,NO0
MOVA,64H
CJNEA,58H,NO0
LCALLGREEN
LJMPTURN1
NO0:
CJNEA,51H,NO1
CJNEA,52H,NO1
CJNEA,53H,NO1
CJNEA,54H,NO1
NO1:
LCALLRED
INC4FH
MOVA,4FH
CJNEA,#03H,TURN1
MOV4FH,#00H
LCALLRING
TURN1:
修改模块;
MODIFY1:
LCALLCONFIRM
LCALLCOMP3
MODIFY2:
MOV6AH,61H
MOV6BH,62H
MOV6CH,63H
MOV6DH,64H
LCALLCOMP2
COMP2:
CJNEA,6AH,NO2
CJNEA,6BH,NO2
CJNEA,6CH,NO2
CJNEA,6DH,NO2
MOV51H,61H
MOV52H,62H
MOV53H,63H
MOV54H,64H
LJMPTURN2
NO2:
LJMPMODIFY2
TURN2:
COMP3:
CJNEA,55H,NO4
CJNEA,56H,NO4
CJNEA,57H,NO4
CJNEA,58H,NO4
LJMPTURN3
NO4:
CJNEA,51H,NO3
CJNEA,52H,NO3
CJNEA,53H,NO3
CJNEA,54H,NO3
NO3:
INC5AH
MOVA,5AH
CJNEA,#03H,TURN4
MOV5AH,#00H
TURN4:
TURN3:
绿灯模块;
GREEN:
CPLP3.5
红灯模块;
RED:
CPLP3.6
报警模块;
RING:
CPLP3.7
MOV4AH,#200
SND1:
MOV4BH,#200
SND2:
MOV4CH,#250
DJNZ4CH,$
DJNZ4BH,SND2
DJNZ4AH,SND1
CPLP3.7
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 交大 单片机 课程设计 电子 密码锁 设计 报告