无线传感实验一.docx
- 文档编号:8430685
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:19.72KB
无线传感实验一.docx
《无线传感实验一.docx》由会员分享,可在线阅读,更多相关《无线传感实验一.docx(14页珍藏版)》请在冰豆网上搜索。
无线传感实验一
实验七EL-IOT-II实验箱采集节点DS18B20实验
班级:
网工13101姓名:
徐香奇学号:
201317030126
一、实验目的
1、掌握DS18B20的时序。
2、掌握7279的操作时序。
二、实验内容
编写一个程序,通过7279驱动数码管显示采集到的温度值。
三、实验设备
计算机、EL-IOT-II实验箱、仿真器、USB线(一头方的一头扁的)。
四、实验原理
7279的时序类似SPI,根据时序图用GPIO来模拟7279时序,从而显示采集到的温度值。
五、实验步骤
1、将实验箱上的跳线帽JP7短接在右边;
2、将仿真器连接到实验箱的JTAG2接口上,给实验箱上电;
3、在计算机上打开KeiluVision4环境,并打开实验程序\EL-IOT-II实验箱程序\LM3S811程序\DS18B20\DS18B20.Uvproj,编译、下载程序;
4、按下复位键(REST2)观察数码管上显示的温度值,若显示不正确请给实验箱重新上电;
5、用手摸住DS18B20,观察数码管上显示的温度值的变化。
六、思考题
1、如何控制DS18B20的时序?
答:
修改使用如下函数控制时序
voiddelay(unsignedintt)//延时函数
{
SysCtlDelay(t*(SysCtlClockGet()/3000)/1000);
}
voidshort_delay(void)//短延时,用于控制时钟
{
SysCtlDelay(15*(SysCtlClockGet()/3000)/1000);//延时大约10us
}
voidlong_delay(void)//短延时,用于控制时钟
{
SysCtlDelay(20*(SysCtlClockGet()/3000)/1000);//延时大约15us
}
实验八EL-IOT-II实验箱采集节点7279实验
班级:
网工13101姓名:
徐香奇学号:
201317030126
一、实验目的
1、学习GPIO使用及其相关的API函数。
2、学会对HD7279的操作及编程,并体会这种控制芯片的优势。
二、实验内容
编程使用Cortex-M3的GPIO向HD7279中写入控制命令、显示数据和读按键值等,实现键值的显示。
三、实验设备
计算机、EL-IOT-II实验箱、仿真器、USB线(一头方的一头扁的)。
四、实验原理
配置GPIO,模拟出符合HD7279的总线时序,从而向HD7279中写入控制命令、显示数据和读取按键值等。
使能GPIO中断,并将HD7279的中断信号引致该中断,有按键按下即会产生中断。
五、实验步骤
1、将仿真器连接到实验箱的JTAG2接口上,给实验箱上电;
3、在计算机上打开KeiluVision4环境,并打开实验程序\EL-IOT-II实验箱程序\LM3S811程序\HD7279\HD7279.Uvproj,编译、下载程序;
4、按下复位键(REST2),然后按下不同的按键,观察数码管显示的数据是否与键盘一一对应。
六、思考题?
1、如何控制7279?
/*
接线:
1、用导线将MCU的IO1----IO3、INT0分别连接到HD7279的7279_CS、7279_CLK、7279_DATA、7279_KEY,
跳线帽JP1--JP3、JP10短接在左侧。
。
2、用导线将HD7279的7279_A、7279_B、7279_C、7279_D、7279_E、7279_F、7279_G、7279_DP分别连接到
LEDDISP的LED_A、LED_B、LED_C、LED_D、LED_E、LED_F、LED_G、LED_DP。
3、用导线将HD7279的7279_C1、7279_C2、7279_C3、7279_C4分别连接到LEDDISP的LED_C1、LED_C2、LED_C3、LED_C4。
4、用导线将HD7279的7279_A、7279_B、7279_C、7279_D、7279_E、7279_F、7279_G、7279_DP分别连接到
KEY的KEY7、KEY6、KEY5、KEY4、KEY3、KEY2、KEY1、KEY8。
5、用导线将HD7279的7279_C1连接到KEY的插孔KEY
过程:
上电,运行程序,按键,观察LED显示的数据是否与键盘一一对应。
*/
#include"systemInit.h"
#include"hw_memmap.h"
#include"hw_types.h"
#include"hw_ints.h"
#include"sysctl.h"
#include"systick.h"
#include"gpio.h"
#defineCTL_PERIPHSYSCTL_PERIPH_GPIOC
#defineCTL_PORTGPIO_PORTC_BASE
#defineCSGPIO_PIN_4//定义CS
#defineCLKGPIO_PIN_5//定义CLK
#defineDATGPIO_PIN_6//定义DATA
//定义INT0
#defineINT0_PERIPHSYSCTL_PERIPH_GPIOE
#defineINT0_PORTGPIO_PORTE_BASE
#defineINT0_PINGPIO_PIN_1
#defineCS_LGPIOPinWrite(CTL_PORT,CS,0x00);//7279的片选输出低电平
#defineCLK_LGPIOPinWrite(CTL_PORT,CLK,0x00);//7279的时钟输出低电平
#defineDAT_LGPIOPinWrite(CTL_PORT,DAT,0x00);//7279的数据输出低电平
#defineCS_HGPIOPinWrite(CTL_PORT,CS,0xFF);//7279的片选输出高电平
#defineCLK_HGPIOPinWrite(CTL_PORT,CLK,0xFF);//7279的时钟输出高电平
#defineDAT_HGPIOPinWrite(CTL_PORT,DAT,0xFF);//7279的数据输出高电平
#definecmd_reset0xa4//7279的复位命令
#definecmd_test0xbf//7279的测试命令
#definecmd_left0xa1//7279的左移位命令
#definecmd_read0x15//7279的读缓冲命令
#definedecode10xc8//7279的译码显示命令
voiddelay(unsignedintt)//延时函数
{
SysCtlDelay(t*(SysCtlClockGet()/3000)/1000);//延时到输入量为0
}
voidshort_delay(void)//短延时,用于控制时钟
{
SysCtlDelay(10*(SysCtlClockGet()/3000)/1000);//延时大约10us
}
voidlong_delay(void)//短延时,用于控制时钟
{
SysCtlDelay(15*(SysCtlClockGet()/3000)/1000);//延时大约15us
}
voidsend_byte(unsignedcharout_byte)//发送数据
{
unsignedshorti;//设置循环变量
GPIODirModeSet(CTL_PORT,DAT,GPIO_DIR_MODE_OUT);
//设置GPIO为输出口;
CS_L;//置低片选信号
long_delay();//延时等待稳定
for(i=0;i<8;i++)//写入8bit数据
{
if(out_byte&0x80)//最高位为1
DAT_H//数据线输出高电平
elseDAT_L;//否则输出低电平
CLK_H;//置高时钟位
short_delay();//延时至稳定
CLK_L;//置低时钟位
short_delay();//延时至稳定
out_byte<<=1;//输出参数变量右移一位
}
short_delay();//延时至稳定
DAT_L;//置高片选信号
}
unsignedcharreceive_byte(void)//接收数据
{
unsignedchari,in_byte=0;//定义变量
GPIODirModeSet(CTL_PORT,DAT,GPIO_DIR_MODE_IN);
//设置DAT为输入口;
DAT_H;//数据线输出高电平
long_delay();//延时等待稳定
for(i=0;i<8;i++)//读出8bit数据
{
CLK_H;//置高时钟位
short_delay();//延时至稳定
in_byte<<=1;//已收到的数据移位
if(GPIOPinRead(CTL_PORT,DAT))in_byte|=1;//向数据中增加一位
CLK_L;//置低时钟位
short_delay();//延时至稳定
}
DAT_L;//数据线输出低电平
short_delay();//延时至稳定
return(in_byte);//返回接收到的数据
}
unsignedcharread7279(void)//读键值
{
send_byte(cmd_read);//发送读键值命令
return(receive_byte())+1;//返回键值
}
voidwrite7279(unsignedcharcmd,chardat)//向LED写显示数据和命令
{
if(cmd!
=255)send_byte(cmd);//写命令
if(dat!
=255)send_byte(dat&15);//写显示数据
CS_H;//置高片选位
}
voidtest7279(void)//显示测试程序
{
send_byte(cmd_test);//发送测试命令
delay(50000);//等待以便观察
send_byte(cmd_reset);//发送复位命令
}
voidinit(void)//芯片初始化
{
SysCtlPeripheralEnable(CTL_PERIPH);//使能GPIO口外设
SysCtlPeripheralEnable(INT0_PERIPH);//使能GPIO口外设
GPIODirModeSet(CTL_PORT,(CS|CLK),GPIO_DIR_MODE_OUT);//设置GPIO为输出口;
GPIODirModeSet(INT0_PORT,(INT0_PIN),GPIO_DIR_MODE_IN);//设置INT0所在管脚为输入
GPIOIntTypeSet(INT0_PORT,INT0_PIN,GPIO_FALLING_EDGE);//设置INT0管脚的中断类型下降沿触发
GPIOPinIntEnable(INT0_PORT,INT0_PIN);//使能INT0所在管脚的中断
IntEnable(INT_GPIOE);//使能GPIO端口中断
IntMasterEnable();//使能处理器中断
}
voidGPIO_Port_E_ISR(void)//GPIOB的中断服务函数,在startup.s中注册中断函数
{
unsignedlongulStatus;
ulStatus=GPIOPinIntStatus(INT0_PORT,true);//读取中断状态
GPIOPinIntClear(INT0_PORT,ulStatus);//清除中断状态,重要
if(ulStatus&INT0_PIN)//如果INT0的中断状态有效
{
write7279(cmd_left,0xff);//显示数据左移一位
write7279(decode1,read7279());//显示键值
}
}
intmain(void)//系统主程序
{
jtagWait();//防止JTAG失效
clockInit();
init();//初始化
send_byte(cmd_reset);//复位7279
test7279();//7279运行测试程序
while
(1);//循环
}
实验一LM3S9B96IO实验
班级:
网工13101姓名:
徐香奇学号:
201317030126
一、实验目的
1、学习GPIO及其相关API函数的使用方法。
2、掌握GPIO控制LED灯闪烁的方法。
二、实验内容
调用API函数使连接LED灯的GPIO管脚输出高低电平,控制LED灯闪烁。
三、实验设备
计算机、EL-IOT-II实验箱、仿真器、USB线(一头方的一头扁的)。
四、实验原理
通过调用GPIO库函数控制连接LED灯的管脚输出高低电平,使LED灯闪烁。
五、实验步骤
1、将仿真器连接到实验箱的JTAG1接口,给实验箱上电;
2、在计算机上打开KeiluVision4环境,打开实验程序\EL-IOT-II实验箱程序\LM3S9B96程序\boards\dk-lm3s9b96\blinky下的工程文件blinky.uvproj,编译、下载程序;
3、按下复位键REST1,观察实验箱上的LED1灯是否闪烁。
六、思考题
1、如何用GPIO控制LED灯闪烁?
答:
修改循环语句使之按照想要的情况闪烁。
SOS信号闪烁循环如下:
while
(1)
{
//1
//TurnontheLED.
//
GPIO_PORTF_DATA_R|=0x08;
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//
//TurnofftheLED.
//
GPIO_PORTF_DATA_R&=~(0x08);
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//2
//TurnontheLED.
//
GPIO_PORTF_DATA_R|=0x08;
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//
//TurnofftheLED.
//
GPIO_PORTF_DATA_R&=~(0x08);
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//3
//TurnontheLED.
//
GPIO_PORTF_DATA_R|=0x08;
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//
//TurnofftheLED.
//
GPIO_PORTF_DATA_R&=~(0x08);
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//4
//TurnontheLED.
//
GPIO_PORTF_DATA_R|=0x08;
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<200000;ulLoop++)
{
}
//
//TurnofftheLED.
//
GPIO_PORTF_DATA_R&=~(0x08);
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//5
//TurnontheLED.
//
GPIO_PORTF_DATA_R|=0x08;
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<200000;ulLoop++)
{
}
//
//TurnofftheLED.
//
GPIO_PORTF_DATA_R&=~(0x08);
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
//6
//TurnontheLED.
//
GPIO_PORTF_DATA_R|=0x08;
//
//Delayforabit.
//
for(ulLoop=0;ulLoop<200000;ulLoop++)
{
}
//
//TurnofftheLED.
GPIO_PORTF_DATA_R&=~(0x08);
//
//Delayforabit.
for(ulLoop=0;ulLoop<2000000;ulLoop++)
{
}
}
实验二LM3S9B96液晶显示实验
班级:
网工13101姓名:
徐香奇学号:
201317030126
一、实验目的
1、学习调用API函数控制液晶显示的方法。
2、掌握在LM3S9B96平台下的编程方法。
二、实验内容
初始化液晶,然后在液晶屏上显示HelloWorld。
三、实验设备
计算机、EL-IOT-II实验箱、仿真器、USB线(一头方的一头扁的)。
四、实验原理
本实验调用的函数与功能:
本实验主要通过调用以下函数在液晶上显示。
函数名称
函数功能
函数原型库
GrContextForegroundSet(pContext,ulValue)
设置前景颜色
grlib.h
GrRectDraw
画一个矩形框
grlib.h
GrRectFill
画一个矩形面
grlib.h
GrContextFontSet
设置字体
grlib.h
GrStringDrawCentered
在屏幕上写字
grlib.h
GrFlush
刷新
grlib.h
五、实验步骤
1、将仿真器连接到实验箱的JTAG1接口,给实验箱上电;
2、在计算机上打开KeiluVision4环境,并打开实验程序\EL-IOT-II实验箱程序\LM3S9B96程序\boards\dk-lm3s9b96\hello下的工程文件hello.Uvproj,编译、下载程序;
3、按下复位键REST1,液晶屏上应该显示HelloWorld!
字符。
六、思考题
1、如何设置液晶显示字符?
2、更改液晶显示的字符。
答:
使用如下函数可以使液晶显示所需内容,更改液晶显示字符后的代码为:
GrContextFontSet(&sContext,&g_sFontCm20);
GrStringDrawCentered(&sContext,"Hunanuniversityof",-1,
GrContextDpyWidthGet(&sContext)/2,
((GrContextDpyHeightGet(&sContext)-24)/6)+24,
0);
GrStringDrawCentered(&sContext,"artsandscience!
",-1,
GrContextDpyWidthGet(&sContext)/2,
((GrContextDpyHeightGet(&sContext)-24)/3)+24,
0);
GrStringDrawCentered(&sContext,"Wang&Xu",-1,
GrContextDpyWidthGet(&sContex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 传感 实验