当前位置:文档之家› MSP430单片机实用C语言程序基础

MSP430单片机实用C语言程序基础

MSP430单片机实用C语言程序基础
MSP430单片机实用C语言程序基础

MSP430系列单片机实用C语言程序设计

——March 2, 2011扩展的关键字

1.asm

也可以写成__asm。功能是在C程序中直接嵌入汇编语言。

语法:asm(“string”);其中string必须是有效的汇编语句。

2.__interrupt

放在函数前面,标志中断函数。下面这段程序是异步串行口UART0的接收中断函数。UART0RX_VECTOR为异步串行口UART0的接收中断向量。

举例:

#pragma vector=UART0RX_VECTOR

__interrupt void UART0_R(void) //UART0接收中断

{

TXBUF0=RXBUF0;

}

3.__monitor

放在函数前面,功能是但这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响应。

4.__no_init

放在全局变量前面,功能是使程序启动时不为变量赋初值。

5.__raw

编译中断函数时,编译器会自动生成一段代码,首先保存当时所用到CPU内寄存器的内容,退出中断程序时再进行恢复。将__raw放在中断函数前可以禁止保存CPU内寄存器的过程,当然退出时也不会恢复。是否为中断函数使用此关键字要根据需要而定。

6.__regvar

放在变量前面,作用是声明变量为寄存器变量。可以用于整数、指针、32位浮点数以及只含有一个元素的结构和联合。寄存器变量的地址只能为R4或者R5,也不能用指针指向这个寄存器变量,而且必须用__no_init禁止初始化。如:

__regvar __no_init unsigned char q0 @ __R4;

其他不常用的关键字还有:__data16、__intrinsic、__noreturn、__root、__task、__word16。

内部函数

本节将介绍内部函数的原型和功能。

1.__bcd_add_short

unsigned short __bcd_add_short(unsigned short, unsigned short);

功能:两个16位BCD格式的数相加,返回和。

2.__bcd_add_long

unsigned long __bcd_add_long(unsigned long, unsigned long);

功能:两个32位BCD格式的数相加,返回和。

3.__bcd_add_long_long

unsigned long long __bcd_add_long_long(unsigned long long, unsigned long long);

功能:两个64位BCD格式的数相加,返回和。

4.__bic_SR_register

void __bic_SR_register(unsigned short);

功能:将CPU中SR寄存器中的某些位清0。其参数为屏蔽码,需要清0的位为1。

5.__bic_SR_register_on_exit

void __bic_SR_register_on_exit(unsigned short);

功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU 内SR寄存器中的某些位清0。其参数为屏蔽码,需要清0的位为1。

6.__bis_SR_register

void __bis_SR_register(unsigned short);

功能:将CPU中SR寄存器中的某些位置1。其参数为屏蔽码,需要置1的位为1。

7.__bis_SR_register_on_exit

void __bis_SR_register_on_exit(unsigned short);

功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU 内SR寄存器中的某些位置1。其参数为屏蔽码,需要置1的位为1。

8.__disable_interrupt

void __disable_interrupt(void)

功能:关闭全局中断。先执行DINT命令,关闭全局中断,然后再执行NOP命令。空指令是为了确保关闭了全局中断之后再执行下面的程序。

9.__enable_interrupt

void __enable_interrupt(void)

功能:使用NINT指令打开全局中断。

10.__even_in_range

void __enable_in_range(unsigned short value, unsigned short upper_limit)

功能:只能与switch语句结合使用,判断value是否为偶数且小于等于upper_limit。

举例:

unsigned int MoonRiver, iq0;

iq0=2;

swich(__even_in_range(iq0,4))

{

case 0:

MoonRiver=0;

break;

case 2:

MoonRiver=2;

}

结果:假设iq0的值为2,执行完毕时MoonRiver=2。否则,与普通的swich语句一样,跳过case部分,直接执行下面的程序。使用__even_in_range的好处是可以生成效率比较高的代码,在判断多中断源的来源时可以使用此函数。

11.__get_interrupt_state

istate_t __get_interrupt_state(void)

功能:返回当前的中断状态。返回值istate_t为一结构,通过此函数可以获得当前的中断状态并保存,将来可以使用__set_interrupt_state恢复中断状态。

12.__get_R4_register

unsigned short __get_R4_register (void);

功能:返回寄存器R4的值,只在R4被锁定时有效。

13.__get_R5_register

unsigned short __get_R5_register (void);

功能:返回寄存器R5的值,只在R5被锁定时有效。

14.__get_SP_register

unsigned short __get_SP_register (void);

功能:返回堆栈指针寄存器SP的值。

15.__get_SR_register

unsigned short __get_SR_register (void);

功能:返回CPU中状态寄存器SR的值。

16.__get_SR_register_on_exit

unsigned short __get_SR_register_on_exit (void);

功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,返回状态寄存器SR的值。只在中断函数或者不可中断函数中有效。

17.__low_power_mode_n

void __low_power_mode_n(void);

功能:进入低功耗模式0~4。

