DM430-L例程列表

合集下载

DM430-L操作手册V3.0

DM430-L操作手册V3.0
使用必读
DM430-L 是由欣创(欣世纪)电子科技出品的超高性价比 MSP430F149 内 核的 MSP430 单片机系统板(可根据需要更换转接板支持 MSP430F169 等 64 脚 系列),V3.0 进行了多达 17 项升级更新,具有应用接口丰富使用简单的特点, 用户在使用前请务必认真阅读本手册,并进行整板测试(阅读该手册整板测试章 节),切勿在没有仔细浏览手册之前对开发板进行相关操作,否则由此导致的一 切问题由用户自行承担责任。
售后务
请参考欣创(欣世纪)电子科技官方网站相关介绍。
技术支持
技术支持由 DM430-L 型系统板开发商欣创(欣世纪)电子科技全权负责。 官方网站: 公司地址:浙江宁波江北区环城北路东段 134 号科技创业中心 C504 室 服务时间:周一~周五 8:30~18:00 联系电话:0574-87470625 技术支持邮箱:support@ 产品询问邮箱:product@ 技术服务 QQ:1072969215 备注:2014 年 3 月起,技术服务主要平台为官网论坛交流平台,登陆官网 进入即可
DM430-L 型单片机最小系统板 使用手册 V3.0
宁波欣创(欣世纪)电子科技 官网&在线服务支持: 电话:0574-87470625 QQ1:624156969 QQ2:1072969215 地址:浙江宁波江北区环城北路东段 134 号科技创业中心 C504 室
欣世纪电子科技 DM430-L 型单片机系统板使用手册 V3.0
3
欣世纪电子科技 DM430-L 型单片机系统板使用手册 V3.0 一、硬件连接及驱动.......................................................................................................... 40 二、SF_BSL430 软件下程序下载........................................................................................42 三、MSPFET 软件下载设置................................................................................................ 44 使用仿真器时注意事项.......................................................................................................... 47

创新开发平台实验指导书

创新开发平台实验指导书

创新开发平台实验指导书实验指导书威世达通信操纵技术〔北京〕2021年8月第一节:FT3150/PL3150模块及其底板 (8)一、FT3150模块及底板 (8)二、PL3150模块及底板 (10)第二节:DI模块 (12)一、硬件原理及连接 (12)二、组网 (13)第一步:创建lonMaker网络 (13)第二步:添加DI设备 (16)第三步:通过配置属性对节点的功能进行配置 (19)三、摸索及实验 (26)第三节:DO模块 (28)一、硬件原理及连接 (28)二、组网 (28)第一步:打开之前创建的LonMaker网络 (28)第二步:添加DO设备 (30)第三步:通过配置属性对节点的功能进行配置 (33)三、摸索及实验 (36)第四节:AI模块 (39)一、硬件原理及连接 (39)二、组网 (40)第一步:创建LonMaker网络 (40)第二步:添加AI设备 (41)第三步:通过配置属性对节点的功能进行配置 (42)三、摸索及实验 (44)第五节:AO模块 (46)一、硬件原理及连接 (46)第一步:打开之前创建的LonMaker网络 (47)第二步:添加AO设备 (47)第三步:通过配置属性对节点的功能进行配置 (48)第四步:PID功能块 (52)三、摸索及实验 (54)第六节:LCD模块 (57)一、硬件连接 (57)二、组网 (57)第一步:打开之前创建的LonMaker网络 (57)第二步:添加LCD设备 (58)第三步:通过配置属性对节点的功能进行配置 (60)三、摸索及实验 (62)第七节:网关 (63)一、硬件连接 (63)二、组网 (63)第一步:创建新的LonMaker网络 (63)第二步:添加Gate设备 (64)第三步:连接绑定 (64)三、摸索及实验 (67)实验一:第一个NodeBuilder项目 (69)一、目标 (69)二、描述 (69)三、实验步骤 (69)第一步:创建一个LonMaker网络 (69)第二步:从LonMaker中启动NodeBuilder并创建一个新的项目 (70)第三步:从NodeBuilder启动设备模板向导并创建一个新的设备模板 (71)第四步:Build一个简单的应用程序 (74)第五步:在LonMaker网络中添加使用新设备模板的设备 (75)实验二:为设备添加设备接口 (76)二、描述 (77)三、实验步骤 (77)第一步:打开之前创建的LonMaker网络及NodeBuilder (77)第二步:为设备添加一个功能块和设备接口 (77)第三步:为新的功能块添加具体功能 (80)实验三:使用NodeBuilder代码向导 (82)一、目标 (82)二、描述 (83)三、实验步骤 (83)第一步:打开之前创建的LonMaker网络及NodeBuilder (83)第二步:使用NodeBuilder代码向导为设备添加一个功能块 (84)第三步:为新的功能块添加具体功能 (88)实验四:输入网络变量数组的处理 (91)一、目标 (91)二、描述 (91)三、实验步骤 (92)第一步:使用代码向导创建DI、DO设备模板 (92)第二步:创建DI设备并添加DI功能代码 (94)第三步:创建DO设备并添加DO功能代码 (95)实验五:指导函数及Debugger操作 (96)一、目标 (96)二、描述 (97)三、实验步骤 (97)第一步:进入Debug状态并设置断点 (97)第二步:一步一步执行代码 (99)组态一:人机界面实验 (101)一、创建网络 (101)1、运行LNS DDE Server。

msp430全部基础程序集合

msp430全部基础程序集合

本文档由“X-TAB论坛‎”提供()1 [入门必修]按键检测与‎程序结构...菜菜//// MC430‎F224// -----------------// /|\| |// | | |// --|RST in1 |--~^~-------|GND KEY1 1// | in2 |--~^~-------|GND KEY2// | in3 |--~^~-------|GND KEY3// | |// | out1 |------|<|---|Vcc D1 LED// | out2 |------|<|---|Vcc D2 LED// | out3 |------|<|---|Vcc D3 LED////************************MC430‎F224*********************** *********************#inclu‎d e <msp43‎0x22x‎4.h>//初级用户要‎习惯采用宏‎定义,以方便的编‎写和修改#defin‎e keyio‎ 0xf1 //定义按键I‎O口,所有键口为‎0.#defin‎e key_1‎ 0xfd //定义返回键‎值1#defin‎e key_2‎ 0xfb //定义返回键‎值2#defin‎e key_3‎ 0xf7 //定义返回键‎值3#defin‎e LED_D‎1_fla‎s h P1OUT‎^= BIT1#defin‎e LED_D‎2_fla‎s h P1OUT‎^= BIT2#defin‎e LED_D‎3_fla‎s h P1OUT‎^= BIT3#defin‎e bell_‎d elay‎7000//声明子程序‎unsig‎n ed char key_c‎h cek(void);void displ‎a y_up‎d ate(unsig‎n ed char dta);void key_p‎r oces‎s_0(void);void key_p‎r oces‎s_1(void);void key_p‎r oces‎s_2(void);//********************************************************** ***************//将单片机初‎始化程序放‎在m ain‎()前面是方便‎查看单片机‎的初始化状‎态情况.void MCU_i‎n t(void){//默认MCL‎K主时钟频‎率为DCO‎=~800KP1OUT‎|= BIT1+BIT2+BIT3; //设置LED‎,上电为灭.电路可以查‎看M C43‎0F14电‎路图.P1DIR‎|= BIT1+BIT2+BIT3; //P1.1设置为输‎出.//MSP43‎0单片机I‎O口上电默‎认方向为输‎入,所以接按键‎的I O无需‎再设为输入‎.}//********************************************************** ***************void main (void){ unsig‎n ed char key_v‎a lue; //定义键值全‎局变是WDTCT‎L = WDTPW‎ + WDTHO‎L D;//关狗MCU_i‎n t(); //初始化单片‎机while‎(1) //主程序主循‎环{key_v‎a lue=key_c‎h cek(); //检测,有键按下并‎松开,返回一个键‎值.switc‎h(key_v‎a lue) //对键值进行‎处理.采swit‎c h 语法结‎构查询{case key_1‎: key_p‎r oces‎s_0(); //调用键处理‎程序1b reak‎;case key_2‎: key_p‎r oces‎s_1(); //调用键处理‎程序2b reak‎;case key_3‎: key_p‎r oces‎s_2(); //调用键处理‎程序2b reak‎;defau‎l t: ; //调用键处理‎程序4b reak‎;}displ‎a y_up‎d ate(key_v‎a lue); //如果有需要‎可以在这里‎加上显示更‎新程序.key_v‎alue=0x00; //最后清除键‎值.将继续主循‎环.}}//********************************************************** ***************//按键检测程‎序//返回值: 无符号字符‎型键值unsig‎n ed char key_c‎h cek(void){unsig‎n ed int i;unsig‎n ed char timp,activ‎e;activ‎e=0;while‎(!activ‎e){while‎(0xff ==( P2IN | keyio‎)); //一直等待有‎键按下timp = P2IN | keyio‎;//若有键接下‎了,则读入IO‎状态.for(i=0;i<7000;i++); //延时,是为了去按‎键抖动.if (timp ==(P2IN | keyio‎))//经延时后,还是那键吗‎?{ activ‎e = 1; //是,则按键有效‎.while‎(0xff !=( P2IN | keyio‎)); //一直等待按‎键松开}else{ //去按键抖动‎后读入的键‎值与之前不‎同.则先效.activ‎e = 0; //再循环检测‎.}}retur‎n timp; //返回一个键‎值.}//********************************************************** ***************void key_p‎r oces‎s_0(void) //值处理,用户可以自‎己修改... {LED_D‎1_fla‎s h;}//********************************************************** ***************void key_p‎r oces‎s_1(void) //值处理,用户可以自‎己修改... {LED_D‎2_fla‎s h;}//********************************************************** ***************void key_p‎r oces‎s_2(void) //值处理,用户可以自‎己修改... {LED_D‎3_fla‎s h;}//********************************************************** ***************void displ‎a y_up‎d ate(unsig‎n ed char dta){; //用户可以根‎据需要来放‎置显示程序‎,如LCD,LED,Digit‎a l-LED....//灵活应用,}//********************************************************** ***************2 [入门必修]串行异步通‎讯例子..菜菜微控网原创‎复制代码//********************************************************** ******************//描述:在微控MC‎430F2‎24开发板‎上实现UA‎R T模块串‎行异步通讯‎实验。

