单片机实验指导书.docx

上传人:b****5 文档编号:5787208 上传时间:2023-01-01 格式:DOCX 页数:17 大小:191.75KB
下载 相关 举报
单片机实验指导书.docx_第1页
第1页 / 共17页
单片机实验指导书.docx_第2页
第2页 / 共17页
单片机实验指导书.docx_第3页
第3页 / 共17页
单片机实验指导书.docx_第4页
第4页 / 共17页
单片机实验指导书.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机实验指导书.docx

《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(17页珍藏版)》请在冰豆网上搜索。

单片机实验指导书.docx

单片机实验指导书

实验一:

GPIO输出控制实验

1实验目的

掌握LPC2000系列ARM,7微控制器GPIO输出控制。

2实验设备

硬件:

PC机一台

SmartARM2200教学实验开发平台一台

软件:

Windows98/2000系统,ADS1.2集成开发环境

3实验内容

使用GPIO抠控制4个LED流水灯显示。

4实验预习要求

(1)仔细阅读《ARM嵌入式系统基础教程》5.7节LPC2000引脚连接模块的相关内容,以及5.9节GPIO的相关内容。

(2)仔细阅读《ARM嵌入式系统实验教程》第1章的内容,了解SmartARM2200教学实验开发平台的硬件结构,注意键盘及LED显示电路。

(3)仔细阅读相关资料,了解ADS1.2集成开发环境、LPC2200专用工程模板以及EasyJTAG仿真器的应用。

5实验步骤

(1)安装ADS1.2,安装方法与一般软件的安装方法相同。

(2)启动ADS1.2,使用ARMExecutableImageforlpc2200工程模板建立一个工程LedDisp_C。

(3)由于ADS安装后默认字体是CourierNew,对于中文支持不完善,因此建议修改字体,选择Edit→Preferences,弹出如图1所示对话框,在Font选项设置字体为Fixedsys,Script为CHINESE_GB32,由于Tab在不同文本编辑器解释不同,建议在TabInsertsSpaces前打勾,使Tab键插入的是多个空格。

(4)选择Edit→DebugRelsettings,在DebugRelsettings对话框的左边选择ARMLinker项,然后在Output页设置工程链接地址ROBase为0x40000000,RWBase为0x40003000。

设置调试入口地址Imageentrypoint为0x40000000。

(5)进入AXD调试环境,打开【Options】→【ConfigureTarget…】,弹出ChooseTarget窗口,点击“ADD”添加仿真器的驱动程序,在添加文件窗口打开EasyJTAG.dll文件(在H-JTAG安装目录下)。

说明:

点击【开始】→【程序】→【ARMDeveloperSuitev1.2】→【AXDDebugger】可以直接运行AXD软件。

注意:

若在添加文件窗口中没有显示dll文件,设置文件浏览窗口的“文件夹选项(0)…”,将查看页中的“隐藏文件”项选用“显示所有文件”。

(6)安装H-JTAG软件:

在PC上运行安装文件H-JTAG..EXE,根据安装提示完成安装。

(7)配置H-JTAG软件:

将计算机并口与EasyJTAG-H仿真器相连,然后再将EasyJTAG-H仿真器的JTAG接口连接到开发板上,然后给开发板上电。

1H-JTAG设置

H-JTAG设置较简单,只要进行以下两步操作,其它采用默认设置即可。

a单击任务栏的H提示图标,将看见H-JTAG的主窗口,如图1所示。

单击放大镜图标按钮后应能看见调试代理发现ARM7处理器。

图1H-JTAG主窗口

b选择【Flasher】→【AutoDownload】选择自动下载项,如图2所示。

图2打开自动下载功能

2H-Flasher配置

H-Flasher配置有两种方法,直接加载配置文件与手动配置。

a加载配置文件配置

单击任务栏的F提示图标将看见H-Flasher的主窗口,单击Load菜单装在目标板配置文件LPC2200_ram.hfc,配置H-Flasher如图3所示。

图3装载配置文件

b手动配置

第一步:

