51单片机键盘数码管显示带程序说课材料.docx
《51单片机键盘数码管显示带程序说课材料.docx》由会员分享,可在线阅读,更多相关《51单片机键盘数码管显示带程序说课材料.docx(17页珍藏版)》请在冰豆网上搜索。
51单片机键盘数码管显示带程序说课材料
期
中
大
作
业
学院:
物理与电子信息工程学院
课题:
【利用8255和51单片机实现数码管显示按键数值的程序】
要求:
【4*4矩阵键盘,按0到15,数码管上分别显示0~9,A~F】
芯片资料:
8255:
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
8255特性:
1.一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。
2.具有24个可编程设置的I/O口,即3组8位的I/O口,分别为PA口、PB口和PC口。
它们又可分为两组12位的I/O口:
A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。
A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O三种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.
引脚说明
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。
RD:
读信号线,当这个输入引脚为低电平时,即CS=0且RD=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即CS=0且WR=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
A1,A0:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。
当A1=0,A0=0时,PA口被选择;
当A1=0,A0=1时,PB口被选择;
当A1=1,A0=0时,PC口被选择;
当A1=1.A0=1时,控制寄存器被选择。
74ls373芯片资料:
74ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片.本文将介绍74ls373的工作原理,引脚图(管脚图),内结构图、主要参数及在单片机系统中的典型应用电路.
L——低电平;
H——高电平;
X——不定态;
Q0——建立稳态前Q的电平;
G——输入端,与8031ALE连高电平:
畅通无阻低电平:
关门锁存。
图中OE——使能端,接地。
当G=“1”时,74LS373输出端1Q—8Q与输入端1D—8D相同;
当G为下降沿时,将输入数据锁存。
E
G
功 能
0
0
直通Qi=Di
0
1
保持(Qi保持不变)
1
X
输出高阻
774ls373在单片机系统中的应用电路图:
当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,输出Q0~Q7状态与输入端D1~D7状态相同;当C发生负的跳变时,输入端D0~D7数据锁入Q0~Q7。
51单片机的ALE信号可以直接与74LS373的C连接。
在MCS-51单片机系统中,常采用74LS373作为地址锁存器使用,其连接方法如上图所示。
其中输入端1D~8D接至单片机的P0口,输出端提供的是低8位地址,G端接至单片机的地址锁存允许信号ALE。
输出允许端OE接地,表示输出三态门一直打开。
1D~8D为8个输入端。
1Q~8Q为8个输出端。
G是数据锁存控制端;当G=1时,锁存器输出端同输入端;当G由“1”变为“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:
无论从逻辑图还是功能表我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。
如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。
80C51单片机引脚图及引脚功能介绍:
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
⒈电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
⒉时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
⒊控制线:
控制线共有4根,
⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
拿到一块单片机,想要使用它,首先必须要知道怎样去连线,我们用的一块89C51的芯片为例,我们就看一下如何给它连线。
1、电源:
这当然是必不可少的了。
单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。
2、振蒎电路:
单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。
只要买来晶体震荡器,电容,连上就能了,按图1接上即可。
3、复位管脚:
按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。
4、EA管脚:
EA管脚接到正电源端。
至此,一个单片机就接好,通上电,单片机就开始工作了。
【实验电路图】
【单片机源程序】
#include//51单片机头文件
#include//该可使用其中定义的宏来访问绝对地址
#include
#defineucharunsignedchar//宏的定义变量类型uchar代替unsignedchar
#defineuintunsignedint//宏的定义变量类型uint代替unsignedint
#definePA8255XBYTE[0x4000]//8255的A口地址
#definePB8255XBYTE[0x4001]//8255的B口地址
#definePC8255XBYTE[0x4002]//8255的C口地址
#definePD8255XBYTE[0x4003]//8255的控制口地址
uchartemp,key;//定义变量temp,key为按键键值,无实际意义
voiddelay(uintz)//延迟程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidini_8255()//初始化8255函数
{
PD8255=0x81;
}
voiddisplay()//显示函数,不可删除,删除出现连闪情况
{
PB8255=0xff;//PB8255全部置1,数码管清0
PA8255=0x00;//PA8255全部置0,对数码管进行位选,选中六个数码管
delay(100);//延迟
}
voidkeyscan(void)//按键扫描程序,让数码管显示按键数值
{
PC8255=0xef;//PC8255选中JL1列,JL1置0,其他置1
if(temp!
=0xef)
{
delay(10);//延迟防抖
temp=PC8255;
switch(temp)
{
case0xee:
key=0x0f;PB8255=0x8e;//第15按键键值,数码管显示‘F’
break;
case0xed:
key=0x0b;PB8255=0x83;//第11按键键值,数码管显示‘B’
break;
case0xeb:
key=0x07;PB8255=0xf8;//第7按键键值,数码管显示‘7’
break;
case0xe7:
key=0x03;PB8255=0xb0;//第3按键键值,数码管显示‘3’
break;
}
while(temp!
=PC8255);
}
PC8255=0xdf;
if(temp!
=0xdf)//PC8255选中JL2列,JL2置0,其他置1
{
delay(10);
temp=PC8255;
switch(temp)
{
case0xde:
key=0x0e;PB8255=0x86;//第14按键键值,数码管显示‘E’
break;
case0xdd:
key=0x0a;PB8255=0x88;//第10按键键值,数码管显示‘A’
break;
case0xdb:
key=0x06;PB8255=0x82;//第6按键键值,数码管显示‘6’
break;
case0xd7:
key=0x02;PB8255=0xa4;//第2按键键值,数码管显示‘2’
break;
}
while(temp!
=PC8255);
}
PC8255=0xbf;//PC8255选中JL3列,JL3置0,其他置1
if(temp!
=0xbf)
{
delay(10);
temp=PC8255;
switch(temp)
{
case0xbe:
key=0x0c;PB8255=0xa1;//第13按键键值,数码管显示‘C’
break;
case0xbd:
key=0x09;PB8255=0x90;//第9按键键值,数码管显示‘9’
break;
case0xbb:
key=0x05;PB8255=0x92;//第5按键键值,数码管显示‘5’
break;
case0xb7:
key=0x01;PB8255=0xf9;//第1按键键值,数码管显示‘1’
break;
}
while(temp!
=PC8255);
}
PC8255=0x7f;//PC8255选中JL4列,JL4置0,其他置1
if(temp!
=0x7f)
{
delay(10);
temp=PC8255;
switch(temp)
{
case0x7e:
key=0x0b;PB8255=0xc6;//第12按键键值,数码管显示‘B’
break;
case0x7d:
key=0x08;PB8255=0x80;//第8按键键值,数码管显示‘8’
break;
case0x7b:
key=0x04;PB8255=0x99;//第4按键键值,数码管显示‘4’
break;
case0x77:
key=0x00;PB8255=0xc0;//第0按键键值,数码管显示‘0’
break;
}
while(temp!
=PC8255);
(1)位置的优越性}
}
voidmain()//主函数
{
ini_8255();//8255初始化子函数
while
(1)//不断循环扫描矩阵键盘
{
2003年,上海市总人口达到1464万人,上海是全国第一个出现人口负增长的地区。
temp!
=PC8255;
keyscan();
}
}
大学生购买力有限,即决定了要求商品能价廉物美,但更注重的还是在购买过程中对精神文化爱好的追求,满足心理需求。
【实验结果】
二、资料网址:
PS:
消费者分析
我们大学生没有固定的经济来源,但我们也不乏缺少潮流时尚的理念,没有哪个女生是不喜欢琳琅满目的小饰品,珠光宝气、穿金戴银便是时尚的时代早已被推出轨道,简洁、个性化的饰品成为现代时尚女性的钟爱。
因此饰品这一行总是吸引很多投资者的目光。
然而我们女生更注重的是感性消费,我们的消费欲望往往建立在潮流、时尚和产品的新颖性上,所以要想在饰品行业有立足之地,又尚未具备雄厚的资金条件的话,就有必要与传统首饰区别开来,自制饰品就是近一两年来沿海城市最新流行的一种。
参考文献与网址:
【心得体会】
通过这次实验,我对51单片机有了深刻理解,对书本上理论知识的运用,发现要学好和认识一种芯片,最快的就是去运用它,哪怕是做简单的仿真。
一直以来以为对51单片机算是有一定的基础,不过真正去做一样东西的话,还是有难度的。
在学习的路上,我们应该多问,多实践,自己不懂,但身边肯定有懂的人存在,只有这样才能不断的进步。
二、大学生DIY手工艺制品消费分析【实验总结】
(二)DIY手工艺品的“热卖化”通过这次实验,我也来总结下实践中的几个问题和看法:
秘诀:
好市口+个性经营这次实验老师给的是.DSN文件,所以必须用Protues软件打开。
从而间接的了解和学习到基本Protues仿真,和Multisim仿真做了下对比发现:
Protues仿真优势在于MCU芯片的仿真,也就是可编程仿真,而Multisim仿真主要是数字芯片的仿真。
这次实验开始以为74ls373和74ls138对源程序有一定的要求,结果实际操作,只要处理好8255A各个端口的问题就好了。
这次实验开始一直纠结JH、JL和PC8255端口的关系,哪个为高位,哪个低位,行列的顺序是倒着排列的,因此,学到不管如何,使JH1和JL1为低电平时,就选中这个按键,至于实际显示什么可以在程序中注释,不必要纠结怎么排序。
这次实验中,子函数voiddisplay(),不能放在主函数中,实践说明,如果放到主函数中,会使数码管上的按键值连续闪烁,而不是保持电平不变。
通过这次实验也学会,以后要在程序后面加上注释,方便自己以后进行修改,和完全理解掌握该程序,从而理解硬件上程序的运行。
通过这次实验也学会,交流会使人进步,只有更好的沟通交流和利用网络资源,我们的学习才能取得更大的进步。