MSP430BSL使用说明

MSP430BSL使用说明

MSP430BSL 使用说明REV 3.0首先感谢您购买了本公司的MSP430开发工具我们将为您提供最完善的售后服务和最全面的技术支持下图是MSP430BSL的产品清单1、MSP430BSL*12、DB9针对孔串口连线*13、10芯扁平连线*14、附有BSL软件的光盘*1一、BSL的介绍什么是BSL(Bootstrap loader)? Bootstrap loader是MSP430FLASH系列单片机独有的一项功能。

在程序空间、RAM之外有1K左右的引导区,用来存放430的BOOTROM文件(这是一个引导ROM,类似网卡上的BOOTROM)。

当外界给芯片提供一种特定的激励时,芯片内的引导程序开始工作,引导外部数据写入片内ROM、RAM区,或者是发送片内数据到外部。

这些都是通过一个软UART来完成的。

如果是FLASH系列的单片机,则FLASH空间包含了ROM和RAM。

这个引导程序是固化在BOOTROM空间内,而且是一个用户不能直接使用和修改的存储空间。

430BSL的主要原理是通过芯片特殊的上电复位后,引导片外代码烧录到片内FLASH中,来完成系统编程的。

我们的MSP430BSL工具使用非常方便,图形化的界面让你通过鼠标就能顺利下载代码,读出内部任何数据。

这里提及的代码是TI专用的430-TXT格式文本,可以通过IAR-EW430的编译器生成。

MSP430BSL的主要特点1、代码下载。

下载任意编译系统提供的标准430-TXT源代码。

2、读出芯片内的程序、信息FLASH等随意指定空间。

目前支持TI推出的MSP430 FLASH全系列芯片,包括一些补丁程序所做的修改,都在REV3.0软件上做了改进。

3、芯片加密后还能通过256BIT密码字校验后下载、升级、读写芯片内容。

对一些产品遭受破坏还需要读出内部数据来说是非常好的一种工具。

其在仪表的软件调校上也有很广泛的应用。

(JTAG接口一般不留在成熟的产品里)4、尺寸小,随身携带。

MSP430程序库九数码管显示

MSP430程序库九数码管显示

数码管也是单片机系统最常用的输出设备之一(还有液晶、发光二极管等)。

七段(这里用的是8段,有小数点)数码管可以完成显示0-9数字和一部分的英文字符如:A、b。

本文实现的程序完成显示数字和可显示的英文字符;同时完成数码管显示的printf函数的移植,以支持printf的格式化字符等好用的特点(我用的数码管8个排为一排,方便数字等的显示)。

1.硬件介绍:这里所用到的硬件资源包括8个数码管、和msp430单片机的两个8位IO口(这里用的是P3和P5口,如有改变,可以通过宏定义更改)。

数码管是8个共阴的数码管,a-h8段通过一个200Ω的电阻接到430单片机的P5口。

共阴端是由单片机的P3口控制,单片机的一位IO通过一个三极管接到数码管的共阴端,以完成位选。

单片机的P3口时数码管的位选口,某位为高则选中;P5口时段选口;要数码管显示时,通过P3位选,选中某个数码管亮,P5段选选择8段(a-h)中的那些亮,从而控制某一位显示数字或字符。

要同时显示多个数码管,就要动态扫描;动态扫描时,本程序选用的是由看门狗的中断扫描显示:每1.9ms显示其中的一位,动态扫描显示每一位,从而让数码管看起来是同时亮的。

2.程序实现:数码管显示首先要有一个数码管显示的断码表(完成数字和字符到数码管段值的表),程序中采用了《MSP430系列单片机系统工程设计与实践》这本书推荐的方式实现的这个数码表:先用宏定义定义每段对应的单片机要输出的段值,然后再实现是个表,当硬件改变时,只需更改前面的每段的段值定义即可,改动的地方少了很多,代码如下:/*宏定义,数码管a-h各段对应的比特,更换硬件只用改动以下8行*/#define a0x01//AAAA#define b0x02//F B#define c0x04//F B#define d0x08//GGGG#define e0x10//E C#define f0x20//E C#define g0x40//DDDD HH#define h0x80//小数点/*用宏定义自动生成段码表,很好的写法,值得学习*//*更换硬件无需重写段码表*/const char Tab[]={a+b+c+d+e+f,//Displays"0"b+c,//Displays"1"a+b+d+e+g,//Displays"2"a+b+c+d+g,//Displays"3"b+c+f+g,//Displays"4"a+c+d+f+g,//Displays"5"a+c+d+e+f+g,//Displays"6"a+b+c,//Displays"7"a+b+c+d+e+f+g,//Displays"8"a+b+c+d+f+g,//Displays"9"a+b+c+e+f+g,//Displays"A"c+d+e+f+g,//Displays"B"a+d+e+f,//Displays"C"b+c+d+e+g,//Displays"D"a+d+e+f+g,//Displays"E"a+c+d+e+f,//Displays"G" b+c+e+f+g,//Displays"H" e+f,//Displays"I" b+c+d+e,//Displays"J" b+d+e+f+g,//Displays"K" d+e+f,//Displays"L" a+c+e+g,//Displays"M" a+b+c+e+f,//Displays"N" c+e+g,//Displays"n" c+d+e+g,//Displays"o" a+b+c+d+e+f,//Displays"O" a+b+e+f+g,//Displays"P" a+b+c+f+g,//Displays"Q" e+g,//Displays"r" a+c+d+f+g,//Displays"S" d+e+f+g,//Displays"t" a+e+f,//Displays"T" b+c+d+e+f,//Displays"U" c+d+e,//Displays"v" b+d+f+g,//Displays"W" b+c+d+f+g,//Displays"Y"g,//Displays"-"h,//Displays"."0//Displays"" };#undef a#undef b#undef c#undef d#undef e#undef f#undef g0-9的位置对应显示0-9,之后的是A开始往后显示,为了方便访问这个表格,定义了AA等一系列的常量,方便访问这个表。

MSP430单片机入门例程

MSP430单片机入门例程

MSP430单片机入门例程MSP430单片机是一款低功耗、高性能的16位单片机,广泛应用于各种嵌入式系统。

下面是一个简单的MSP430单片机入门例程,可以让大家初步了解MSP430单片机的基本使用方法。

所需材料:1、MSP430单片机开发板2、MSP430单片机编译器3、MSP430单片机调试器4、电脑和相关软件步骤:1、安装MSP430单片机编译器首先需要安装MSP430单片机的编译器,该编译器可以将C语言代码编译成MSP430单片机可以执行的机器码。

在安装编译器时,需要选择与您的单片机型号匹配的编译器。

2、编写程序下面是一个简单的MSP430单片机程序,可以让LED灯闪烁:c本文include <msp430.h>int main(void)本文P1DIR |= 0x01; //设置P1.0为输出while(1){P1OUT ^= 0x01; //反转P1.0的状态,LED闪烁__delay_cycles(); //延时一段时间,控制闪烁频率}本文上述程序中,首先定义了P1DIR寄存器,将P1.0设置为输出。

