用51单片机、8255、138、373等实现数码管显示按键数值的程序要点_第1页
用51单片机、8255、138、373等实现数码管显示按键数值的程序要点_第2页
用51单片机、8255、138、373等实现数码管显示按键数值的程序要点_第3页
用51单片机、8255、138、373等实现数码管显示按键数值的程序要点_第4页
用51单片机、8255、138、373等实现数码管显示按键数值的程序要点_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机大作业2013年10月28日随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。单片机具有体积小、 功能强、 应用面广等优点, 目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。 现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、 VCD 、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深

2、地融入我们每个人的生活之中。单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。课题要求:用 51 单片机、8255、138、 373 等实现数码管显示按键数值的程序各芯片资料:1.8255芯片资料如下用8255A可编程器件扩展并行接口8255:有三个八位的并行口: PA PR PG有三种工作方式:方式0,方式1,方式2。逻辑结构图:D7-DO 总线线冲RD WRA1A0 RESETfCS-读写控制cnB 口B组 控制C 口下1

3、PC3-PC0A 口.TA7-PA0A组 控制PC7-PC4PB7-PBO包含四个部分:三个并行数据输入输出端口 两个工作方式控制电路 一个读写逻辑控制电路 八位总线缓冲器.三个并行数据输入输出端口: A 口; B 口; C n一般,A 口,B 口作为数据输入输出端口,C 口作为控制/状态信息口,可以分为两个部分,分别与 A 口 和B 口配合使用,作为控制信息输出或状态信息输入。.工作方式控制电路工作方式控制电路有两个:A组控制和B组控制电路,A组控制用来控制A 口和C 口的上半部分PC7PC4;B组控制用来控制B 口和C 口的下半部分PC3PC0;两组控制电路具有一个控制命令寄存器,用来接收

4、来自CPU的数据(控制字),以决定芯片的工作方式,或对C 口按位进行清“ 0”或者置“1”。.总线缓冲器三态双向八位缓冲器,作为微处理器数据总线与8255之间的接 口,用来传送命令、数据及状态信息。.读写逻辑控制电路读写逻辑控制电路接受 CPU来的控制信号:读、写、地址及复位信息,根据控制信号的要求,将数据读出,送往 CPU, 或者将CPU来的信息写入端口。引脚说明:CS:片选信号,低电平有效,表示芯片被选中;RD:读操作,低电平有效,控制数据读出;WE:写操作,低电平有效,控制数据写入;A1, A0:地址线,端口选择信号,用来选择8255内部端口:A1 A0RD WE CS001000101

5、010读A 口到数据总线读B 口到数据总线0010 读C口到数据总线3 II 3 nma M 3 B H .ma “MI 3 1 M 3 I MMMlS,.II 1H A II 11 3 133 1 .zHB H IMI M 3 I3 M ; IM 3I , 1 , 1, :I 一 33 M“一 M 3 I MMMlfi 3 I0100写数据总线Ah01100写数据总线 匚曲1010011100写数据总线C 口写数据总线匚H制口XX XX 111010数据总线为高阻态非法操作11110无效RESET:复位信号,高电平有效,各端口被置成输入D7-D0:双向三态数据线;PA7- -PA0: A 口

6、输入输出线;PB7-PB0: B 口输入输出线;PC7PC0: C 口输入输出线;3.工作方式选择一一工作方式控制字8255有三种工作方式:方式 0,方式1,方式2。其中方式2只对A 口。8255的工作方式是由工作方式控制字决定,工作方式控制字是由CPU写入。8255方式控制字定义如下:D7D6D5D4D3 )2D1 D)0.B 组:端口 C (下半部)1 :输入,0:输出端口 B1 :输入,0:输出方式选择A组0:方式0, 1方式1C 口上半部1:输入,0:输出端口 A1:输入,0:输出方式选择00: 方式0,01:方式1 1 X :方式2D7=1 :命令控制字有效。PC7PC0当D7=0,

