单片机实训报告键盘和数码管显示WORD档.docx
《单片机实训报告键盘和数码管显示WORD档.docx》由会员分享,可在线阅读,更多相关《单片机实训报告键盘和数码管显示WORD档.docx(7页珍藏版)》请在冰豆网上搜索。
![单片机实训报告键盘和数码管显示WORD档.docx](https://file1.bdocx.com/fileroot1/2023-2/7/8a07ea4c-4f12-4505-887d-6805127fcb4d/8a07ea4c-4f12-4505-887d-6805127fcb4d1.gif)
单片机实训报告键盘和数码管显示WORD档
单片机实训报告
(一)
班级:
测控901
学号:
姓名
实验名称:
键盘和数码管显示
实验目的:
熟悉掌握ZLG7289的功能和特性,ZLG7289芯片各引脚名称及功能和ZLG7289与微控制器的接口,ZLG7289的SPI接口和控制指令。
同时进一步熟悉掌握keil软件的操作和编程。
实验原理:
ZLG7289是一款数码显示驱动和键盘扫描管理的芯片。
主要有如下的特性:
1.直接驱动8位共阴式数码管或64只独立的LED;
2.管理多达64只按键,自动消除抖动;
3.段电流可达15mA以上,位电流可达100mA;
4.具有左移、右移、闪烁、消隐、段点亮等多种功能;
5.与微控制器之间采用三线SPI总线接口,占用I/O资源少。
电路主要由芯片ZLG7289、8位共阴极数码管、64键的键盘矩阵以及单片机构成。
ZLG7289的控制电路图:
电路的工作原理:
当ZLG7289接收到单片机发出的指令(包括纯指令)后,经过读取、分析和处理,将会在数码管上显示相对应的操作指令。
当ZLG7289检测到有效的按键时,KEY脚将从高电平变为低电平,并一直保持到按键结束。
在此期间,如果ZLG7289接收到“读键盘数据指令”,则输出当前按键的键盘代码。
ZLG7289芯片各引脚名称及功能:
引脚
名称
说明
1、2
RTCC、Vcc
接电源
3、5
NC
悬空
4
Vss
接地
6
/CS
片选输入端,低电平时,可向其发指令或读键盘。
7
CLK
同步时钟输入端,发送或读数据时,上升沿数据有效。
8
DIO
串行数据输入/输出端。
9
/INT
按键有效输出端,检测到有效按键时,输出低电平。
10-16
SG/KR0-SA/KR6
段G-段A驱动输出/键盘行信号0-6。
17
DP/KR7
小数点驱动输出/键盘行信号7。
18-25
DIG0/KC0-DIG7/KC7
数码管位选信号0-7/键盘列信号0-7。
26
OSC2
晶振输出信号。
26
OSC1
晶振输入信号。
28
/RST
复位信号,低电平有效。
Zlg7289与微控制器的接口
ZLG7289使用SPI串行总线与微控制器接口。
SPI接口
SPI串行总线是Motorola公司推出的一种同步串行接口。
通常它需要四条线,就可与微控制器之间实现全双工的同步串行通讯。
SPI串行总线主要有如下的特性:
1.采用主从模式(MasterSlave)架构,支持多Slave模式,一般只支持单Master,Master控制时钟。
2.采用四线,实现全双工通信。
图1SPI接口连线示意图
SPI的数据传输时序模式
SPI接口定义了四种数据传输的时序模式。
SPI总线工作于那种时序模式下是由CPOL控制位和CPHA控制位决定的。
它们分别表示时钟极性选择和时钟相位选择。
CPOL控制位决定了设备激活后,而没有进行数据传输时,SCLK的空闲(Idle)电平是高电平还是低电平。
CPHA控制位决定设备是在时钟信号的第一个跳变沿采样数据还是在第二个跳变沿采样数据。
图2SPI的四种数据传输时序模式示意图
ZLG7289的SPI接口:
ZLG7289与微控制器的接口采用3线制的SPI串行总线。
三条分别是/CS、CLK和DIO。
其中DIO信号是双向的,在与微控制器相接时,要接到控制器的双向I/O上。
操作ZLG7289的SPI接口,主要有三种时序。
分别是单字节指令、带数据指令和读数据指令。
如下所示:
图3单字节指令时序图
注:
在图3中,
T1是/CS信号的建立时间,大约需要50μs。
T2是时钟SCLK信号的高电平持续时间,大约是8μs。
T3是时钟SCLK信号的低电平持续时间,大约是8μs。
图4带数据指令时序图
图5读数据指令时序图
注:
图4中,
T5命令字与输出数据之间的时间间隔,大约25μs
T6输出数据建立时间,大约8μs。
T7是输出数据时SCLK高电平持续时间,大约8μs。
T8是DIO信号从输出状态切换到输入状态的时间,大约是5μs。
实验内容:
作业1:
测试ZLG7289的功能,编写一段程序,使8位LED数码管从高位到低位分别显示8、7、6、5、4、3、2、1,闪烁后并消隐。
然后对这8位数字进行左移或者右移。
程序流程图如下图所示:
作业2:
列出C51与ANSIC之间的主要差别:
不同系列的嵌入式系统的C编译器,根据它所对应的不同芯片系列有其各自的特点,在这里,以KEIL公司的针对51系列的KEILC51编译器为例,简要说明它与ANSI-C的主要区别,其它的编译系统与ANSI-C的差别,可具体参照指定编译系统手册,找出它们的不同之处。
清楚嵌入式系统的C编译器与标准ANSI-C的区别是用C编译器系统进行嵌入式系统开发的前提条件。
不同的嵌入式C编译系统之所以与ANSI-C有所不同,主要是由于它们所针对的硬件系统有其各自不同的硬件特点,对国内开发人员熟悉的51系列单片机,有着最为丰富的编译系统,其中最为出色的当属KEIL(也就是大家熟知的FRANKLING,但FRANKLING只相当于KEIL的早期产品,它是KEIL公司在美国销售时曾使用的一个品牌)。
从头文件来说,51系列有不同的厂家,不同的系列产品,如仅ATMEL公司就有大家熟悉的89c2051、89c51、89c52以及大家不熟悉的89s8252等系列产品。
它们都是基于51系列的芯片,唯一不同之处在于内部资源如定时器、中断、I/O等数量以及功能的不同,为了实现这些功能,只需将相应的功能寄存器的头文件加载在程序中就可实现它们所指定的不同功能。
因此,KEILC51系列头文件集中体现了各系列芯片的不同功能。
从数据类型来说,由于8051系列器件包含位操作空间和丰富的位操作指令,直接嵌入式C与ANSI-C相比,比ANSI-C多一种位类型,使得它能如同汇编一样,灵活的进行位指令操作。
从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。
与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。
从数据运算操作和程序控制语句以及函数的使用上来讲,它们几乎没有什么明显的不同,只是在函数的使用上,由于嵌入式系统的资源有限,它的编译系统不允许太多的程序嵌套,C语言的丰富的库函数对程序开发提供了很大的帮助,但它的库函数和ANSI-C也有一些不同之处,从编译相关的不同来说,由于51系列是8位机,扩展16位字符不被C51所支持,其次,ANSI-C所具备的递归特性不被C51所支持,在C51中,要使用递归特性,必须用REENTRANT进行申明才能使用。
KEILC51与标准ANSI-C在库函数,由于部分库函数不适合嵌入式处理系统,因此被排除在外,如字符屏幕和图形函数,也有一些库函数继续使用,但这些库函数是厂家针对硬件特点相应开发的,它们与ANSI-C的构成及用法都有很大不同,如printf和scanf。
在ANSI-C中这两个函数通常用于屏幕打和,接收字符,而在KEILC51中,它们则主要用于串行数据的收发。