然后进入一个无限循环,在循环中反转P1.0的状态,使LED闪烁。

使用__delay_cycles()函数实现延时,控制LED闪烁频率。

3、编译程序使用MSP430单片机编译器将程序编译成机器码,生成可执行文件。

在编译时,需要注意选择正确的编译器选项和单片机型号。

4、调试程序使用MSP430单片机调试器将可执行文件下载到单片机中,并使用调试器进行调试。

在调试时,可以观察单片机的输出口状态和LED灯的闪烁情况,确保程序正常运行。

随着嵌入式系统的发展,MSP430单片机作为一种低功耗、高性能的微控制器,在各种应用领域中得到了广泛的应用。

为了更好地理解和应用MSP430单片机,我在学习过程中积累了一些经验,现在分享给大家。

MSP430单片机是一种超低功耗的微控制器,由德州仪器(Texas Instruments)推出。

DM430-A操作手册V1.0

DM430-A操作⼿册V1.0DM430-AUSB型MSP430F149(169)单⽚机开板使⽤⼿册V3.02014年10⽉使⽤必读DM430-A是由欣世纪电⼦科技出品的超⾼性价⽐USB型MSP430单⽚机开发板,具有应⽤丰富使⽤简单的特点,⽤户在使⽤前请务必认真阅读本⼿册,并进⾏测试,切勿在没有仔细浏览⼿册之前对开发板进⾏相关操作,否则由此导致的⼀切问题由⽤户⾃⾏承担责任。

售后服务请参考欣世纪电⼦科技官⽅⽹站相关介绍。

技术⽀持技术⽀持由DM430-A型单⽚机开发板开发商欣世纪电⼦科技全权负责。

官⽅⽹站:/doc/4d2a7cf6b9d528ea81c779d1.html公司地址:浙江宁波江北区环城北路东段134号科技创业中⼼C504室联系电话:0574-********技术⽀持邮箱:support@/doc/4d2a7cf6b9d528ea81c779d1.html产品询问邮箱:product@/doc/4d2a7cf6b9d528ea81c779d1.html技术服务QQ:6241569691072969215声明该操作⼿册由V2.0升级到V3.0,主要对板载资源接⼝更新部分做了扩充说明,其他未变动部分均予以原⽂保留,因此部分图⽚引⽤原V2.0图⽚,敬请注意!⽬录⽬录 (2)第⼀章概述 (6)第⼆章开发板使⽤⼊门 (7)2.1DM430-A开发板特点 (7)2.2开发板资源框图 (8)2.3开发板可以完成的实验 (9)2.4开发板提供的测试例程 (9)2.5软件平台的安装与使⽤ (9)2.5.1软件的下载 (10)2.5.2软件的安装 (10)2.5.3第⼀个⼯作窗与⼯程的建⽴与编译 (12)2.6USB型BSL下载器硬件连接配置及使⽤ (20)2.6.1BSL下载器硬件连接及驱动 (20)2.6.2使⽤BSL进⾏程序下载 (22)1、使⽤SF_BSL430软件下程序下载(64位系统不推荐) (22)2、MSPFET软件下载设置(推荐使⽤) (24)2.7开发板的测试 (26)第三章MSP430单⽚机概述 (28)3.1MSP430系列单⽚机的特点 (28)3.1.2强⼤的处理能⼒ (28)3.1.3⾼性能模拟技术及丰富的⽚上外围模块 (29)3.1.4系统⼯作稳定 (29)3.1.5⽅便⾼效的开发环境 (29)3.2MSP430系列单⽚机的发展和应⽤ (29)3.3MSP430系封装图及命名规则 (30)第四章开发板物理资源模块详解 (32)4.1DM430-A开发板电源系统 (32)4.28位LED发光⼆极管 (33)4.3蜂鸣器硬件连接 (34)4.4共阴型⼋位数码管硬件驱动及连接 (35)4.5四位独⽴键盘(四位中断键盘) (37)4.64x4矩阵键盘 (38)4.7温度传感器DS18B20 (39)4.8双路12位ADC输⼊ (41)4.910位串⾏电压型DAC (42)4.10EEPROM硬件连接 (44)4.11⼀体化红外接收头1838 (45)4.131602液晶接⼝硬件连接 (48)4.14带字库图形12864液晶接⼝ (49)4.15串⼝RS232及RS485接⼝资源介绍 (51)4.16NRF24L01⽆线射频接⼝ (52)4.17实时时钟芯⽚DS1302控制与读写实验 (53)4.18PWM调制波形输出显⽰ (54)4.19PS2键盘接⼝ (55)4.20TFT彩⾊液晶接⼝ (56)4.20.11.8⼨TFT真彩屏接⼝(8位并⼝) (57)4.20.22.8⼨TFT触摸屏接⼝ (59)4.21MMC/SD卡扩展接⼝ (61)4.22JTAG仿真接⼝ (63)4.23扩展IO接⼝ (64)第五章注意事项及安装⽰范 (65)5.1使⽤仿真器时注意事项 (65)5.2液晶安装⽅法⽰范 (65)5.2.11602液晶安装⽰范 (65)5.2.212864液晶安装⽰范 (66)5.2.31.8⼨TFT彩⾊液晶安装⽰范 (67)5.2.42.8⼨TFT彩⾊触摸屏液晶安装⽰范 (68)5.3步进电机安装⽰范 (69)5.4核⼼转接板安装⽰范 (70)5.5⽆线模块NRF24L01安装⽰范 (71)第六章测试程序 (72)附录 (73)附录15V步进电机详细参数 (73)附录2BMP图⽚⽂件格式详解 (74)结束语 (83)第⼀章概述DM430-A是由欣世纪电⼦科技(/doc/4d2a7cf6b9d528ea81c779d1.html )推出的⼀款基于MSP430F149的具有超⾼性价⽐的USB型多功能复合型MSP430单⽚机开发板,板载USB型BSL下载器,使⽤⾮常简单⽅便,该开发板板载了丰富的外围资源模块,包括8位⾼亮数码管、8位发光⼆极管、有源蜂鸣器、温度传感器、EEPROM芯⽚、DAC芯⽚、MAX232通信芯⽚、DS1302实时时钟芯⽚、MAX485芯⽚、步进电机驱动芯⽚、4X4矩阵键盘、4位独⽴键盘、4位中断键盘、红外⼀体化接收、SD卡接⼝、RS232通信模块、RS485通信模块、12864液晶接⼝、1602液晶接⼝、TFT彩屏模块接⼝、TFT触摸屏接⼝、PS2通信接⼝及⽆线射频NRF24L01接⼝,同时⽀持JTAG调试,2X7座兼容官⽅标准,可以匹配市场上的各种JTAG仿真器,板载的BSL下载器可以通过杜邦线对其他开发板进⾏程序下载,另外,板载的BSL模块可以独⽴作为USB转串⼝使⽤,解决笔记本电脑没有串⼝的问题或可以作为其他单⽚机下载器,如STC单⽚机下载器。

430基础代码程序