7、通过控制口对C 口进行位操作C口具有位操作功能,通过工作方式控制字可以将 中任意一位置1或清0D7D6 D5 D4 D)3D2 D)1D0D7=0对C 口操作,D6 D5 D4无效,D3 D2 D1 :位选择000PC0001PC1010PC2011PC3100PC4101PC5110PC61 1 1 PC7D0=0:清 0 ; 0=1:置 1 工作方式0:基本输入输出方式三个端口都可以设置成输入或输出方式: 具有两个八位端口:A 口和B 口 具有两个四位端口:PC0PC3, PC4PC7 任一端口都可设置为输入或输出 数据输出带锁存,输入时不锁存此时, 8255 可以工作在无条件传送;也可以

8、查询式传送, C 口作为联络信号 工作方式 1:选通式输入/ 输出方式有固定的选通信号,选通信号与数据一齐传送,由选通信号表示数据传送的状态:三个端口分为两组:A组和B组每组包括一个八位数据端口和一个四位的控制状态端口每个八位数据端口均可设置为输入或输出,输入输出均带锁存四位端口作为八位端口的控制/状态联络信号2.51芯片资料Vcc 40 电源端GND 20 接地端* 工作电压为5V,另有AT89LV51工作电压则是2.7- 6V,引脚功能一样。)| XTAL2.II -J |b XTAL12.外接晶体引脚-悬空外部振荡信号XIAL2XTAL1匚ND-L内部方式2,外部方式图2 2外接晶体引脚

9、XTAL1 19XTAL2 18XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1 ,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲 二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可 以在1MHz-24MHz内选择。电容取 30PF左右。* 型号同样为AT89C51的芯片,在其后面还有频率编 号,有12,16,20,24MHz可选。大家在购买和选用时要注意了。如AT89C51 24PC就是最高振荡频率为 24MHz,40P6封装的普通商用芯片。3.复位 RST 9在振荡器运行时,有两个机器周期(24个振荡周期)

10、以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后 P0- P3 口均置1引脚表 现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时, 芯片为ROM的00H处开始运行 程序。常用的复位电路如图 23所示。* 复位操作不会对内部 RAM有所影响。图23常用复位电路4.输入输出引脚(1) P0端口 P0.0-P0.7 P0是一个8位漏极开路型双向I/O端口,端口置1 (对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL对内部 Flash 程序存储器编程时,接收指令字节 ;校验程序时输出指令字节,要求外接上拉电阻。在访

11、问外部程序和外部数据存储器时, P0 口是分时转换的地址(低 8 位)/数据总线,访问期间内部的上拉电阻起作用。(2) P1 端口 P1.0 P1.7 P1 是一个带有内部上拉电阻的8 位双向 I/0 端口。输出时可驱动 4 个 TTL 。端口置 1 时,内部 上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收低8 位地址信息。(3) P2端口 P2.0P2.7 P2是一个带有内部上拉电阻的8 位双向 I/0 端口。输出时可驱动 4 个 TTL 。端口置 1 时,内部 上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收高 8 位地址和控制

12、信息。在访问外部程序和 16 位外部数据存储器时, P2 口送出高 8 位地址。 而在访问 8 位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3端口 P3.0P3.7 P2是一个带有内部上拉电阻的8 位双向 I/0 端口。输出时可驱动 4 个 TTL 。端口置 1 时,内部 上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请看表2 2.。*P1 3端口在做输入使用时,因内部有上接电阻, 被外部拉低的引脚会输出一定的电流。P3引脚兼用功能P3.0串行通讯输入(RXD )P3.1串行通讯输出(TXD )P

13、3.2外部中断0 ( INT0 )P3.3外部中断1 (INT1 )P3.4定时器0输入(T0)P3.5定时器1输入(T1)P3.6外部数据存储器写选通WRP3.7外部数据存储器写选通 RD表2-2 P3端口引脚兼用功能表呼! 一口气说了那么多,停一下吧。嗯,什么?什么叫上拉 电阻?上拉电阻简单来说就是把电平拉高,通常用 4.710K的 电阻接到Vcc电源,下拉电阻则是把电平拉低,电阻接到GND地线上。具体说明也不是这里要讨论的,接下来还是接着看其它 的引脚功能吧。5.其它的控制或复用引脚(1) ALE/PROG 30访问外部存储器时,ALE (地址锁存 允许)的输出用于锁存地址的低位字节。

14、即使不访问外部存储器, ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的 1/6)。在访问外部数据存储器时,出现一个 ALE脉冲。对Flash存储器编程时,这个引脚用于输入编程脉冲PROG(2) PSEN 29该引是外部程序存储器的选通信号输出 端。当AT89C51由外部程序存储器取指令或常数时,每个机器 周期输出2个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。(3) EA/Vpp 31外部访问允许端。当该引脚访问外部程 序存储器时,应输入低电平。要使 AT89C51只访问外部程序存 储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。对 Flash存储器编程