18.__low_power_mode_off_on_exit

void __low_power_mode_off_on_exit(void);

功能:从一个中断函数或者不可中断函数(标志为__monitor)返回时退出低功耗模式。只在中断函数或者不可中断函数中有效。

19.__no_operation

void __no_operation(void);

功能:执行NOP指令。

20.__op_code

__op_code(unsigned short);

功能:在指令流中插入一个常数。

21.__segment_begin

void *__segment_begin(segment);

功能:segment是段的名字,必须是字符串。返回指向segment段的地址。此处的段是程序中定义的数据段、代码段、堆栈段等,一般用户可以使用编译器的默认设置。

22.__segment_end

void *__segment_end(segment);

功能:segment是段的名字,必须是字符串。返回指向segment段结束后的第一个字地址。

23.__set_interrupt_state

void __set_interrupt_state(istate_t);

功能:恢复istate_t中保存的中断状态。

24.__set_R4_register

void __set_R4_register(unsigned short);

功能:将unsigned short值赋给寄存器R4,只在R4被锁定时有效。

25.__set_R5_register

void __set_R5_register(unsigned short);

功能:将unsigned short值赋给寄存器R5,只在R5被锁定时有效。

26.__set_SP_register

void __set_SP_register(unsigned short);

功能:给堆栈指针寄存器SP赋值。

27.__swap_bytes

unsigned short __swap_bytes(unsigned short);

功能:一个16位的无符号整数,高8位与低8位进行交换。如0x1234交换后为0x3412。

扩展定义

为了使用方便,EW430还作了一些定义,有些定义不属于C语言的一部分,而是一种二次包装,如对内部函数的包装。它们的功能完全可以用其他函数或者表达式实现,用户也可以自己重新定义,但使用它们会使编写程序更加简单易懂。

下面1~4项都是在不同类型CPU的头文件中定义的,如msp14x.h,其中对CPU内的各寄存器和模块的各种工作模式都作了详尽的定义,编程时应尽可能地利用。

1. PxIN、PxOUT、PxDIR、PxSEL

x为端口号。IN为端口输入寄存器,OUT为端口输出寄存器,DIR为端口方向控制寄存器,SEL为端口第二功能选择寄存器。

举例:

Moon=P1IN; //读端口P1的值,赋给变量Moon

P3Out = 5; //P3端口输出5

P2DIR = 0xF0; //P2端口的高4位为输出,第4位为输入

P6SEL = 0xF; //P6端口的高4位用作I/O端口,低4位用于第二功能

2. BITx

x的取值范围为0~F。代表寄存器的某一位。其定义为:

#define BIT0 (0x0001)

#define BIT1 (0x0002)

#define BITE (0x4000)

#define BITF (0x8000)

BIT0为最低位,BITF为最高位。MSP430是不支持位操作的,如果想对位操作,

最好的方法就是通过位屏蔽来实现。

举例:

P1OUT | = BIT0; //将P1口的最低位输出置1

P1OUT &= ~BIT7; //将P1口的最高位输出清0,P1口只有8位

3. LPMx

x:0~4。进入0~4低功耗模式。其定义为:

#define LPM0 _BIS_SR(LPM0_bits) //进入低功耗模式0

#define LPM4 _BIS_SR(LPM4_bits) //进入低功耗模式4

从以上代码可以看出扩展定义是对内部函数的第二次包装。

举例:

LPM0; //进入低功耗模式0

LPM4; //进入低功耗模式4

4. LPMx_EXIT

x:0~4。退出+0~4低功耗模式。其定义为:

#define LPM0_EXIT _BIC_SR_IRQ(LPM0_bits) //进入低功耗模式0 …

#define LPM4_EXIT _BIC_SR_IRQ(LPM4_bits) //进入低功耗模式4 举例:

LPM0_EXIT; //退出低功耗模式0

LPM4_EXIT; //退出低功耗模式4

5. _EINT()

打开全局中断控制,使GIE=1。

6. _DINT()

关闭全局中断控制,使GIE=0。执行__disable_interrupt指令。

7. _NOP()

空操作。执行__no_operation指令。

8. _OPC(x)

在指令中插入一个常数。x为unsigned char类型。执行__op_code指令。

9. _SWAP_BYTES(x)

x是一个16位的无符号整数,高8位与低8位进行交换。执行__swap_bytes

指令。

10. __no_init [数据类型] 变量名@ 地址

在某一固定地址处定义一个不进行初始化的变量,地址可以在RAM或FLASH 内。如果使用此方式定义在RAM内的变量需要赋值,那么必须首先定义,然后才能赋值。

/*分配变量MoonRiver在RAM地址0x210*/

__no_init unsigned int MoonRiver @ 0x210; //没有初始化

MoonRiver = 100; //初始化MoonRiver为100 /*分配变量MoonRiver在FLASH地址0xFFC0*/

__no_init float MoonRiver @ 0xFFC0;

/*分配变量MoonRiver[3]在FLASH地址0x200*/

__no_init char MoonRiver[3] @ 0xFF00;

