无线传感实验一文档格式.docx
- 文档编号:21566934
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:19.72KB
无线传感实验一文档格式.docx
《无线传感实验一文档格式.docx》由会员分享,可在线阅读,更多相关《无线传感实验一文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
}
voidshort_delay(void)//短延时,用于控制时钟
{
SysCtlDelay(15*(SysCtlClockGet()/3000)/1000);
//延时大约10us
voidlong_delay(void)//短延时,用于控制时钟
SysCtlDelay(20*(SysCtlClockGet()/3000)/1000);
//延时大约15us
实验八EL-IOT-II实验箱采集节点7279实验
1、学习GPIO使用及其相关的API函数。
2、学会对HD7279的操作及编程,并体会这种控制芯片的优势。
编程使用Cortex-M3的GPIO向HD7279中写入控制命令、显示数据和读按键值等,实现键值的显示。
配置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"
hw_memmap.h"
hw_types.h"
hw_ints.h"
sysctl.h"
systick.h"
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)//延时函数
//延时到输入量为0
voidshort_delay(void)//短延时,用于控制时钟
SysCtlDelay(10*(SysCtlClockGet()/3000)/1000);
voidlong_delay(void)//短延时,用于控制时钟
//延时大约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;
//置低时钟位
out_byte<
<
=1;
//输出参数变量右移一位
}
//延时至稳定
DAT_L;
//置高片选信号
unsignedcharreceive_byte(void)//接收数据
unsignedchari,in_byte=0;
//定义变量
GPIODirModeSet(CTL_PORT,DAT,GPIO_DIR_MODE_IN);
//设置DAT为输入口;
DAT_H;
//数据线输出高电平
for(i=0;
i++)//读出8bit数据
{
in_byte<
//已收到的数据移位
if(GPIOPinRead(CTL_PORT,DAT))in_byte|=1;
//向数据中增加一位
CLK_L;
}
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);
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();
//初始化
//复位7279
test7279();
//7279运行测试程序
while
(1);
//循环
实验一LM3S9B96IO实验
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);
//
//2
//3
//4
200000;
//5
//6
实验二LM3S9B96液晶显示实验
1、学习调用API函数控制液晶显示的方法。
2、掌握在LM3S9B96平台下的编程方法。
初始化液晶,然后在液晶屏上显示HelloWorld。
本实验调用的函数与功能:
本实验主要通过调用以下函数在液晶上显示。
函数名称
函数功能
函数原型库
GrContextForegroundSet(pContext,ulValue)
设置前景颜色
grlib.h
GrRectDraw
画一个矩形框
GrRectFill
画一个矩形面
GrContextFontSet
设置字体
GrStringDrawCentered
在屏幕上写字
GrFlush
刷新
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);
artsandscience!
"
sContext)-24)/3)+24,
Wang&
Xu"
sContex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 传感 实验