15、时,用于施加Vpp编程电压。Vpp电压有两种, 类似芯片最大频率值要根据附加的编号或芯片内的特征字决定。 具体如表23所列。Vpp =12VVpp = 5V印刷在芯片面上的型号AT89C51 xxxxYYWWAT89LV51xxxx YYWWAT89C51xxxx-5 YYWWAT89LV51xxxx-5 YYWW片内特征字030H=1EH030H=1EH030H=1EH030H=1EH031H=51H031H=61H031H=51H031H=61H032H=FFH032H=FFH032H=05H032H=05H表2-3 Vpp与芯片型号和片内特征字的关系看到这您对AT89C51引脚的功能应该

16、有了一定的了解了,引脚在编程和校验时的时序我们在这里就不做详细的探讨, 通常 情况下我们也没有必要去撑握它, 除非你想自己开发编程器。 下 来的课程我们要开始以一些简单的实例来讲述 C程序的语法和 编写方法技巧,中间穿插相关的硬件知识如串口, 中断的用法等等。成 HEX 文件和最小化系统在开始 C 语言的主要内容时,我们先来看看如何用 KEIL uVISION2 来编译生成用于烧写芯片的 HEX 文件。 HEX 文件格式是Intel 公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用 16进制数字表示, 常用来保存单片机或其他处理器的目标程序代码。 它保存物理程序存储区中的目标代码映

17、象。 一般的编程器都支持这种格式。 我们先来打开第一课做的第一项目,打开它的所在目录,找到 test.Uv2的文件就可以打开先前的项目了。然后右击图 3 1 中的 1 项目文件夹,弹出项目功能菜单,选 Options for TargetTargetl,弹出项目选项设置窗口, 同样先选中项目文件夹图标, 这时在 Project菜单中也有一样的菜单可选。打开项目选项窗口,转到 Output选项页图 3 2 所示,图中 1 是选择编译输出的路径, 2 是设置编译输出生成的文件名, 3 则是决定是否要创建HEX 文件,选中它就可以输出 HEX 文件到指定的路径中。选好了?好,我们再将它重新编译一次,

18、很快在编译信息窗口中就显示 HEX 文件创建到指定的路径中了,如图3 3 。这样我们就可用自己的编程器所附带的软件去读取并烧到芯片了, 再用实验板看结果, 至于编程器或仿真器品种繁多具体方法就看它的说明书了, 这里也不做讨论。3.74HC138芯片资料如下:74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基 TTL (LSTTL)系歹I。74HC138译码器可接受3位二进制加权地址输入(A0, A1和A3),并当使 能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端: 两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,