/*分配结构sMoonRiver在RAM地址0x200*/

Typedef struct

{

unsigned char q0;

unsigned int iq0;

}sMoonRiver; //定义一个结构型的数据类型,取名为sMoonRiver

__no_init sMoonRiver MoonRiver @ 0x200; //声明变量MoonRiver,其数据类型为sMoonRiver

MoonRiver.q0 = 100;

MoonRiver.iq0 = 1000; //为MoonRiver赋初值

11. const [数据类型] 变量名@ 地址

在某一固定地址处定义一个只读变量,并且只能在定义的时候赋初值。这种定义变量的方式在FLASH的固定地址处分配变量时非常有用。

举例:

/*分配变量MoonRiver在RAM地址0x210*/

const unsigned int MoonRiver @ 0x210 = 100; //初始化MoonRiver为100 /*分配变量MoonRiver在FLASH地址0xFFC0*/

const float MoonRiver @ 0xFFC0 = 32.5; //初始化MoonRiver为32.5 /*分配变量MoonRiver[3]在FLASH地址0xFF00*/

const char MoonRiver[3] @ 0xFF00 = {0, 1, 2};

/*分配结构sMoonRiver在RAM地址0xFFD0*/

Typedef struct

{

unsigned char q0;

unsigned int iq0;

}sMoonRiver; //定义一个结构型的数据类型,取名为sMoonRiver const sMoonRiver MoonRiver @ 0xFFD0 = {2, 500}; //声明变量MoonRiver,其数据类型为sMoonRiver

如果不需要确定地址,只想在FLASH中分配一个变量,则形式为:

const [数据类型] 变量名;

举例:

const unsigned int MoonRiver = 100;

MSP430单片机实验报告v3.0

MSP430单片机课程设计 一.设计要求 数字温度计 (1)用数码管(或LCD)显示温度和提示信息; (2)通过内部温度传感器芯片测量环境温度; (3)有手动测量(按测量键单次测量)和自动测量(实时测量)两种工作模式; (4)通过按键设置工作模式和自动测量的采样时间(1秒~1小时); (5)具备温度报警功能,温度过高或过低报警。 二.系统组成 系统由G2Launch Pad及其拓展板构成,单片机为MSP430G2553。 I2的通信方式对IO进行拓展,芯片为TCA6416A; 使用C 使用HT1621控制LCD; 三.系统流程 拓展的四个按键key1、key2、key3、key4分别对应单次测量、定时测量、定时时间的增、减。定时时间分别为1s,5s,15s,30s,60s。在自动测量模式下,当温度超过设定温度上限

即报警,报警时在LCD屏幕显示ERROR同时LED2闪烁,在5s后显示0℃。此时可重新开始手动或自动测量温度。 系统示意图: 四.演示 a)手动测量温度 b)自动测量温度 c)报警

显示ERROR同时LED闪烁d)设置时间界面 五.代码部分 #include "MSP430G2553.h" #include "TCA6416A.h" #include "LCD_128.h" #include "HT1621.h" #include "DAC8411.h" #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) static int t=0; long temp; long IntDeg; void ADC10_ISR(void); void ADC10_init(void); void LCD_Init(); void LCD_Display(); void GPIO_init(); void I2C_IODect(); void Error_Display(); void WDT_Ontime(void); void LCD_Init_AUTO(); void LCD1S_Display();

MSP430单片机题目答案整理(大部分)

第一章 1. MCU(微控制器单元)与MPU(微处理器单元)的区别 MCU集成了片上外围器件,而MPU不带外围器件,是高度集成的通用结构的处理器。是去除了集成外设的MCU。 2. MSC430单片机的不同系列的差别 MSP430系列单片机具有超低功耗、处理能力强大、片内外设丰富、系统工作稳定、开发环境便捷等显着优势,和其他类型单片机相比具有更好的使用效果、更广泛的应用前景。 3. MSC430单片机主要特点 1.超低功耗 2. 强大的处理能力 3. 高性能模拟技术及丰富的片上外围模块 4. 系统工作稳定 5. 方便高效的开发环境 4. MSC430单片机选型依据 选择最容易实现设计目标且性能价格比高的机型。 在研制任务重,时间紧的情况下,首先选择熟悉的机型。 欲选的机型在市场上要有稳定充足的货源。 第二章 1. 从计算机存储器体系结构上看,MSP430单片机属于什么结构 冯·诺依曼结构,是一种程序存储器和数据存储器合并在一起的存储器体系结构。 2. RISC与CISC体系结构的主要特征是什么MSP430单片机属于哪种结构 CISC----是复杂指令系统计算机Complex Instruction Set Computer的缩写,MCS-51单片机属于CISC。具有8位数据总线、7种寻址模式,111条指令。 RISC----是精简指令系统计算机Reduced Instruction Set Computer的缩写,MSP430单片机属于RISC。具有16位数据总线、7种寻址模式,27条指令。 3. 对MSP430单片机的内存访问时,可以有哪几种方式读写字数据有什么具体要求 字,字节,常字。字访问地址必须是偶数地址单元。 4. MSP430单片机的中断向量表位于什么位置其中存放的是什么内容 中断向量表:存放中断向量的存储空间。430单片机中断向量表地址空间:32字节,映射到存储器空间的最高端区域 5. MSP430单片机的指令系统物理指令和仿真指令各有多少条。 27种物理指令-内核指令和24种仿真指令 6. MSP430单片机的指令系统有哪些寻址方式各举一例说明。 有7种寻址方式:寄存器寻址,变址寻址,符号寻址,绝对寻址, 间接寻址,间接增量寻址,立即数寻址 7. MSP430单片机的CPU中有多少个寄存器其中专用寄存器有哪几个 4个专用寄存器(R0、R1、R2、R3)和12个通用寄存器(R4~R15) R0:程序计数器(PC) R1:堆栈指针(SP)—总是指向当前栈顶 R2:状态寄存器(SR)只用到16位中的低9位 R2/R3:常数发生器(CG1/CG2) 8. 按要求写出指令或指令序列。 9. 写出给定指令或指令序列的执行结果。 10.汇编语言程序的分析与理解。

