物联网实训开发-指导书 - 图文(9)

2019-08-20 19:04

#define HAL_BOARD_CFG_H /* 包含头文件 */ #include \#include \#include \#include \

…………

/* 绿色LED */

#define LED1_BV BV(0) #define LED1_SBIT P1_0 #define LED1_DDR P1DIR

#define LED1_POLARITY ACTIVE_HIGH

/* 红色LED */

#define LED2_BV BV(1) #define LED2_SBIT P1_1 #define LED2_DDR P1DIR

#define LED2_POLARITY ACTIVE_HIGH

/* 黄色LED */

#define LED3_BV BV(4) #define LED3_SBIT P1_4 #define LED3_DDR P1DIR

#define LED3_POLARITY ACTIVE_HIGH

/* 蓝色LED */

#define LED4_BV BV(1) #define LED4_SBIT P0_1 #define LED4_DDR P0DIR

#define LED4_POLARITY ACTIVE_HIGH

…………

3.5.3配置工程设置

如何配置工程设置,请参考实验《建立一个简单的试验工程》,在这里就不再赘述。

3.5.4下载程序到CC2530

如何下载程序到CC2530,请参考实验《建立一个简单的试验工程》,在这里就不

再赘述。

6.3.6 实验结果

通过以上几个步骤,最终下载正确的程序到CC2530后,用户可以观察到LED1~LED4四个LED同时点亮,同时熄灭,流水灯。

注意:为方便用户熟悉Z-Stack架构中的硬件抽象层定义,基础实验1到实验18,所有的宏文件、头文件等程序文件,均来自Z-StackV2.2.0-1.3.0协议栈。

6.4 实验三 OLED屏显示实验I(软件模拟SPI总线)

6.4.1 实验目的

通过本实验的学习,使用户熟悉OLED屏的驱动编写,以及建立自己的图形界面。

6.4.2 实验内容

在FANTAI_ZigBee开发评估板的OLED屏上显示汉字、字符等内容。 注意:本实验采用CC2530数字I/O口软件模拟SPI总线方式来驱动OLED显示器。

6.4.3 实验条件

1. 在用户PC上(Microsoft Windows XP以上系统平台)正确安装IAR Embedded

WorBench for MCS-51 V7.51A集成开发环境;

2. FANTAI_ZigBee开发评估板一个(插有FANTAI_CC2530模块); 3. FANTAI-CC Debugger 多功能仿真器/调试器1个; 4. USB线两条

6.4.4 实验原理

由FANTAI_ZigBee开发评估板原理图可知,OLED-SSD1306-12864是一块128X64点阵的LED显示屏,该屏幕没有字库,没有基本的画图功能能,但是我们在评估板上加上了字库芯片,其型号为GT20L16S1Y。由一套汉字字库和6套ASCII字符字库6套。用户可以根据自己的需要在各个字库之间切换。OLED-SSD1306-12864和GT20L16S1Y均采用SPI接口、接口简单、操作方便;与CC2530链接的方式如下表:

表1 OLED-SSD1306-12864和GT20L16S1Y与CC2530接口

OLED-SSD1306-12864 CS# RES# D/C# SCLK SDA GT20L16S1Y CS# SCLK SI SO

CC2530 P1.2 P0.0 P2.2 P1.5 P1.6 P2.1 P1.5 P1.6 P1.7 本实验涉及了简单字符的数字和字母等显示实验,关于如何在OLED屏幕上显示

字符,请查阅本套评估板套件的配套资料。

OLED-SSD1306-12864上分布着128X64个像素点,当对应的像素点处置1时该像素点就被点亮。在使用过程中,用户可以不必关心OLED的显示原理,只需掌握如何通过SPI接口函数控制即可。在本实验中没有采用Z-Stack提供的代码,而是重新写的OLED和字库芯片驱动程序。

本实验使用CC2530的GPIO来用软件模拟SPI接口时序,驱动OLED模块和字库芯片。在初始化表1中的引脚连接的对应关系后,使用关键的底层通信函数来实现对屏幕和字库的各种操作。

6.4.5 实验步骤

4.5.1 建立一个新工程

注意:本步骤,请用户自行参考实验《建立一个简单的试验工程》,这里就不再赘述。

4.5.2 添加或新建程序文件

如何添加或者新建程序文件,请参考实验《建立一个简单的试验工程》,这里就不再赘述。

程序清单1:

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

* 文件名称:LCDTest.c

* 功 能:CC2530基础实验 --- 液晶显示

* 驱动128*64点阵图形OLED进行显示

* 硬件连接:液晶模块与CC2530的硬件连接关系如下:

* 液晶模块 CC2530 * CS(PIN2) P1.2 * SDA(PIN3) P1.6 * SCK(PIN5) P1.5 * RESET(PIN6) P0.0 * VDD(PIN1) x * NC(PIN4) x * VSS(PIN7) x *

* 作 者:w

* 公 司:无锡泛太科技有限公司

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

/* 包含头文件 */

/********************************************************************/ #include \#include \

#include \

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

/********************************************************************* * 函数名称:main

* 功 能:main函数入口 * 入口参数:无 * 出口参数:无 * 返 回 值:无

********************************************************************/ void main(void) {

HAL_BOARD_INIT();

LCD_Init(); // LCD初始化 LCD_Clear(); // LCD清屏

/* 显示信息 */

LCD_WriteString(20,1,\

LCD_WriteString(0,3,\ LCD_WriteString(0,5,\ LCD_WriteString(6,7,\ while(1); }

程序清单2:

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

* 文件名称:hal_led.c * 功 能:OLED驱动

* 使用硬件SPI总线驱动128*64点阵OLED液晶 * 硬件连接:液晶模块与CC2530的硬件连接关系如下:

* 液晶模块 CC2530 * CS P1.2 * SDA P1.6 * SCK P1.5 * RESET P0.0 * D/C# P2.2 * 字库芯片

* CS# P2.1 * SCLK P1.5 * SI P1.6 * SO P1.7 *

* 作 者:w

* 公 司:无锡泛太科技有限公司

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

/* 包含头文件 */

/********************************************************************/ #include \#include \#include \

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

/* 本地变量 */

/********************************************************************/ uint8 X_Witch = 6; uint8 Y_Witch = 1; uint8 X_Witch_cn = 16; uint8 Y_Witch_cn = 16; uint8 Dis_Zero = 0;

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

#define FUNCTION_SET(options,OLED_DC) halOLED_control(options,OLED_DC)

/********************************************************************* * 函数名称:LCD_TimeDelay * 功 能:延时函数

* 入口参数:Timers 延时时间参数 * 出口参数:无 * 返 回 值:无

********************************************************************/ void LCD_TimeDelay(uint16 Timers) {

uint16 i;

while(Timers) {

Timers--;

for(i = 0; i < 100; i++)NOP(); } }

/********************************************************************* * 函数名称:LCD_SPISSSet


物联网实训开发-指导书 - 图文(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:estore系统设计文档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: