ZLG键盘数码管键盘_第1页
ZLG键盘数码管键盘_第2页
ZLG键盘数码管键盘_第3页
ZLG键盘数码管键盘_第4页
ZLG键盘数码管键盘_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、ZLG键盘输入实验修改记录版本号.作者描述修改日期0.1徐珊First Draft2011-9-14审核记录姓名职务签字日期ZLG 数码管1.1 实验介绍通过本次实验熟悉ZLG7290芯片设计和驱动流程,熟悉I2C在实际设计中的应用,ZLG7290是一款非常实用的键盘数码管驱动芯片,只占用MCU的三个管脚,一个I2C的资源和一个中断口,也可以用查询方式来检测,这样比较浪费CPU的资源,所以还是用中断的方式,这与原来的相比,还是节约了不少管脚资源,这个实验是STM32驱动ZLG7290,通过寄存器直接查询的方式,让ZLG7290驱动数码管并显示数据并接受键盘输入值显示键盘的原值。1.2 实验目标

2、 1. 理解固件库的结构2. 分析和学习固件库3. 灵活运用 ZLG7290 1.3 实验时间60分钟1.4 预备知识熟悉C语言知识,熟练MDK的使用1.5 实验步骤1.解压stm32f10x_stdperiph_lib.zip 可以从ST官方网站免费下载(在实验包里已经下载好)。本教程使用的标准库版本为 3.1.2.2.创建一个ZLG_Key文件夹2.1 新建子文件夹User,用于存放用户源程序2.2 新建子文件夹Project,用户KEIL工程文件2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。3. 复制源代码到ZLG_Key文件夹3.1 将stm

3、32f10x_stdperiph_libSTM32F10x_StdPeriph_Lib_V3.1.2Libraries文件夹和Utilities文件夹整体复制到ZLG_Key文件夹下。这就是ST的标准库,是以源代码形式提供的。3.2 将库中的演示代码KeyDisplayUser中的文件i2c_zlg7290.h和stm32f10x_conf.h和i2c_zlg7290.c复制到ZLG_KeyUser文件夹.4. 新建Keil MDK工程4.1 启动Keil MDK,点击菜单 New uVision Project,新建一个工程,命名为ZLG_Key在Project文件夹下4.2 选择CPU类型

4、为 STM32F107VC (这是MDV-STM32-107开发板采用的CPU类型)4.3 当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)4.4 根据自己的需要修改Target名字。(名字任意)我们修改成ZLG_Key。4.5 为了便于代码管理,在这个Project下创建几个Group 如下图:User : 存放用户自己写的源代码RVMDK : 存放启动文件(汇编文件)StdPeriph_Driver : 存放ST标准库外设驱动文件CMSIS : 存放CMSIS接口文件(这也是库的一部分)STM32_EVAL存放板集设备驱动文件4.6

5、创建好Group后,我们开始依次添加文件。4.6.1给User文件夹添加文件将ZLG_KeyUser文件加下的i2c_zlg7290.c添加到工程。4.6.2给RVMDK文件夹添加文件启动文件路径:ZLG_KeyLibrariesCMSISCoreCM3startuparm4.6.3给stdPeriph_Driver文件夹添加文件设备驱动文件路径:ZLG_KeyLibrariesSTM32F10x_StdPeriph_Driversrc4.6.4给CMSIS文件夹添加文件CMSIS接口文件路径: ZLG_Key LibrariesCMSISCoreCM34.6.4给STM32_EVAL文件夹添

6、加文件STM32_EVAL接口文件路径: ZLG_Key GPIOUtilitiesSTM32_EVAL和 ZLG_Key GPIOUtilitiesSTM32_EVALSTM3210C_EVAL下面开始新建main.c主函数文件,点击file菜单的中的new file如下图所示,然后将新建的文件以main.c问文件名保存到User文件加下,然后再添加到工程User分组中。添加好文件的工程如下图所示:5. 修改源代码。我们将修改main.c 文件,换成下面的程序。/* * * file I2C/ZLG7290/main.c * author Sunxue * version V1.1.0 *

7、date 12/02/2012 * brief Main program body * * copy * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT

8、OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * * © COPYRIGHT 2009 STMicroelectronics */ /* Includes -*/#include i2c_zlg7290.h#inclu