19、 否则74HC138将保持所有输出为高。利用这种复合使能特性,仅需4片74HC138 芯片和1个反相器,即可轻松实现并行扩展,组合成为一个 1-32 (5线到32线) 译码器。任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为 选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必 须保持绑定在各自合适的高有效或低有效状74HC138集成译码器功能表带人输出E2E1AhAiAoYOY1Y2Y3Y4Y5Y6Y7XHXXXXHHHHHHHHXXHXXXHHHHHHHHLXXXXXHHHHHHHHHLLLLLLHHHHHHHHLLLLHHLHHHHHHHLLLHLHH

20、LHHHHHHLLLHHHHHLHHHHHLLHLLHHHHLHHHHLLHLHHHHHHLHHHLLHHLHHHHHHLHHLLHHHHHHHHHHL里平L-低电平X-任意电平E%亘、亘 为推人使能端 A?. A,& 为二进制数据输入端Y0-Y7为8个输出信号字母上面的“一“铝说明该橘人或输出是低电平有效=昼苣三皂二-454133制篦解必期如m头hbocow;工作方式:工程& -也:工修方或,翔雄温.常色;*tt-FW= OjcSI注:电路整体揽图RESETCS01234 5 67 DDDDDDDRDWRA0A1Ub:A7406WO0 12 3 4 5 6 7 AAAAAAAA pppppp

21、pp0 12 3 B日B日 p p p p4 5 6 7 B B B日 p p p p01234567 cccccccc p p p p p p p p4LD13LED22母3年diL通e15*flq1SLED 19LED如 LED 21 LED 22LED 1 23LED24LED25LED15 J100注:PC口和PB 口的定义注:引脚定义JL(14)和JH(14);程序部分:/*名称:8255相关程序编写:刘国庆日期:2013.10.28内容:用矩阵键盘在数码管上显示*/ #include#include#include#define PA XBYTE0x4000#define PB X

22、BYTE0x4001#define PC XBYTE0x4002#define PD XBYTE0x4003#define uchar unsigned charuchar temp;/*uS延时函数,含有输入参数uchar t,无返回值uchar 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M ,大致延时长度如下 T=tx2+5 uS*/void DelayUs2x(uchar t)while(-t);/*mS延时函数,含有输入参数uchar t,无返回值uchar 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M ,稍有误差*/void DelayMs(u

23、char t)while(t-)/大致延时1mSDelayUs2x(245);DelayUs2x(245);/键盘扫描函数,经测试不得直接返回码值给PB 口必须在该函数内进行赋值,否则无法锁定uchar KeyScan(void) PC=0XEF; /选中第一列 if(PC!=0xEF) DelayMs(10); /延时去掉抖动temp=PC ;if(temp!=0xEF) / 对第一列按键逐行扫描switch(temp)case 0xee:returncase 0xed:returncase 0xeb:returncase 0xe7:returnPB =0x8e;break;PB =0x83

24、;break;PB =0xf8;break;PB =0xb0;break;default:return 0xff;while(PC!=temp);/等按键弹起PC=0xDF; /选中第二列if(PC!=0xDF)DelayMs(10); /延时去掉抖动 temp=PC;if(temp!=0xDF)/对第二列按键逐行扫描switch(temp)PB =0x86;break;PB =0x88;break;PB =0x82;break;PB =0xa4;break;case 0xde:return case 0xdd:return case 0xdb:return case 0xd7:return

25、default:return 0xff; while(PC!=temp); /等按键弹起 PC=0xBF;/选中第三列if(PC!=0xBF)DelayMs(10); /延时去掉抖动temp=PC;if(temp!=0xBF) /对第三列按键逐行扫描 switch(temp) case 0xbe:return PB =0xa1;break;case 0xbd:return PB =0x90;break;case 0xbb:return PB =0x92;break;case 0xb7:return PB =0xf9;break; default:return PB =0xff;while(PC!=temp);/等按键弹起PC=0x7F; /选中第四列if(PC!=0x7F)DelayMs(10); /延时去掉抖动temp=PC;if(temp!=0x7F)switch(temp) /对第四列按键逐行扫描case 0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论