MSP430开发板样例一、 LED流水灯实验 (2)二、数码管显示实验 (2)三、 4*4矩阵键盘扫描实验 (2)四、定时器A中断实验 (3)五、蜂鸣器报警实验 (4)六、 DS18B20温度测量实验 (4)七、DS1302实时时钟实验 (5)八、RS232串口通信实验 (8)九、RS485通信实验 (9)十、I2C存储器AT24C02读写实验 (10)十一、PS/2键盘扫描实验 (11)十二、 TLV5620正弦波产生实验 (12)十三、ADC12电压测量实验 (13)十三、高频高压电源的控制实验 (14)十四、 ADC12温度测量实验 (19)十五、1602字符型液晶显示实验 (20)十六、128*64图形液晶显示实验 (20)十七、步进电机控制实验 24 十八、高频高压电源的控制实验 (25)一、 LED流水灯实验#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned charuchar LedData=0x80;//延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();_DINT();//关闭中断P2SEL=0x00;//P2口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向while(1){LedData>>=1;//右移一位if(LedData==0) LedData=0x80;P2OUT=LedData;//P2口输出数据DelayMs(400);}}二、数码管显示实验功能:数码管显示12345678#include "msp430x14x.h"#define uchar unsigned char#define uint unsigned int//共阳数码管编码表uchar Code[18]={0xC0,0xF9,0xA4,0xB0,//0,1,2,30x99,0x92,0x82,0xF8,//4,5,6,70x80,0x90,0x88,0x83,//8,9,A,b0xC6,0xA1,0x86,0x8E,//C,d,E,F0xBF,0xFF};//-,全灭uchar Bit[8]={1,2,3,4,5,6,7,8}; //数码管各位显示的数字uchar BitCode=0x80; //数码管位码初值//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--); }while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//端口初始化函数void InitPort(void){P2SEL=0x00;//P2口所有引脚设置为一般的IO口P4SEL=0x00;//P4口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向P4DIR=0xFF;//P4口所有引脚设置为输出方向P2OUT=0x00;//P2口先输出低电平P4OUT=0xFF;//P4口先输出低电平P5SEL&=~BIT7;//P5.7设置为一般的IO口P5DIR|=BIT7;//P5.7设置为输出方向P5OUT&=~BIT7;//P5.7输出低电平来使能74HC573来驱动数码管}//延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}//数码管扫描显示程序void Display(void){for(uchar i=0;i<8;i++){P4OUT=BitCode; //输出位码P2OUT=Code[Bit[i]]; //输出段码BitCode>>=1;//位码右移一位if(BitCode==0) BitCode=0x80;DelayMs(1); //延时1msP2OUT=0xFF;}}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();InitPort();_DINT();//关闭中断while(1){Display();}}三、 4*4矩阵键盘扫描实验功能:在数码管上显示输入的值#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned charuchar KeyValue=0xFF;//共阳数码管编码表uchar Code[18]={0xC0,0xF9,0xA4,0xB0,//0,1,2,30x99,0x92,0x82,0xF8,//4,5,6,70x80,0x90,0x88,0x83,//8,9,A,b0xC6,0xA1,0x86,0x8E,//C,d,E,F0xBF,0xFF};//-,全灭uchar Bit[8]={16,16,16,16,16,16,16,16}; //数码管各位要显示的数字//键值编码表uchar KeyCode[16]={0x77,0x7B,0x7D,0x7E,//0,1,2,30xB7,0xBB,0xBD,0xBE,//4,5,6,70xD7,0xDB,0xDD,0xDE,//8,9,A,b0xE7,0xEB,0xED,0xEE};//C,d,E,F uchar BitCode=0x80; //数码管位码初值//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//端口初始化函数void InitPort(void){P1SEL=0x00;//P1口所有引脚设置为一般的IO口P1DIR=0x0F;//P1.0 P1.1 P1.2 P1.3设置为输出方向P1OUT=0x00;//P1口先输出低电平P1IE=0xF0;//P1.4 P1.5 P1.6 P1.7中断允许P1IES=0xF0;//P1.4 P1.5 P1.6 P1.7下降沿触发中断P2SEL=0x00;//P2口所有引脚设置为一般的IO口P4SEL=0x00;//P4口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向P4DIR=0xFF;//P4口所有引脚设置为输出方向P2OUT=0x00;//P2口先输出低电平P4OUT=0xFF;//P4口先输出低电平P5SEL&=~BIT7;//P5.7设置为一般的IO口P5DIR|=BIT7;//P5.7设置为输出方向P5OUT&=~BIT7;//P5.7输出低电平来使能74HC573来驱动数码管}//延时子函数void Delay(void){for(uchar i=255;i>0;i--);}//按键分析程序void KeyProcess(void){uchar OutData=0x07;for(uchar i=0;i<4;i++){//扫描4列OutData|=0xF0;P1OUT=OutData;if(P1IN!=OutData) KeyValue=P1IN;OutData>>=1;}P1OUT=0x00;//恢复原来的值}//端口1中断处理程序#pragma vector=PORT1_VECTOR__interrupt void Port1INT(void){Delay();KeyProcess();P1IFG=0x00;//清除中断标志位}//延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}//数码管扫描显示程序void Display(void){for(uchar i=0;i<16;i++){//查找键值对应的数字if(KeyValue==KeyCode[i]){Bit[0]=Bit[1]=Bit[2]=Bit[3]=Bit[4]=Bit[5]=Bit[6]=Bit[7] =i;//显示键值对应的数字break;} }for(uchar i=0;i<8;i++){P4OUT=BitCode; //输出位码P2OUT=Code[Bit[i]]; //输出段码BitCode>>=1;//位码右移一位if(BitCode==0) BitCode=0x80;DelayMs(1); //延时1msP2OUT=0xFF;}}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();InitPort();_EINT();//打开中断while(1){Display();}}四、定时器A中断实验功能:定时器A中断,LED右移1位#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned charuchar LedData=0x80;uchar num=10;//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//定时器A初始化void InitTimerA(void){TACTL=TASSEL1+ID1+ID0+MC0+TACLR;//选择1/8SMCLK 增计数清除TARCCTL0=CCIE;//CCR0中断允许比较模式CCR0=10000;//时间间隔10ms}//定时器A中断#pragma vector=TIMERA0_VECTOR__interrupt void TimerAINT(void){num--;if(num==0){LedData>>=1;//右移一位if(LedData==0) LedData=0x80;P2OUT=LedData;//P2口输出数据num=10;}}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();InitTimerA();_EINT();//打开中断P2SEL=0x00;//P2口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向while(1);}五、蜂鸣器报警实验#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned char#define SPK_HIGH P5OUT|=BIT6#define SPK_LOW P5OUT&=~BIT6uchar Flag=0;//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//ms级延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();_EINT();//关闭中断P5DIR|=BIT6;//P5.6引脚设置为输出方向while(1){SPK_HIGH;DelayMs(150);SPK_LOW;DelayMs(150);};}六、 DS18B20温度测量实验功能:在数码管上显示当前DS18B20测到的温度小数部分为4位,温度为负时,最高位显示"-" 测量范围:-55℃~ +125℃#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned char#define DQ_OUT P3DIR|=BIT0 //P3.0输出#define DQ_IN P3DIR&=~BIT0 //P3.0输入#define DQ_LOW P3OUT&=~BIT0 //P3.0低电平#define DQ_HIGH P3OUT|=BIT0 //P3.0高电平#define DQ_DATA P3IN&BIT0//共阳数码管编码表uchar Code[18]={0xC0,0xF9,0xA4,0xB0,//0,1,2,30x99,0x92,0x82,0xF8,//4,5,6,70x80,0x90,0x88,0x83,//8,9,A,b0xC6,0xA1,0x86,0x8E,//C,d,E,F0xBF,0xFF};//-,全灭uchar Bit[8]={17,0,0,0,0,0,0,0}; //数码管各位显示的数字uchar BitCode=0x80; //数码管位码初值uchar MSB; //温度高字节uchar LSB; //温度低字节int t1=0; //温度整数部分数值uint t2=0; //温度小数部分数值uchar flag; //负温度标志//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//端口初始化函数void InitPort(void){P2SEL=0x00;//P2口所有引脚设置为一般的IO口P4SEL=0x00;//P4口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向P4DIR=0xFF;//P4口所有引脚设置为输出方向P2OUT=0x00;//P2口先输出低电平P4OUT=0xFF;//P4口先输出低电平P5SEL&=~BIT7;//P5.7设置为一般的IO口P5DIR|=BIT7;//P5.7设置为输出方向P5OUT&=~BIT7;//P5.7输出低电平来使能74HC573来驱动数码管}//ms级延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}//数码管扫描显示程序void Display(void){for(uchar i=0;i<8;i++){P4OUT=BitCode; //输出位码if(i==3){ //输出段码,如果第三位显示小数点P2OUT=Code[Bit[i]]&0x7F;}else{P2OUT=Code[Bit[i]];}BitCode>>=1;//位码右移一位if(BitCode==0) BitCode=0x80;DelayMs(1); //延时1msP2OUT=0xFF;}}//10us级延时子程序void Delayus(uint us){while(us--){for(uint i=0;i<8;i++);}}//初始化DS18B20void DS18B20Init(void){DQ_OUT;//设置为输出方向DQ_LOW;//拉低总线Delayus(50);DQ_HIGH;//释放总线Delayus(6);DQ_IN;//设置为输入方向while(DQ_DATA);//等待应答信号while(~DQ_DATA);//等待释放总线}//读一个字节uchar ReadByte(void){uchar i;uchar ReadData=0;for(i=0;i<8;i++){DQ_OUT;DQ_LOW;ReadData>>=1;DQ_HIGH;Delayus(1);DQ_IN;if(DQ_DATA) ReadData|=0x80;Delayus(6);}return ReadData;}//写一个字节WriteByte(uchar WriteData){uchar i;uchar tmpData;for(i=0;i<8;i++){tmpData=WriteData&0x01;WriteData>>=1;DQ_OUT;DQ_LOW;if(tmpData){DQ_HIGH;}else{DQ_LOW;}Delayus(5);DQ_HIGH;}}//温度计算程序void GetT(){if((MSB&0xF0)>0){ //判断是否为负温度flag=1;}else{flag=0;}if(flag){ //如果为负温度取反加1MSB=~MSB;LSB=~LSB+1;}t1=MSB<<4; //得到温度整数部分t1|=(LSB>>4);t2=(LSB&0x0F)*0.0625*10000; //得到温度小数部分并扩大10000倍//计算各位数码管要显示的数值if(flag){Bit[1]=16; //如果为负温度则显示"-"}else{Bit[1]=t1/100;}Bit[2]=t1%100/10;Bit[3]=t1%10;Bit[4]=t2/1000;Bit[5]=t2%1000/100;Bit[6]=t2%100/10;Bit[7]=t2%10;}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock(); InitPort();_DINT();//关闭中断while(1){DS18B20Init();WriteByte(0xCC); //跳过ROM配置WriteByte(0x44); //启动温度转换DS18B20Init();WriteByte(0xCC);WriteByte(0xBE); //读温度寄存器LSB=ReadByte(); //读温度数据低字节MSB=ReadByte(); //读温度数据高字节GetT(); //计算温度Display();}}七、DS1302实时时钟实验功能:在数码管上显示从DS1302读取的时间日期星期数据时间格式:时-分-秒日期格式:年月日-星期 C键:选择显示时间还是日期 D键:循环选择所要编辑的位 E 键:编辑的位的数值加1 F键:编辑的位的数值减1#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned char#define SCLK_HIGH P3OUT|=BIT3#define SCLK_LOW P3OUT&=~BIT3#define RST_HIGH P3OUT|=BIT1#define RST_LOW P3OUT&=~BIT1#define IO_HIGH P3OUT|=BIT2#define IO_LOW P3OUT&=~BIT2#define IO_OUT P3DIR|=BIT2#define IO_IN P3DIR&=~BIT2#define IO_DATA P3IN&BIT2uchar num=100;uchar TimeFlag=1; //显示日期时间标志uchar EditFlag=0; //闪烁显示标志uchar KeyValue=0xFF;uchar DNum=0; //D键按的次数//共阳数码管编码表const uchar Code[18]={0xC0,0xF9,0xA4,0xB0,//0,1,2,30x99,0x92,0x82,0xF8,//4,5,6,70x80,0x90,0x88,0x83,//8,9,A,b0xC6,0xA1,0x86,0x8E,//C,d,E,F0xBF,0xFF};//-,全灭//键值编码表const uchar KeyCode[16]={0x77,0x7B,0x7D,0x7E,//0,1,2,3 0xB7,0xBB,0xBD,0xBE,//4,5,6,70xD7,0xDB,0xDD,0xDE,//8,9,A,b0xE7,0xEB,0xED,0xEE};//C,d,E,F uchar DS1302[8]={0,0,0,0,0,0,0,0}; //秒,分,时,日,月,星期,年uchar DateBit[8]={0,0,0,0,0,0,16,0}; //日期各位显示的数值uchar TimeBit[8]={0,0,16,0,0,16,0,0}; //时间各位显示的数值uchar BitCode=0x80; //数码管位码初值//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//端口初始化函数void InitPort(void){P1SEL=0x00;//P1口所有引脚设置为一般的IO口P1DIR=0x0F;//P1.0 P1.1 P1.2 P1.3设置为输出方向P1OUT=0x00;//P1口先输出低电平P1IE=0xF0;//P1.4 P1.5 P1.6 P1.7中断允许P1IES=0xF0;//P1.4 P1.5 P1.6 P1.7下降沿触发中断P3SEL=0x00;//P3口所有引脚设置为一般的IO口P3DIR=0x0E;//P3.1 P3.2 P3.3设置为输出方向P2SEL=0x00;//P2口所有引脚设置为一般的IO口P4SEL=0x00;//P4口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向P4DIR=0xFF;//P4口所有引脚设置为输出方向P2OUT=0x00;//P2口先输出低电平P4OUT=0xFF;//P4口先输出低电平P5SEL&=~BIT7;//P5.7设置为一般的IO口P5DIR|=BIT7;//P5.7设置为输出方向P5OUT&=~BIT7;//P5.7输出低电平来使能74HC573来驱动数码管}//ms级延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}//数码管扫描显示程序void Display(void){for(uchar i=0;i<8;i++){if(EditFlag==1&&DNum>0){ //判断是否闪烁if(TimeFlag==0){ //判断日期还是时间闪烁switch(DNum){ //根据D按的次数判断日期那一位闪烁case 1:P4OUT=BitCode&0x3F;break;case 2:P4OUT=BitCode&0xCF;break;case 3:P4OUT=BitCode&0xF3;break;case 4:P4OUT=BitCode&0xFE;break;}}else{switch(DNum){ //根据D按的次数判断时间那一位闪烁case 1:P4OUT=BitCode&0x3F;break;case 2:P4OUT=BitCode&0xE7;break;case 3:P4OUT=BitCode&0xFC;break;}}}else{P4OUT=BitCode; //输出位码}if(TimeFlag==1) P2OUT=Code[TimeBit[i]];//判断显示时间还是日期else P2OUT=Code[DateBit[i]];BitCode>>=1;//位码右移一位if(BitCode==0) BitCode=0x80;DelayMs(1); //延时1msP2OUT=0xFF;}}//10us级延时子程序void Delayus(uint us){while(us--){for(uint i=0;i<8;i++); }}//按键分析程序void KeyProcess(void){uchar OutData=0x07;for(uchar i=0;i<4;i++){//扫描4列OutData|=0xF0;P1OUT=OutData;if(P1IN!=OutData) KeyValue=P1IN;OutData>>=1;}P1OUT=0x00;//恢复原来的值}//端口1中断处理程序#pragma vector=PORT1_VECTOR__interrupt void Port1INT(void){for(uint i=1000;i>0;i--);KeyProcess();P1IFG=0x00;//清除中断标志位}//向DS1302写一字节数据,address为命令字节void WriteByte(uchar Command,uchar WriteData){ uchar j,k=1;RST_LOW;SCLK_LOW;RST_HIGH;for(j=0;j<=7;j++){if(Command&k) IO_HIGH;else IO_LOW;SCLK_HIGH;k<<=1;SCLK_LOW;}k=1;for(j=0;j<=7;j++){if(WriteData&k) IO_HIGH;else IO_LOW;SCLK_HIGH;k<<=1;SCLK_LOW;}RST_LOW;}//读取DS1302一字节数据,address为命令字节uchar ReadByte(uchar Command){uchar i,k=1;RST_LOW;SCLK_LOW;RST_HIGH;for(i=0;i<8;i++){if(Command&k) IO_HIGH;else IO_LOW;SCLK_HIGH;k<<=1;if(i!=7) SCLK_LOW;}k=0;for(i=0;i<8;i++){k>>=1;SCLK_LOW;IO_IN;if(IO_DATA) k|=0x80;IO_OUT;SCLK_HIGH;}RST_LOW;return(k);}//读取DS1302的秒,分,时,日,月,星期,年void ReadDS1302(){uchar i;for(i=0;i<=6;i++) DS1302[i]=ReadByte(0x80+2*i+1);//计算时间日期的各位要显示的数据TimeBit[7]=DS1302[0]&0x0F;TimeBit[6]=DS1302[0]&0x70;TimeBit[6]>>=4;TimeBit[4]=DS1302[1]&0x0F;TimeBit[3]=DS1302[1]&0x70;TimeBit[3]>>=4;TimeBit[1]=DS1302[2]&0x0F;TimeBit[0]=DS1302[2]&0x30;TimeBit[0]>>=4;DateBit[5]=DS1302[3]&0x0F;DateBit[4]=DS1302[3]&0x30;DateBit[4]>>=4;DateBit[3]=DS1302[4]&0x0F;DateBit[2]=DS1302[4]&0x10;DateBit[2]>>=4;DateBit[7]=DS1302[5]&0x07;DateBit[1]=DS1302[6]&0x0F;DateBit[0]=DS1302[6]&0xF0;DateBit[0]>>=4;}//定时器A初始化void InitTimerA(void){TACTL=TASSEL1+ID1+ID0+MC0+TACLR;//选择1/8SMCLK 增计数清除TARCCTL0=CCIE;//CCR0中断允许比较模式CCR0=10000;//时间间隔10ms}//定时器A中断#pragma vector=TIMERA0_VECTOR__interrupt void TimerAINT(void){num--;if(num==0){EditFlag=!EditFlag; //更新闪烁标志num=50;}}//时间编辑程序void TimeEdit(uchar flag){uchar Data,NowData;if(flag){ //判断加1还是减1switch(DNum){ //判断编辑时间的哪一位case 1:{Data=ReadByte(0x85); //读取小时数据NowData=Data+1;if((NowData&0x0F)>9) NowData=NowData+6;if(NowData>=0x24) NowData=0;WriteByte(0x84,NowData); //写入小时数据break;}case 2:{Data=ReadByte(0x83); //读取分数据NowData=Data+1;if((NowData&0x0F)>9) NowData=NowData+6;if(NowData>=0x60) NowData=0;WriteByte(0x82,NowData); //写入分数据break;}case 3:{Data=ReadByte(0x81); //读取秒数据NowData=Data+1;if((NowData&0x0F)>9) NowData=NowData+6;if((NowData&0x7F)>=0x60) NowData=0;WriteByte(0x80,(NowData&0x7F)|(Data&0x80)); //写入秒数据break;}}}else{switch(DNum){ //判断编辑时间的哪一位case 1:{Data=ReadByte(0x85); //读取小时数据if(Data==0){NowData=0x23;}else{NowData=Data-1;if((NowData&0x0F)>9) NowData=NowData-6;}WriteByte(0x84,NowData); //写入小时数据break;}case 2:{Data=ReadByte(0x83); //读取分数据if(Data==0){NowData=0x59;}else{NowData=Data-1;if((NowData&0x0F)>9) NowData=NowData-6;}WriteByte(0x82,NowData); //写入分数据break;}case 3:{Data=ReadByte(0x81); //读取秒数据if(Data==0){NowData=0x59;}else{NowData=Data-1;if((NowData&0x0F)>9) NowData=NowData-6;}WriteByte(0x80,(NowData&0x7F)|(Data&0x80)); //写入秒数据break;}}}}//日期编辑程序void DateEdit(uchar flag){uchar Data,NowData;if(flag){ //判断加1还是减1switch(DNum){ //判断编辑日期的哪一位case 1:{ //年加1Data=ReadByte(0x8d); //读取年数据NowData=Data+1; //年加1if((NowData&0x0F)>9) NowData=NowData+6; //BCD调整if(NowData>=0xA0) NowData=0; //年>=100时,年=0 WriteByte(0x8c,NowData); //年写入DS1302break;}case 2:{Data=ReadByte(0x89); //读取月数据NowData=Data+1; //月加1if((NowData&0x0F)>9) NowData=NowData+6; //BCD调整if(NowData>=0x13) NowData=1; //月>=13,月=1WriteByte(0x88,NowData); //月写入DS1302break;}case 3:{Data=ReadByte(0x87); //读取日数据NowData=Data+1; //日加1if((NowData&0x0F)>9) NowData=NowData+6; //BCD调整if(NowData>=0x32) NowData=1; //日>=32,日=1 WriteByte(0x86,NowData); //日写入DS1302break;}case 4:{Data=ReadByte(0x8B); //读取星期数据NowData=Data+1; //星期加1if(NowData>=8) NowData=1; //星期>=8,星期=1 WriteByte(0x8A,NowData); //星期写入DS1302 break;}}}else{switch(DNum){case 1:{ //年减1Data=ReadByte(0x8d); //读取年数据if(Data==0){NowData=0x99; //如果年=0,减1则为99}else{NowData=Data-1; //年减1if((NowData&0x0F)>9) NowData=NowData-6; //BCD调整}WriteByte(0x8c,NowData); //年写入DS1302break;}case 2:{Data=ReadByte(0x89); //读取月数据NowData=Data-1; //月减1if((NowData&0x0F)>9) NowData=NowData-6; //BCD调整if(NowData==0) NowData=0x12; //月=0,月=12 WriteByte(0x88,NowData); //月写入DS1302break;}case 3:{Data=ReadByte(0x87); //读取日数据NowData=Data-1; //日减1if((NowData&0x0F)>9) NowData=NowData-6; //BCD调整if(NowData==0) NowData=0x31; //日=0,日=31 WriteByte(0x86,NowData); //日写入DS1302break;}case 4:{Data=ReadByte(0x8B); //读取星期数据NowData=Data-1; //星期减1if(NowData==0) NowData=7; //星期=0,星期=7 WriteByte(0x8A,NowData); //星期写入DS1302 break;}}}}//按钮功能函数void KeyFun(void){switch(KeyValue){case 0xE7:{//C键按下切换显示日期还是时间TimeFlag=!TimeFlag;DNum=0;KeyValue=0xFF;break;} case 0xEB:{ //D键按下,DNum加1DNum++;if((TimeFlag==0)&&(DNum>=5)) DNum=0; //如果当前编辑的是日期并且DNum>=5,则编辑完毕,返回正常状态if((TimeFlag==1)&&(DNum>=4)) DNum=0; //如果当前编辑的是时间并且DNum>=4,则编辑完毕,返回正常状态KeyValue=0xFF;break;}case 0xED:{ //E键按下,所选位加1if(TimeFlag==1) TimeEdit(1); //判断编辑日期还是时间 else DateEdit(1);KeyValue=0xFF;break;}case 0xEE:{ //F键按下,所选位减1if(TimeFlag==1) TimeEdit(0); //判断编辑日期还是时间 else DateEdit(0);KeyValue=0xFF;break;}}}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();InitPort();InitTimerA();_EINT();//打开中断WriteByte(0x80,ReadByte(0x81)&0x7F); //启动DS1302while(1){KeyFun();ReadDS1302();Display();}}八、RS232串口通信实验PC串口发送数据给单片机,在数码管上显示接收到的数据并且给PC返回接收到的数据注:串口收发请使用串口调试软件调试,本程序使用串口1,请将串口线插到COM1连接至PC #include "msp430x14x.h"#define uint unsigned int#define uchar unsigned char//共阳数码管编码表uchar Code[18]={0xC0,0xF9,0xA4,0xB0,//0,1,2,30x99,0x92,0x82,0xF8,//4,5,6,70x80,0x90,0x88,0x83,//8,9,A,b0xC6,0xA1,0x86,0x8E,//C,d,E,F0xBF,0xFF};//-,全灭uchar Bit[8]={17,17,17,17,17,17,16,16}; //数码管各位要显示的数字uchar BitCode=0x80; //数码管位码初值uchar Buf=0; //接收到的数据//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//端口初始化函数void InitPort(void){P2SEL=0x00;//P2口所有引脚设置为一般的IO口P4SEL=0x00;//P4口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向P4DIR=0xFF;//P4口所有引脚设置为输出方向P2OUT=0x00;//P2口先输出低电平P4OUT=0xFF;//P4口先输出低电平P5SEL&=~BIT7;//P5.7设置为一般的IO口P5DIR|=BIT7;//P5.7设置为输出方向P5OUT&=~BIT7;//P5.7输出低电平来使能74HC573来驱动数码管P3SEL=0xC0;//P3.6 P3.7为TXD RXDP3DIR=0x40;//P3.6为输出方向}//UART1初始化函数void InitUART1(void){U1CTL|=CHAR;//数据为8位U1TCTL=SSEL0;//波特率发生器选择ACLKUBR01=0x03;UBR11=0x00;UMCTL1=0x4A;//设置波特率为9600bpsME2=UTXE1+URXE1;//使能UART1的TXD RXDU1CTL&=~SWRST;//初始化UART1状态机IE2=URXIE1;//使能UART1的接收中断}//串口1接收中断处理程序#pragma vector=UART1RX_VECTOR__interrupt void UART1RXINT(void){Buf=RXBUF1;Bit[6]=Buf/16;Bit[7]=Buf%16;TXBUF1=Buf;//发送接收到的数据}//延时子函数void Delay(void){for(uchar i=255;i>0;i--);}//延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}//数码管扫描显示程序void Display(void){for(uchar i=0;i<8;i++){P4OUT=BitCode; //输出位码P2OUT=Code[Bit[i]]; //输出段码BitCode>>=1;//位码右移一位if(BitCode==0) BitCode=0x80;DelayMs(1); //延时1msP2OUT=0xFF;}}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();InitPort();InitUART1();_EINT();//打开中断while(1){Display();} }九、RS485通信实验注:跳线232/485连接左边的两端,以使MAX3490连接UART0跳线RS485将A与Y连接 B与Z连接,以使MAX3490接收自己发送的数据#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned char//共阳数码管编码表uchar Code[18]={0xC0,0xF9,0xA4,0xB0,//0,1,2,30x99,0x92,0x82,0xF8,//4,5,6,70x80,0x90,0x88,0x83,//8,9,A,b0xC6,0xA1,0x86,0x8E,//C,d,E,F0xBF,0xFF};//-,全灭uchar Bit[8]={17,17,17,17,17,17,16,16}; //数码管各位要显示的数字uchar BitCode=0x80; //数码管位码初值uchar Buf=0; //接收到的数据//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//端口初始化函数void InitPort(void){P2SEL=0x00;//P2口所有引脚设置为一般的IO口P4SEL=0x00;//P4口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向P4DIR=0xFF;//P4口所有引脚设置为输出方向P2OUT=0x00;//P2口先输出低电平P4OUT=0xFF;//P4口先输出低电平P5SEL&=~BIT7;//P5.7设置为一般的IO口P5DIR|=BIT7;//P5.7设置为输出方向P5OUT&=~BIT7;//P5.7输出低电平来使能74HC573来驱动数码管P3SEL=0xC0;//P3.6 P3.7为TXD RXDP3DIR=0x40;//P3.6为输出方向}//UART0初始化函数void InitUART0(void){U1CTL|=CHAR;//数据为8位U1TCTL=SSEL0;//波特率发生器选择ACLKUBR01=0x03;UBR11=0x00;UMCTL1=0x4A;//设置波特率为9600bpsME2=UTXE1+URXE1;//使能UART1的TXD RXDU1CTL&=~SWRST;//初始化UART1状态机IE2=URXIE1;//使能UART1的接收中断}//串口1接收中断处理程序#pragma vector=UART1RX_VECTOR__interrupt void UART1RXINT(void){Buf=RXBUF1;//读取MAX3490接收回来的数据并显示Bit[6]=Buf/16;Bit[7]=Buf%16;}//延时子程序void DelayMs(uint ms){while(ms--){for(uint i=0;i<800;i++);}}//数码管扫描显示程序void Display(void){for(uchar i=0;i<8;i++){P4OUT=BitCode; //输出位码P2OUT=Code[Bit[i]]; //输出段码BitCode>>=1;//位码右移一位if(BitCode==0) BitCode=0x80;DelayMs(1); //延时1msP2OUT=0xFF;}}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();InitPort();InitUART0();_EINT();//打开中断while(1){TXBUF1=0xFF;//用MAX3490发送数据0xFFDelayMs(1);Display();}}十、I2C存储器AT24C02读写实验功能:在AT24C02某一地址写入一个数据再读出显示在P2口#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned char#define SDA_OUT P5DIR|=BIT4#define SDA_IN P5DIR&=~BIT4#define SDA_HIGH P5OUT|=BIT4#define SDA_LOW P5OUT&=~BIT4#define SDA_DATA P5IN&BIT4#define SCL_OUT P5DIR|=BIT5#define SCL_HIGH P5OUT|=BIT5#define SCL_LOW P5OUT&=~BIT5//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//10us级延时子程序void Delayus(uint us){while(us--){for(uint i=0;i<5;i++);}}//I2C起始条件void I2cStart(){ SDA_OUT;SDA_HIGH;Delayus(1);SCL_OUT;SCL_HIGH;Delayus(1);SDA_LOW;Delayus(1);SCL_LOW;//钳住I2C总线,准备发送或接收数据}//I2C停止条件void I2cStop(){SCL_OUT;SCL_LOW;Delayus(1);SDA_OUT;SDA_LOW;Delayus(1);SCL_HIGH;Delayus(1);SDA_HIGH;Delayus(1);}//发ACK应答void I2cAck(){SDA_OUT;SDA_LOW;Delayus(1);SCL_OUT;SCL_HIGH;Delayus(1);SCL_LOW;Delayus(1);}//发NAK应答void I2cNAk(){SDA_OUT;SDA_HIGH;Delayus(1);SCL_OUT;SCL_HIGH;Delayus(1);SCL_LOW;Delayus(1);}//等待应答int WaitAck(){uchar Time=255;SDA_OUT;SDA_HIGH;Delayus(1);SDA_IN;SCL_OUT;SCL_HIGH;Delayus(1);while(SDA_DATA){Time--;if(Time==0){I2cStop();return (0);}}SCL_LOW;Delayus(1);return (1);}//I2C写一字节数据void I2cWriteByte(uchar Data){uchar i;SDA_OUT;SCL_OUT;for(i=0;i<8;i++){SCL_LOW;Delayus(1);if(Data&0x80) SDA_HIGH;else SDA_LOW;Data<<=1;Delayus(1);SCL_HIGH;Delayus(1);}SCL_LOW;}//I2C读一字节数据uchar I2cReadByte(){uchar i,TmpData=0;SDA_OUT;SCL_OUT;SDA_HIGH;for(i=0;i<8;i++){SCL_LOW;Delayus(1);SCL_HIGH;Delayus(1);SDA_IN;TmpData<<=1;if(SDA_DATA) TmpData|=1;}SCL_LOW;return(TmpData);}//I2C写数据到AT24C02void I2cWrite(uchar Address,uchar Data){ I2cStart();//启动总线I2cWriteByte(0xA0);//发送器件地址WaitAck();I2cWriteByte(Address);//发送器件子地址 WaitAck();I2cWriteByte(Data);//发送数据WaitAck();I2cStop();}//I2C从AT24C02读数据uchar I2cRead(uchar Address){uchar TmpData;I2cStart();//启动总线I2cWriteByte(0xA0);//发送器件地址WaitAck();I2cWriteByte(Address);//发送器件子地址 WaitAck();I2cStart();//启动总线I2cWriteByte(0xA1);//发送器件地址I2cAck();TmpData=I2cReadByte();//读取数据I2cNAk();I2cStop();return(TmpData);}void main(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗InitClock();_DINT();//关闭中断 P2SEL=0x00;//P2口所有引脚设置为一般的IO口P2DIR=0xFF;//P2口所有引脚设置为输出方向P2OUT=0x00;//P2口先输出0x00I2cWrite(0x00,0x12);//在地址0x00写入数据0x12while(1){P2OUT=I2cRead(0x00);//读出地址为0x00的数据并显示}}十一、PS/2键盘扫描实验功能:在数码管上显示PC键盘输入的键值#include "msp430x14x.h"#define uint unsigned int#define uchar unsigned charuchar KeyValue=0;//键值uchar IntNum=0;//中断次数uchar KeyUP=0;//键松开标识//共阳数码管编码表uchar Code[18]={0xC0,0xF9,0xA4,0xB0,//0,1,2,30x99,0x92,0x82,0xF8,//4,5,6,70x80,0x90,0x88,0x83,//8,9,A,b0xC6,0xA1,0x86,0x8E,//C,d,E,F0xBF,0xFF};//-,全灭uchar Bit[8]={16,16,16,16,16,16,16,16}; //数码管各位要显示的数字uchar BitCode=0x80; //数码管位码初值//键盘编码表uchar KeyCode[16]={69,//022,//130,//238,//337,//446,//554,//661,//762,//870,//928,//a50,//b33,//c35,//d36,//e43,//f};//时钟初始化函数void InitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频最高的标称频率DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uint i=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频}//端口初始化函数void InitPort(void){P1SEL=0x00;//P1口所有引脚设置为一般的IO口P1DIR=0x00;//P1口所有引脚设置为输入方向P1IE=0x20;//P1.5中断允许P1IES=0x20;//P1.5下降沿触发中断P2SEL=0x00;//P2口所有引脚设置为一般的IO口。

