单片机实验实验一 下载本文

单片机原理实验报告

学生姓名 所在班级 实验组成员 实验成绩 吴双双

电子2班 吴炜 吴梅梅 实验一 使用 C 语言实现 A 口作为输入口、B 口作为输出口

【实验目的】

掌握利用 C 语言来实现 A 口作为输入口、B 口作为输出口的方法。 【实验设备】

1. 装有 Windows 系统和 μ’nSP? IDE 集成开发环境的 PC 机一台,μ’nSP?十六位单片机实验箱一 个。

2. 本实验用到的实验箱硬件模块为:SPCE061A 核心及周边电路模块(包含 32 个 I/O 口),发光二 极管电路模块,高低电平发生按键电路模块。 【实验要求】

1. 编程要求:编写 C 语言程序。

2. 实现功能:IOA 口低八位接键盘,IOB 口低八位接 8 个发光二极管,按下按键,控制点亮对应的发光二极管。

3. 实验现象:不同的发光二极管点亮表示有不同的键按下。当第一个按键按下时,第一个发光二 极管点亮,第 i(1≤i≤8)个按键按下时,第(1≤i≤8)个发光二极管点亮。 【实验原理】

程序流程图:

【实验结果】 1、源程序清单:

#include%unsigned int KeyScan(void); void Delay(void); int main(void) {

Unsigned int uiKey; *P_IOA_Dir=0x0000; *P_IOA_Attrib=0x0000; * P_IOA_Data=0x0000;

*P_IOB_Dir=0xffff; *P_IOB_Attrib=0xffff; * P_IOB_Data=0x0000;

while(1) {

uiKey=KeyScan(); if(uiKey!=0) {

* P_IOB_Data=uiKey; }

*P_Watchdog_Clear=0x0001; } }

2、程序运行结果:

unsigned int KeyScan(void)

{

unsigned int uiData; unsigned int uiTemp; uiData=*P_IOA_Data; uiData=uiData&0x00ff; if(uiData1=0) {

Delay();

uiTemp=*P_IOA_Data; uiTemp=uiTemp&0x00ff; if(uiData1=uiTemp) uiData=0;

}

return uiData; }

void Delay(void) {

unsigned int uiCount;

for(uiCount=0;iCount<=3000;uiCount++) {

*P_Watchdog_Clear=0x0001; } }

现象文字描述:当按下按键时,对应的二极管发光。当第一个按键按下时,第一个发光二 极管点亮。

【实验总结】

1、虽然老师在理论课时已经讲过实验的相关内容,但在实践时还是感到手足无措。但所幸老师耐心的为我们讲解演示了实验,让我们最终完成了实验。

2、实践是检验真理的唯一标准,学习只有多动手才能深刻的理解。实验不仅锻炼了我们的动手能力,也培养了同学的协作能力。

实验二定时器 Timer A/B

【实验目的】

1. 通过实验熟悉定时器 Timer A/B 的工作原理。

2. 掌握预置数单元 P_TimerA/B_Data 和定时控制单元 P_TimerA/B_Ctrl 的设置方 3. 掌握定时器 Timer A/B 的编程方法。 【实验设备】

1. 装有 Windows 系统和 μ’nSP? IDE 集成开发环境的 PC 机一台,μ’nSP?十六位单片机实验箱一 个。

2. 本实验用到的实验箱硬件模块为:SPCE061A 核心及周边电路模块(包含 32 个 I/O 口),发光 二极管电路模块。 【实验要求】

1. 编程要求:编写一个汇编语言程序。

2. 实现功能:设置不同的计数初值、不同的占空比和不同的时钟源,IOB8 同时和一个发光二极管连接,用户可以通过观察二极管点亮的持续时间和熄灭持续的时间。

3. 实验现象:计数初值不同、占空比不同、时钟源不同,发光二极管的亮灭状态变化就不同。 【实验原理】

程序流程图:

【实验结果】