南理工 王宏波 MSP430F6638单片机实验报告

MSP430单片机应用技术 实验报告 学号:XXXXXXXX

实验1 一、实验题目:UCS实验 二、实验目的 设置DCO FLL reference =ACLK=LFXT1 = 32768Hz, MCLK = SMCLK = 8MHz,输出ACLK、SMCLK,用示波器观察并拍照。 UCS,MCLK、 SMCLK 8MHz 的 1 2 六、实验结果 实验2 一、实验题目:FLL+应用实验 二、实验目的

检测P1.4 输入,遇上升沿进端口中断,在中断服务程序内翻转P4.1 状态。 三、实验仪器和设备 计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5 四、实验步骤 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; WDT 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; 3、新建工作空间workspace; 4、新建工程project与源文件main.C; 5、编写程序; 6、编译、调试、下载程序到单片机;

7、观察、分析、保存运行结果。 五、实验程序 实验4 一、实验题目:WDT_A实验 二、实验目的 定时模式 1 2 六、实验结果 实验5一、实验题目:Timer_A实验

二、实验目的 比较模式-Timer_A0,两路PWM 输出,增减计数模式,时钟源SMCLK,输出模式7 TACLK = SMCLK = default DCOCLKDIV。PWM周期CCR0 = 512-1,P1.6 输出PWM占空比CCR1 = 37.5%,P1.7输出PWM占空比CCR1 =12.5%。 要求: (1)用示波器观察两路PWM 输出的波形并拍照,测量周期、正脉宽等参数,与理论值进行对比分析。 (2 (3 1 2 实验6 一、实验题目:ADC12实验 二、实验目的 ADC12 单次采样A0 端口,根据转换结果控制LED 状态。

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

MSP430单片机实验报告

MSP430单片机实验报告 专业: 姓名: 学号:

MSP430单片机实验报告 设计目标:使8位数码管显示“5201314.”,深入了解串行数据接口。 实现过程:主要分为主函数、驱动8位数码管函数、驱动1位数码管函数及延时函数。 延时函数:采用for循环。 驱动1位数码管子函数:设置74HC164的时钟传输和数传输,声明变量,使数据表中每一个要表示的字符的每一位都与shift做与运算从而进行传输,上升沿将传输数据传送出去。驱动1位数码管子函数的流程图如图1所示。 图1 驱动1位数码管子函数流程图 驱动8位数码管子函数:调用8次驱动1位数码管子函数。驱动8位数码管子函数流程图如图2所示。 图2 驱动8位数码管流程图

while 图3 主函数流程图 实验结果:供电后,数码管显示“5201314.”字样。 源程序: /************* 程序名称:5201314.*************/ /***程序功能:通过模拟同步串口控制8个共阳数码管***/ /*******P5.1 数据管脚,P5.3 同步时钟管脚*******/ #include // 头文件 void delay(void); // 声明延迟函数void seg7_1 (unsigned char seg7_data); // 声明驱动1 位数码管函数void seg7_8 ( unsigned char seg7_data7, unsigned char seg7_data6, unsigned char seg7_data5, unsigned char seg7_data4, unsigned char seg7_data3, unsigned char seg7_data2,

51单片机学习笔记(六)_串口中断通信+定时器2串口中断

51单片机学习笔记(六)_串口中断通信+定时器2串口中 断 51 单片机默认使用定时器1 作为串口通信的波特率发生器、定时器1 中断 通信,串口与定时器1 冲突,在遇到定时器不够用的时候可以用定时器2 #include void DelayMs(unsigned int i);void SerialInit();void SendByte(unsigned char sbyte);void SendString(unsigned char *pstr);void main(void){SerialInit();while(1); //注:必需要无限循环}/*//单片机时钟周期: 11.0592MHz 以时钟1 作为波特率发生器void SerialInit(){TMOD=0x20; // 设置T1 工作方式为方式2TH1=0xfd; //给定时器高位装初值TL1=0xfd; //给定时 器低位装初值TR1=1; //开定时器//以上是设置波特率SM0=0; //设置串口通 讯方式为方式1SM1=1; REN=1; //串口是否接收数据的开关EA=1; //总中断 打开,采用查询法时不用打开中断ES=1; //串口中断开关,采用查询法时不用打开 中断}*///单片机时钟周期:11.0592MHz 以时钟T2 作为波特率发生器void SerialInit(){PCON &= 0x7F; //波特率不倍速SMOD=0SCON = 0x50; //方式1,8 位数据,可变波特率,接收允许T2CON = 0x34; RCAP2H = 0xFF; RCAP2L = 0xDC; TH2 = 0xFF; TL2 = 0xDC;EA=1; //总中断打开,采 用查询法时不用打开中断ES = 1; //串口中断开关,采用查询法时不用 打开中断}//串口中断函数:void SerialPortInte(void) interrupt 4 //采用串口中断法 收发数据{unsigned char rbyte;if(RI){ //RI=1,判定为串口接收到了数据,RI 要清零,RI=0;rbyte=SBUF; if(rbyte==0x0A){ SendString(“换行”);}else if(rbyte==0x0D){SendString(“回车”);}else{SendByte(rbyte);}}}//串口发送一个字节:void SendByte(unsigned char sbyte){ SBUF=sbyte; //发送数据while(!TI); //等待发送完成TI=0; //清零发送标志位}//串口发送一个字符串:void

如何学习并使用MSP430单片机(入门)

如何学习MSP430单片机 如何学习MSP430单片机 。 下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET 一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:

MSP430单片机AD转换实验

A/D转换实验 一、转换原理 MSP430F149的A/D转换器原理请参考相关书籍。 实验板上与AD相关的硬件电路: 编程工作实际就是对以下寄存器的操作: 寄存器类型寄存器缩写寄存器的含义 转换控制寄存器ADC12CTL0转换控制寄存器0 ADC12CTL1转换控制寄存器1 中断控制寄存器ADC12IFG中断标志寄存器ADC12IE中断使能寄存器ADC12IV中断向量寄存器 存储及其 控制寄存器ADC12MCTL0 ~ ADC12MCTL15存储控制寄存器0~15 ADC12MEM0 ~ ADC12MEM15 存储寄存器0~15

设计主程序和中断服务程序。 二、转换程序 1、程序1:转换结果发送到PC 主程序中进行A/D初始化,中断服务程序读A/D转换结果,主程序中通过串口发送结果。 “”主程序与中断程序: /********************************************************* 程序功能:将ADC对端口电压的转换结果按转换数据和对应的 模拟电压的形式通过串口发送到PC机屏幕上显示 ----------------------------------------------------------- 通信格式: 9600 ----------------------------------------------------------- 测试说明:打开串口调试精灵,正确设置通信格式,观察接收数据 **********************************************************/ #include <> #include "" #include "" #include "" #define Num_of_Results 32 uint results[Num_of_Results]; //保存ADC转换结果的数组 uint average; uchar tcnt = 0; /***********************主函数***********************/ void main( void ) {

双机间的串口双向通信2.0

单片机应用课程设计任务书

单片机应用课程设计说明书 学院名称:计算机与信息工程学院 班级名称:网工124 学生姓名:卞可虎 学号:2012211369 题目:双机间的串口双向通信设计指导教师:于红利 起止日期:2014.12.29至2015.1.4

目录 一、绪论 (1) 二、相关知识 (6) 2.1 双机通信介绍 (6) 2.2单片机AT89C51介绍 (6) 2.3 串行通信简介 (8) 2.3.1串行通信的特点 (8) 2.3.2串行通信技术标准 (9) 三、总体设计 (10) 3.1 设计需求 (10) 四、硬件设计 (10) 4.1 系统硬件电路设计 (10) 4.1.1整体电路设计 (10) 4.1.2 控制电路设计 (11) 4.1.3 复位电路 (11) 4.1.4 显示电路 (12) 五、软件设计 (12) 5.1发送端程序流程 (12) 5.2接收端程序流程 (13) 5.3按键程序 (14) 5.4串口通信程序 (15) 5.5数码管显示程序 (16)

六、Proteus软件仿真 (16) 七、结束语 (19) 参考文献 (20) 指导教师评语 (21) 成绩评定 (21) 附录:源程序 (22) 一、绪论 电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。 对于一些类似复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通

430单片机点亮LED实验报告

430单片机点亮LED实验报告 一.安装实验软件IAR 二.编写点亮LED灯程序 1.使P1.0口LED灯会不停的闪烁着,程序 #include typedef unsigned int uint; typedef unsigned char uchar; /*延时函数*/ void Delay_Ms(uint x) { uint i; while(x--)for(i=0;i<250;i++); } /*主函数*/ int main( void ) { WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset P2DIR|=BIT0;//定义P1口为输出 while(1)//死循环 { P2OUT^=BIT0;//P1.0口输出取反

Delay_Ms(600);//稍作延时 } } 下载进去看到了P1.0口LED灯会不停的闪烁着。 2.实验目的让两盏灯交换闪烁程序 #include"msp430g2553.h" void main(void) { void Blink_LED(); WDTCTL=WDTPW+WDTHOLD; //关闭看门狗 P1DIR=BIT6; P2DIR=BIT0; while(1) { Blink_LED(); } } void Blink_LED() { _delay_cycles(1000000); //控制第二个LED P1OUT^=BIT6; _delay_cycles(1000000); //控制第一个LED P2OUT^=BIT0;

MSP430单片机GPIO实验教程

GPIO实验教程 2015/7/24 官网地址:http://www.fengke.club

目录 第一节GPIO硬件介绍 (2) 第二节GPIO寄存器介绍 (3) 第三节实验 (5) 第四节实验现象 (7)

第一节GPIO硬件介绍 MSP430F5438A单片机属于5系列单片机,该系列的单片机最多可以提供12路数字IO接口,P1~P11以及PJ。大部分接口都有8个管脚,但是有些接口会少于8 个管脚。可以参考说明文档中关于接口的章节。每个I/O 管脚都可以独立的设置为输入或者输出方向,并且每个I/O 接线都可以被独立的读取或者写入。所有接口的寄存器都可以被独立的置位或者清零,就像设置驱动能力一样。 P1和P2接口具中断功能。从P1和P2接口的各个I/O管脚引入的中断可以独立的被使能并且设置为上升沿或者下降沿出发中断。所有的P1接口的I/O管脚的中断都来源于同一个中断向量P1IV,并且P2接口的中断都来源于另外一个中断向量P2IV。在一些MSP430x5xx单片机中,附加的接口也具有中断功能。详细说明请查阅芯片的说明文档。 每个独立的接口可以作为字节长度端口访问或者结合起来作为字长度端口进行访问。端口配对P1/P2、P3/P4、P5/P6、P7/P8 等联合起来分别叫做PA、PB、PC、PD 等。当进行字操作写入PA 口时,所有的16 为都被写入这个端口。利用字节操作写入PA 口的低字节时,高字节保持不变。相似地,使用字节指令写入PA 口高字节时,低字节保持不变。其它端口也是一样的,当写入的数据长度小于端口最大长度时,那些没有用到的位保持不变。所有的端口寄存器都利用这个规则来命名,除了中断向量寄存器P1IV 和P2IV。它们只能进行字节操作,并且PAIV 这个寄存器根本不存在。 利用字操作读取端口PA可以使所有16位数据传递到目的地。利用字节操作读取端口PA(P1或者P2)的高字节或者低字节并且将它们存储到存储器时可以只把高字节或者低字节分别传递到目的地。利用字节操作读取PA口数据并写入通用寄存器时整个字节都被写入寄存器中最不重要的字节。寄存器中其它重要的字节会自动清零。端口PB、PC、PD 和PE 都可以进行相同的操作。当读入的数据长短小于端口最大长度时,那些没有用到的位被视零,PJ 口也是一样的。 数字I/O的主要特征有: 1、可以独立编程的独立I/O口; 2、可以任意的混合输入输出; 3、独立配置P1、P2口的中断; 4、独立的输入和输出数据寄存器; 5、独立配置上拉或下拉电阻。

第3课 HJ-2G AVR单片机学习笔记 程序编写编译环境

第3课ICC程序编写编译环境 基于HJ-2G AVR学习板 学习AVR单片机必需要安装的第二个软件:程序编写编译环境ICC AVR 1、下面说一说安装方法,在配套资料(网上下载)找到ICC AVR直接点击按装,装好后输入正版注册码,这样就可以正常使用ICCAVR软件编写编译。 2、在桌面上打开ICCAVR软件,出现如下图片:请点开工程,并新建一个工程。 3、下图为新建一个工程,请保存在C盘目录下,输入工程名称(只能是中文),点击保存。

4、新建立一个C文件,在下图空白处输入你的C源码,输完后请保存C文件。 5、加入刚才建好的C文件到工程当中,方法如下图。

6、设置一下编译器,如下图。 7、芯片用ATmega16

8、最后一步了,只要你按上面的一步一步做,最后点一下编译键,就可以正常编译成功,如果不成功,请查一查你的C源码是否正确,还有工程是不是在中文目录下。 9、总结:本课主要学习了程序编写编译环境ICC AVR的安装,设置,还有编译方法,开始学单片机时,新手不会写C源码,可以复制慧净写好的C源码到项目中,练习多次,ICCAVR 软件你就会使用了,以后学习中,每一课都会用到本软件,只要你认真跟着《慧净1天入门AVR单片机学习笔记》学习,多多练习,相信你很快速学会AVR单片机。 慧净AVR单片机免费共享学习笔记目录(配有视频教程,请在慧净空间下载) 第一部1天入门AVR单片机学习笔记 第1课:AVR单片机学习基本流程 第2课:AVR单片机程序烧写方法 第3课:程序编写编译环境 第4课:简单C语言基础知识 第二部10天学会AVR单片机学习笔记 第1课:IO端口操作 第2课:流水灯 第3课:单个数码管显示 第4课:多个数码管同时显示 第5课:独立按键 第6课:定时器 第7课:外部中断

MSP430单片机AD转换实验

AD转换实验 一、转换原理 MSP430F149勺A/D转换器原理请参考相关书籍。实验板上与AD相关的硬件电路: RV3 10K ------------ 3-3\ J6 P61 SI?2 Al)输入电路 RV4 III-10K f > 2 ; ||| 二、转换程序 1、程序1:转换结果发送到PC 主程序中进行A/D初始化,中断服务程序读A/D转换结果,主程序中通过串口发送结果。

“ main 、c ”主程序与中断程序: /********************************************************* 程序功能:将ADC 对P6、0端口电压的转换结果按转换数据与对应的 模拟电压的形式通过 串口发送到 PC 机屏幕上显示 通信格式 :N 、 8、 1, 9600 测试说明 :打开串口调试精灵 ,正确设置通信格式 ,观察接收数据 **********************************************************/ #include #include "allfunc 、 h" #include "UART0_Func 、 c" #include "ADC_Func 、 c" #define Num_of_Results 32 uint results[Num_of_Results]; // 保存 ADC 转换结果的数组 uint average; uchar tcnt = 0; /*********************** void main( void ) { uchar i; uchar buffer[5]; WDTCTL = WDTPW + WDTHOLD; // 关狗 /* 下面六行程序关闭所有的 IO 口 */ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; P6DIR |= BIT2;P6OUT |= BIT2; // P6DIR|=BIT6;P6OUT&=~BIT6; // InitUART(); Init_ADC(); _EINT(); buffer[4] = '\0'; 主函数 ********************* 关闭电平转换 关闭数码管显示

单片机读书笔记

单片机的分类 单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。 众多的单片机可以从不同角度进行分类。 Ⅰ按生产厂家分 1.INTEL公司的单片机(MCS-48系列单片机:MCS-48单片机是美国INTEL公司于1976年推出,它是现代单片机的雏形,包含了数字处理的全部功能,外接一定的附加外围芯片即构成完整的微型计算机;MCS-51系列:MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品) 2.ATMEL公司的单片机(AT89系列单片机:AT89系列单片机是ATMEL 公司的8位Flash单片机系列。这个系列单片机的最大特点是在片内含有Flash存储器。因此,在应用中有着十分广泛的前途特别是在便携式、省电及特殊信息保存的仪器和系统中显得更为有用;A VR单片机:A VR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片

机。A VR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。) 3.Motorola公司的单片机(MC68300系列单片机:MC68300系列微控制器采用模块化设计,可以根据用户的要求,选择不同的模块,以适应不同的应用场合) 4. MicroChip单片机的单片机(PIC12CXXX系列单片机、PIC16CXXX系列单片机) 5.PHILIPS公司的单片机(通用型单片机:PHILIPS公司的P80C31基于80C51内核采用高密度CMOS技术设计制造,包含中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、3个16位定时/计数器和6个中断源,4层优先级中断嵌套结构,可用于多机通信的串行I/O口,I/O扩展或全双工UART,片内时钟振荡电路;Flash 单片机、低功耗OTP单片机) 6.TI公司的单片机(TI单片机MSP430:德州仪器(TI)超低功率16位RISC混合信号处理器的MSP430产品系列为电池供电测量应用提供了最终解决方案。德州仪器作为混合信号和数字技术的领导者,TI 创新生产的MSP430,使系统设计人员能够在保持独一无二的低功率的同时同步连接至模拟信号、传感器和数字组件。) 7.其他公司的单片机(美国SST公司的SST89系列、美国CYGNAL公司的C8051FXXX系列单片机、东芝TLCS-870系列单片机) Ⅱ按单片机数据总线的位数,可将单片机分为4位、8位、16位、32位

史上最通俗易懂的单片机自学有笔记1

单片机关键知识点一览: 系列一 1:单片机简叙 2:单片机引脚介绍 3:单片机存储器结构 4:第一个单片机小程序 5:单片机延时程序分析 6:单片机并行口结构 7:单片机的特殊功能寄存器 系列二 8:单片机寻址方式与指令系统 9:单片机数据传递类指令 10:单片机数据传送类指令 11:单片机算术运算指令 12:单片机逻辑运算类指令 13:单片机逻辑与或异或指令祥解 14:单片机条件转移指令 系列三 15:单片机位操作指令 16:单片机定时器与计数器 17:单片机定时器/计数器的方式

18:单片机的中断系统 19:单片机定时器、中断试验 20:单片机定时/计数器实验 21:单片机串行口介绍 系列四 22:单片机串行口通信程序设计 23:LED数码管静态显示接口与编 24:动态扫描显示接口电路及程序 25:单片机键盘接口程序设计 26:单片机矩阵式键盘接口技术及 27:关于单片机的一些基本概念 28:实际案例实践——单片机音乐程序设计 1:单片机简叙 什么是单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。 单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。 2:单片机引脚介绍

MSP430 按键程序范例(附原理图)

#i nclude void Init_Port(void) { //将P1口所有的管脚在初始化的时候设置为输入方式 P1DIR = 0; //将P1口所有的管脚设置为一般I/O口 P1SEL = 0; // 将P1.4 P1.5 P1.6 P1.7设置为输出方向 P1DIR |= BIT4; P1DIR |= BIT5; P1DIR |= BIT6; P1DIR |= BIT7; //先输出低电平 P1OUT = 0x00; // 将中断寄存器清零 P1IE = 0; P1IES = 0; P1IFG = 0; //打开管脚的中断功能 //对应的管脚由高到低电平跳变使相应的标志置位 P1IE |= BIT0; P1IES |= BIT0; P1IE |= BIT1; P1IES |= BIT1; P1IE |= BIT2; P1IES |= BIT2; P1IE |= BIT3; P1IES |= BIT3; _EINT();//打开中断 return; } void Delay(void) { int i; for(i = 100;i--;i > 0) ;//延时一点时间 } int KeyProcess(void) { int nP10,nP11,nP12,nP13; int nRes = 0;

//P1.4输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 13; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 14; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 15; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 16; //P1.5输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 9; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 10; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 11; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 12; //P1.6输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 5; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 6; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 7; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 8; //P1.7输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 1; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 2; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 3; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 4; P1OUT = 0x00;//恢复以前值。

MSP430初学者教程(最详细)

如何学习 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以系列为例,解释一下学习的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET 使用指导、F1xx系列、F4xx系列的使用说明和具体芯片的数据说明,可以找到FET的、实验板、知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制FET和实验电路板 自制仿真器FET,首先要到网上找到FET,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画,画完后,就学习认识,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个的功能,还需要、按钮、、三端、、散热器、、普通电容、电阻、等元件的知识,对于初学者,可以做一个只有3个、8个按钮、8个的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上,在未干的情况下,将芯片放在焊盘上,注意芯片第一的位置,并使与焊盘对齐,将擦干净的(不能有任何)接触引脚,引脚只要一热,焊盘上的就自动将引脚焊住了,千万注意上不能有,焊接时最好配备一个。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IA 到利尔达公司或的网站下载IA,并安装到计算机上。 (5)调试FET和实验板

基于MSP430单片机的环境参数监测仪的设计制作

毕业设计(论文) 题目:基于MSP430单片机的环境 参数监测仪的设计制作 指导者: 评阅者: 2014 年 4 月

毕业设计(论文)中文摘要 温湿度和光照度等参数是标定环境不可缺少的参数,对其进行准确的测量具有重要意义。本文以室内外居住环境为背景,设计出一种以MSP430F5438A超低功耗单片机为控制核心的环境参数监测仪。 论文对环境参数监测系统硬件和软件模块包括子系统模块进行了详细设计:通过相应的传感器芯片对包括温度、湿度、光强、红外辐射度和可燃气体浓度等环境参数进行检测和采集;通过微处理器MSP430F5438A将传感器芯片采集到的数据进行分析处理,并在液晶终端进行参数的实时显示和监控。 论文分别对温度传感器模块,单总线湿度传感器模块,光照度传感器模块,气敏传感器模块,红外热释电模块以及按键和液晶显示模块进行了单模块分别调试。在此基础上对这些子程序模块进行了整合调试及整机功能和功耗测试,最终完成整个监控系统及仪器的设计制作。 实验显示,本环境参数监测仪具有体积小、携带方便、功耗低、可靠性高、免维护、成本低等优点,在室内外环境参数监测领域,具有很好的应用前景。 关键词:MSP430单片机环境参数监测传感器液晶显示

毕业设计(论文)外文摘要 Title: The Design and Production of Environmental Parameter Monitor Based on MSP430 Abstract: Parameters such as temperature, humidity and illuminance are indispensable to the calibration environment, which has important significance for accurate measurement. The aim of this thesis is to design an environmental parameter monitor, which controlled by an ultra-low power MSP430F5438A for indoor and outdoor living environment. The detailed design of hardware and software module including subsystem module in the environmental parameter monitor is proposed in this thesis. The corresponding sensor chip is used to detect and collect the environmental parameter such as temperature, humidity, illuminance, the infrared radiation intensity and combustible gas concentration. The MSP430F5438A analyzes and processed the data which collected by sensor chips, and realized the real-time display and monitoring for parameters on LCD terminal. The thesis proceeds debugging on single module likes temperature sensor module, single bus humidity sensor module, illuminance sensor module, gas sensor module, pyroelectric infrared module and buttons and LCD module, respectively. On the basis of that, after debugging and test on the function and power for the integrated subroutine modules, the design and production of the whole monitoring system and instrument is completed. Test results given show that the environmental parameter monitor has several advantages, such as small volume, portable, low power

相关主题
文本预览
相关文档 最新文档