SIEMENS-MMS430变频器一控二水泵分级恒压供水控制系统调试手册资料

SIEMENS MMS430变频器一控二水泵分级恒压供水控制系统调试手册SIEMENS MMS430分级控制简介SIEMENS MMS430变频器通过其内置的基于PID控制方式的电动机分级控制系统最多可以控制3台循环工作的辅助水泵/风机。

该种控制系统一般由以下几个部分组成:一台由变频器控制的水泵/风机,另外可以最多有3台由接触器或者电机启动器控制的辅助水泵/风机,而辅助水泵/风机的接触器或电机启动器则通过变频器自身的继电器开关输出进行控制。

下面是一个典型的多泵循环控制系统:其中:Mv为由变频器控制速度的变速电机;M1为用变频器输出继电器1(DOUT1)接通/断开的电机;M2为用变频器输出继电器2(DOUT2)接通/断开的电机;M3为用变频器输出继电器3(DOUT3)接通/断开的电机;进入分级控制: 起动各台固定速度电动机的过程。

退出分级控制: 停止各台固定速度电动机的过程。

当变频器运行在最大频率,而且PID 反馈信号表明系统要求达到更高的速度时,变频器通过其继电器的输出接点(进入分级控制) 接通M1-M3 中的一台电动机。

同时,为了保持被控的变量尽可能恒定不变,变频器的输出频率必须沿斜坡函数曲线降低至最小频率。

