- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SPI与定时器37
微机原理实验报告 实验名称:流水灯和七段数码显示器 院 系:物理与机电工程学院 专业班级:08电子信息工程 学 号:2008041537 学生姓名:巫赛花 指导教师:涂二生 完成时间:2011年4月19日 报告成绩: 流水灯和七段数码显示器 实验目的: 掌握SPI主机实验——7段数码管显示的使用和程序的应用; 将GPIO与SPI组合成倒计时显示(当数码管显示完后LED流水灯开始工作); 掌握相关程序的编写和更改; 实验器材: 计算机一台,EasyARM2131开发板,AXD仿真软件。 三、实验原理: LPC2131拥有一个硬件SPI接口。它是一个同步、全双工串行接口,最大数据位速率为时钟速率的1/8,可配置为主机或者从机。 在同一总线上可以有多个主机或从机,但同一时刻只能有一个主机和一个从机能够进行通信,在一次数据传输过程中,主机向从机发送一字节数据,而从机也向主机返回一字节数据。 SPI可应用于: ● 串行存储器,如DataFlash和3线E^2PROM等; ● 串行外设,如ADC、DAC、LCD控制器、CAN控制器和传感器等; ● 外部协处理器。 特性: ● 两个完全独立的SPI控制器; ● 遵循串行外设接口(SPI)规范; ● 同步、串行、全双工通信; ● 组合的SPI主机和从机; ● 最大数据位速率为输入时钟速率的1/8。 SPI设置为主机时如何处理数据传输: 下面的步骤(参考图4.59)描述了SPI设置为主机时如何处理数据传输。该处理假设已经设定管脚连接SPI,并且任何之前的数据已经结束。 1. 设置SPCCR得到需要的SPI时钟; 2. 设置SPCR控制SPI为主机模式,配置SPI时钟极性等; 3. 选择从机,将要发送的数据写入SPI数据寄存器。此写操作启动SPI数据传输; 4. 等待SPI状态寄存器中的SPIF位置位。SPIF位将在SPI数据传输的最后一个周期后置位; 5. 读取SPI状态寄存器; 6. 从SPI数据寄存器中读出接受到的数据(可选); 7. 如果有更多数据需要发送,则跳到第3步。 SPI主机操作流程图 7段共阳数码管真值表 四、实验程序: 实验说明:本次实验的目的是实现数码管显示2008071537后LED灯闪烁一次的效果,并且SPI的显示时间间隔与定时器0一致;不断循环即可。 (注:下划线为修改处) #include config.h #define HC595_CS (1 29) // P0.29口为74HC595的片选 const uint32 LED1=(118); /******************************************************************************************************** ** 函数名称:DelayNS() ** 函数功能:长软件延时 ** 入口参数:dly 延时参数,值越大,延时越久 ** 出口参数:无 ********************************************************************************************************/ void DelayNS(uint32 dly) { uint32 i; for(; dly0; dly--) for(i=0; i50000; i++); void __irq IRQ_Timer0 (void) { uint8 rcv_data; if (rcv_data==0x90) /*定义LED1开始闪烁的条件 IO1CLR = LED1; DelayNS(40); /* 关闭BEEP */ IO1SET = LED1;DelayNS(40); T0IR = 0x01; /* 清除中断标志 */ VICVectAddr = 0x00; /* 通知VIC中断处理结束 */ } /******************************************************************************************************** ** 函数名称:MSPI_Init()
文档评论(0)