单机任务栏的F提示图标,确认目标板的Flasher型号后,打开H-Flasher的FlashSelection选项,选择正确的Flash型号即可。

在本实验中,H-Flasher的配置根据LPC2200_ram.hfc进行配置,Flash型号为SST39VF1601.

第二步:

打开MemoryConfig选项,设置Flash与RAM的起始地址,如:

开发板的Bank0接Flash,Bank1接RAM,则设置如图4所示。

图4存储器地址配置

第三步:

打开InitScript选项,添加初始化命令,如:

开发板的Bank0接Flash,Bank1接RAM,初始化命令如图5所示。

图5初始化命令配置

3验证并启用配置

验证调试代理配置事否正确,打开H-Flasher的Programming选项单击Check按钮,如果正确,看看到所使用的Flash新票的型号如图6所示。

单击Check按钮时,H-Flasher就会起用当前新的配置值。

图6Flash编程选项

到此配置完成。

(8)启动ADS1.2,使用ARMExecutableImageforlpc2200工程模板建立一个工程LedDisp_C。

(9)由于ADS安装后默认字体是CourierNew,对于中文支持不完善,因此建议修改字体,选择Edit→Preferences,弹出如图1所示对话框,在Font选项设置字体为Fixedsys,Script为CHINESE_GB32,由于Tab在不同文本编辑器解释不同,建议在TabInsertsSpaces前打勾,使Tab键插入的是多个空格。

(10)选择Edit→DebugRelsettings,在DebugRelsettings对话框的左边选择ARMLinker项,然后在Output页设置工程链接地址ROBase为0x40000000,RWBase为0x40003000。

设置调试入口地址Imageentrypoint为0x40000000。

(11)在user组中的main.c中编写主程序代码。

(12)选用debugInExram生成目标,然后编译连接工程。

(13)将SmartARM2200教学实验开发平台上的跳线器JP12全部短接,JP9设置为OUTSIDE,JP10跳线器设置为Bank0-RAM、Bank1-FLASH。

(14)选择Project→Debug,启动AXD进行JTAG仿真器调试。

(6)单步运行程序,通过LED1~LED4的显示判断输出是否正确。

全速运行程序,观察的LED1~LED4显示。

图7字体和Tab设置

图8工程连接地址设置

6实验参考程序

/********************************************************************

*文件名:

main.c

*功能:

LED显示控制。

*通过GPIO直接控制4个LED产生流水灯效果

*说明:

将跳线器JP12全部短接

*这个警告可忽略,C2892E:

signedconstantoverflow

********************************************************************/

#include"config.h"

#defineLEDCON0xf0000000

constuint32DISP_TAB[8]={0x1fffffff,0x2fffffff,0x4fffffff,0x8fffffff,0xffffffff,0x0fffffff,0xffffffff,0x0fffffff};

/********************************************************************

*名称:

DelayNS()

*功能:

长软件延时

*入口参数:

dly延时参数,值越大,延时越久

*出口参数:

********************************************************************/

voidDelayNS(uint32dly)

{uint32i;

for(;dly>0;dly--)

{

for(i=0;i<5000;i++);

}

}

/********************************************************************

*名称:

main()

*功能:

根据表DISP_TAB来控制LED显示。

********************************************************************/

intmain(void)

{uint8i;

/*PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰*/

IO2DIR=LEDCON;//配置LED控制I/O方向

while

(1)

{

for(i=0;i<8;i++)

{

IO2CLR=DISP_TAB[i];//输出LED显示数据

DelayNS(10);//延时

IO2SET=0xffffffff;

}

}

return(0);

}

实验二:

定时器实验

1实验目的

掌握LPC系列ARM7微控制器中定时器0的基本设置及应用。

2实验设备

硬件:

PC机一台

SmartARM2200教学实验开发平台一台

软件:

Windows98/2000系统,ADS1.2集成开发环境

3实验内容

使用定时器0实现1s定时,控制蜂鸣器蜂鸣。

采用软件查询方式等待定时时间到达。

4预习要求

仔细阅读《ARM嵌入式系统基础教程》5.14节有关定时器0和定时器1的说明。