因此,在分级过程中,PID控制器必须暂停工作。

辅助电机进入分级控制:当变频器运行在最小频率,而且PID 反馈信号表明系统要求进一步降低速度时,变频器通过继电器的输出接点(退出分级控制) 断开M1-M3 中的一台电动机。

在这种情况下,为了保持被控的变量尽可能恒定不变,变频器的输出频率必须沿斜坡函数曲线由最低频率上升至最高频率。

同时,PID 控制器必须暂停工作通过参数P2372[3] 选择是否允许电动机的分级循环0 禁止分级循环1 允许分级循环允许电动机分级循环工作时,选择哪一台电动机进入 / 退出分级控制,是根据电动机的运行时间计数器 (P2380) 的计数值来确定的。

进入分级控制时,运行时间计数器计入小时数最少的电动机接通 ; 退出分级控制时,计入小时数最多的电动机断开。

12864画点程序 430高级应用

//带字库12864 画点波形显示程序#include <msp430x16x.h>#include <math.h>//------------定义接口-------------//#define RS P5OUT^4 //sbit RS=P2^5 ;#define Rw P5OUT^5 //sbit RW=P2^6 ;#define E P5OUT^6 //sbit E=P2^7 ;sbit RES=P2^1 ;//#define Lcd_Bus P1// P1 接LCM#define uchar unsigned char#define FIRST_ADDR 0//定义字符/汉字显示起始位置/*------------------检查忙位-----------------------------*/void chk_busy(){RS=0 ;RW=1 ;E=1 ;P2DIR=0X00;P2IN=0xff ;while((P2OUT&0x80)==0x80);E=0 ;}/*------------------延时子程序-----------------------------*/ void delay(unsigned int t){unsigned int i,j ;for(i=0;i<t;i++)for(j=0;j<10;j++);}/*------------------写命令到LCD------------------------------*/ void write_com(unsigned char cmdcode){chk_busy();RS=0 ;RW=0 ;E=1 ;P2DIR=0XFF;P2OUT=cmdcode ;delay(5);//------------------在数据写入的时候加入适当的延时E=0 ;delay(5);/*-------------------写数据到LCD----------------------------*/void write_data(unsigned char Dispdata){chk_busy();RS=1 ;RW=0 ;E=1 ;P2DIR=0XFF;P2OUT=Dispdata ;delay(5);//------------------在数据写入的时候加入适当的延时E=0 ;delay(5);}/*------------------初始化LCD 屏--------------------------*/void lcdreset(){delay(2000);write_com(0x30);delay(10);//选择基本指令集write_com(0x30);//选择8bit 数据流delay(5);write_com(0x0c);//开显示(无游标、不反白)delay(10);write_com(0x01);//清除显示,并且设定地址指针为00Hdelay(500);write_com(0x06);//指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位delay(0);}/*------------------显示字符串--------------------------*/void hzkdis(unsigned char code*s){while(*s>0){write_data(*s);s++;delay(50);}/*------------------首屏显示--------------------------*/void ceshi(){write_com(0x01);//清除显示,并且设定地址指针为00Hdelay(5);write_com(0x80);//第一行(如果是地址是:80H,即LCD 的第一行的第一个位置显示)hzkdis("中国计量学院");write_com(0x90);//第二行(如果是地址是:90H,即LCD 的第二行的第一个位置显示)hzkdis("光电学院");write_com(0x88);//第三行(如果是地址是:88H,即LCD 的第二行的第一个位置显示)hzkdis("06 光信2");write_com(0x98);//第四行(如果是地址是:98H,即LCD 的第二行的第一个位置显示)hzkdis("测试程序");}//------------------清整个GDRAM 空间----------------------------void clrgdram(){unsigned char x,y ;for(y=0;y<64;y++)for(x=0;x<16;x++){write_com(0x34);write_com(y+0x80);//行地址write_com(x+0x80);//列地址write_com(0x30);write_data(0x00);write_data(0x00);}}//------------------------------------------------------------void clrscreen(){write_com(0x01);delay(10);}unsigned char ReadByte(void)unsigned char byReturnValue ;chk_busy();P2DIR=0X00;P2IN=0xff ;RS=1 ;RW=1 ;E=0 ;E=1 ;byReturnValue=P2IN ;E=0 ;return byReturnValue ;}//增加画点子程序void DrawPoint(unsigned char X,unsigned char Y,unsigned char Color) {unsigned char Row,Tier,Tier_bit ;unsigned char ReadOldH,ReadOldL ;write_com(0x34);write_com(0x36);Tier=X>>4 ;Tier_bit=X&0x0f ;if(Y<32){Row=Y ;}else{Row=Y-32 ;Tier+=8 ;}write_com(Row+0x80);write_com(Tier+0x80);ReadByte();ReadOldH=ReadByte();ReadOldL=ReadByte();write_com(Row+0x80);write_com(Tier+0x80);if(Tier_bit<8){switch(Color){case 0 :ReadOldH&=(~(0x01<<(7-Tier_bit)));break ;case 1 :ReadOldH|=(0x01<<(7-Tier_bit)); break ;case 2 :ReadOldH^=(0x01<<(7-Tier_bit)); break ;default :break ;}write_data(ReadOldH);write_data(ReadOldL);}else{switch(Color){case 0 :ReadOldL&=(~(0x01<<(15-Tier_bit))); break ;case 1 :ReadOldL|=(0x01<<(15-Tier_bit)); break ;case 2 :ReadOldL^=(0x01<<(15-Tier_bit)); break ;default :break ;}write_data(ReadOldH);write_data(ReadOldL);}write_com(0x30);}void main(void){uchar i,j,colour=1 ;// uint ADzhi;P5DIR|=0x70;RW=0 ;lcdreset();ceshi();clrgdram();delay(5000);clrscreen();for(i=4;i<124;i++){j=35-27*sin((i-4)*3.14/30); //正弦波显示DrawPoint(i,j,colour);}delay(5000);while(1);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DM430-L V3.0版示例源程序项目列表
序号项目名称功能备注
1 2.8TFT_ADC_Wave ADC0通道采集电压以波形形式显示到2.8寸TFT触摸屏,ADC输入为P60管脚
2 2.8TFT_Image 2.8寸TFT触摸屏显示图片以及图片移动示例代码
3 2.8TFT_SD_H 2.8寸TFT触摸屏SD卡测试程序,显示SD卡容量
4 2.8TFT_Show 2.8寸TFT触摸屏显示字符汉字彩条等信息
5 2.8TFT_Touch 2.8寸TFT触摸屏触摸功能测试程序,任意触摸描点64KEY4位独立按键查询模式,利用LED灯显示按键情况
7DS18B20温度传感器18B20测试程序
8INFRARED红外一体化接收头接收红外遥控器按键测试程序
9LCD16021602液晶显示字符测试程序
10LCD12864带字库ST7920型12864液晶显示汉字和字符测试程序11LCD12864-Picture带字库ST7920型12864液晶显示图片测试程序
12LED88位LED灯同时闪烁控制测试程序
13LED8_1单独控制某一位LED灯测试程序
14LED8_Run8位LED灯流水显示测试程序
15NRF24L01NRF24L01无线射频模块通信测试程序(需2块板子)
16RS485RS485通信测试程序,通过按键控制数据(可2块板子对连以后测试,会互相显示数据收发情况,LED显示)
17 2.8TFT_H_Show 2.8寸TFT触摸屏横屏显示测试程序
18UART_1串口测试程序1,使用串口UART0,与电脑互发
19UART_2串口测试程序2,使用串口UART0,与电脑互发
20DS18B20_1602DS18B20测试的温度显示到1602液晶
214KEY_1286412864液晶显示4位独立按键键值
22DS18B20_12864DS18B20测试的温度显示到12864液晶
23MSP430_TEMP MSP430F149内部温度传感器控制程序
244KEY_16021602液晶显示4位独立按键键值
25DS18B20_2.8TFT DS18B20测试的温度显示到2.8寸TFT触摸屏
264KEY_2.8TFT 2.8寸TFT触摸屏显示4位独立按键键值
27TIMERA_2.8定时器测试程序,显示定时时间到2.8寸TFT触摸屏28TIMERA_LED定时器测试程序,通过LED显示
29 2.8TFT_BG 2.8寸TFT触摸屏显示自定义表格
30 2.8TFT_Touch_Key 2.8寸TFT触摸屏触摸按键功能程序,可基于此实现计算器。

相关文档
最新文档