IO接口实验文档格式.docx
- 文档编号:16200219
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:13
- 大小:1.23MB
IO接口实验文档格式.docx
《IO接口实验文档格式.docx》由会员分享,可在线阅读,更多相关《IO接口实验文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
该同学的实验是否达到要求:
A.达到□B.基本达到□C.未达到□
实验报告是否规范:
A.规范□B.基本规范□C.不规范□
实验过程是否详细记录:
A.详细□B.一般□C.没有□
教师签名:
年月日
1、实验目的及内容
熟悉ARM芯片I/O口编程配置方法。
通过实验掌握ARM芯片的I/O口控制LED显示的方法。
二、实验原理及基本技术路线图(方框原理图或程序流程图)
S3C44B0X芯片上共有71个多功能的输入输出管脚,它们分为7组I/O端口。
两个9位的输入/输出端口(端口E和F)
两个8位的输入/输出端口(端口D和G)
一个16位的输入/输出端口(端口C)
一个10位的输出端口(端口A)
一个11位的输出端口(端口B)
每组端口都可以通过软件配置寄存器来满足不同系统和设计的需要。
在运行主程序之前,必须先对每一个用到的管脚的功能进行设置,如果某些管脚的复用功能没有使用,可以先将该管脚设置为I/O口。
1.S3C44B0X芯片和端口相关的寄存器有:
(1)端口控制寄存器(PCONA-G)
在S3C44B0X里,大多数的引脚都是多功能引脚。
因此,应当为每个引脚选择功能。
端口控制寄存器(PCONn)决定了每一个引脚的功能。
(2)端口数据寄存器(PDATA-G)
如果这些端口被设定为输出端口,输出数据可以被写入到PDATn的相应的位;
如果被设定为输入端口,输入数据可以被读到PDATn的相应的位。
(3)端口上拉寄存器(PUPC-G)
端口上拉寄存器控制着每一个端口组的上拉寄存器的使能端。
当相应的位被设为0时,引脚接上拉电阻;
当相应的位为1时,引脚不接上拉电阻。
(4)外部中断控制寄存器(EXTINT)
8个外部中断可以用多种信号方式所请求。
外部中断寄存器为外部中断设置了信号触发方法选择位,也设置了触发信号的极性选择位。
外部中断请求信号触发的方法有以下几种:
低电平触发、高电平触发、下降沿触发、上升沿触发、双沿触发。
8个外部中断寄存器的具体设置情况请详见I/O的特殊功能寄存器。
因为每个外部中断引脚都有一个数字滤波器,这让中断控制器能够识别长于3个时钟周期的请求信号。
在实验板上端口B的引脚PB9和PB10被设置为输出口,并且分别与LED1、LED2连接。
2.电路原理
发光二极管LED1和LED2的正极与S3C44B0X芯片的47脚VDD33连接,VDD33可以输出3.3V的电压,负极通过限流电阻R95、R96和S3C44B0X芯片的23脚(NGCS4)、24(NGCS5)脚连接。
这两个管脚属于端口B,已经配置为输出口。
通过向PDATB寄存器中相应的位写入0或1可以使管脚23、24输出低电平或高电平。
当23、24管脚输出低电平时,LED点亮;
当23、24管脚输出高电平时,LED熄灭。
三、所用仪器、材料(设备名称、型号、规格等或使用软件)
PC一台(WinXP)、EmbestIDE2003集成开发环境。
四、实验方法、步骤(或:
程序代码或操作过程)
主程序:
/*---includefiles---*/
#include"
44blib.h"
44b.h"
/*---functiondeclare---*/
voidMain(void);
/*---externfunction---*/
externvoidLed_Test();
/*---functioncode---*/
*name:
main
*func:
ccodeentry
*para:
none
*ret:
*modify:
*comment:
voidMain(void)
{
sys_init();
/*Initial44B0X'
sInterrupt,PortandUART*/
//_Link();
/*PrintMiscinfo*/
/*printfinterface*/
Uart_Printf("
\nEmbestS3C44B0XEvaluationBoard(S3CEV40)\n"
);
for(;
;
)
{
Led_Test();
}
}
LED子程序:
/*********************************************************************************************
*File:
light.c
*Author:
embest
*Desc:
controlboard'
stwoLEDsonorofff
*History:
*********************************************************************************************/
/*---globalvariables---*/
intled_state;
/*LEDstatus*/
voidLed_Test();
/*LEDtest*/
voidleds_on();
/*allledson*/
voidleds_off();
/*allledsoff*/
voidled1_on();
/*led1on*/
voidled1_off();
/*led1off*/
voidled2_on();
/*led2on*/
voidled2_off();
/*led2off*/
//voidLed_Display(intLedStatus);
/*ledcontrol*/
/*---functioncode---*/
Led_Test
ledstestfunciton
voidLed_Test()
/*1on->
2on->
allon->
2off->
1off*/
leds_off();
Delay(1000);
led1_on();
led1_off();
led2_on();
leds_on();
led2_off();
leds_on
allledson
voidleds_on()
Led_Display(0x3);
leds_off
allledsoff
voidleds_off()
Led_Display(0x0);
led1_on
led1on
voidled1_on()
led_state=led_state|0x1;
Led_Display(led_state);
led1_off
led1off
voidled1_off()
led_state=led_state&
0xfe;
led2_on
led2on
voidled2_on()
led_state=led_state|0x2;
led2_off
led2off
voidled2_off()
0xfd;
Led_Display
LedDisplaycontrolfunction
LedStatus--led'
sstatus
voidLed_Display(intLedStatus)
led_state=LedStatus;
if((LedStatus&
0x01)==0x01)
rPDATB=rPDATB&
0x5ff;
else
rPDATB=rPDATB|0x200;
0x02)==0x02)
0x3ff;
rPDATB=rPDATB|0x400;
五、实验过程原始记录(测试数据、图表、计算等)
1、设置环境变量
2、单步调试
跳转到主程序
进入主程序
系统初始化
端口初始化
只关心端口B的9和10号引脚,将两个引脚初始化为0,表示灯亮
进入led_test子程序
将参数0传给led_display(),用来控制执行if语句
进入led_display()函数,将参数分别与1和2相与,控制执行的IF语句,第一个IF语句控制1灯,第二个控制2灯
进入Led_on
执行rPDATB=rPDATB&
0x5ff语句,使端口B的9号位为0,10号位为1(即1灯亮,2灯灭)
6、实验结果、分析和结论(误差分析与数据处理、成果总结等。
其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)
本次实验一开始有许多不明白的地方,通过老师现场讲述指导下完成了实验。
通过这次实验,我熟悉了ARM芯片I/O口编程的配置方法,掌握了ARM芯片的I/O口控制LED显示的方法。
注:
教师必须按照上述各项内容严格要求,认真批改和评定学生成绩。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IO 接口 实验