版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,单片机程序设计实践教程,第九讲 七段数码管和44键盘控制,2,9.0 项目演示效果,图XP_9_01 步骤1-打开电源后直接写显存功能启动,3,图XP_9_02 步骤2-测试下载数据功能启动,4,图XP_9_03 步骤3-测试不同扫描位数功能启动,5,图XP_9_04 步骤4-测试键盘功能,6,9.1 项目目标设计,掌握ZLG7290键盘与显示控制芯片的控制和使用方法; 结合硬件原理图理解例程中各个函数的使用方法; 初步掌握I2C总线的原理和软件实现方法; 初步了解外部中断1的使用方法; 在达到以上四点目标之后,根据本章“项目扩展任务”中提出的问题,以组或个人为单位,在规定时间里完成项目任
2、务。,7,9.2 项目任务,图9-1 ZLG7290键盘与显示控制实验的电路原理图,8,本项目的任务是在开发板上完成ZLG7290芯片各个功能的演示,该芯片的功能包括测试直接写显存、下载数据、不同扫描位数、闪烁功能、段寻址功能及键盘功能。图9-1所示为基于ZLG7290键盘与显示控制芯片的电路原理图,这部分电路的设计 参照了教材中的参考文献【13】、【14】和【15】,例程的设计基本上源自参考文献【16】,只是为了适用于PMY单片机开发板,对一些端口进行了重新定义。 由于后续项目中的按键和七段LED显示控制都是以本次项目为基础的,因此希望读者提前阅读上文提及的4个参考文献,理解文献【16】中各
3、个函数的使用方法,为顺利完成后续项目做好前期准备。,9,9.3 系统板上硬件连线,ZLG7290键盘与显示控制系统板硬件连线图如图9-2所示。,图9-2 ZLG7290键盘与显示控制系统板硬件连线图,10,9.4 程序流程图,ZLG7290键盘与显示控制C语言程序流程图如图9-3所示。,图9-3 ZLG7290键盘与显示控制C语言程序流程图,11,9.5 C语言源程序(略),9.6 系统构成和程序分析,9.6.1 ZLG7290接口键盘及LED驱动管理芯片 简介,PMY单片机开发板的8位七段LED数码管显示和44键盘的控制由ZLG7290芯片完成,ZLG7290是一种I2C接口键盘及LED驱动
4、管理器件,提供数据译码和循环、移位、段寻址等控制。它可采样64个按键或传感器,单片即可完成LED显示、键盘接口的全部功能。ZLG7290的从地址为70H,器件内部通过IIC总线访问的寄存器地址范围为00H17H,任一寄存器都可按字节直接读写,并支持自动增址功能和地址翻转功能。因此,具有功能强、使用方便、厂家技术支持完善及与微处理器之间的连接线少(只有3根)等优点,适合在工业测控中进行应用。,12,9.6.2 对ZLG7290头文件的修改,对于PMY单片机开发板,在其上引入参考文献【16】中介绍的软件包时,只需对端口的定义进行重新的设置即可正常使用。参照图9-1,具体修改的地方是软件包中的I2C
5、.h文件对模拟I2C总线的引脚定义,只要将原来的定义: sbit I2C_SCL = P16; sbit I2C_SDA = P17; 改为 sbit I2C_SCL = P11; sbit I2C_SDA = P10; 就可在PMY单片机开发板正常运行ZLG7290Demo项目文件,为了在使用中不与参考文献【16】介绍的软件包相混淆,CHP09_ZLG7290Demo即为随书光盘中修改后的项目名,请读者在使用时注意区别对待。,13,以测试直接写显存Test_DispBuf()函数为例,概略介绍一下源程序中的函数分析方法,更多的解释请参阅本章提及的参考文献。 ZLG7290Demo.c文件中,
6、函数Test_DispBuf()的定义中包括code char DispDat26数组的定义,该数组定义了向ZLG7290显示缓存寄存器写入字符的显示译码,下面举例来说明如何确定这些译码。 以字符0的显示译码为例,如图9-4所示,字符0的段码g和dp不显示,因此为0;其余段码显示为1,编码按照a至g,dp由高到低的顺序进行排列(与ZLG7290内部架构有关),因此译码为0 xFC,其余的字符译码方法依此类推。 在Test_DispBuf()函数中进行显示的函数是ZLG7290_WriteReg(reg,dat),其中reg为要显示字符在ZLG7290内部寄存器的地址,dat为要显示字符的译码。
7、,14,图9-4 字符0的七段LED数码管显示译码过程,15,9.6.3ZLG7290软件包的函数使用说明,在本书后面的章节里,只要涉及到8位七段LED数码管显示和44键盘的项目,都会通过ZLG7290来进行控制,因此项目中的C源程序中必须包含以下两个头文件: #include I2C.h #include ZLG7290.h 第一个头文件是标准8051单片机模拟I2C总线的主机程序头文件,reg52.h已包含在其中,主要包括以下对I2C总线的控制函数:,16,void I2C_Init(); /I2C总线初始化,使总线处于空闲状态 void I2C_Start(); /产生I2C总线的起始状
8、态 void I2C_Write(char dat) ; / 向I2C总线写1个字节的数据 char I2C_Read(); /从从机读取1个字节的数据 bit I2C_GetAck(); /读取从机应答位 void I2C_PutAck(bit ack); /主机产生应答位或非应答位 void I2C_Stop(); /产生IIC总线的停止状态 bit I2C_Puts (unsigned char SlaveAddr, unsigned int SubAddr, unsigned char SubMod, char *dat, unsigned int Size); /I2C总线综合发送函
9、数,向从机发送多个字节的数据 bit I2C_Gets (unsigned char SlaveAddr,unsigned int SubAddr,unsigned char SubMod, char *dat,unsigned int Size); /I2C总线综合接收函数,从从机接收多个字节的数据,17,本章提及的参考文献中有对I2C通信协议的详细讲解,对照I2C.h和I2C.c文件,就能够帮助读者理解以上列出的各个函数的含义。后面关于数字钟的项目中,有详细的关于I2C总线知识的介绍,读者也可参阅该部分的内容以加深对I2C总线知识的理解。 第二个头文件ZLG7290.h是数码管显示与键盘管
10、理芯片ZLG7290的标准8051驱动程序头文件,这是读者应重点掌握的内容,如果不能理解其中的含义,最少应学会使用这些函数,随着对后续项目的不断深入实践,单片机理论和实践知识也会不断积累和丰富,反过来再分析这些函数就会更容易理解了。第二个头文件包括以下函数。,18,bit ZLG7290_WriteReg(unsigned char RegAddr, char dat); /功能:向ZLG7290的某个内部寄存器写入数据; /参数:RegAddr为ZLG7290内部寄存器的地址;dat为要写入的数据 bit ZLG7290_ReadReg(unsigned char RegAddr, char
11、 *dat) /功能:从ZLG7290的某个内部寄存器读出数据 /参数:RegAddr为ZLG7290的内部寄存器地址; *dat为保存读出的数据 bit ZLG7290_cmd(char cmd0, char cmd1) /功能:向ZLG7290发送控制命令 /参数:cmd0为写入CmdBuf0寄存器的命令字(第1字节);cmd1为写入CmdBuf1寄存器的命令字(第2字节),19,bit ZLG7290_SegOnOff(char seg, bit b) /功能:段寻址,单独点亮或熄灭数码管(或LED)中的某一段 /参数:seg取值063,表示数码管(或LED)的段号;对于b,0表示熄灭,
12、1表示点亮 bit ZLG7290_Download(char addr, bit dp, bit flash, char dat) /功能:下载数据并译码 /参数:addr取值07,显示缓存DpRam0DpRam7的编号;dp表示是否点亮该位的小数点,0熄灭,1点亮; flash表示控制该位是否闪烁,0不闪烁,1闪烁; dat取值031,表示要显示的数据,20,另外两个有用的函数在ZLG7290Demo.c中,分别是: void DispValue(char x, unsigned char dat) 功能:显示100以内的数值 参数:x表示显示位置,取值06; dat表示要显示的数据,取值
13、099 void DispHexValue(char x, unsigned char dat) 功能:以十六进制数显示数值 参数:x表示显示位置,取值06; dat表示要显示的数据,取值0255,21,ZLG7290Demo.c文件中的void Test_Key()和void Delay(unsigned int t) 函数中分别使用外部中断1和定时器T0进行中断控制,关于这部分内容将在后续的项目中加以介绍,读者可以忽略这部分的内容,重点掌握上面提及的7个函数的使用方法,这7个函数重新列写如下: bit ZLG7290_WriteReg(unsigned char RegAddr, char dat) bit ZLG7290_ReadReg(unsigned char RegAddr, char *dat) bit ZLG7290_cmd(char cmd0, char cmd1) bit ZLG7290_SegOnOff(char seg, bit b) bit ZLG7290_Download(char addr, bit dp, bit flash, char dat) void DispValue(char x,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务运营管理制度(框架)
- 电子支付行业移动支付安全保障方案
- 旅游投资有限公司财务报表分析报告
- 2025《齐桓晋文之事》仁政措施探讨课件
- 秦腔戏曲专业试题及答案
- 后勤安规考试题及答案
- 血标本采集试题及答案
- 2025年临床执业医师《内科学》模拟试卷
- 人力岗位复试题目及答案
- 医疗纠纷防范三基三严考试题库及答案
- 网络漏洞利用与渗透测试服务项目可行性分析报告
- 2022年甘肃高考物理真题及答案
- 烹调技术(第三版)中职PPT完整全套教学课件
- 2021西安美术学院附中招生语文试卷
- 清华大学出版社机械制图习题集参考答案(课堂PPT)
- 室内绿化植物的配置形式和原则
- 地质环境与地质灾害防治绪论课件
- GB/T 30256-2013节能量测量和验证技术要求泵类液体输送系统
- GB/T 19634-2021体外诊断检验系统自测用血糖监测系统通用技术条件
- GB/T 18354-2021物流术语
- 儿童炎症性肠病(IBD)
评论
0/150
提交评论