单片机程序设计实践教程 七段数码管和44键盘控制.pptxVIP

  • 8
  • 0
  • 约4.24千字
  • 约 22页
  • 2019-12-28 发布于上海
  • 举报

单片机程序设计实践教程 七段数码管和44键盘控制.pptx

9.0 项目演示效果图XP_9_01步骤1-打开电源后直接写显存功能启动图XP_9_02 步骤2-测试下载数据功能启动图XP_9_03 步骤3-测试不同扫描位数功能启动图XP_9_04 步骤4-测试键盘功能 9.1 项目目标设计掌握ZLG7290键盘与显示控制芯片的控制和使用方法;结合硬件原理图理解例程中各个函数的使用方法;初步掌握I2C总线的原理和软件实现方法;初步了解外部中断1的使用方法;在达到以上四点目标之后,根据本章“项目扩展任务”中提出的问题,以组或个人为单位,在规定时间里完成项目任务。9.2 项目任务 图9-1 ZLG7290键盘与显示控制实验的电路原理图 本项目的任务是在开发板上完成ZLG7290芯片各个功能的演示,该芯片的功能包括测试直接写显存、下载数据、不同扫描位数、闪烁功能、段寻址功能及键盘功能。图9-1所示为基于ZLG7290键盘与显示控制芯片的电路原理图,这部分电路的设计 参照了教材中的参考文献【13】、【14】和【15】,例程的设计基本上源自参考文献【16】,只是为了适用于PMY单片机开发板,对一些端口进行了重新定义。 由于后续项目中的按键和七段LED显示控制都是以本次项目为基础的,因此希望读者提前阅读上文提及的4个参考文献,理解文献【16】中各个函数的使用方法,为顺利完成后续项目做好前期准备。9.3 系统板上硬件连线 ZLG7290键盘与显示控制系统板硬件连线图如图9-2所示。图9-2 ZLG7290键盘与显示控制系统板硬件连线图9.4 程序流程图 ZLG7290键盘与显示控制C语言程序流程图如图9-3所示。图9-3 ZLG7290键盘与显示控制C语言程序流程图9.5 C语言源程序(略)9.6系统构成和程序分析9.6.1ZLG7290接口键盘及LED驱动管理芯片 简介 PMY单片机开发板的8位七段LED数码管显示和4×4键盘的控制由ZLG7290芯片完成,ZLG7290是一种I2C接口键盘及LED驱动管理器件,提供数据译码和循环、移位、段寻址等控制。它可采样64个按键或传感器,单片即可完成LED显示、键盘接口的全部功能。ZLG7290的从地址为70H,器件内部通过IIC总线访问的寄存器地址范围为00H~17H,任一寄存器都可按字节直接读写,并支持自动增址功能和地址翻转功能。因此,具有功能强、使用方便、厂家技术支持完善及与微处理器之间的连接线少(只有3根)等优点,适合在工业测控中进行应用。9.6.2 对ZLG7290头文件的修改 对于PMY单片机开发板,在其上引入参考文献【16】中介绍的软件包时,只需对端口的定义进行重新的设置即可正常使用。参照图9-1,具体修改的地方是软件包中的I2C.h文件对模拟I2C总线的引脚定义,只要将原来的定义:sbit I2C_SCL = P1^6;sbit I2C_SDA = P1^7;改为sbit I2C_SCL = P1^1;sbit I2C_SDA = P1^0; 就可在PMY单片机开发板正常运行ZLG7290Demo项目文件,为了在使用中不与参考文献【16】介绍的软件包相混淆,CHP09_ZLG7290Demo即为随书光盘中修改后的项目名,请读者在使用时注意区别对待。 以测试直接写显存Test_DispBuf()函数为例,概略介绍一下源程序中的函数分析方法,更多的解释请参阅本章提及的参考文献。ZLG7290Demo.c文件中,函数Test_DispBuf()的定义中包括code char DispDat[26]数组的定义,该数组定义了向ZLG7290显示缓存寄存器写入字符的显示译码,下面举例来说明如何确定这些译码。 以字符0的显示译码为例,如图9-4所示,字符0的段码g和dp不显示,因此为0;其余段码显示为1,编码按照a至g,dp由高到低的顺序进行排列(与ZLG7290内部架构有关),因此译码为0xFC,其余的字符译码方法依此类推。 在Test_DispBuf()函数中进行显示的函数是ZLG7290_WriteReg(reg,dat),其中reg为要显示字符在ZLG7290内部寄存器的地址,dat为要显示字符的译码。图9-4 字符0的七段LED数码管显示译码过程9.6.3ZLG7290软件包的函数使用说明 在本书后面的章节里,只要涉及到8位七段LED数码管显示和4×4键盘的项目,都会通过ZLG7290来进行控制,因此项目中的C源程序中必须包含以下两个头文件:#include I2C.h#include ZLG7290.h 第一个头文件是标准8051单片机模拟I2C总线的主机程序头文件,reg52.h已包含在其中,主要包括以下对I2C总线的控制函数:void I2C_Init();//I2C总线初始化,使总线处于空闲状态

文档评论(0)

1亿VIP精品文档

相关文档