5实验步骤

(1)启动ADS1.2,使用ARMExecutableImageforlpc2200工程模板建立一个工程TimeBeep_C。

(2)在use组中的main.c中编写主程序代码。

(3)选用DebugInExaram生成目标,然后编译连接工程。

(4)将SmartARM2200教学实验平台上的JP4跳线短接,JP7跳线断开,JP9设置为OUTSIDE,JP10跳线设置为Bank0-RAM,Bank1-FLASH。

(5)选择Project→Debug,启动AXD方针调试。

可以全速运行程序,蜂鸣器就会响1s,停1s,依次循环。

6实验参考程序

/********************************************************************

*文件名:

main.c

*功能:

使用定时器0实现1秒定时,控制蜂鸣器蜂鸣。

(查询方式)

*说明:

JP4跳线短接,JP7跳线断开。

********************************************************************/

#include"config.h"

#defineBEEPCON1<<7//P0.7引脚控制B1,低电平蜂鸣

 

/*********************************************************************名称:

Time0Init()

*功能:

初始化定时器0,定时时间为1S。

*入口参数:

*出口参数:

********************************************************************/

voidTime0Init(void)

{/*Fcclk=Fosc*4=11.0592MHz*4=44.2368MHz

Fpclk=Fcclk/4=44.2368MHz/4=11.0592MHz

*/

T0PR=99;//设置定时器0分频为100分频,得110592Hz

T0MCR=0x03;//匹配通道0匹配中断并复位T0TC

T0MR0=110592;//比较值(1S定时值)

T0TCR=0x03;//启动并复位T0TC

T0TCR=0x01;

}

/********************************************************************

*名称:

main()

*功能:

初始化I/O及定时器,然后不断的查询定时器中断标志。

当定时时*间到达时,取反BEEPCON控制口。

********************************************************************/

intmain(void)

{

PINSEL0=0x00000000;//设置管脚连接GPIO

IO0DIR=BEEPCON;//设置I/O为输出

Time0Init();//初始化定时器0

while

(1)

{

while((T0IR&0x01)==0);//等待定时时间到

T0IR=0x01;//清除中断标志

if((IO0SET&BEEPCON)==0)

{

IO0SET=BEEPCON;

}

else

{

IO0CLR=BEEPCON;

}

}

return(0);

}

实验三:

模/数转换器实验

1实验目的

掌握模/数转换器得应用设置,进行电压信号的测量。

2实验设备

硬件:

PC机一台

SmartARM2200教学实验开发平台一台

软件:

Windows98/2000系统,ADS1.2集成开发环境

EasyARM软件

3实验内容

使用AIN0和AIN1测量两路直流电压,并将测量结果通过UART0想PC机发送。

4实验预习要求

(1)仔细阅读《ARM嵌入式系统基础教程》5.16节A/D转换器的相关说明。

(2)了解SmartARM2200教学实验开发平台的硬件结构,注意ADC部分的电路。

5实验步骤

(1)启动ADS1.2,使用ARMExecutableImageforlpc2200工程模板建立一个工程ADC_C。

(2)在user组的main.c中编写主程序代码,在config.h中添加代码“#include”。

(3)选用DebugInExram生成目标,然后编译链接工程,

(4)将SmartARM2200教学实验开发平台上的JP9设置为OUTSIDE,JP10设置为Bank0-RAM、Bank1-FLASH。

(5)使用串口延长线吧SmartARM2200教学实验开发平台的CZ2(UART0)与PC机的COM1连接。

PC机运行EasyARM软件,设置串口为COM1,波特率为115200。

(6)选择JProject→Debug,启动AXD进行JTAG仿真调试。

(7)全速运行程序,PC机上的EasyARM软件会不断的显示AIN0和AIN1的电压值。

(8)调整SmartARM2200教学实验开发平台的W1或W2,观察AIN0或AIN1测量值的变化。

6实验参考程序

