MSP-EXP430F5529 白板子菜单及框架示例程序概览=_=

下面我将从这几方面介绍:

(一)【编写目的】
(二)【快速使用】
(三)【程序概览】
(四)【实战例子】
(五)【其他】

(一)【编写目的】

首先使用白板子的好处就是:自带一块LCD显示屏,所以【如何能非常方便的使用LCD,结合板子的各个模块实现相应需求】即为目的,

只为了【方便不了解的人能迅速上手通过修改添加相当少的代码即实现相应需求】。

(二)【快速使用】

新建CCS工程(分享CCS5的下载地址  http://pan.baidu.com/s/1i48nYlB)

下载我的代码,代码已上传至群文件,也可在此下载(http://download.csdn.net/detail/yws_swy/9830060

下载好之后解压文件,将其内全部.c和.h文件复制

粘贴到刚才新建的工程里,全部覆盖

然后连接好板子分别点击这两个标志,进行编译连接和调试,过一会程序成功下载到板子上了,点击运行

此时屏幕上即出现欢迎界面,按S2键进入菜单,滚动滚轮选择功能,按S1键进入相应功能,至此,算是开始使用了。

(三)【程序概览】

首先看一下目录结构:

main【总入口】;

board【白板子各模块驱动】;

dogs102x6【白板子液晶显示屏】内含画折线图、显示字符串、画圆、画线、画图片等函数;

globalvar【全局变量】如按键标志、滚轮ADC采样值、当前菜单页数等;

init【总体初始化】;

lib【基本运算库】内含滤波函数、整数转字符串函数、小数转字符串函数、求最大值最小值函数、升序排序函数;

menu【通过滚轮配合菜单选项】;

user【用户来编写的程序】;

综上,注意,如果不是十分了解尽量不要修改其他文件代码,仅需修改Yuser.c文件即可。

下面来看一下具体的代码

main.c中仅初始化后调用了Yuser.c中的yUserStart();

Yuser.c文件中的yUserStart()里面的代码才是真正的流程控制。

进入到Yuser.c文件(【提示】:按住Ctrl键并移动鼠标到函数名上,直到函数名下面出现下划线,此时单击鼠标左键可快速进入函数内部查看)可以看到如下代码:

至此足以看出大体流程,通过Ytotalitems设置菜单中的功能选项数量,在Ymenutext[]中写好每一个选项的标题,然后用selection保存滚轮最后确定的选项,根据selection的值用switch...case...语句选择执行不同的功能。这就是基本流程控制。

下面结合着写好的这几个例子具体来看:

(1)第一个函数yWelcome();

yDogs102x6_imageDraw(s505, 0, 0);画图片(不推荐费时间在这里,如有需要,详细生成可参考http://download.csdn.net/detail/yws_swy/9581130)

这里我们只看yDogs102x6_stringDraw(0, 0, "Press S2 to Menu.",NORMAL_STYLE); //显示字符串

这个函数接受了四个参数(起始行(0~7)、起始列(0~102)、显示字符串、显示格式)

例如,在第二行显示ystr字符串就可以写成:

显示格式有四种,分别是(白底黑字NORMAL_STYLE)、(黑底白字INVERT_STYLE)、(整行白底黑字NORMAL_STYLE+ROW_STYLE)、(整行黑底白字INVERT_STYLE+ROW_STYLE)

例如,把白底黑字改成黑底白字效果就是

(整行白底黑字NORMAL_STYLE+ROW_STYLE)和(整行黑底白字INVERT_STYLE+ROW_STYLE)这两种格式是在字符串长度短,不能填满一整行时的可选选项,比如当仅显示"Press S2"时,仅白底黑字就会出现下面的一半黑一半白的情况:

此时改为NORMAL_STYLE+ROW_STYLE,就会对整行都有效:

最后while (!(Ybuttonspressed & BUTTON_S2)); 表示直到按下S2键才返回菜单,因为按下S2键触发了按键中断,中断函数中修改了Ybuttonspressed的值,

这样这里通过判断Ybuttonspressed的值就知道是否按下了S2键,按下了则while结束,退出yWelcome函数。

(2)第二个函数yContrastSetting():

首先需要用滚轮采样,则要yWheel_enable();使能滚轮及ADC,然后不停地通过yWheel_getPosition(25);获取滚轮位置转化为0~24之间的值来设置LCD对比度,直到S2键按下为止,最后别忘了禁止滚轮yWheel_disable();

(3)第三个函数ySimpleDraw

这里面调用了画圆和画直线的函数,还是那样按住Ctrl键+鼠标单击,进入函数内部查看每个参数含义:

(4)第四个函数yShowNum()

这里有两个我写好的函数yItoa()和yFtoa(),在Ylib.c中可以看到它们的定义,可以得知实现了把数值类型的数据转换为字符串显示到了LCD上。

(5)第五个函数yInputNum()

因为按键过少,所以只能通过滚轮转到不同位置来输入不同数值,比如想输入7.96,则要通过滚轮分别转到7、·、9、6(这里为了避免按键消抖,虚拟设置了S2为S1使能,即S1为确定键,但每次按S1键前必须按一次S2来使能S1,这样就避免了可能抖动带来的连续输入了两个7的情况)。输入完毕后,再通过滚轮转到END并确定结束,这时就会把输入的字符串换算为值保存给gnum1。

(6)第六个函数yShowCurve()

实际上,这是通过调用很多次前面画直线的函数来实现的,其中还用到了Ylib.c中的yFinMax、yFinMin求最值下标等函数,具体实现这里不细说,相关设置有几处

(四)【实战例子】

下面用上面提到的函数随便写个例子,比如实现一个fun函数,要求由滚轮转动的位置转换为0~100之内的数值,并实时显示到LCD屏幕上,按S2键结束。

注意咯,在菜单上每添加一个功能基本上都是下面这四个步骤:

(1)添加菜单选项标题:

在Yuser.c中找到Ymenutext部分,在其后添加第6项功能fun。

(2)设置菜单选项个数:

将下面yUserStart()函数中的Ytotalitems的值由5改为6,表示有6项菜单选项。

(3)设置选项调用流程:

在下面的while(1)里面添加case 6的流程控制,表示第6项将执行fun()函数。

(4)编写新增函数fun():

void fun(){
int value = 0;
char str[4] = "";
yWheel_init();//使能滚轮
while (!(Ybuttonspressed & BUTTON_S2)){//直到S2键按下才会退出
value = yWheel_getPosition(100);//将滚轮位置转换为0~100之间的值
yItoa(value,str);//int整数转换为字符串
yDogs102x6_stringDraw(0,0,str,NORMAL_STYLE+ROW_STYLE);//画字符串
}
yWheel_disable();//禁止滚轮
}

//编译运行即可发现菜单中已经多了一个fun选项,进入之后会随着滚轮的转动实时显示一个0~100之间的数值,至此完成了一个菜单选项的添加。

(五)【其他】

这其中,还需要注意的有几个问题:

(1)按键只有两个,所以这里用滚轮+菜单来进行功能选择;

(2)IO口过少,一般只做控制信号通用IO和显示功能,复杂的功能容易和板上资源冲突,所以没考虑ADC等功能;

(3)只设置了一层菜单,没有编写多层,一方面因为有了滚轮即使再多的功能都不担心一层菜单显示不下,另一方面因为多层菜单时需要考虑按键消抖,而一层菜单时S2键始终都是菜单键,S1键始终都是确定键,也就不需要考虑按键消抖了;

(4)为防止不必要的干扰,没有设置背光亮度的PWM波,还降低了功耗;

(5)只写出了以下三个在Yuser.c中的中断函数,如有需要请在Yuser.c中自行添加

#pragma vector=PORT1_VECTOR //按键S1

#pragma vector=PORT2_VECTOR //按键S2
#pragma vector = ADC12_VECTOR

(6)最好不要用sprintf等支持不全的函数来把数值转换为字符串,因为CCS5中支持sprintf,而CCS6中就不支持,所以这里最好使用Ylib.c中写好的yItoa和yFtoa函数。

(7)此外,Ylib.c中还写好了诸如简单滤波,升序排序等函数,可自行选择使用,并欢迎继续完善。

(8)

/*相关学习资料分享:
* MSP-EXP5529开发板实验指导书:
http://download.csdn.net/detail/yws_swy/9830063
* MSP430F5529 官方代码例程库:
http://download.csdn.net/detail/yws_swy/9830064
* MSP430F5529 中文手册:
* http://download.csdn.net/detail/yws_swy/9789980
* CCS5的下载地址:
* http://pan.baidu.com/s/1i48nYlB
* LCD显示动画、图片、汉字教程
* http://pan.baidu.com/s/1slfh9vv
* https://pan.baidu.com/s/1bpF1X4V
*/

时间: 2024-08-14 03:33:17

MSP-EXP430F5529 白板子菜单及框架示例程序概览=_=的相关文章

网络基础、ftp任务(进度条、计算文件大小、断点续传、搭建框架示例)

一.网络基础 1.端口,是什么?为什么要有端口? 端口是为了将同一个电脑上的不同程序进行隔离. IP是找电脑:端口是找电脑上的应用程序: 端口范围:1 – 65535 :    1 - 1024 不要用  :  一般程序员用8000.8001…… 2.OSI  七层模型(记住哪七层) 应用层,使用软件:                 打开软件或网站 表示层,看到数据,如图片和视频:   生产原始数据 会话层,保持登录或链接状态:       应用偷偷携带一点其他数据: 令牌 19rRNAwf8

ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用

本片文章翻译自ABP在CodeProject上的一个简单示例程序,网站上的程序是用ABP之前的版本创建的,模板创建界面及工程文档有所改变,本文基于最新的模板创建.通过这个简单的示例可以对ABP有个更深入的了解,每个工程里应该写什么样的代码,代码如何组织以及ABP是如何在工程中发挥作用的. 源文档地址:https://www.codeproject.com/Articles/791740/Using-AngularJs-ASP-NET-MVC-Web-API-and-EntityFram 源码可以

Hadoop示例程序wordcount分析

wordcount作为Hadoop的示例程序,其思想很简洁,但也值得去理解 尤其是作为Hadoop菜鸟的我 wordcount程序如下: package com.lcy.hadoop.examples; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import

Windows Communication Foundation (WCF)和Windows CardSpace的示例程序

微软公司昨天发布了一个Windows Communication Foundation (WCF)和Windows CardSpace的示例程序包,内容极为丰富,从最简单的Hello World到复杂的解决方案一应俱全.对于Windows Communication Foundation (WCF)和Windows CardSpace这两个新东西而言,这些示例程序无疑就是最好的学习资源. 下载地址:http://www.microsoft.com/downloads/details.aspx?F

DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版原创发布-带官方示例程序版

关于 DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成.安装之后,直接就可以用了.省心省事.不必再单独的打一次补丁包了.本安装包和补丁包一样都删除了官方自

DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版原创发布-带官方示例程序版

关于 DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版--------------------------------------------------------- 基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成. 安装之后,直接就可以用了. 省心省事.不必再单独的打一次补丁包了. 本安装包和补丁包一样都删除了

通过Jexus 部署 dotnetcore版本MusicStore 示例程序

ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示如何在CentOS上运行.NET Core版本的MusicStore,并通过Jexus对外发布. 上篇文章 <结合Jexus + Kestrel 部署 asp.net core 生产环境> 我们已经部署好了.NET Core和Jexus,这篇文章主要演示如何运行.NET Core上的MusicSt

DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版原创发布-带官方示例程序版

关于 DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成.安装之后,直接就可以用了.省心省事.不必再单独的打一次补丁包了.本安装包和补丁包一样都删除了官方自带

OpenGL入门和示例程序

大家好,今天雅乐网给大家介绍一下OpenGL的一些基本语法和一个简单的示例程序. OpenGL是什么呢?说简单一点,就是一个图形软件包,它提供了许多函数供我们调用.我们看看维基百科上的说法 开放图形库(英语:Open Graphics Library,缩写为OpenGL)是个定义了一个跨编程语言.跨平台的应用程序接口(API)的规范,它用于生成二维.三维图像.这个接口由近三百五十个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象.而另一种程序接口系统是仅用于Microsoft Wind