




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#五路智能抢答器摘要随着电子技术的飞速发展,基于嵌入式的控制系统已广泛应用于工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。同时楼宇智能化的发展与成熟,也为基于嵌入式的控制系统的普及与应用奠定了坚实的基础。电子智能抢答在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用嵌入式系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。由于ARM7的开发板的按键只有六个,为了现象比较清晰的观察和操作的易于控制,抢答组数在五组以内任意使用,本系统设计为模块形式采用ARM7的2138开发板与PC机的链接来实现的,系统工作原理本系统采用ARM7的2138开发板模块作为核心。控制系统的五个模块分别为:显示模块、显示驱动模块、定时器模块、抢答开关按键模块、蜂鸣器输出模块。关键词:按键;显示;驱动;抢答;定时一、设计任务与要求:1)设计一个容纳5组参赛队的智能式的抢答器,每组设置一抢答按钮供抢答者使用。2)设置一个系统清除和抢答控制开关按钮S,该开关由主持人控制。3)抢答器具有锁存与显示功能。选手按动按钮,锁存相应的编号,并在LED数码管上显示号码,同时亮相应号的流水灯。其他选手无法抢答。优先抢答选手的编号一直保持到主持人将系统清除为止。4)抢答器具有定时抢答功能。当主持人启动〃开始〃键后,定时器进行计时,定时30秒。5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,流水灯输出且音乐输出“康定情歌”歌曲,显示器上显示选手的号码,并保持到主持人将系统清除为止,音乐输出完后主持人才能按复位键开始重新一轮的抢答。、实训目的本次实训使用LPC2131的SPI接口作为主机向74HC595发送数据,数据内容由7段数码管显示,再加上GPIO输入实验的按键输入检测,由自己编程实现程序检测按键状态时,控制蜂鸣器蜂鸣和对应号的流水灯来,(即表示此号队抢答到),进而进入定时状态抢答,用定时器0实现30s定时,查询标志位等待定时时间到达,表示此一轮抢答完毕,音乐输出,而后按键复位开始新一轮的抢答。如此不断的循环下去,实现了智能抢答的效果。在本次实验中,参赛选手由按键1〜5表示,主持人按键由按键6表示即复位和开始按键。通过本次的实验,能使自己了解并掌握定时器查询方式和中断的用法和SPI的7段数码管显示用法,还有就是更熟练地应用GPIO口,以设计生活中实用的抢答来培养自己的思维和加强自己的系统设计能力。三、实验仪器1、装有ADS1.2及EasyJTAG仿真器的电脑一台2、ARM7开发板一块四、实验原理(一)、GPIO的相关原理4.1.1概述LPC2131具有多达47个通用I/O口(GPIO,GeneralPurposeI/Oporteh分别为P0[31:0],Pl[31:16],其中,P叮4未用,P0.31仅为输出口a由于口线与其它功能复用,因而需要进行相关的世脚连接模块(MNSELO、PINSELUPINSEL2)选择连接GPIO,然后通i±IODIR进行输入/输出属性设置后才能操作.当世脚选择GMO功能时,有3个寄存器用于控制GPIO的艸用,IOSET.IOCLR和IOPIN.IOSET用于口线置而IOCLR则用于口线清零,IOPEST则反映当前IO口的状态,读回IOSET则反映当前IO口谟毎状态。4.1.2特性单个位的方向控制*单独控制输出的置位和淸零:所有I/O口在复位后默认为输入“
4-1.3管脚描述GPlOff脚描述见表41aW4.1GPIO描述管脚名称类型描述P0.0-P031P1.16-P1.31输人■输出通用I/O口.实际可用的GPIO数量取决于可选功能的使用"P0.31为仅辑出口.管脚连接设置将相应管脚的FINSELn位设置为00即选择GPIO功能;大部分世脚笑位后默认为GPIO,4.1.4、GPIO——蜂鸣器控制图乩石醴鸣器控制电路如果跳线JP11选择蜂鸣器,当P0.7输出低电平,蜂鸣器蜂鸣,当P0.7输出高电平时,蜂鸣器停止蜂鸣。实验利用P0.7的输出功能,控制蜂鸣器,程序设置PINSEL0使P0.7链接GPIO,并通过IO0DIR将其设置输出状态,然后通过IO0CLR和IOOSET清零和置位P0.7口,控制蜂鸣器。4.1.5、GPIO输出——单路LED控制EaSyARM2131JF发板上有£个独立的LED,分别由£(GPIO口控制,现在便用其中一路进行实验,便用的电路如图4一10所示°彳VDD33彳VDD33(£4.10单路LED电路丽当跳线JP12连接LED1时,PL18采用灌电流方式驱动LEDh当PLlg输出低电平时,LED1点克,当P1.18输出髙电平时,LED1熄灭°实验程序首先设置管脚链接GPIO,接着设置P1.18口为输出模式,然后通过IO1CLR和IO1SET控制盘.18,驱动LED1的亮灭。4.1.6、GPIO输出——多路LED控制
EasyARM2131开发板上的E路LED(LEDE〜LED1)分别可选择Pl[25:l筍进行控制,电路如图4.12所示亠VDUJ.JLED1K5470LED3R7470LED5R1347QLED*LED1K5470LED3R7470LED5R1347QLED*R1547QLEDl1Pl.IS3LED2~~TPl.196LED37P1PQ9lira珂P1J112LED5HPl.2715LEM16Pl.23IELED?HP1J421TEDE~~IT円卫予24严2卷、Bl借0B4右;、的2PL1SPS5Pl.19P4EPIJJSJIMS11P121IM414Pl22IMO17Pl23P3620P1J4P3223PI25P2gLED?Rlfi470-囲4J28路LED控制电路当跳线JP12全部选择LED8〜LED1后,P1.25〜P1.18分别控制这8路LED,就可以进行流水灯实验。(二)、SPI接口相关原理4.2.1、概述LPC2131具有一个硬件SPI(SPLSerialPeriptieralInterface>接口,它是一个同步、全双工串行接口,最大数据位速率为时钟速率的1用,可以配置为主机或若从机匚在同一总线上可以有案个主机或者从机,但同一时刻只能有一个主机和一个从机能够进行通信,在一钦数据传输过程中,主机向从机发送一字节数据,从机也向主机返回一字节数据°SPI可应用于*串行存储器,如DataFlash、三线EEPROM等;串行外设,如ADC、DAC,LCD控制器、CAN控制器、传感器等*外部协处理器。4.2.2、特性两个完全独立的SPI控制器星遵循串行外设接口〔SPI)规范弋同步、串行、全双工通信*组合的SPJ主机和从机:最大数据位速率为输入时钟速率的1/、管脚描述
管脚名称SPI管胸类型功能描述P0.4SCK0I/O串行时钟用于同歩SPI標口间数按儒输的时钟信号。该时钟总是由主机驱动井且从机接收-时抻可编程为高有效或低有效"它只在数据传输时才被滋活,其它任何时候都处于非濫活状态或三蛊=P0.5MISOOI主入从出血o信号是一牛单向的信号.它将数抵从从机件输到主机"当器件为从机时,审行数搏从该端口输出;当黠件为主机时,串行数搏从该端口输入-当从机投有械选择时,将该信号驱动为畠阻态.P0.6MOSIOLO主出从入MO刃信号是一个单向的信号,它将数攥从主机传输到从机"当器件为主机时.串行数抵从该端口输出;当器件为从机时,串行数抵从该端口输入。P0.7SSELOI/O从机选择SPI从机班择信号是一个低有效信号,用于指示披选择卷与数抿儒输的从机。每个从机都有各自特定的从机选择输入信号-在数抿处理之前,SSEL必颅曲低电平并在整个处理过程中惺持低电平.如果在数抿传输中SEEL信号变为高电平.传输将披中止=这种情况下,从机返回到空闲状态井将任何接收對的数按丢弃-对于这样的异常没有其它的指示°该信号不直接由主机驱劫.可通过软件诧用一个通用I/O口來驱动。注:配畫为SH主机WLPC2131聽须选择一牛合适的管膵用作SSEL功链井使其碟持高电平,只有述样,器件才能真正执行主机的功能.424、结构SPI'I'llfwp日总注MOSIJnMOSI_outMISOinSPSPI'I'llfwp日总注MOSIJnMOSI_outMISOinSP樹*器接口图A丄了SPI方框图4.2.5、SPI基本操作LPC2131的£PI是一个同步、全双工串行接口,毘大数据位速率为输入时钟速率的1/岳可以设置为主机或从机工作方式°在一次数据持输中,主机总是向从机发送一字节数抵,同时从机也总是向主机发送一字节数据』相关寄存器功能框图如图4.5g
®4.58SPI的寄存器功能框图如图斗阴£PI模武控制由SPCR寄存设置,包括设置为主/从机,SPI的时钟极性,时钟相位等*而SPI时钟由是由PCLK通过£PC€R分频后得到,SPCCR的值必须设置为大于等于8的偶数值,否则结果不可预测;对SPUR进行写操作时,即可将数据发送到:SPI总线上,而对SPDRj进行读操作则读出最近一次接收到的SPI传送的数据:SPSR为SPI状态寄存器,用于指示SPI总线上的各种状态,读取该寄存器时所有状态位清零;当SPIEfSPCR寄存器的曲位}置位,SPIF(SiPSR寄存器的d7位)或MODFfSPSR寄存器的d4位)置位时,SPINT中断标志置位,若己设置VIC允许SPI中断,则会产生:SPI中断,通过对SPINT写入1淸除中斷标志"如前所述*SPI时钟值让算如2溯寸钟=互生SPCCR其中.SPCCR的值必须为大于&的偶数°4.2.6、SPI——7段数码显示穿验■(吏用LPC2131的:SPI接[】作为主机向74HC595K送数据*数据内容市7段数码管显示,冋时£刃主机接收74HC595的移位输出数据.叩接收回前一个显尔数据。穿验硬件连接如图4.61所示"a.IX3161BS9苗gpc7OHR34-R4147DsS15F\望~2MO™1更a.IX3161BS9苗gpc7OHR34-R4147DsS15F\望~2MO™1更ILP0.-5弓10斗14罠13612竄KD711IKi/gMLSOOIDP:i.511IPIOK口A2C2A3C3A4U2PO.LVKrSID5P12SP舛gpg/Lscsa11P3.5MISOC-班B2B3田74HC595图461SPI接口控制74HC595琏件连接图图中已经将故高位输出目QH)连接到LPC2131的SPI接I】的MISOO>叮用来读回74HC刃亍移位输出的数据°了段数码管(有小数点的是g段数码管)真值表的由来。EasyARM2131发扳上使用的数码管是8段共阳数码管,低电平点亮,其示意原理图和段的定法如图4一百3所示"d•h"图4.63了段数码管各段左义和示童原理图(三)定时器0相关原理4.3.1、概述LPC2131具有2亍32位可编程定时/计数器,均具有4路捕获、4比较路匹配井輸出电路a定时器对外设时钟5胁周期进行计数.可选择产生中断或根据4个匹配寄存器的设定.在到达指建的定时值时执行其它动作(输出高/低电平、翻转或者无动作人它还包括4个捕获输入.用于在输入信号发生跳变时捕获定时器值,井可选择产主中断。可用于对内部事件进行计数的间隔定时器,或者通过捕获输入实现脉宽调制,亦可作为自由运行的定时器。定时器0和定时器1除了外设基地址以外,其它都相同。4.3.2、特性带可編程32位预分频器的32位定时器/计数器;具有多达4路32位的捕获通逍一当输入信号跳变时可取得定时器的瞬时值*也可选择使捕获事件产生中断:4个史位匹配寄存器;一匹配时定时器继续工柞,可选择产生中断*一匹配时停止定时器,可选择产生中断*一匹配时复位定时器,可选择产生中断.•多达4牛对应于匹配寄存器的外部输出.具有下列特性:一匹配时设置为低电平,一匹配时设置为高电平;—匹配时翻转;—匹配时无动作*4.3.3、结构捕获帚存器0捕轶樹存矗1捕茁崔#器ZSSS5S§匹配寄V器3匹配拧制寄右■耦蚪部匹配寄右器屮断崔住黑拎制捕获帚存器0捕轶樹存矗1捕茁崔#器ZSSS5S§匹配寄V器3匹配拧制寄右■耦蚪部匹配寄右器屮断崔住黑拎制5£预分烦寄社岸MAT[3:0]中斷CAP[3:0]匹K.^*±匹B>:豆住预分瓢中数器maxvalaHi企拧制奇右器症时耦I十感器宦时格拧制寄心幕4.3.4、功能框图图4.86基本定时器的寄存器功能锤图如图4.86t32位定时器TC的计数频率由严fJt经过PR进行分频控制得到,而定时器的启动/停止、计数复位由丁/制.当有捕获事件或者比较匹配事件发生时.IR会设置相关中断标志(因为不是定时器浴出而产生中断,所以图上用虚践连接),若已打开中断允许(VIC).则会产生中断°当然,预分频控制器PR只是控制分频数,而其对应的分频计数器是PC.但用户无须操作PC寄存器.4.3.5、定时器查询用定时器0实现0上秒定时,査询标志位等待定时时间到达,对蜂鸣器进行控制*让蜂鸣器毎秒钟响一次“程序在TOMRO中设定定时常数■在TOMCR中设置定时器0匹配后复位TC并产生中断标志,接下来程序査询等特中断标志置位°若定时时间到,先淸除Timed)中断标志,然后取反BEEP控制口的输出状态,流程图如图491所示*程序如程序淸单421所示。(四)脉宽调制相关原理4.4.1、概述LPC2131的脉宽调制器(PWM,PulseWidthModulator)建立在标准定时器0/1之上。应用可在PWM和匹配功能当中进行选择。PWM基于标准的定时器模块井具有其所有特性。不过LPC2131只将其PWM功能输出到管脚。定时器对外设时钟胡I)进疔计数,可选择产生中断或基于7个匹配寄存器,在到达指定的定时值时执行其它动作(设置为高/低电平、翻转或者无动作)。它还包括4个捕获输入.用于在输入信号发生跳变时捕获定时器值,并可选择在事件发生时产生中断”PWM功能是一个附加特性,建立在匹配寄存器事件基础之上.可独立控制上升沿和下降沿的位置,这样使PWM可以应用于更多的领域.例如.多相位电机控制通常需要3个非重叠的PWM输出,而这3牛输出的脉宽和位置需要独立进行控制*两个匹配寄存器可用控制单边沿PWM输出°PWMM艮0控制FWM周期率,另一个匹配寄存器(PWMMR1〜PWMMRG控制PWM边沿的位置。每个额外的单边沿PWM输出只需要一个匹配寄存器,因为所有PWM输出的重复率速率是相同的°多牛单边沿控制PWM输出在毎个PWM周期的开始,当PWMMRO发主匹配时,都有一个上升沿*弓乍匹配寄存器共同控制一个双边沿PWM输出*PWMMRO控制PWM周期速率,其它匹配寄存器控制(PWMMR1-PWMMR6)两个PWM边沿位置°每牛额外的双边沿PWM输出只需要两个匹配寄存器,因为所有PWM输出的重复率速率是相同的a使用双边沿控制PWM输出时,指定的匹配寄存器控制输出的上升和下降沿.这样就产生了正脉冲《当上升沿先于下降沿时〉和負脉冲(:当下降沿先于上升沿时人4.4.2、特性•7个匹配寄存器,可实现百个单边沿控制或3个双边沿控制PWM输出*或这两种类型的混合输出*一连续操作,可选择在匹配时产生中断:一匹配时停止定时器*可选择产生中断;一匹配时复位定时器,可选择产生中断。•每令匹配寄存器对应一个外部输出,具有下列特性*一匹配时设置为低电平;一匹配时设置为髙电平*—匹配时翻转;一匹配时无动作。•支持单边沿控制和•/或双边沿控制的PWM输出"单边沿控制PWM输出在每个咼期开始时总是为高电平,除非输出保持恒定低电平。双边沿控制PWM输出可在一个周期内的任何位置产生边沿*这样可同时产生正和负脉冲”•脉冲周期和宽度可以是枉何的定时器计数值口这样可实现灵活的分辨率和重员速率的设定*所有PWM输出都以相同的重复率发生。•双边沿控制的PWM输出可编程为正脉冲或负脉冲*•匹配寄存器更新与脉冲输出同步T防止产主错误的脉冲“软件必须在新的匹配值生效之前将它们释放。•如果不使能PWM模式.可作为一个标准定时器*•带可编程32位预分频器的32位定时器/计数器”•当输入信号跳变时4个捕获寄存器可取得定时器的瞬时值,也可选择使捕获事件产生中断*4.4.3、管脚描述管脚名称管脚方向管脚描述PWM1输出PWMiffl道1输出PO.OPWM2输出PWMiffl道2输出P0.7PWM3输出PWMiffl道m输出P0.1PWM4输出PWMia道斗输出P0.8PWM5输出PWMiffl道5输出P0.21PWMfi输出PWMiffl道(5输出P094.4.4、结构匹配寄存器右匹配寄存器0匹配翡存器1取濯百砰髀1转我皎罷;匹配寄存器2匹配寄存器3样濯寄砰辭3斋我供肚匹配常存器心廿農硏耳黠4石我忙能匹配寄存器5痒濯寄砰黯自F我供肚痒聂寄砰辭峙石我仗能锁"性陀寄•疗器匹配控制寄存器中断寄存器控制中斷匹配刘停止匹配时夏位匹配0匹配D匹配2匹配3musmMSELSmux卜匹It戈定时器计盟器mMSELe:0I。子匹配寄存器右匹配寄存器0匹配翡存器1取濯百砰髀1转我皎罷;匹配寄存器2匹配寄存器3样濯寄砰辭3斋我供肚匹配常存器心廿農硏耳黠4石我忙能匹配寄存器5痒濯寄砰黯自F我供肚痒聂寄砰辭峙石我仗能锁"性陀寄•疗器匹配控制寄存器中断寄存器控制中斷匹配刘停止匹配时夏位匹配0匹配D匹配2匹配3musmMSELSmux卜匹It戈定时器计盟器mMSELe:0I。子PWM5十PWMENA5CEnmux|-上QrenfPWM14-P/;MENA1FWMSEL2SQren》PWM2&PWMENA2PWMSEL33Qren-*FMW壬PWMENA3mMSEL4+PWM4<-FWMENA4匹S:4mux:》PW1M〜PWMENA6RENTCI预分频计数器定吋器控制寄W廖预労频寄存廖PWM^制富看翠PWMSEL2..6if16更位MAXVALTPWMENA1..6f4.4.5、基本操作LPC2131微控制器的PWM功能是建立在标准的定时器之上,它同样具有32位定时器及预分频控制电路,7个匹配寄存器,可实现(5个单边PWM或3个双边PWM输出,也可以采用这两种类型的混合输出。具有匹配中断、匹配PWMTC复、匹配PWMTC停止功能,如果不使能PWM模式,可作为一个标准的定时器°PWM的基本寄存器功能框图如图4.103,34.103PWM的基本寄存器功能框團如图4.103,32位定时器PWMTC的计数频率由輕处经过PWMPR进行分频控制得到,而定时器的启动/停止、计数复位由PWMTCR控制,当有比较匹配事件发生时,PWMIR会设置相关中断标志(因为不是定时器进出而产生中断,所以上图采用虚线连接),若已打开中断允许(VIC)则会产生中断°当然,预分频控制器PWMPR只是控制分频数,而其对应的分频计数器是PWMPC,但用户不需要操作PWMPC寄存器°PWM基本操柞方法:连接PWM功能營脚输出,即设置PINSEL0>PINSEL1;设置PWM定时器的时钟分频值(PWMPR.),得到所要的定时器时钟*•设置比较匹配控制(PWMMCR),并设置相应比较值(PWMMRje);设置PWM输出方式并允许PWM输出(PWMPCR)及锁存使能控制(PWMLERh设置PWMTCRr启动定时器,使能PWM;•运行过程中要更改比较值时,更茂之后要设置锁存使能°使用双边沿PWM输出时,建议使用PWM2、PWM4,PWM6;使用单边PWM输出时在PWM周期开始时为高电平.匹配后为低电平,使用PWMMR0作为PWM周期控制,PWMMRx柞为占空比控制亠4.4.6、PWM音乐输出通过改变PWMMR0的值,可以改变PWM输出的频率。实验设定PWM输出单边沿PWM方波,控制蜂鸣器BEEP发声,改变PWM的频率,蜂鸣器发出不同频率的声音,甚至可以播放音乐。
进tTPWM音乐输出实验,需要了解一些简谱和频率的关系,在RUKic-h中可以得到部分信息,若想了解更多的信息,请参考相关书籍。文件musich^出了常用简谱和频率的对应关系,如程序淸单4刖所示,流程图见图4.106oGEj音乐曲谱丢和节拍
各有在于一数组中PD7音乐曲谱丢和节拍
各有在于一数组中PWM初始fb时钟并频、匹配时基位TC.允许F*WM2输出、设萱占空比、启动PWM图4.106PWIVI音乐输出实验流程囲五、实验程序/、!•《、!•《、!•《、!•《、!•《、!•《、!•《彳”、*1j/不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不(「mvnQrir(c)****************************************************GuangzouZLG-MCUDevelopment**Co.,LTD.
graduateschool****FileInfo**Filename:main.c**LastmodifiedDate:2004-09-16**LastVersion:1.0**Descriptions:Themain()functionexampletemplate******Createdby:**Createddate:**Createdby:**Createddate:**Version:**Descriptions:**1.0Theoriginalversion****Modifiedby:Chenxibing**Modifieddate:2005-01-14**Version:**Descriptions:SPI实验,74HC595驱动7段数码管。**#include"config.h"#include"music.h"#defineBEEP1<<15//P0.12控制蜂鸣器#defineHC595_CS(1<<29)//P0.29口为74HC595的片选constuint32LEDS8=(0xFF<<18);constuint32LED1=(1<<18);constuint32LED2=(1<<19);constuint32LED3=(1<<20);constuint32LED4=(1<<21);constuint32LED5=(1<<22);constuint32LED6=(1<<23);constuint32KEY1=1vv16;constuint32KEY2=1vv17;constuint32KEY3=1vv18;constuint32KEY4=1<<19;constuint32KEY5=1<<20;constuint32KEY6=1<<21;uint32i;uint8rcv_data;constuint32HCMM[]={_MI,_SO,_LA,_LA,_SO,_LA,_MI,_RE,_MI,_SO,_LA,_LA,_SO,_LA,_MI,_MI,_SO,_LA,_LA,_SO,_LA,_MI,_RE,_SO,_MI,_RE,_MI,_RE,_DO,_RE,_LA,_1LA,_RE,_SO,_MI,_RE,_DO,_1LA,_SO,_MI,_RE,_MI,_RE,_DO,_RE,_LA,_1LA,_RE,_SO,_MI,_RE,_DO,_1LA,_SO,_MI,_RE,_MI,_RE,_DO,_RE,_LA,};constuint32HCMM_L[]={8,_&&16,一16,_8d,16,_4,8,_&&16,一16,_8,4,8,_&&16,一16,_8d,16,_4,4,_4,16,16,,16.,16,&一_4,4,_8d,&4,一16,_16,8d,4,_4,16,16,,16.,16,&一_4,4,_8d,&4,一16,_16,8d,_4,_4,_16,_16,_16,_16,_&_4,};**函数名称:DelayNS()**函数功能:长软件延时**入口参数:dly延时参数,值越大,延时越久**出口参数:无voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--)for(i=0;iv50000;i++);}voidDelay(uint32dly){uint32i;for(;dly>0;dly--)
for(i=0;iv0x7ffff;i++);}voiddingshi(){/*定时器0初始化*/=0;=0;=0x03;T0TCT0PRT0MCR标志for(i=0;iv0x7ffff;i++);}voiddingshi(){/*定时器0初始化*/=0;=0;=0x03;T0TCT0PRT0MCR标志*/T0MR0T0TCR=Fpclk*5;=0x01;T0IR=0x01;while((T0IR&0x01)==0);TOIR=0x01;**/*定时器设置为0*/时钟不分频*//*设置T0MR0匹配后复位T0TC,并产生中断/*5秒钟定时/*启动定时器/*等待定时时间到*/*/*/函数名称:函数功能:入口参数:出口参数:voidMSPI_Init(void){PINSEL0=0x00005500;//设置管脚连接SPI******MSPI_Init()初始化SPI接口,设置为主机。无无//设置SPI时钟分频//CPHA=0,数据在SCK的第一个时钟沿PINSEL2=PINSEL2&(〜//设置SPI时钟分频//CPHA=0,数据在SCK的第一个时钟沿SPCR=(0<<3)I采样(1<<4)|(1<<5)|(0<<6)|(0<<7);//CPOL=1,SCK为低有效(1<<4)|(1<<5)|(0<<6)|(0<<7);//MSTR=1,SPI处于主模式//LSBF=0,SPI数据传输MSB(位7)在先//SPIE=0,SPI中断被禁止**函数名称:MSPI_SendData()
**函数功能:向SPI总线发送数据。**入口参数:data待发送的数据**出口参数:返回值为读取的数据uint8MSPI_SendData(uint8data){IOCLR=HC595_CS;//片选74HC595SPI_SPDR=data;while(0==(SPI_SPSR&0x80));//等待SPIF置位,即等待数据发送完毕IOSET=HC595_CS;return(SPI_SPDR);//全部熄灭后,再全部点亮//全部熄灭后,再全部点亮//依次逐个点亮//依次逐个叠加//依次逐个递减//两个靠拢后分开0x00,0xFF,0x01,0x02,0x04,0x0&0x10,0x20,0x40,0x80,0x01,0x03,0x07,0x0F,0xlF,0x3F,0x7F,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81,0x81,0xC3,0xE7,0xFF,0xFF,0xE7,0xC3,0x81};//从两边叠加后递减/*此表为LED0〜F以及L、P的字模*/uint8constDISP_TAB[6]={//0123450xC0,0xF9,0xA4,0xB0,0x99,0x92};music(){PINSEL0=0x02vv14;for(i=0;i<40;i++){PWMMR0=Fpclk/HCMM[i];//设置输出频率PWMLER=0x05;//更新匹配值后,必须锁存IO1SET=~((LED_TBL[i])<<18);IO1CLR=((LED_TBL[i])<<18);Delay(HCMM_L[i]);}PINSEL0=0x00005500;}**函数名称:main()**函数功能:使用硬件SPI,74HC595驱动控制7段数码管显示。**先显示0〜F的字模,然后显示LPC2131字样。intmain(void){uint8i,k;PINSEL0=0x00005500;连接PINSEL1=0x00000000;PINSEL0=0x02vv14;IO0DIR=BEEPIHC595_CS;PINSEL2=PINSEL2&(~0x08);IO1DIR=LEDS8;出MSPI_Init();IO1SET=LEDS8;IO0SET=BEEP;PWMPR=0x00;PWMMCR=0x02;PWMTCPWMPCR=0x0400;PWMMR0=Fpclk/500;PWMMR2=PWMMR0/2;PWMLER=0x05;PWMTCR=0x02;PWMTCR=0x09;MSPI_Init();//设置SPI管脚//设置SPI管脚//P1[25:16]连接GPIO//设置LED1控制口为输//不分频,计数频率为Fpclk//设置PWMMR0匹配时复位//允许PWM2输出,单边PWM//50%占空比//PWM0和PWM2匹配锁存//复位PWMTC〃启动PWM输出//初始化SPI接口{if((IO0PIN&KEY6)==0)rcv_data=MSPI_SendData(DISP_TAB[0]);〃发送显示数据IO1CLR=LED6;DelayNS(20);IO1SET=LED6;DelayNS(20);if((IO0PIN&KEY1)==0){rcv_data=MSPI_SendData(DISP_TAB[1]);//发送显示数据IO1CLR=LED1;〃LED1点亮DelayNS(20);IO1SET=LED1;〃LED1熄灭dingshi();〃进入定时程序while(((IOOPIN&KEY6)!=0)&((TOIR&0x01)==0))/1当按键6未按下且定时时间到music();}〃进入音乐输出程序elseif((IO0PIN&KEY2)==0)//按键二按下{rcv_data=MSPI_SendData(DISP_TAB[2]);//发送显示数据数码显示2I01CLR=LED2;//LED2点亮DelayNS(20);〃延时IO1SET=LED2;//LED2熄灭dingshi();//进入定时程序while(((IO0PIN&KEY6)!=0)&((T0IR&0x01)==0))当按键6未按下且定时时间到music();}//进入音乐输出程序elseif((IO0PIN&KEY3)==0)//按键三按下{rcv_data=MSPI_SendData(DISP_TAB[3]);//发送显示数据数码显示3IO1CLR=LED3;//LED3点亮DelayNS(20);〃延时IO1SET=LED3;//LED2熄灭dingshi();//进入定时程序while(((IO0PIN&KEY6)!=0)&((T0IR&0x01)==0))当按键6未按下且定时时间到music();}//进入音乐输出程序elseif((IO0PIN&KEY4)==0)//按键四按下{rcv_data=MSPI_SendData(DISP_TAB[4]);//发送显示数据数码显示4IO1CLR=LED4;//LED4点亮DelayNS(20);〃延时IO1SET=LED4;//LED4熄灭dingshi();//进入定时程序while(((IO0PIN&KEY6)!=0)&((T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年关于完善合同法体系
- 2025茶叶的销售合同
- 一年级音乐课启蒙
- 2025年湖北省水果订购合同示范文本
- 应对寒潮的全方位策略
- 2025购房合同定金协议范本
- 艺术考级全攻略
- 医学硕士答辩全解析
- 2025标准版合同样本
- 2025物业管理委托合同前期物业服务合同
- 山水林田湖草生态环境调查技术规范DB41-T 1992-2020
- 大众旅游服务质量控制手册
- GB/T 44421-2024矫形器配置服务规范
- 大型活动策划与管理第八章 大型活动风险管理
- Q∕GDW 12165-2021 高海拔地区运维检修装备配置规范
- JGJ107-2016钢筋机械连接技术规程
- 妇科医生进修汇报课件
- 动态分析与设计实验报告总结
- 2024年江苏省泰州市海陵区中考一模数学试卷
- 从汽车检测看低空飞行器检测发展趋势
- DB32T 4740-2024 耕地和林地损害程度鉴定规范
评论
0/150
提交评论