《嵌入式系统原理与应用》实验报告05-SPI通信实验(共10页).doc
-
资源ID:13948055
资源大小:337KB
全文页数:10页
- 资源格式: DOC
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
《嵌入式系统原理与应用》实验报告05-SPI通信实验(共10页).doc
精选优质文档-倾情为你奉上嵌入式系统原理与应用实验报告实验序号:05 实验项目名称:SPI通信实验学号姓名ZRZ专业、班18计卓1班实验地点指导教师黄鹏程实验时间一、实验目的1熟悉proteus仿真软件的使用。2熟悉ADS1.2编译器的使用。二、实验设备(环境)及要求硬件:PC机; 软件:PC机操作系统windows XP,Proteus软件,ADS1.2 三、实验内容与步骤实验内容:搭建好环境的基础上,实现SPI通信实验。实验要求如下:利用LPC2138的SPI接口,实现与外围芯片74HC595的通信。控制74HC595实现流水灯效果或者实现八段数码管的显示效果。可根据自己的能力自由发挥。实验步骤:1. 在Proteus将实验所需的各个部件连接,确保连接正确无误。2. 在ADS当中将相应的代码完成,保证编译通过无异常。3. 在Proteus打开相应的hex文件进行仿真实验。 四、 实验结果与数据处理(一)1. 实验连接图 图1 实验原理图2. 程序代码#include "config.h"#define HC595_nCS (1<<0)#define HC595_RCK (1<<16)void delay(int time)int i;for(;time > 0;time-)for(i = 0;i < 3300;i+);void HC595_Init(void)PINSEL0=(PINSEL0&0xffff00ff)|0x;PINSEL0=PINSEL0&0xfffffffc;PINSEL2=PINSEL2&0xfffffff7;IO0DIR=IO0DIR|HC595_nCS;IO1DIR=IO1DIR|HC595_RCK;IO0CLR=HC595_nCS;S0PCCR=0x64;S0PCR=0x30;uint8 HC595_SendData(uint8 data) IO1CLR=HC595_RCK; S0PDR = data; while( 0=(S0PSR&0x80) ); IO1SET=HC595_RCK; return(S0PDR); int main (void)int i;HC595_Init();for(i=0;i<256;i+)HC595_SendData(i);delay(1000); return 0;3. 实验说明在这个实验中,主要的难点在于如何使用74HC595对LED流水灯进行控制,首先我们要对74HC595进行初始化 图2 74HC595初始化我们初始化完成之后,就可以通过控制不同的位来点亮不同位置的流水灯,这里对各个流水灯高低电平的控制我们可以用HC595_SendData()函数来完成。 图3 HC595_SendData()4. 实验效果 图4 实验效果图四、实验结果与数据处理(二)1. 实验连接图 图5 实验原理图2. 程序代码#include "config.h"#define HC595_nCS (1<<0)#define HC595_RCK (1<<16)void delay(int time)int i;for(;time > 0;time-)for(i = 0;i < 3300;i+);void HC595_Init(void)PINSEL0=(PINSEL0&0xffff00ff)|0x;PINSEL0=PINSEL0&0xfffffffc;PINSEL2=PINSEL2&0xfffffff7;IO0DIR=IO0DIR|HC595_nCS;IO1DIR=IO1DIR|HC595_RCK;IO0CLR=HC595_nCS;S0PCCR=0x64;S0PCR=0x30;uint8 HC595_SendData(uint8 data) IO1CLR=HC595_RCK; S0PDR = data; while( 0=(S0PSR&0x80) ); IO1SET=HC595_RCK; return(S0PDR);void nums(int x)switch(x)case 0:HC595_SendData(0x3F);break;case 1:HC595_SendData(0x06);break;case 2:HC595_SendData(0x5B);break;case 3:HC595_SendData(0x4F);break;case 4:HC595_SendData(0x66);break;case 5:HC595_SendData(0x6D);break;case 6:HC595_SendData(0x7D);break;case 7:HC595_SendData(0x07);break;case 8:HC595_SendData(0x7F);break;case 9:HC595_SendData(0x6F);break;int main (void)int i;HC595_Init();nums(1);delay(1000);nums(8);delay(1000);nums(1);delay(1000);nums(0);delay(1000);nums(7);delay(1000);nums(1);delay(1000);nums(6);delay(1000);nums(6);delay(1000);nums(4);delay(1000);nums(3);delay(1000);for(i=0;i<=9;i+)nums(i);delay(1000); return 0;3. 实验效果 图6 实验效果图 图7 实验效果图五、分析与讨论 在这一次实验中,我学会了使用74HC595来对流水灯和数码管进行控制,初步了解并且掌握了SPI串行通信,我知道了SPI是一个全双工的同步串行接口。在数据传输过程中,总线上只能是一个主机和一个从机进行通信,这些为之后的学习打下了基础。六、教师评语签名:日期:成绩专心-专注-专业