IIC总线,数码管及键盘PPT演示课件_第1页
IIC总线,数码管及键盘PPT演示课件_第2页
IIC总线,数码管及键盘PPT演示课件_第3页
IIC总线,数码管及键盘PPT演示课件_第4页
IIC总线,数码管及键盘PPT演示课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

IIC总线,数码管及键盘,1,本节提要,1,3,2,5,前期实验问题总结,IIC总线原理,8段数码管实验原理,44键盘实验原理,2,前期实验问题总结,建立工程后的文件关联,S3CEV40,S3CEV40,注:源文件放在工程目录下,并且要关联到工程中。同样,其他文件也需要关联到工程中。,启动文件.s,链接脚本文件.ld,命令脚本文件.cs等,3,4,Project-Setting-Debug的设置,前期实验问题总结,5,断点及单步执行,前期实验问题总结,启动文件,源程序文件,Main函数,功能函数,voidLed_Display(intLedStatus)Led1_on();Led1_off();,6,汇编语言,ARM指令集启动文件:44binit.s,前期实验问题总结,启动程序,启动代码是用来初始化电路以及用来为高级语言写的软件做好运行前准备的一小段汇编语言,是任何处理器上电复位时的程序运行入口点。,7,1、中断向量表,8,初始化中断向量表,ENTRY:bResetHandler/*fordebug*/bHandlerUndef/*handlerUndef*/bHandlerSWI/*SWIinterrupthandler*/bHandlerPabort/*handlerPAbort*/bHandlerDabort/*handlerDAbort*/b./*handlerReserved*/bHandlerIRQbHandlerFIQ,其中关键字ENTRY是指定编译器保留这段代码,因为编译器可能会认为这是一段亢余代码而加以优化。链接的时候要确保这段代码被链接在0地址处,并且作为整个程序的入口。,9,2、初始化存储器系统,存储器的类型和时序配置存储器的地址分布,10,初始化看门狗、时钟,#*#*START*#*ResetHandler:ldrr0,=WTCON/*watchdogdisable*/ldrr1,=0 x0strr1,r0ldrr0,=INTMSKldrr1,=0 x07ffffff/*allinterruptdisable*/strr1,r0#*#*Setclockcontrolregisters*#*ldrr0,=LOCKTIMEldrr1,=0 xfffstrr1,r0,11,初始化DMA,ldrr0,=CLKCONldrr1,=0 x7ff8/*AllunitblockCLKenable*/strr1,r0#*#*changeBDMACONresetvalueforBDMA*#*ldrr0,=BDIDES0ldrr1,=0 x40000000/*BDIDESnresetvalueshouldbe0 x40000000*/strr1,r0ldrr0,=BDIDES1ldrr1,=0 x40000000/*BDIDESnresetvalueshouldbe0 x40000000*/strr1,r0,12,#*#*Setmemorycontrolregisters*#*ldrr0,=SMRDATAldmiar0,r1-r13ldrr0,=0 x01c80000/*BWSCONAddress*/stmiar0,r1-r13#;*#;*Initializestacks*#;*ldrsp,=SVCStackblInitStacks,初始化外部存储器、堆栈,13,3、初始化堆栈,ARM有7种执行状态(工作模式),每一种状态堆栈指针寄存器(SP)都是独立的;对每一种模式都要定义SP寄存器的堆栈地址;,14,初始化堆栈,#;*#;*Thefunctionforinitializingstack*#;*InitStacks:mrsr0,cpsrbicr0,r0,#MODEMASKorrr1,r0,#UNDEFMODEmsrcpsr_cxsf,r1/*UndefMode*/ldrsp,=UndefStackorrr1,r0,#ABORTMODE|NOINTmsrcpsr_cxsf,r1/*AbortMode*/ldrsp,=AbortStackorrr1,r0,#IRQMODE|FIQ_MODEmsrcpsr_cxsf,r1/*IRQMode*/ldrsp,=IRQStackorrr1,r0,#FIQMODE|IRQ_MODEmsrcpsr_cxsf,r1/*FIQMode*/ldrsp,=FIQStackbicr0,r0,#MODEMASKorrr1,r0,#SVCMODEmsrcpsr_cxsf,r1/*SVCMode*/ldrsp,=SVCStack#USERmodeisnotinitialized.movpc,lr/*TheLRregistermaybenotvalidforthemodechanges.*/,15,4、初始化有特殊要求的端口、设备,如驱动指示系统运行状态的一些简单的输出设备,如LED,蜂鸣器等一般外设初始化可以系统初始化之后进行,16,5、初始化应用程序执行环境,完成必要的从ROM到RAM的数据传输,#*#*CopyandpasteRWdata/zeroinitializeddata*#*LDRr0,=Image_RO_Limit/*GetpointertoROMdata*/LDRr1,=Image_RW_Base/*andRAMcopy*/LDRr3,=Image_ZI_BaseCMPr0,r1/*Checkthattheyaredifferent*/BEQF1F0:CMPr1,r3/*Copyinitdata*/LDRCCr2,r0,#4/*-LDRCCr2,r0+ADDr0,r0,#4*/STRCCr2,r1,#4/*-STRCCr2,r1+ADDr1,r1,#4*/BCCF0F1:LDRr1,=Image_ZI_Limit/*Topofzeroinitsegment*/MOVr2,#0F2:CMPr3,r1/*Zeroinit*/STRCCr2,r3,#4BCCF2,17,6、改变处理器模式,MRSr0,CPSRBICr0,r0,#NOINT/*enableinterrupt*/MSRCPSR_cxsf,r0,18,7、呼叫主应用程序,系统初始化工作完成后,程序流程转入主应用程序执行可以直接从启动代码跳到应用程序的主函数入口,/*jumptomain()*/BLMainB.,19,EMBESTIDE环境中的C语言,前期实验问题总结,voidinit_Ext4567(void)/中断初始化程序rINTMOD0 x0;/*使能中断*/rINTCON0 x1;rINTMSK=(BIT_GLOBAL|BIT_EINT4567);pISR_EINT4567(int)Eint4567Isr;/*对端口G的配置*/rPCONG0 xffff;rPUPG0 x0;/上拉电阻使能rEXTINTrEXTINT|0 x22220000;/EINT4567下降沿模式rI_ISPCBIT_EINT4567;/清除挂起位rEXTINTPND0 xf;/清除EXTINTPND寄存器,变量与寄存器的关系:44b.h,20,/*INTERRUPT*/#definerINTCON(*(volatileunsigned*)0 x1e00000)#definerINTPND(*(volatileunsigned*)0 x1e00004)#definerINTMOD(*(volatileunsigned*)0 x1e00008)#definerINTMSK(*(volatileunsigned*)0 x1e0000c)#definerI_PSLV(*(volatileunsigned*)0 x1e00010)#definerI_PMST(*(volatileunsigned*)0 x1e00014)#definerI_CSLV(*(volatileunsigned*)0 x1e00018)#definerI_CMST(*(volatileunsigned*)0 x1e0001c)#definerI_ISPR(*(volatileunsigned*)0 x1e00020)#definerI_ISPC(*(volatileunsigned*)0 x1e00024),21,实验箱连线:,前期实验问题总结,实验箱仿真器PC,JTAG,并口线,读取当前CPU运行情况,允许断点及单步执行,实验箱PC超级终端,串口线,显示,Uart_Getch();Uart_SendByte(*pt_str);Uart_Printf(str_send);,22,本节提要,1,3,2,5,前期实验问题总结,IIC总线原理,8段数码管实验原理,44键盘实验原理,23,IIC总线原理,IIC总线=同步串行数据传输总线(InterIntegratedCircuitBus)总线传输速率:100kb/s,特点:同步,半双工,多设备,24,数据传输格式:,起始位,从设备地址,读写控制,从设备应答,数据传输,停止位,25,IIC通信与UART通信的区别:,UART:(UniversalAsynchronousReceiverTransmitter:通用异步收发器)I2C:(INTERICBUS:集成电路互联总线),UART:异步串行方式,RS232标准I2C:同步串行方式,UART:结构复杂,需要固定波特率,可用于不同设备间较远距离的连接I2C:结构简单,抗干扰能力弱,一般用于同一板卡上不同芯片间的互联,26,S3C44B0X上的IIC总线接口,在主发送模式下,处理器通过IIC接口与外部串行器件进行数据传送,需要使用到如下寄存器:IIC总线控制寄存器IICCONIIC总线状态寄存器IICSTATIIC总线地址寄存器IICADDIIC总线发送接收移位寄存器IICDS,27,S3C44B0X上的IIC总线编程,Voidiic_init(void)rPCONF|=0 x0A;rIICADD=0 x10;rIICCON=0 xE5;rINTCON=0 x1;rINTMSK,28,Voidiic_int(void)rI_ISPC=BIT_IIC;f_nGetACK=1;,29,voidiic_read(U32unSlaveAddr,U32unAddr,S8*Pdata)S8cRecvByte;f_nGetACK=0;rIICDS=unSlaveAddr;rIICSTAT=0 xF0;while(f_nGetACK=0);f_nGetACK=0;rIICDS=unAddr;rIICCON=0 xE5;while(f_nGetACK=0);f_nGetACK=0;rIICDS=unSlaveAddr;rIICSTAT=0 xB0;rIICCON=0 xE5;while(f_nGetACK=0);f_nGetACK=0;rIICCON=0 x65;while(f_nGetACK=0);f_nGetACK=0;cRecvByte=rIICDS;,30,本节提要,1,3,2,5,前期实验问题总结,IIC总线原理,8段数码管实验原理,44键盘实验原理,31,8段数码管概述,嵌入式系统中,经常使用8段数码管来显示数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。8段数码管由8个发光二级管组成,其中7个长条行的发光管排列成“日”字形,右下角1个点形发光管作为显示小数点用。8段数码管能显示所有数字及部分英文字母,见图。,8段数码管有2种不同的形式:一种是8个发光二极管的阳极都连在一起,称之为共阳极8段数码管;另一种是8个发光二极管的阴极都连在一起,称之为共阴极8段数码管。,32,8段数码管工作原理,以共阳极8段数码管为例。当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮。当需要显示某字符时,就将该字符对应的所有二极管点亮。共阴极二极管则相反,控制信号为高电平时点亮。电平信号按照dp、g、ea的顺序组合形成的数据字称为该字符对应的段码。常用字符的段码如表所列。,33,数码管实验电路原理,在S3CEV40教学电路中,使用的是共阳极8段数码管。各段的控制信号由处理器S3C44B0X的数据总线低8位通过锁存器74LS573进行控制,数码管的亮度由电阻R1R8调整,锁存器的选通由CS6控制,见图。,34,锁存器选通信号CS6由处理器S3C44B0X的存储区域1对应的片选信号线nGCS1和地址线的高位A18、A19、A20经过译码器生成,电路原理图见图。当nGCS1、A18、A20为高电平,A19为低电平时,CS6信号有效。此时,数据线低8位的内容将在8段数码管上显示出来。处理器S3C44B0X的存储区域1对应的起始地址和结束地址是固定的,即存储区域1的地址范围为0 x020000000 x2FFFFFF。当访问这段地址空间时,处理器使nGCS1信号有效。结合地址位A18、A19、A20,当访问地址0 x021400000 x0217FFFF时,CS6信号有效。在程序设计中,8段数码管的显示是通过输出数据到地址0 x02140000来完成的。,35,实验程序示例,#defineDIGIT_F(SEGMENT_A|SEGMENT_G|SEGMENT_E|SEGMENT_F)#defineDIGIT_E(SEGMENT_A|SEGMENT_G|SEGMENT_E|SEGMENT_F|SEGMENT_D)#defineDIGIT_D(SEGMENT_B|SEGMENT_C|SEGMENT_D|SEGMENT_F|SEGMENT_E)#defineDIGIT_C(SEGMENT_A|SEGMENT_D|SEGMENT_E|SEGMENT_G)#defineDIGIT_B(SEGMENT_C|SEGMENT_D|SEGMENT_F|SEGMENT_E|SEGMENT_G)#defineDIGIT_A(SEGMENT_A|SEGMENT_B|SEGMENT_C|SEGMENT_F|SEGMENT_E|SEGMENT_G)#defineDIGIT_9(SEGMENT_A|SEGMENT_B|SEGMENT_C|SEGMENT_F|SEGMENT_G)#defineDIGIT_8(SEGMENT_A|SEGMENT_B|SEGMENT_C|SEGMENT_D|SEGMENT_F|SEGMENT_E|SEGMENT_G)#defineDIGIT_7(SEGMENT_A|SEGMENT_B|SEGMENT_C)#defineDIGIT_6(SEGMENT_A|SEGMENT_C|SEGMENT_D|SEGMENT_F|SEGMENT_E|SEGMENT_G)#defineDIGIT_5(SEGMENT_A|SEGMENT_C|SEGMENT_D|SEGMENT_F|SEGMENT_G)#defineDIGIT_4(SEGMENT_B|SEGMENT_C|SEGMENT_F|SEGMENT_G)#defineDIGIT_3(SEGMENT_A|SEGMENT_B|SEGMENT_C|SEGMENT_D|SEGMENT_F)#defineDIGIT_2(SEGMENT_A|SEGMENT_B|SEGMENT_D|SEGMENT_E|SEGMENT_F)#defineDIGIT_1(SEGMENT_B|SEGMENT_C)#defineDIGIT_0(SEGMENT_A|SEGMENT_B|SEGMENT_C|SEGMENT_D|SEGMENT_E|SEGMENT_G)intSymbol=DIGIT_0,DIGIT_1,DIGIT_2,DIGIT_3,DIGIT_4,DIGIT_5,DIGIT_6,DIGIT_7,DIGIT_8,DIGIT_9,DIGIT_A,DIGIT_B,DIGIT_C,DIGIT_D,DIGIT_E,DIGIT_F;/*8ledcontrolregisteraddress*/#defineLED8ADDR(*(volatileunsignedchar*)(0 x2140000),36,voidDigit_Led_Symbol(intvalue)/*symboldisplay*/if(value=0),37,练习,编写程序循环显示8段数码管的各段。,38,本节提要,1,3,2,5,前期实验问题总结,IIC总线原理,8段数码管实验原理,44键盘实验原理,39,键盘硬件电路设计,44键盘按4行4列组成,电路结构如图所示。按键按下将回使行列连成通路,这也是常见的用户键盘设计电路。,40,键盘电路原理图,41,工作过程,S3CEV40实验板由3个74HC08“与”门器件U9B,U9C和U9D组成中断输入电路(外部中断1),锁存器74HC17(U11)和74HC541(U10)以及4个二极管组成键盘检测电路部分。按键按下相当于连接J7键盘接口的行线和列线,即第14脚任意连通第58脚形成一个键盘动作。当没有按键按下时,数据线被上大为高电平;当有按键按下时,硬件电路产生中断通知CPU。中断处理程序通过行线或列线对应的地址读数据。这样,从按键所在的行或列对应的地址读出来的数据与初始状态不同(不全为高电平,即通过U10把数据线拉低);然后再根据数据判断按键所在列或行(对应数据位为低电平)。这样44键盘要使用4跟地址线和4根数据线来识别4行4列按键。,42,例如:连接J7第1脚和第5脚的按键被按下,中断处理程序通过使用以下地址读数据(地址中x表示0或1),即:xxx11101,A1为低。判断L0线上是否有键被按下。由于J7的第4脚处于断开状态,而A4为高电平等于使J7的第1脚和第5脚再次断开,数据线从U10输出仍为0 xF。xxx11011,A2为低。判断L1线上是否有键被按下。由于J7的第3脚处于断开状态,而A4为高电平等于使J7的第1脚和第5脚再次断开,数据线从U10输出仍为0 xF。xxx10111,A3为低。判断L2线上是否有键被按下。由于J7的第2脚处于断开状态,而A4为高电平等于使J7的第1脚和第5脚再次断开,数据线从U10输出仍为0 xF。xxx01111,A4为低。判断L3线上是否有键被按下。由于J7的第1脚与第5脚连通,而A4为低电平使得数据线的输入通过U11U10构成回路,因此,数据线D0通过U10被拉低,输出变为0 xE。中断程序可以据此判断SB16键被按下。实验中判断16个按键的读取地址及数据如表所列。,43,44,程序设计,结合实验系统中的用户键盘硬件控制电路,编写相关的程序,包括:键盘中断程序、按键识别程序及键值显示程序。,45,实验例程,硬件使用外部中断1,程序设计可以先进行初始化,例如变量及相关中断控制寄存器等。VolatileUCHAR*keyboard_base=(UCHAR*)0 x06000000/键盘访问硬件基地址#defineKEY_VALUE_MASK0 x0f/初始化数据状态voidinit_keyboard();voidclose_keyboard();voidKeyboardInt(void)_attribute_(interrupt(IRQ);,46,键盘初始化,voidinit_keyboard()/*enableinterrupt*/rINTMOD=0 x0;rINTCON=0 x1;/*setEINT1interrupthandler*/rINTMSK=

温馨提示

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

评论

0/150

提交评论