9、de stm32f10x.h#include stm3210c_eval_lcd.h#include stm32_eval.h#include /* addtogroup STM32F10x_StdPeriph_Examples * */* addtogroup I2C_ZLG7290 * */ /* Private variables -*/* Reset Value */uint8_t Tx0_Instr = 0xf0,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x03,0x00,0x00;/* 0-9 nega

10、tive common */uint8_t Tx0_Ram0_7 = 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6;/*Read Num from Zlg*/uint8_t Rx0_Num = 0x00,0x00,0x00;/* Private functions -*/void RCC_Configuration(void);/* * brief Main program * param None * retval None */int main(void) /* System clocks configuration -*/ RCC_C

11、onfiguration(); /* Initialize the LCD */ STM3210C_LCD_Init(); /* Clear the LCD */ LCD_Clear(White); /* Set the LCD Text Color */ LCD_SetTextColor(Blue); printf( Key Test n); printf( IIC ZLG7290 Test n); /* Initialize the I2C ZLG7290 driver -*/ I2C_ZLG_Init(); /I2C_ZLG_BufferWrite(Tx0_Instr, 0x00, 0x

12、04); /I2C_ZLG_BufferWrite(&Tx0_Instr7, 0x07, 0x02); /* Set FlashOnOff and ScanNum */ I2C_ZLG_BufferWrite(&Tx0_Instr12, 0x0c, 0x02); /* Set DpRam0 to DpRam3 */ I2C_ZLG_BufferWrite(Tx0_Ram0_7, 0x10, 0x04); /* Display Key Value */ printf( Passby On ! n); printf( Key Value is : 00 n); while (1) /* Test

13、INT */if(!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15)/* Read Key Value From SystemReg Key RepetCnt */I2C_ZLG_BufferRead(Rx0_Num, 0x00, 0x03);/* Write To DpRam2 */I2C_ZLG_ByteWrite(&Tx0_Ram0_7Rx0_Num1/10, 0x12);/* Write To DpRam3 */I2C_ZLG_ByteWrite(&Tx0_Ram0_7Rx0_Num1%10, 0x13);/* Display Key Value */

14、printf( Key Value is : %d%d n,Rx0_Num1/10,Rx0_Num1%10); /* * brief Configures the different system clocks. * param None * retval None */void RCC_Configuration(void) /* Setup the microcontroller system. Initialize the Embedded Flash Interface, initialize the PLL and update the SystemFrequency variabl

15、e. */ SystemInit();#ifdef USE_FULL_ASSERT/* * brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * param file: pointer to the source file name * param line: assert_param error line source number * retval None */void assert_failed(uint8_t

16、* file, uint32_t line) /* User can add his own implementation to report the file name and line number, ex: printf(Wrong parameters value: file %s on line %drn, file, line) */ /* Infinite loop */ while (1) #endif/* * */ /* * */ /* (C) COPYRIGHT 2012 STMicroelectronics *END OF FILE*/6. 配置工程, 点击“Options”按钮6.1 切换到Output。选择Obj文件夹。6.2 切换带Listing。选择List文件夹6.3 切换到Target在Code Generation的Use MicroLIB 前打钩,如下图所示。6.4 切换到C/C+ 添加两个预编译宏USE_STDPERIPH_DRIVER, STM32F10X_CL, USE_STM3210C_EVAL,LCD_Debug (这是ST库用到了这两个宏) 修改Includes路径6.5 切换到Debug 选择硬件调试器(缺省是软件仿真),我们选择Cortex-M/R J-LINK/J-Trace调试器 在 Run to ma

温馨提示

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

评论

0/150

提交评论