51单片机键盘数码管显示带程序Word文件下载.docx
- 文档编号:18526571
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:15
- 大小:353.39KB
51单片机键盘数码管显示带程序Word文件下载.docx
《51单片机键盘数码管显示带程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《51单片机键盘数码管显示带程序Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
Do〜D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入
输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PAo〜PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PBo〜P8:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PCO〜PG:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位
的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每
个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作
为控制信号输出或状态信号输入端口。
A1,A0:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。
当A1=0,Ao=O时,PA口被选择;
当A1=0,Ao=1时,PB口被选择;
当A1=1,Ao=O时,PC口被选择;
当A1=1.Ao=1时,控制寄存器被选择。
74ls373芯片资料:
74ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D
触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片.本
文将介绍74ls373的工作原理,引脚图(管脚图),内结构图、主要参数及在单片机系统中的典型应用电路.
774ls373在单片机系统中的应用电路图:
当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,输出Q0~Q7状态与输入端D1~D7状态相同;
当C发生负的跳变时,输入端
D0~D7数据锁入Q0~Q751单片机的ALE信号可以直接与74LS373的C连接。
在
MCS-51单片机系统中,常采用74LS373作为地址锁存器使用,其连接方法如上图所示。
其中输入端1D~8D接至单片机的P0口,输出端提供的是低8位地址,G端接至单片机的地址锁存允许信号ALE输出允许端OE接地,表示输出三态门一直打开。
1D~8D为8个输入端。
1Q~8Q为8个输出端。
G是数据锁存控制端;
当G=I时,锁存器输出端同输入端;
当G由“T变为“0”时,数据输入锁存器中。
OE为输出允许端;
当OE=“0”时,三态门打开;
当OE=“1”时,三态门关闭,输出呈高阻状态。
(1).1脚是输出使能(OE),是低电平有效,当1脚是高电平时,不管输入3、4、7、
8、13、14、17、18如何,也不管11脚(锁存控制端,G)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态);
(2).当1脚是低电平时,只要11脚(锁存控制端,G)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态.
锁存端LE由高变低时,输出端8位信息被锁存,直到LE端再次有效。
当三态门使能信号OE为低电平时,三态门导通,允许Q0~Q7俞出,OE为高电平时,输出悬空。
74LS138:
161S1-≤L1312111OΘ
74HS13S
1
≡3
4
r6
T
G
I
U对D
角事
Ln
-TE殂
K
⅞⅛⅛
出
刁
匕
巧
耳
≡r
O
亠矿
Jr
X
L
i
口
II
IZl
无论从逻辑图还是功能表我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。
如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。
80C51单片机引脚图及引脚功能介绍:
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚
1.电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
2.时钟:
XTALIXTAL2-晶体振荡电路反相输入端和输出端。
3.控制线:
控制线共有4根,⑴ALE/PROG地址锁存允许/片内EPRO编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PRoG功能:
片内有EPRo的芯片,在EPRo编程期间,此引脚输入编程脉冲。
⑵PSEN:
夕卜ROM读选通信号。
⑶RST/VPD:
复位Z备用电源。
1RST(ReSet)功能:
复位信号输入端。
2VPD功能:
在VCC掉电情况下,接备用电源。
⑷EAZVpp:
内外ROM选择Z片内EPRO编程电源。
1EA功能:
内外ROM选择端。
2VPP功能:
片内有EPRO的芯片,在EPRO编程期间,施加编程电源VPPO
4.IZO线
80C51共有4个8位并行IZO端口:
P0P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
拿到一块单片机,想要使用它,首先必须要知道怎样去连线,我们用的一块89C51的芯片为例,我们就看一下如何给它连线。
1、电源:
这当然是必不可少的了。
单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。
2、振蒎电路:
单片机是一种时序电路,必须供给脉冲信号才能正常工作,
在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。
只要买来
晶体震荡器,电容,连上就能了,按图1接上即可。
3、复位管脚:
按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。
4、EA管脚:
EA管脚接到正电源端。
至此,一个单片机就接好,通上电,单片机就开始工作了。
【实验电路图】
IlS
1»
Nll
4T⅛I
⅛TAU-
RtT
n>
iλ⅛E√∏]FPl.7⅛C□⅛JilAIl⅛i√⅛UM∣⅛lX⅛n∙‰-⅛MPDBJgPPTJ⅛0P
F3Ei1NF31∣,A3^3.U,ND
UI
⅛Ξd±
÷
-÷
-
PM
P1.1
FaJ
PlJ
P1.4
PiLl5PIIIPi.?
P14∕AL≥Pi.-5⅛1
Fl.4/MM-
Pj."
aH
P3J^DPλiΛXDP].2∣WP].1ΛRΠ
P3.WPd∙便阿丽DHPl?
IIHT
D3
inIn
IiE蘇
■T
A
TD-
H
Ti
C
Yi⅝s
T4
EI
TS
Ei
T?
E)
IrT
⅛⅛⅛⅛
AJ
REEET
∆□tt⅛:
MfHWJ工怅方式:
洽出
H口⅛⅛:
4(Hlt;
TftΛ式:
%ti
C口⅛⅛:
4002;
T作方式:
高住輸幼*i⅛StλD口地址:
4003*初始化代码;
0x01
IB
j⅛
Lal
IT
「列
⅛∣
Jn
6
ry∖
■
Rw>
»
.*-∣,EΛf⅛
JHa
ITL
「”
J
I11
"
rrEAn
M-
I-^=
d
e
f
VCE
【单片机源程序】
#inelude<
reg51.h>
#inClUdeVabSaCc.h>
#includeVintrins.h>
#defineUCharUnSignedChar
#defineUintUnSignedint
II51单片机头文件
II该可使用其中定义的宏来访问绝对地址
II宏的定义变量类型UChar代替UnSignedChar
II宏的定义变量类型Uint代替UnSignedint
#definePA8255
XBYTE[0x4000]
II8255的A口地址
#definePB8255
XBYTE[0x4001]
II
8255的B口地址
#definePC8255
XBYTE[0x4002]
8255的C口地址
#definePD8255
XBYTE[0x4003]
8255的控制口地址
UChartemp,key;
II定义变量
temp,
key为按键键值,无实际意义
voiddelay(UintZ)
{
Uintx,y;
II延迟程序
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
SWitCh(temp)
CaSe0xee:
key=0x0f;
PB8255=break;
:
0x8e;
//第15按键键值,数码管显示’
F'
CaSe0xed:
key=0x0b;
PB8255:
=0x83;
//第11按键键值,数码管显示’
B'
break;
CaSe0xeb:
key=0x07;
=0xf8;
〃第7按键键值,数码管显示’
7'
CaSe0xe7:
key=0x03;
=0xb0;
//第3按键键值,数码管显示’
3'
}
while(temp!
=PC8255);
PC8255=Oxdf;
if(temp!
=0xdf)//PC8255选中JL2列,JL2置0,其他置1
delay(10);
temp=PC8255;
CaSe0xde:
key=0x0e;
=0x86;
//第14按键键值,数码管显示’
E'
CaSe0xdd:
key=0x0a;
PB8255=
=0x88;
//第10按键键值,数码管显示’
A'
CaSe0xdb:
key=0x06;
=0x82;
//第6按键键值,数码管显示’
6'
CaSe0xd7:
key=0x02;
=0xa4;
//第2按键键值,数码管显示’
2'
PC8255=0xbf;
//PC8255选中JL3列,JL3置0,其他置1
=0xbf)
CaSe0xbe:
key=0x0c;
PB8255=0xa1;
//第13按键键值,数码管显示’C'
CaSe0xbd:
key=0x09;
=0x90;
//第9按键键值,
数码管显示’
9'
CaSe0xbb:
key=0x05;
=0x92;
//第5按键键值,
5'
CaSe0xb7:
key=0x01;
=0xf9;
//第1按键键值,
1'
PC8255=0x7f;
//PC8255选中JL4列,JL4置0,其他置1
=0x7f)
SWitCh(temp){
CaSe0x7e:
=0xc6;
//第12按键键值,数码管显示’
CaSe0x7d:
key=0x08;
=0x80;
//第8按键键值,数码管显示
,8'
CaSe0x7b:
key=0x04;
=0x99;
//第4按键键值,数码管显示
,4'
CaSe0x77:
key=0x00;
=0xc0;
//第0按键键值,数码管显示
,0'
keyscan();
【实验结果】
AX葢畫乂二^弈孟一-露CH-”WHSK器l.'
aF“
≡≡≡磁≡≡≡
U2
A*ΛL≡
≡b⅛⅛
PT-Γ
Π-I⅛SA⅛-BrEREpr>
f.E
U4
4B3~i‰
B日UQ□口口口
DΠ*π≡Egg黑
g=s爱瓷M尊第芋≡≡肾∙ΞLL*B=g
IliJ
i⅛.ij*⅛F13f∏TPIJiFirr円IMMnsr・
Ei■眄
Yt*i'
v4旧细Tll
響"
≡
氐霊卓
⅛≠⅛..≡
【心得体会】
通过这次实验,我对51单片机有了深刻理解,对书本上理论知识的运用,发现要学好和认识一种芯片,最快的就是去运用它,哪怕是做简单的仿真。
一直以来以为对51单片机算是有一定的基础,不过真正去做一样东西的话,还是有难度的。
在学习的路上,我们应该多问,多实践,自己不懂,但身边肯定有懂的人存在,只有这样才能不断的进步。
【实验总结】
通过这次实验,我也来总结下实践中的几个问题和看法:
这次实验老师给的是.DSN文件,所以必须用ProtueS软件打开。
从而间接的了解和学习到基本PrOtUeS仿真,和MUltiSim仿真做了下对比发现:
PrOtUeS仿真优势在于MCI芯片的仿真,也就是可编程仿真,而MUItiSim仿真主要是数字芯片的仿真。
这次实验开始以为74ls373和74ls138对源程序有一定的要求,结果实际操作,只要处理好8255A各个端口的问题就好了。
这次实验开始一直纠结JHJL和PC8255端口的关系,哪个为高位,哪个低位,行列的顺序是倒着排列的,因此,学到不管如何,使JH1和JL1为低电平时,就选中这个按键,至于实际显示什么可以在程序中注释,不必要纠结怎么排序。
这次实验中,子函数Voiddisplay(),不能放在主函数中,实践说明,如果放到主函数中,会使数码管上的按键值连续闪烁,而不是保持电平不变。
通过这次实验也学会,以后要在程序后面加上注释,方便自己以后进行修改,和完全理解掌握该程序,从而理解硬件上程序的运行
通过这次实验也学会,交流会使人进步,只有更好的沟通交流和利用网络资源,我们的学习才能取得更大的进步。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 键盘 数码管 显示 程序