/********************************************************************

*文件名:

main.c

*功能:

使用ADC模块的通道0、1进行电压的测量,然后将转换结果从*串口输出,上位机使用EasyARM软件全仿真的DOS字符窗口观察。

*说明:

由W1、W2调节测量电压值;

*通讯格式:

8位数据位,1位停止位,无奇偶校验,波特率为115200。

********************************************************************/

#include"config.h"

 

/********************************************************************

*名称:

DelayNS()

*功能:

长软件延时

*入口参数:

dly延时参数,值越大,延时越久

*出口参数:

********************************************************************/

voidDelayNS(uint32dly)

{

uint32i;

for(;dly>0;dly--)

{

for(i=0;i<5000;i++);

}

}

 

/********************************************************************

*名称:

UART0Init()

*功能:

初始化串口0。

设置为8位数据位,1位停止位,无奇偶校验

*入口参数:

bps通讯波特率

*出口参数:

********************************************************************/

voidUART0Init(uint32bps)

{

uint16Fdiv;

PINSEL0=(PINSEL0&(~0x0F))|0x05;//不影响其它管脚连接,设置I/O连//接到UART0

U0LCR=0x83;//DLAB=1,可设置波特率

Fdiv=(Fpclk/16)/bps;//设置波特率

U0DLM=Fdiv/256;

U0DLL=Fdiv%256;

U0LCR=0x03;

}

/********************************************************************

*名称:

UART0SendByte()

*功能:

向串口发送字节数据,并等待发送完毕。

*入口参数:

data要发送的数据

*出口参数:

********************************************************************/

voidUART0SendByte(uint8data)

{

U0THR=data;//发送数据

while((U0LSR&0x40)==0);//等待数据发送完毕

}

 

/********************************************************************

*名称:

UART0SendStr()

*功能:

向串口发送一字符串

*入口参数:

srt要发送的字符串的指针

*出口参数:

********************************************************************/

voidUART0SendStr(char*str)

{

while

(1)

{

if(*str=='\0')break;

UART0SendByte(*str++);//发送数据

}

}

/********************************************************************

*名称:

PCDispChar()

*功能:

向PC机发送显示字符。

*入口参数:

x显示位置的纵坐标,0-79

*y显示位置的横坐标,0-24

*chr显示的字符,不能为0xff

*color显示的状态包括前景色、背景色、闪耀位。

它与dos的字*符显示状态一样。

*即0~3位:

前景色,4~6位:

背景色,7位:

闪耀位。

*出口参数:

********************************************************************/

voidPCDispChar(uint8x,uint8y,uint8chr,uint8color)

{

UART0SendByte(0xff);//发送起始字节

UART0SendByte(x);//发送字符显示坐标(x,y)

UART0SendByte(y);

UART0SendByte(chr);//发送显示字符

UART0SendByte(color);

}

 

/********************************************************************

*名称:

ISendStr()

*功能:

向PC机发送字串,以便显示。

*入口参数:

x显示位置的纵坐标,0-79

*y显示位置的横坐标,0-24

*color显示的状态包括前景色、背景色、闪耀位。

它与dos的字*符显示状态一样。

即0~3位:

前景色,4~6位:

背景色,*7位:

闪耀位。

*str要发送的字符串,字串以'\0'结束

*出口参数:

********************************************************************/

voidISendStr(uint8x,uint8y,uint8color,char*str)

{

while

(1)

{

if(*str=='\0')break;//若为'\0',则退出

PCDispChar(x++,y,*str++,color);//发送显示数据

if(x>=80)

{

x=0;

y++;

}

}

}

 

/********************************************************************

*名称:

main()

*功能:

进行通道0、1电压ADC转换,并把结果转换成电压值,然后发*送到串口。

*说明:

在CONFIG.H文件中包含stdio.h。

********************************************************************/

intmain(void)

{

uint32ADC_Data;

charstr[20];

UART0Init(115200);//初始化UART0

PINSEL1=0x01400000;//设置P0.27、P0.28连接到AIN0、AIN1

/*进行ADC模块设置,其中x<

ADCR=(1<<0)|//SEL=1,选择通道0

((Fpclk/1000000-1)<<8)|//CLKDIV=Fpclk

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1