Microsoft Word - 430实验说明.doc

Size: px
Start display at page:

Download "Microsoft Word - 430实验说明.doc"

Transcription

1 实验一 :LED 灯显示实验 实验电路 : led_one: 实验结果为实现 1 个灯闪烁 led_all_timer: 实验结果为控制 8 个 LED 灯同时闪烁 led_run: 实验结果为实现简单流水灯 led_run_timer: 实验结果为实现流水灯以三种流动方式和四种流动速度的不同组合而进行点亮 " 流动 " led_pwm: 实验结果为用从 P2.3 和 P2.4 输出的 PWM 波形驱动 LED 闪烁 ;P2.3 口输出方波的占空比为 75%;P2.4 口输出方波的占空比为 25% 程序实例 : led\led_one: #include<msp430x14x.h> char led[8]=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01; void delay() unsigned int i; for(i=0;i<50000;i++); void main() unsigned int k=1;

2 WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 BCSCTL2 &=0xc0; //XT2CLK+2 分频 P2DIR = 0xff; for(;;) P2OUT = led[k]; delay(); P2OUT = 0x00; delay(); led\led_all_timer /*************************************************** 程序功能 : 控制 8 个 LED 闪烁, 用于测试下载功能是否正常 测试说明 : 观察 LED 闪烁 ***************************************************/ #include <msp430x14x.h> /**************** 主函数 ****************/ void main(void) WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 CCTL0 = CCIE; // 使能 CCR0 中断 CCR0 = 2047; // 设定周期 0.5S TACTL = TASSEL_1 + ID_3 + MC_1; // 定时器 A 的时钟源选择 ACLK, 增计数模式 P2DIR = 0xff; // 设置 P2 口方向为输出 P2OUT = 0xff; _EINT(); LPM3; // 使能全局中断 //CPU 进入 LPM3 模式 /******************************************* 函数名称 :Timer_A 功能 : 定时器 A 的中断服务函数参数 : 无返回值 : 无 ********************************************/ #pragma vector = TIMERA0_VECTOR interrupt void Timer_A (void)

3 P2OUT ^= 0xff; //P2 口输出取反 led\led_run #include<msp430x14x.h> char led[8]=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01; void delay() unsigned int i; for(i=0;i<50000;i++); void main() WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 BCSCTL2 &=0xc0; //XT2CLK+2 分频 P2DIR = 0xff; P6DIR = 0xfc; // 设置 P6 口方向为输出 P6OUT = 0xff; for(;;) for(int k=0;k<8;k++) P2OUT = led[k]; delay(); led\led_run_timer /*********************************************** 程序功能 : 实现流水灯以三种流动方式和四种流动速度的不同组合而进行点亮 " 流动 " 测试说明 : 观察流水灯流动顺序和速度的变化 ************************************************/ #include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint; uint i = 0,j = 0,dir = 0; uint flag = 0,speed = 0; //flag-- 灯光流动方式,speed-- 灯光流动速度 /**************** 主函数 ****************/

4 void main(void) WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 CCTL0 = CCIE; // 使能 CCR0 中断 CCR0 = 50000; TACTL = TASSEL_2 + ID_3 + MC_1; // 定时器 A 的时钟源选择 SMCLK, 增计数模式 P2DIR = 0xff; // 设置 P2 口方向为输出 P2OUT = 0xff; P6DIR = 0xfc; // 设置 P6 口方向为输出 P6OUT = 0xff; _EINT(); // 使能全局中断 LPM0; //CPU 进入 LPM0 模式 /******************************************* 函数名称 :Timer_A 功能 : 定时器 A 的中断服务函数, 在这里通过标志控制流水灯的流动方向和流动速度参数 : 无返回值 : 无 ********************************************/ #pragma vector = TIMERA0_VECTOR interrupt void Timer_A (void) if(flag == 0) P2OUT = ~(0x80>>(i++)); // 灯的点亮顺序 D8 -> D1 else if(flag == 1) P2OUT = ~(0x01<<(i++)); // 灯的点亮顺序 D1 -> D8 else if(dir) // 灯的点亮顺序 D8 -> D1,D1 -> D8, 循环绕圈 P2OUT = ~(0x80>>(i++)); else P2OUT = ~(0x01<<(i++));

5 if(i == 8) i = 0; dir = ~dir; j++; if(j == 40) i = 0; j = 0; flag++; if(flag == 4) flag = 0; switch(speed) case 0: TACTL &=~ (ID0 + ID1); TACTL = ID_3; break; case 1: TACTL &=~ (ID0 + ID1); TACTL = ID_2; break; case 2: TACTL &=~ (ID0 + ID1); TACTL = ID_1; break; case 3: TACTL &=~ (ID0 + ID1); TACTL = ID_0; break; default: break; if(flag!= 3) speed++; if(speed == 4) speed = 0; led\led_pwm

6 /******************************************************* 程序功能 : 用从 P2.3 和 P2.4 输出的 PWM 波形驱动 LED 闪烁 P2.3 口输出方波的占空比为 75% P2.4 口输出方波的占空比为 25% 测试说明 : 观察 LED 的亮灭的时间长短 *******************************************************/ #include <msp430x14x.h> void main(void) WDTCTL = WDTPW + WDTHOLD; // 关狗 P2DIR = 0xff; // P2 端口设置为输出 P2OUT = 0x00; // 关闭其他 LED P2SEL = BIT3 + BIT4; // P2.3 和 P2.4 连接内部模块 CCR0 = ; // PWM 周期为 1S CCTL1 = OUTMOD_7; // CCR1 reset/set CCR1 = 3072; // CCR1 PWM duty cycle CCTL2 = OUTMOD_7; // CCR2 reset/set CCR2 = 1024; // CCR2 PWM duty cycle TACTL = TASSEL_1 + ID_3 + MC_1; // ACLK/8, up mode _BIS_SR(LPM3_bits); // Enter LPM3

7 实验二 : 数码管显示实验 实验电路 : 在做数码管实验时, 需要插上 J10 跳帽 smg_static: 实验结果为在数码管上显示 2 smg_dynamic: 实验结果为在数码管上显示 HELLO smg_dynamic_timer: 实验结果为在数码管上显示 smg\smg_static #include<msp430x14x.h> unsigned char table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void delay() unsigned int i; for(i=0;i<50000;i++);

8 void main() WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 BCSCTL2 &=0xc0; //XT2CLK+2 分频 P4DIR = 0xff; P6DIR = 0xFC; for(;;) P4OUT=~table[2]; P6OUT=~BIT2;//BIT7---BIT2 位选 smg\smg_dynamic //*************************************************************** //* 基本端口输出实验 - 显示 * //*************************************************************** #include "msp430x14x.h" //************************ 数组阵 ********************************* // 共阴 unsigned char seg[10]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;// 段选信号 unsigned char seg[16]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e;//0-f 段选信号, 共阳 unsigned char hello[5]=0x89,0x86,0xc7,0xc7,0xc0;//hello 共阳段吗 unsigned char dig[6]=0xf8,0xf4,0xec,0xdc,0xbc,0x7c;// 位码, 由第一位到第六位单独显示 // 位选信号 unsigned char led[9]=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;//led 灯显示序列 //*************************************************************** //* 普通延时函数保证不闪就可以 * //*************************************************************** void delay() unsigned int i; for (i=0;i<100;i++); void delay1() unsigned int j; for(j=0;j<10000;j++);

9 //*************************************************************** //* IO 口初始化 * //*************************************************************** void Ioportinit() //P2DIR =0xff; //p2 输出 P6DIR=0xfc; //p6 输出 P4DIR=0xff; //p4 输出 //P2DIR=0xff; //*************************************************************** //* 系统初始化 * //*************************************************************** void sys_init() WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 BCSCTL2 &=0xc0; void main() sys_init(); Ioportinit(); while (1) P4OUT=hello[4]; P6OUT=~BIT2; delay(); P4OUT=hello[3]; P6OUT=~BIT3; delay(); P4OUT=hello[2]; P6OUT=~BIT4; delay(); P4OUT=hello[1]; P6OUT=~BIT5; delay(); P4OUT=hello[0]; P6OUT=~BIT6; delay(); //XT2CLK+2 分频 smg\smg_dynamic_timer

10 #include <msp430x14x.h> #define uint unsigned int #define uchar unsigned char uint jj; uchar nn; unsigned char table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void initsys(void) uchar k; BCSCTL1 &= ~XT2OFF; // 开启 XT2 晶振 do IFG1 &= ~OFIFG; // 清除振荡器失效标志 for(k=0xee;k>0;k--) // 延时 ; while((ifg1 & OFIFG)!=0); // 判断 XT2 是否起振 BCSCTL2 = SELM_2 + SELS; // 选择 MCLK SMCLK 为 XT2 // 初始化 void main(void ) // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; initsys(); _EINT(); TACTL = TASSEL1 + TACLR; CCTL0 =CCIE; CCR0 = 8000; TACTL = MC1; // 连续计数模式 ; 启动 P4DIR = 0xff; P6DIR = 0xfc; while(1); #pragma vector= TIMERA0_VECTOR interrupt void Timer_A(void) CCR0 += 8000; switch(nn)

11 case 0x00:P4OUT=~table[nn];P6OUT = ~BIT2; break; case 0x01:P4OUT=~table[nn];P6OUT = ~BIT3; break; case 0x02:P4OUT=~table[nn];P6OUT = ~BIT4; break; case 0x03:P4OUT=~table[nn];P6OUT = ~BIT5; break; case 0x04:P4OUT=~table[nn];P6OUT = ~BIT6; break; case 0x05:P4OUT=~table[nn];P6OUT = ~BIT7; break; nn++; nn=nn%6;

12 实验三 : 蜂鸣器实验 实验电路 : bell: 实验结果为蜂鸣器发出报警声音 bell_music: 实验结果为 430 控制蜂鸣器演奏歌曲 祝你平安 bell\bell #include "MSP430X14X.h" #define uchar unsigned char #define uint unsigned int unsigned char Count; uint get[20]=0; /* */ /* 关闭看门狗 */ void close_wdt() WDTCTL = WDTPW + WDTHOLD; /* */ /* 软件复位 */ void reset_mcu() WDTCTL = 0x0000; /* */ /* 设置看门狗定时器 ( 定时模式 ) */

13 void set_wdt_timer() WDTCTL=WDT_MDLY_32;// 定时时间的设置参见 MSP430X14X.h IE1 = WDTIE; // 允许 wdt_timer 中断 _EINT(); /* 看门狗中断处理函数 */ #pragma vector = WDT_VECTOR interrupt void wdt_timer() _NOP(); /* */ /* 设置系统时钟 */ void set_sysclk() uchar i; BCSCTL1 &= ~XT2OFF; do IFG1 &= ~OFIFG; for(i=0xff;i>0;i--); while((ifg1&ofifg)!=0); BCSCTL2 = SELM_2+DIVM_3; //MCLK ---1MHz BCSCTL2 = SELS+DIVS_3; //SMCLK --- 1MHz for(i=0xff;i>0;i--); //P5DIR =0X10; //P5SEL =0X10; /* */ /* 功能 :1MS 延时子程序 */ void Delay_xMs(unsigned int x) unsigned int i,j; for( i =0;i < x;i++ ) for( j =0;j<30;j++ ); void main(void) WDTCTL = WDTPW + WDTHOLD; set_sysclk();

14 P6DIR = 0xff; while(1) P6OUT ^=BIT1; Delay_xMs(1000); bell\bell_music /********************************************* 程序功能 :MCU 控制蜂鸣器演奏歌曲 祝你平安 测试说明 : 聆听蜂鸣器 唱出 的乐曲 *********************************************/ #include <msp430x14x.h> #include "music.h" typedef unsigned char uchar; typedef unsigned int uint; #define Buzzer BIT1 #define Buzzer_Port P6OUT #define Buzzer_DIR P6DIR uchar counter; void Play_Song(void); /*************** 主函数 ****************/ void main(void) uchar i; WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 /* 选择系统主时钟为 8MHz */ BCSCTL1 &= ~XT2OFF; // 打开 XT2 高频晶体振荡器 do IFG1 &= ~OFIFG; // 清除晶振失败标志 for (i = 0xFF; i > 0; i--); // 等待 8MHz 晶体起振 while ((IFG1 & OFIFG)); // 晶振失效标志仍然存在? BCSCTL2 = SELM_2 + SELS; // 主时钟和从时钟都选择高频晶振 // 设置定时器 A 每 10ms 中断一次 CCTL0 = CCIE;

15 CCR0 = 10000; TACTL = TASSEL_2 + ID_3; // 设置控制蜂鸣器的 IO 方向为输出 Buzzer_DIR = Buzzer; // 打开全局中断 _EINT(); // 循环演奏歌曲 while(1) Play_Song(); /******************************************* 函数名称 :TimerA_ISR 功能 : 定时器 A 的中断服务函数参数 : 无返回值 : 无 ********************************************/ #pragma vector = TIMERA0_VECTOR interrupt void TimerA_ISR(void) counter++; /******************************************* 函数名称 :Delay_Nms 功能 : 延时 N 个 ms 的函数参数 :n-- 延时长度返回值 : 无 ********************************************/ void Delay_Nms(uchar n) uchar i,j; for( i = 0;i < n; i++ ) for( j = 0;j < 3;j++ ) _NOP(); /******************************************* 函数名称 :Play_Song 功能 : 播放 祝你平安 的乐曲参数 : 无

16 返回值 : 无 ********************************************/ void Play_Song(void) uchar Temp1,Temp2; uchar addr = 0; counter = 0; // 中断计数器清 0 while(1) Temp1 = SONG[addr++]; if ( Temp1 == 0xFF ) // 休止符 TACTL &=~MC_1; // 停止计数 Delay_Nms(100); else if ( Temp1 == 0x00 ) // 歌曲结束符 return; else Temp2 = SONG[addr++]; TACTL =MC_1; // 开始计数 while(1) Buzzer_Port ^= Buzzer; Delay_Nms(Temp1); if ( Temp2 == counter ) counter = 0; break;

17 实验四 : 独立按键实验 实验电路 : key_one_intr: 中断方式按键, 实验结果为按下按键在数码管上显示数值累加 key1: 实验结果为按下按键在数码管上显示数值累加. key\key1 // // 测试说明 : 按动 K1~k2 二个按键, 观察数码管显示 //***************************************************/ #include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint; //#define keyin1 (P1IN & 0x01) #define key_in (P1IN & 0x80) // 数码管 7 位段码 :0--f uchar scandata[16] = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; void delay(void); /******************** 主函数 ********************/ void main( void ) int key_count=0; WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P1DIR = 0x00; P4DIR = 0xff; // 设置 P1.0~P.3 为输入状态,P.7 为输出

18 P6DIR = 0xfc; P4OUT = 0xff; P6OUT = 0x55; while(1) if(key_in!= 0x80) // 如果有键被按下 delay(); // 延时消抖 if(key_in!= 0x80) // 再次检测按键状态 key_count++; // 用一位数码管显示 delay();delay(); if(key_count==16) key_count=0; P4OUT = ~scandata[key_count]; /******************************************* 函数名称 :delay 功能 : 用于消抖的延时参数 : 无返回值 : 无 ********************************************/ void delay(void) uint tmp; for(tmp = 12000;tmp > 0;tmp--); key\ key_one_intr // // 测试说明 : 按动 K1~k2 二个按键, 观察数码管显示 //***************************************************/ #include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint;

19 //#define keyin1 (P1IN & 0x01) #define key_in (P1IN & 0x80) // 数码管 7 位段码 :0--f uchar scandata[16] = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; void delay(void); /******************** 主函数 ********************/ void main( void ) int key_count=0; WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P1DIR = 0x00; // 设置 P1.0~P.3 为输入状态,P.7 为输出 P4DIR = 0xff; P6DIR = 0xfc; P4OUT = 0xff; P6OUT = 0x55; while(1) if(key_in!= 0x80) // 如果有键被按下 delay(); // 延时消抖 if(key_in!= 0x80) // 再次检测按键状态 key_count++; // 用一位数码管显示 delay();delay(); if(key_count==16) key_count=0; P4OUT = ~scandata[key_count]; /******************************************* 函数名称 :delay 功能 : 用于消抖的延时参数 : 无

20 返回值 : 无 ********************************************/ void delay(void) uint tmp; for(tmp = 12000;tmp > 0;tmp--);

21 实验五 : 矩阵键盘 4 转独立键盘实验 实验电路 : key441: 实验结果为按下矩阵键盘第一行, 键值显示在数码管上 /*************************************************** 测试说明 : 按动 K2 四个按键, 观察数码管显示 ***************************************************/ #include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint; #define keyin (P1IN & 0x0f) // 数码管 7 位段码 :0--f uchar scandata[16] = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; void delay(void); /******************** 主函数 ********************/ void main( void ) unsigned char temp,i=0; WDTCTL = WDTPW + WDTHOLD; BCSCTL2 &=0xc0; P4DIR=0xff; P1DIR=0x00; P6DIR=0xfc; // 关闭看门狗 //XT2CLK+2 分频

22 P4OUT=0xff; P6OUT=0x04; while(1) if(keyin!= 0x0f) // 如果有键被按下 delay(); // 延时消抖 if(keyin!= 0x0f) // 再次检测按键状态 temp=keyin; switch(temp) // 转换键值 case 0x0E: i = 1;break; case 0x0D: i = 2;break; case 0x0B: i = 3;break; case 0x07: i = 4;break; default: i = 0;break; P4OUT =~scandata[i]; // 用一位数码管显示 delay();delay(); /******************************************* 函数名称 :delay 功能 : 用于消抖的延时参数 : 无返回值 : 无 ********************************************/ void delay(void) uint tmp; for(tmp = 12000;tmp > 0;tmp--);

23 实验六 : 矩阵键盘实验 实验电路 : key44: 实验结果为按下矩阵键盘, 键值显示在数码管上 key44uart: 实验结果为 MCU 通过串口向 PC 机发送 4X4 键盘的键值 key44\key44 #include "msp430x14x.h" void sys_init() WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 BCSCTL2 &=0xc0; //XT2CLK+2 分频 void io_init() P4DIR=0xff; P5DIR=0xf0; P6DIR=0xfc; P4OUT=0xff; int key(int c) if (!(P1IN&BIT0)) c+=1; else if (!(P1IN&BIT1)) c+=2;

24 else if (!(P1IN&BIT2)) c+=3; else if (!(P1IN&BIT3)) c+=4; else c=0; return c; void main() int a; unsigned char b[17]=0xff,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e;//0-f 段选信号, 共阳 sys_init(); io_init(); while (1) a=0; P5OUT=~BIT4; a+=key(0); P5OUT=~BIT5;// 拉低 P2.1 a+=key(4); // 读取当时键值 P5OUT=~BIT6;// 拉低 P2.2 a+=key(8); // 读取当时键值 P5OUT=~BIT7;// 拉低 P2.2 a+=key(12); // 读取当时键值 P6OUT=0xf8; P4OUT=b[a]; key44\key44uart /**************************************************** 程序功能 :MCU 通过串口向 PC 机发送 4X4 键盘的键值 通信格式 :N.8.1, 测试说明 : 打开串口调试助手, 正确设置通信格式, 按动 4X4 键盘观察屏幕显示的按键键值

25 ****************************************************/ #include <msp430x14x.h> #include "keypad.c" // 引用外部变量的声明 extern unsigned char key_pressed; extern unsigned char key_val; extern unsigned char key_flag; void PutString(uchar *ptr); void PutChar(uchar zifu); /******************* 主函数 *******************/ void main(void) uchar *tishi = "This Key's ID is:"; WDTCTL = WDTPW + WDTHOLD; // Stop WDT P3SEL = 0x30; // P3.4,5 = USART0 TXD/RXD ME1 = UTXE0; // Enable USART0 TXD/RXD UCTL0 = CHAR; // 8-bit character UTCTL0 = SSEL0; // UCLK = ACLK UBR00 = 0x03; // 32k/ UBR10 = 0x00; // UMCTL0 = 0x4A; // Modulation UCTL0 &= ~SWRST; // Initialize USART state machine Init_Keypad(); while(1) Key_Event(); // 初始化键盘端口 if(key_flag == 1) key_flag = 0; PutString(tishi); PutChar(key_val); /******************************************* 函数名称 :PutSting 功能 : 向 PC 机发送字符串参数 :ptr-- 指向发送字符串的指针返回值 : 无 ********************************************/

26 void PutString(uchar *ptr) while(*ptr!= '\0') while (!(IFG1 & UTXIFG0)); // TX 缓存空闲? TXBUF0 = *ptr++; // 发送数据 while (!(IFG1 & UTXIFG0)); TXBUF0 = '\n'; /******************************************* 函数名称 :PutChar 功能 : 向 PC 机发送一个字符对应的 ASCII 码参数 :zifu-- 发送的字符返回值 : 无 ********************************************/ void PutChar(uchar zifu) while (!(IFG1 & UTXIFG0)); if(zifu > 9) // 发送键值 1~16 对应的 ASCII 码 TXBUF0 = 0x30 + zifu/10; while (!(IFG1 & UTXIFG0)); TXBUF0 = 0x30 + zifu%10; else TXBUF0 = 0x30 + zifu; while (!(IFG1 & UTXIFG0)); TXBUF0 = '\n'; // 发送回车字符

27 实验七 : 串口实验 实验电路 : uart0: 实验结果为 MCU 不停向 PC 机发送数据, 在屏幕上显示 0~127 对应的 ASCII 字符 uart1: 实验结果为正确设置通信格式 (8 个数据位,1 个停止位, 波特率 9600), 在 PC 屏幕上显示 uart2: 实验结果为程序功能 : 接收来自 PC 机的字符, 然后重新发送给 PC 机 打开串口调试助手, 正确设置通信格式 (8 个数据位,1 个停止位, 波特率 9600), 向学习板发送一个字符, 观察是否收到回发的字符, 以及是否正确 uart\uart0 /***************************************************** 程序功能 :MCU 不停向 PC 机发送数据, 在屏幕上显示 0~127 对应的 ASCII 字符 通信格式 :N.8.1, 测试说明 : 打开串口调试助手, 正确设置通信格式, 观察屏幕 ******************************************************/ #include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint; void Delays(void); void PutString(uchar *ptr);

28 /////////////////////////////////////////// void initsys(void) BCSCTL1 &= ~XT2OFF; uchar i; do IFG1 &= ~OFIFG; for(i=0xee;i>0;i--) ; while((ifg1&ofifg)!=0); BCSCTL2 = SELM_2 + SELS; void set() U0CTL = SWRST; // 开启设置 U0TCTL = SSEL1; // 选择 SMCLK=6M 波特率 =9600 /* 6M / 9600 = = 0x * 8= 0*/ /* 32768/9600= *8=4*/ U0BR0 = 0x41; U0BR1 = 0x03; U0MCTL =0x00; // U0CTL = CHAR; // 长度 8 位 U0CTL &= ~SWRST; /******************** 主函数 **********************/ void main(void) uchar *tishi = " MCU sends 0~127 to PC and the\ \n screen will display their corresponding\ \n ASCII code as follows:"; uchar value = 0; // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; initsys(); P3DIR = 0x10; P4DIR = 0xff; P4OUT = 0x00; P3SEL = 0x30;

29 set(); ME1 = UTXE0 + URXE0; IE1 = URXIE0; _EINT(); //////////////////////////////////////////////// PutString(tishi); while(1) while (!(IFG1 & UTXIFG0)); TXBUF0 = value++; value &= 0x7f; // 保证 value 的数值小于 128 while (!(IFG1 & UTXIFG0)); TXBUF0 = '\n'; Delays(); Delays(); Delays(); Delays(); Delays(); Delays(); Delays(); /******************************************* 函数名称 :PutSting 功能 : 向 PC 机发送字符串参数 : 无返回值 : 无 ********************************************/ void PutString(uchar *ptr) while(*ptr!= '\0') while (!(IFG1 & UTXIFG0)); // TX 缓存空闲? TXBUF0 = *ptr++; // 发送数据 while (!(IFG1 & UTXIFG0)); TXBUF0 = '\n'; /******************************************* 函数名称 :Delays 功能 : 延时一会参数 : 无返回值 : 无

30 ********************************************/ void Delays(void) uchar i=20; uint j; while(i--) j=2000; while(j--); uart\uart1 /***************************************************** 程序功能 : 在屏幕上显示 通信格式 :N.8.1, 测试说明 : 打开串口调试助手, 正确设置通信格式, 观察屏幕 ******************************************************/ #include<msp430x14x.h> #define uchar unsigned char #define uint unsigned int //uchar data[10] = 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09; uchar data[] = 'w','w','w','.','2','2','s','k','y','.','c','o','m','\n'; uchar j=0; uchar k=0; delay () uchar n; for(n=100;n>0;n--) ; void initsys(void) BCSCTL1 &= ~XT2OFF; uchar i; do IFG1 &= ~OFIFG;

31 for(i=0xee;i>0;i--) ; while((ifg1&ofifg)!=0); BCSCTL2 = SELM_2 + SELS; void set() U0CTL = SWRST; // 开启设置 U0TCTL = SSEL1; // 选择 SMCLK=6M 波特率 =9600 /* 6M / 9600 = = 0x * 8= 0*/ /* 32768/9600= *8=4*/ U0BR0 = 0x41; U0BR1 = 0x03; U0MCTL =0x00; // U0CTL = CHAR; // 长度 8 位 U0CTL &= ~SWRST; void send(uchar num) TXBUF0 = num; while((ifg1&utxifg0)==0); void receive() //P2DIR = 0xff; IFG1 &= 0xbf; j = RXBUF0; P2OUT = j; void main( void ) // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; initsys(); P3DIR = 0x10; P2DIR = 0xff; P2OUT = 0x00; P3SEL = 0x30; set();

32 ME1 = UTXE0 + URXE0; IE1 = URXIE0; _EINT(); /* for(k=0;k<255;k++) send(k); //delay(); */ for(k=0;k<15;k++) send(data[k]); while(1); #pragma vector=uart0tx_vector interrupt void usart_tx(void) while((ifg1&urxifg0)==1); delay(); #pragma vector=uart0rx_vector interrupt void usart0_rx (void) // while((ifg1&urxifg0)==0); //UTXIFG0 默认 1 R 默认 0 if((u0rctl & RXERR)==0) receive(); delay(); else U0RCTL &= ~(FE + OE + BRK); //while((ifg1&urxifg0)==0); uart\uart2 /****************************************************** 程序功能 : 接收来自 PC 机的字符, 然后重新发送给 PC 机 通信格式 :N.8.1, 9600

33 无校验,8 个数据位,1 个停止位, 波特率 测试说明 : 打开串口调试助手, 正确设置通信格式, 向学习板发送一个字符, 观察是否收到回发的字符, 以及是否正确 *******************************************************/ #include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint; /******************** 主函数 ********************/ void main(void) WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P3SEL = 0x30; // 选择 P3.4 和 P3.5 做 UART 通信端口 ME1 = UTXE0 + URXE0; // 使能 USART0 的发送和接受 UCTL0 = CHAR; // 选择 8 位字符 UTCTL0 = SSEL0; // UCLK = ACLK UBR00 = 0x03; // 波特率 9600 UBR10 = 0x00; // UMCTL0 = 0x4A; // Modulation UCTL0 &= ~SWRST; // 初始化 UART 状态机 IE1 = URXIE0; // 使能 USART0 的接收中断 while(1) _EINT(); // 打开全局中断 LPM1; // 进入 LPM1 模式 while (!(IFG1 & UTXIFG0)); // 等待以前的字符发送完毕 TXBUF0 = RXBUF0; // 将收到的字符发送出去 /******************************************* 函数名称 :UART0_RXISR 功能 :UART0 的接收中断服务函数, 在这里唤醒 CPU, 使它退出低功耗模式参数 : 无返回值 : 无 ********************************************/ #pragma vector = UART0RX_VECTOR interrupt void UART0_RXISR(void) LPM1_EXIT; // 退出低功耗模式

34 实验八 :AD 实验 实验电路 : 在做 AD 实验时, 请将跳帽插到 AD_SEL 上端 ad_smg: 实验结果为将 ADC 对 P6.0 端口电压的转换结果按转换数据和对应的模拟电压的形式通过数码管显示 ad_uart: 实验结果为将 ADC 对 P6.0 端口电压的转换结果按转换数据和对应的模拟电压的形式通过串口发送到 PC 机屏幕上显示 ad\ad_smg

35 #include<msp430x14x.h> #define uchar unsigned char #define uint unsigned int unsigned char table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; //unsigned char table1[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uint result; uint i; uchar nn; void delay() uint time; uint time1; for(time=0x0fff;time>0;time--) for(time1=0x00ff;time1>0;time1--) ; void show(uint number ) uint data; uint data1; uchar num1; uchar num2; uint data2; uchar num3; uint buffer; data=number*3/4096; buffer=number*3%4096; data1=buffer*10/4096; buffer=buffer*10%4096; data2=buffer*10/4096; num3=(uchar)data2; num1=(uchar)data; num2=(uchar)data1; switch(num1) case 0x00:num1=table[0]+0x80;break; case 0x01:num1=table[1]+0x80;break; case 0x02:num1=table[2]+0x80;break; case 0x03:num1=table[3]+0x80;break; case 0x04:num1=table[4]+0x80;break;

36 case 0x05:num1=table[5]+0x80;break; case 0x06:num1=table[6]+0x80;break; case 0x07:num1=table[7]+0x80;break; case 0x08:num1=table[8]+0x80;break; case 0x09:num1=table[9]+0x80;break; //num1 &= 0xfe; switch(num2) case 0x00:num2=table[0];break; case 0x01:num2=table[1];break; case 0x02:num2=table[2];break; case 0x03:num2=table[3];break; case 0x04:num2=table[4];break; case 0x05:num2=table[5];break; case 0x06:num2=table[6];break; case 0x07:num2=table[7];break; case 0x08:num2=table[8];break; case 0x09:num2=table[9];break; switch(num3) case 0x00:num3=table[0];break; case 0x01:num3=table[1];break; case 0x02:num3=table[2];break; case 0x03:num3=table[3];break; case 0x04:num3=table[4];break; case 0x05:num3=table[5];break; case 0x06:num3=table[6];break; case 0x07:num3=table[7];break; case 0x08:num3=table[8];break; case 0x09:num3=table[9];break; switch(nn) case 0x00:P4OUT=~num1;P6OUT = ~BIT5; break; case 0x01:P4OUT=~num2;P6OUT = ~BIT4; break; case 0x02:P4OUT=~num3;P6OUT = ~BIT3; break; case 0x03:P4OUT=0xc1;P6OUT = ~BIT2; break; nn++; if(nn>3)

37 nn=0; void initsys(void) BCSCTL1 &= ~XT2OFF; // 开启晶振 uchar j; do IFG1 &= ~OFIFG; // 消除标志位 for(j=0xee;j>0;j--) ; while((ifg1&ofifg)!=0); BCSCTL2 = SELM_2 + SELS; // 选择时钟 void danduo(void) // 单通道多次 P6SEL = 0x01; // 通道 ADC12CTL0 = SHT0_8 + MSC + ADC12ON; // 多次 ADC12CTL1 = SHP + CONSEQ_2; // 单通道多次 ADC12MCTL0 = INCH_0; // A0 ADC12IE = 0x01; // 中断 A0 ADC12CTL0 = ENC; // 设定完毕 _EINT(); // 开启总中断 ADC12CTL0 = ADC12SC; void main( void ) // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; uint dd; initsys(); danduo(); P4DIR = 0xff; P6DIR = 0xfc; while(1)

38 dd=8000; while(dd--); show(result); #pragma vector=adc_vector interrupt void ADC12(void) // 单通道单次 //result[0] = ADC12MEM0; //result = ADC12MEM0; /*// 序列通道单次 result[0]=adc12mem0; result[1]=adc12mem1; result[2]=adc12mem2; result[3]=adc12mem3;*/ // 单通道多次 result = ADC12MEM0; //show(result[0]); // 序列通道多次 while((adc12ifg & BIT0)!=0); ad\ad_uart /********************************************************* 程序功能 : 将 ADC 对 P6.0 端口电压的转换结果按转换数据和对应的模拟电压的形式通过串口发送到 PC 机屏幕上显示 通信格式 :N.8.1, 测试说明 : 打开串口调试精灵, 正确设置通信格式, 观察接收数据 **********************************************************/ #include <msp430.h> #include "adc_fun.c"

39 #include "uart_fun.c" #define Num_of_Results 32 uint results[num_of_results]; uint average; uchar tcnt = 0; // 保存 ADC 转换结果的数组 /*********************** 主函数 ***********************/ void main( void ) uchar i; uchar buffer[5]; WDTCTL = WDTPW + WDTHOLD; // 关狗 InitUART(); Init_ADC(); _EINT(); buffer[4] = '\0'; while(1) LPM1; Hex2Dec(average,buffer); for(i = 0; i < 4; i++) buffer[i] += 0x30; PutString0("The digital value is: "); PutString(buffer); Trans_val(average,buffer); buffer[3] = buffer[2]; buffer[2] = buffer[1]; buffer[1] = 0x2e - 0x30; for(i = 0; i < 4; i++) buffer[i] += 0x30; PutString0("The analog value is: "); PutString(buffer); /******************************************* 函数名称 :ADC12ISR

40 功能 :ADC 中断服务函数, 在这里用多次平均的计算 P6.0 口的模拟电压数值参数 : 无返回值 : 无 ********************************************/ #pragma vector=adc_vector interrupt void ADC12ISR (void) static uchar index = 0; results[index++] = ADC12MEM0; if(index == Num_of_Results) uchar i; // Move results average = 0; for(i = 0; i < Num_of_Results; i++) average += results[i]; average >>= 5; // 除以 32 index = 0; tcnt++; if(tcnt == 250) // 主要是降低串口发送速度 LPM1_EXIT; tcnt = 0;

41 实验九 :PS2 键盘实验 实验电路 : ps2_led: 实验结果为 ps2 键盘键值按下, 将键值显示在 LED 灯上 ps2_smg: 实验结果为 ps2 键盘键值 ( 小键盘 0-9) 按下, 将键值显示在数码管上 ps2\ps2_led #include <MSP430X14X.h> /* */ #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define ps2_clk BIT4 #define ps2_dat BIT5 /*P1.4---ps2_clk*/ /*P1.5---ps2_dat*/ /* */ uchar key_num; void set_ps2_int(); uchar receive_ps2() ; void search_key(); void set_sysclk(); /* */ void main( void ) set_sysclk();

42 WDTCTL = WDTPW + WDTHOLD; set_ps2_int(); P2DIR=0xff; P2OUT=0x00; judge: while(p1in&ps2_clk); // 判断 clk 线是否给拉低 search_key(); goto judge; /* 设置系统时钟 */ void set_sysclk() uchar i; //DCOCTL=0XE0; BCSCTL1=0X17; //asck 2 分频为 wdt 提供时钟 for(i=10;i>0;i--); /* ps2 中断设置 */ void set_ps2_int() P1SEL &=~(BIT4+BIT5);// 选择 I/O 功能 P1DIR =(BIT4+BIT5); P1OUT =(BIT4+BIT5);// 置 1 P1DIR &=~(BIT4+BIT5);// 设为输入 /* ps2 读数据子程序 */ uchar receive_ps2() uchar i;uchar key8=0; while(p1in&ps2_clk);// 等待 clk 变低 越过 while(!(p1in&ps2_clk));// 等待 clk 变高 起始位 for(i=0;i<8;i++) key8>>=1; while(p1in&ps2_clk);// 等待 clk 变低 if(p1in&ps2_dat)key8=key8 0x80; while(!(p1in&ps2_clk));// 等待 clk 变高 for(i=0;i<2;i++) while(p1in&ps2_clk);// 等待 clk 变低 while(!(p1in&ps2_clk));// 等待 clk 变高 return(key8); /* ps2 中断处理子程序 */ void search_key() if(p1in&ps2_dat)goto back; // 判断 DAT 数据线是否给拉低 ( 起始位 ) key_num=receive_ps2();

43 P2OUT=key_num; back:; /******************************************************************/ /* switch ( temp2 ) case 0x45: k="0"; break; //0 case 0x16: k="1"; break; //1 case 0x1e: k="2"; break; //2 case 0x26: k="3"; break; //3 case 0x25: k="4"; break; //4 case 0x2e: k="5"; break; //5 case 0x36: k="6"; break; //6 case 0x3d: k="7"; break; //7 case 0x3e: k="8"; break; //8 case 0x46: k="9"; break; //9 case 0x1c: k="10"; break; //a case 0x32: k="11"; break; //b case 0x21: k="12"; break; //c case 0x23: k="13"; break; //d case 0x24: k="14"; break; //e case 0x2b: k="15"; break; //f case 0x34: k="16"; break; //g case 0x33: k="17"; break; //h case 0x43: k="18"; break; //i case 0x3b: k="19"; break; //j case 0x42: k="20"; break; //k case 0x4b: k="21"; break; //l case 0x3a: k="22"; break; //m case 0x31: k="23"; break; //n case 0x44: k="24"; break; //o case 0x4d: k="25"; break; //p case 0x15: k="26"; break; //q case 0x2d: k="27"; break; //r case 0x1b: k="28"; break; //s case 0x2c: k="29"; break; //t case 0x3c: k="30"; break; //u case 0x2a: k="31"; break; //v case 0x1d: k="32"; break; //w case 0x22: k="33"; break; //x case 0x35: k="34"; break; //y case 0x1a: k="35"; break; //z case 0x0e: k="36"; break; //~ case 0x4e: k="37"; break; //-

44 case 0x55: k="38"; break; //= case 0x29: k="46"; break; //SPACE case 0x66: k="47";break; //del case 0x5b: k="39";break; //] case 0x4c: k="40";break;//; case 0x52: k="41";break;// ' case 0x41: k="42"; break; //, case 0x49: k="43";break;//. case 0x4a: k="44";break; // / case 0x54: k="45"; break; //[ case 0x58: k="49"; break; //cap case 0x5a: k="48"; break; // 回车键 case 112 : k="0" ; break; // 小键盘部分 case 105 : k="1" ; break; case 114 : k="2" ; break; case 122 : k="3" ; break; case 107 : k="4" ; break; case 115 : k="5" ; break; case 116 : k="6" ; break; case 108 : k="7" ; break; case 117 : k="8" ; break; case 125 : k="9" ; break; case 113 : k="43" ; break;; default : k="255"; */ /*******************************************************/ ps2\ps2_smg /***************************************************** 程序功能 : 接收并解码来自标准键盘的基本按键的扫描码然后将 0~9 a~f 和 A~F 字符在数码管上显示 注 : 所谓基本按键就是当此键被按下时对应产生三个字节的扫描码的按键, 详见光盘中的 第二套扫描码 跳线设置 : 将跳线座 J4 的 1 脚和 2 脚 ( 右侧的两个 ) 短接 测试说明 : 敲定标准键盘上的按键, 观察数码管显示 *****************************************************/ #include <msp430x14x.h> #include "Keyboard.c"

45 #define SIDval P1IN & BIT5 // 数码管 7 位段码 :0--f, 和不显示字符 (0x00) uchar scandata[17] = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff; // 数码管的显示缓存 uchar DispBuf = 16; /**************** 主函数 ****************/ void main(void) uchar disptmp,i; WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 /* 选择系统主时钟为 8MHz */ BCSCTL1 &= ~XT2OFF; // 打开 XT2 高频晶体振荡器 do IFG1 &= ~OFIFG; // 清除晶振失败标志 for (i = 0xFF; i > 0; i--); // 等待 8MHz 晶体起振 while ((IFG1 & OFIFG)); // 晶振失效标志仍然存在? BCSCTL2 = SELM_2; // 主时钟选择高频晶振 P4DIR = 0xff; P6DIR = 0xfc; // 设置 P4,P5 的 IO 方向为输出 P4OUT = 0x00; P6OUT = 0x00; // 设置 P4,P5 的输出初值 Init_KB(); _EINT(); // 初始化键盘端口 // 打开全局中断 while(1) LPM1; disptmp = GetChar(); // 进入低功耗模式 // 读取键值对应的 ASCII 码 if((disptmp > 0x2f)&&(disptmp < 0x3a)) // 如果接收到的字符是 0~9 DispBuf = disptmp - 0x30; // 得到实际的数字

46 else if((disptmp > 0x40)&&(disptmp < 0x47))// 如果接收到的字符是 A~F DispBuf = disptmp - 0x37; // 得到实际的字母 else if((disptmp > 0x60)&&(disptmp < 0x67))// 如果接收到的字符是 a~f DispBuf = disptmp - 0x57; // 得到实际的字母 else DispBuf = 16; // 控制数码管不显示 P4OUT = scandata[dispbuf]; /******************************************* 函数名称 :PORT1_ISR 功能 :P1 端口的中断服务函数, 在这里接收来自键盘的字符参数 : 无返回值 : 无 ********************************************/ #pragma vector=port1_vector interrupt void PORT1_ISR(void) if(p1ifg & BIT4) // 如果是 clock 的中断 P1IFG &=~ BIT4; // 清除中断标志 if(bitcount == 11) // 接收第 1 位 if(sidval) // 如果不是起始位 return; else bitcount--; else if(bitcount == 2) // 接收奇偶校验位 if(sidval) // 如果校验位等于 1 pebit = 1; else pebit = 0; bitcount--;

47 else if(bitcount == 1) // 接收停止位 if(sidval) // 若停止位正确 bitcount = 11; // 复位位计数变量 if( Decode(recdata) ) // 解码获得此键值的 ASCII 值并保存 LPM3_EXIT; // 退出低功耗模式 recdata = 0; // 清除接收数据 else // 如果出错 bitcount = 11; recdata = 0; else // 接收 8 个数据位 recdata >>= 1; if(sidval) recdata = 0x80; bitcount--;

48 实验十 :DS1302(SPI 协议 ) 实验 实验电路 : DS1302+SMG: 实验结果为将实时时钟显示在数码管上 DS1302+LCD: 实验结果为将实时时钟显示在液晶上 DS1302+SMG: #include <msp430x14x.h> #include "ds1302.h" #define dpydat P4OUT #define dpy0 BIT2; #define dpy1 BIT3; #define dpy2 BIT4; #define dpy3 BIT5; #define dpy4 BIT6; #define dpy5 BIT7; unsigned char table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; int min10,min1,hour10,hour1,sec10,sec1,secflash,dpybit=0x00; void gettime()

49 unsigned char hour,min,sec; hour=rtc_gethour(); min=rtc_getmin(); sec=rtc_getsec(); hour1=hour%10; hour10=hour/10; min1=min%10; min10=min/10; sec1=sec%10; sec10=sec/10; if (sec%2) secflash=1; else secflash=0; void rtcinit () rtc_wp(0); rtc_stop(0); rtc_charger(1,1); void sysinit () P4OUT = 0xff; P4DIR = 0xff; P6OUT = 0xfc; P6DIR = 0xfc; IE1 = WDTIE; // 开 WDT 中断 void main () WDTCTL = WDT_ADLY_1_9; sysinit (); rtcinit (); _EINT(); while (1) gettime(); //WDT 工作于定时模式, 定时时间为 (2^6)/(2^15)s

50 #pragma vector=wdt_vector interrupt void wdtisr () switch (dpybit) case 0: P6OUT = 0xfc; dpydat = ~table[hour10]; P6OUT &= ~dpy5; break; case 1: P6OUT = 0xfc; dpydat = ~(table[hour1] 0x80); P6OUT &= ~dpy4; break; case 2: P6OUT = 0xfc; dpydat = ~table[min10]; P6OUT &= ~dpy3 break; case 3: P6OUT = 0xfc; // if (secflash) dpydat = ~(table[min1] 0x80); // else // dpydat = ~table[min1]; P6OUT &= ~dpy2; break; case 4: P6OUT = 0xfc; dpydat = ~table[sec10]; P6OUT &= ~dpy1; break; case 5: P6OUT = 0xfc; dpydat = ~table[sec1]; P6OUT &= ~dpy0; break; dpybit++; dpybit=dpybit%6; DS1302+LCD: /**********************main.c*************************** 程序功能 : 从 DS1302 中读出时间数据在 1602 液晶模块上显示 测试说明 : 用户可以更改 "gdata.h" 中 wdata,bwdata,rwdata

51 三个数组中的数据, 但是请注意数据格式 根据程序中提示, 设置断点观察数据 *********************************************************/ #include <msp430x14x.h> #include "ds1302.h" #include "cry1602.h" #include "gdata.h" typedef unsigned char uchar; typedef unsigned int uint; void main(void) uchar disptemp[8]; WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 disptemp[2]=0x3a; disptemp[5]=0x3a; Reset_DS1302(); // ":" 对应的编码 /***** 测试更改和读出时间 *****/ Set_DS1302(wdata); Get_DS1302(rdata); _NOP(); // 在此处设置断点, 观察 rdata 是否与 wdata 一致 /***** 测试连续读写时间寄存器 *****/ BurstWrite1302(bwdata); BurstRead1302(brdata); _NOP(); // 在此处设置断点, 观察 brdata 是否与 bwdata 一致 /***** 测试连续读写 RAM*****/ BurstWriteRAM(rwdata); BurstReadRAM(rrdata); _NOP(); // 在此处设置断点, 观察 rrdata 是否与 rwdata 一致 /************************************************* 注释 : 用户在利用 27~43 行的程序完成测试以后, 请设置好

52 正确的当前时间然后将这端程序屏蔽掉, 重新 make 以后写入 CPU 中, 这样才能保证每次上电时 CPU 都从 DS1302 中读出正确的当前时间送到液晶中去显示, 而不会发生每次都重新改写 DS1302 内部时间的问题 *************************************************/ // 初始化液晶 LcdReset(); DispNchar(1,0,14,tishi); // 读取时间转换数值显示 while(1) BurstRead1302(rdata); disptemp[6] = shuzi[(rdata[0]&0xf0)>>4]; disptemp[7] = shuzi[rdata[0]&0x0f]; disptemp[3] = shuzi[(rdata[1]&0xf0)>>4]; disptemp[4] = shuzi[rdata[1]&0x0f]; disptemp[0] = shuzi[(rdata[2]&0xf0)>>4]; disptemp[1] = shuzi[rdata[2]&0x0f]; DispNchar(4,1,8,disptemp); delay(50000); /**************************cry1602.c***************************/ #include <msp430x14x.h> #include "cry1602.h" typedef unsigned char uchar; typedef unsigned int uint; /************** 宏定义 ***************/ #define DataDir P4DIR #define DataPort P4OUT #define Busy 0x80 #define CtrlDir P6DIR #define CLR_RS P6OUT &= ~BIT2; //RS = P6.2 #define SET_RS P6OUT = BIT2; #define CLR_RW P6OUT &= ~BIT3; //RW = P6.3 #define SET_RW P6OUT = BIT3; #define CLR_EN P6OUT &= ~BIT4; //EN = P6.4 #define SET_EN P6OUT = BIT4; void delay1(); // 申明延时函数 /******************************************* 函数名称 :DispNchar 功能 : 让液晶从某个位置起连续显示 N 个字符

53 参数 :x-- 位置的列坐标 y-- 位置的行坐标 n-- 字符个数 ptr-- 指向字符存放位置的指针返回值 : 无 ********************************************/ void DispNchar(uchar x,uchar y, uchar n,uchar *ptr) uchar i; for (i = 0;i < n;i++) Disp1Char(x++,y,ptr[i]); if (x == 0x0f) x = 0; y ^= 1; /******************************************* 函数名称 :LocateXY 功能 : 向液晶输入显示字符位置的坐标信息参数 :x-- 位置的列坐标 y-- 位置的行坐标返回值 : 无 ********************************************/ void LocateXY(uchar x,uchar y) uchar temp; temp = x&0x0f; y &= 0x01; if(y) temp = 0x40; // 如果在第 2 行 temp = 0x80; LcdWriteCommand(temp,1); /******************************************* 函数名称 :Disp1Char 功能 : 在某个位置显示一个字符参数 :x-- 位置的列坐标 y-- 位置的行坐标 data-- 显示的字符数据

54 返回值 : 无 ********************************************/ void Disp1Char(uchar x,uchar y,uchar data) LocateXY(x, y); LcdWriteData( data ); /******************************************* 函数名称 :LcdReset 功能 : 对 1602 液晶模块进行复位操作参数 : 无返回值 : 无 ********************************************/ void LcdReset(void) CtrlDir = 0x1C; // 控制线端口设为输出状态 0001,1100 DataDir = 0xFF; // 数据端口设为输出状态 LcdWriteCommand(0x38, 0); Delay5ms(); LcdWriteCommand(0x38, 0); Delay5ms(); LcdWriteCommand(0x38, 0); Delay5ms(); // 规定的复位操作 LcdWriteCommand(0x38, 1); // 显示模式设置 LcdWriteCommand(0x08, 1); // 显示关闭 LcdWriteCommand(0x01, 1); // 显示清屏 LcdWriteCommand(0x06, 1); // 写字符时整体不移动 LcdWriteCommand(0x0c, 1); // 显示开, 不开游标, 不闪烁 /******************************************* 函数名称 :LcdWriteCommand 功能 : 向液晶模块写入命令参数 :cmd-- 命令, chk-- 是否判忙的标志,1: 判忙,0: 不判返回值 : 无 ********************************************/ void LcdWriteCommand(uchar cmd,uchar chk) //if (chk) WaitForEnable(); // 检测忙信号? CLR_RS;

55 CLR_RW; _NOP(); DataPort = cmd; _NOP(); // 将命令字写入数据端口 SET_EN; _NOP(); _NOP(); CLR_EN; delay1(); // 产生使能脉冲信号 // 保持使能信号为低一段时间 /******************************************* 函数名称 :LcdWriteData 功能 : 向液晶显示的当前地址写入显示数据参数 :data-- 显示字符数据返回值 : 无 ********************************************/ void LcdWriteData( uchar data ) //WaitForEnable(); // 等待液晶不忙 SET_RS; CLR_RW; _NOP(); DataPort = data; _NOP(); // 将显示数据写入数据端口 SET_EN; // 产生使能脉冲信号 delay1(); // 保持使能信号为低一段时间 _NOP(); _NOP(); CLR_EN; /******************************************* 函数名称 :WaitForEnable 功能 : 等待 1602 液晶完成内部操作参数 : 无返回值 : 无 ********************************************/ void WaitForEnable(void)

56 P4DIR &= 0x00; // 将 P4 口切换为输入状态 CLR_RS; SET_RW; _NOP(); SET_EN; _NOP(); _NOP(); while((p4in & Busy)!= 0); // 检测忙标志 CLR_EN; P4DIR = 0xFF; // 将 P4 口切换为输出状态 /******************************************* 函数名称 :Delay5ms 功能 : 延时约 5ms 参数 : 无返回值 : 无 ********************************************/ void Delay5ms(void) uint i = 40000; while (i!= 0) i--; /******************************************* 函数名称 :Delay400ms 功能 : 延时约 400ms 参数 : 无返回值 : 无 ********************************************/ void Delay400ms(void) uchar i = 50; uint j; while(i--) j = 7269;

57 while(j--); // // 延时函数 void delay1() unsigned int i; for(i=0;i<300;i++); /**************************ds1302.c***************************/ #include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint; /************** 宏定义 ***************/ #define DS_RST BIT2 //DS_RST = P3.2 #define DS_SCL BIT6 //DS_SCL = P3.6 #define DS_SDA BIT7 //DS_SDA = P3.7 #define DS_RST_IN P3DIR &= ~DS_RST #define DS_RST_OUT P3DIR = DS_RST #define DS_RST0 P3OUT &= ~DS_RST #define DS_RST1 P3OUT = DS_RST #define DS_SCL_IN P3DIR &= ~DS_SCL #define DS_SCL_OUT P3DIR = DS_SCL #define DS_SCL0 P3OUT &= ~DS_SCL #define DS_SCL1 P3OUT = DS_SCL #define DS_SDA_IN P3DIR &= ~DS_SDA #define DS_SDA_OUT P3DIR = DS_SDA #define DS_SDA0 P3OUT &= ~DS_SDA #define DS_SDA1 P3OUT = DS_SDA #define DS_SDA_BIT P3IN & DS_SDA /******************************************* 函数名称 :delay 功能 : 延时一段时间参数 :time-- 延时长度返回值 : 无 ********************************************/ void delay(uint time) uint i; for(i = 0;i < time;i++) _NOP();

58 /******************************************* 函数名称 :Reset_DS1302 功能 : 对 DS1302 进行复位操作参数 : 无返回值 : 无 ********************************************/ void Reset_DS1302(void) DS_RST_OUT; //RST 对应的 IO 设置为输出状态 DS_SCL_OUT; //SCLK 对应的 IO 设置为输出状态 DS_SCL0; //SCLK=0 DS_RST0; //RST=0 delay(10); DS_SCL1; //SCLK=1 /******************************************* 函数名称 :Write1Byte 功能 : 对 DS1302 写入 1 个字节的数据参数 :wdata-- 写入的数据返回值 : 无 ********************************************/ void Write1Byte(uchar wdata) uchar i; DS_SDA_OUT; DS_RST1; //SDA 对应的 IO 设置为输出状态 //REST=1; for(i = 8; i > 0; i--) if(wdata&0x01) DS_SDA1; else DS_SDA0; DS_SCL0; delay(10); DS_SCL1; delay(10); wdata >>= 1; /******************************************* 函数名称 :Read1Byte 功能 : 从 DS1302 读出 1 个字节的数据参数 : 无返回值 : 读出的一个字节数据

59 ********************************************/ uchar Read1Byte(void) uchar i; uchar rdata = 0X00; DS_SDA_IN; //SDA 对应的 IO 设置为输入状态 DS_RST1; //REST=1; for(i = 8; i > 0; i--) DS_SCL1; delay(10); DS_SCL0; delay(10); rdata >>= 1; if(ds_sda_bit) rdata = 0x80; return(rdata); /******************************************* 函数名称 :W_Data 功能 : 向某个寄存器写入一个字节数据参数 :addr-- 寄存器地址 wdata-- 写入的数据返回值 : 无 ********************************************/ void W_Data(uchar addr, uchar wdata) DS_RST0; DS_SCL0; _NOP(); DS_RST1; Write1Byte(addr); // 写入地址 Write1Byte(wdata); // 写入数据 DS_SCL1; DS_RST0; /******************************************* 函数名称 :R_Data 功能 : 从某个寄存器读出一个字节数据参数 :addr-- 寄存器地址返回值 : 读出的数据

60 ********************************************/ uchar R_Data(uchar addr) uchar rdata; DS_RST0; DS_SCL0; _NOP(); DS_RST1; Write1Byte(addr); // 写入地址 rdata = Read1Byte(); // 读出数据 DS_SCL1; DS_RST0; return(rdata); /******************************************* 函数名称 :BurstWrite1302 功能 : 以 burst 方式向 DS1302 写入批量时间数据参数 :ptr-- 指向时间数据存放地址的指针返回值 : 读出的数据说明 : 时间数据的存放格式是 : 秒, 分, 时, 日, 月, 星期, 年, 控制 7 个数据 (BCD 格式 )+1 个控制 ********************************************/ void BurstWrite1302(uchar *ptr) uchar i; W_Data(0x8e,0x00); // 允许写入 DS_RST0; DS_SCL0; _NOP(); DS_RST1; Write1Byte(0xbe); // 0xbe: 时钟多字节写入命令 for (i = 8; i > 0; i--) Write1Byte(*ptr++); DS_SCL1; DS_RST0; W_Data(0x8e,0x80); // 禁止写入 /*******************************************

61 函数名称 :BurstRead1302 功能 : 以 burst 方式从 DS1302 读出批量时间数据参数 :ptr-- 指向存放时间数据地址的指针返回值 : 无说明 : 时间数据的存放格式是 : 秒, 分, 时, 日, 月, 星期, 年, 控制 7 个数据 (BCD 格式 )+1 个控制 ********************************************/ void BurstRead1302(uchar *ptr) uchar i; DS_RST0; DS_SCL0; _NOP(); DS_RST1; Write1Byte(0xbf); //0xbf: 时钟多字节读命令 for (i = 8; i > 0; i--) *ptr++ = Read1Byte(); DS_SCL1; DS_RST0; /******************************************* 函数名称 :BurstWriteRAM 功能 : 以 burst 方式向 DS1302 的 RAM 中写入批量数据参数 :ptr-- 指向存放数据地址的指针返回值 : 无说明 : 共写入 31 个字节的数据 ********************************************/ void BurstWriteRAM(uchar *ptr) uchar i; W_Data(0x8e,0x00); DS_RST0; DS_SCL0; _NOP(); DS_RST1; Write1Byte(0xfe); for (i = 31; i>0; i--) Write1Byte(*ptr++); // 允许写入 //0xfe:RAM 多字节写命令 //RAM 共有 31 个字节

62 DS_SCL1; DS_RST0; W_Data(0x8e,0x80); // 禁止写入 /******************************************* 函数名称 :BurstReadRAM 功能 : 以 burst 方式从 DS1302 的 RAM 中读出批量数据参数 :ptr-- 指向数据存放地址的指针返回值 : 无说明 : 共读出 31 个字节的数据 ********************************************/ void BurstReadRAM(uchar *ptr) uchar i; DS_RST0; DS_SCL0; _NOP(); DS_RST1; Write1Byte(0xff); //0xff:RAM 的多字节读命令 for (i = 31; i > 0; i--) *ptr++ = Read1Byte(); DS_SCL1; DS_RST0; /******************************************* 函数名称 :Set_DS1302 功能 : 设置 DS1302 内部的时间参数 :ptr-- 指向存放数据地址的指针返回值 : 无说明 : 写入数据的格式 : 秒分时日月星期年 共 7 个字节 ********************************************/ void Set_DS1302(uchar *ptr) uchar i; uchar addr = 0x80; W_Data(0x8e,0x00); // 允许写入 for(i = 7;i > 0;i--)

63 W_Data(addr,*ptr++); addr += 2; W_Data(0x8e,0x80); // 禁止 /******************************************************************** * * 名称 : Get_DS1302 * 说明 : * 功能 : 读取 DS1302 当前时间 * 调用 : R_Data(uchar addr) * 输入 : uccurtime: 保存当前时间地址 当前时间格式为 : 秒分时日月星期年 * 7Byte (BCD 码 ) 1B 1B 1B 1B 1B 1B 1B * 返回值 : 无 ***********************************************************************/ /******************************************* 函数名称 :Get_DS1302 功能 : 读取 DS1302 内部的时间参数 :ptr-- 指向数据存放地址的指针返回值 : 无说明 : 读出数据的格式 : 秒分时日月星期年 共 7 个字节 ********************************************/ void Get_DS1302(uchar *ptr) uchar i; uchar addr = 0x81; for(i = 0;i < 7;i++) ptr[i] = R_Data(addr); addr += 2;

64 实验十一 :DA(TLC5620) 实验 实验电路 : DA 输出从 DAC_OUT 输出, 左侧为接地 dac5620(0 到 255): 实验结果为 430 以 spi 协议方式控制 TLC5620, 使其在 DAC_OUT 处产生锯齿波, 通过 LED 灯显示出来 dac5620 三角波 : 实验结果为 430 以 spi 协议方式控制 TLC5620, 使其在 DAC_OUT 处产生由暗到亮的变化, 通过 LED 灯显示出来 dac5620(0 到 255):

65 /********************************************************* * SPI 控制 DA(TLC5620) 同步通信 * * SPI 三线主模式 * * 硬件连接图 * * P STE1----DA LOAD * * P SIMO1----DA DATA * * P SOMI1----DA LDAC * * P UCLK1----DA CLK * * 采用的是 : * Figure 3. Load-Controlled Update Using 8-Bit Serial Word (LDAC = Low) A1=0 A0=0 RNG=0 *********************************************************/ #include <msp430x14x.h> #define #define #define uint8 unsigned char uint32 unsigned int uint16 unsigned short #define DAC_RNG 0 // 幅值选择 /* TLC5620 由 P0 口控制, 控制 I/O 定义如下 */ #define CLK1 (1<<3) #define DAT1 (1<<1) #define LOAD (1<<0) #define LDAC (1<<2) //#define DAC5620CON (CLK1 DAT1 LOAD LDAC) /* I/O 输出操作函数 */ #define CCLK1() P5OUT &= ~CLK1 #define SCLK1() P5OUT = CLK1 #define CDAT1() #define SDAT1() P5OUT &=~DAT1 P5OUT = DAT1 #define CLOAD() #define SLOAD() P5OUT &= ~LOAD P5OUT = LOAD #define CLDAC() #define SLDAC() P5OUT &=~LDAC P5OUT = LDAC void DAC5620_Data(uint8 no, uint8 dat); void PIN_Init(void);

66 void Delay(void); int main(void) uint8 i; PIN_Init(); // 初始化 CPU 的 IO 口 while(1) DAC5620_Data(1, i); DAC5620_Data(2, 0); DAC5620_Data(3, i); DAC5620_Data(4, i); i++; // 发生锯齿波 return(0); /**************************************************************************** * 名称 :IRQ_Eint3() * 功能 : 外部中断 EINT3 服务函数, 取反 B1 控制口 * 入口参数 : 无 * 出口参数 : 无 ****************************************************************************/ void PIN_Init(void) // CPU 的 IO 口初始化函数 WDTCTL = WDTPW + WDTHOLD; // 关闭关门狗 //BCSCTL2 &=0xc0; //XT2CLK+2 分频 P5DIR =0x0f; CCLK1(); // CLK1 = 0 CDAT1(); // DAT1 = 0 SLOAD(); // LOAD = 1 SLDAC(); // LDAC = 1 /**************************************************************************** * 名称 :DAC5620_Data() * 功能 :DAC 芯片 TLC5620 的控制函数 * 入口参数 :uint8 no 通道选择 uint8 dat 输出数值 * 出口参数 : 无 ****************************************************************************/ void DAC5620_Data(uint8 no, uint8 dat)

67 unsigned int bak; uint8 m; #if DAC_RNG==0 bak = (dat<<5) ((no&0x03)<<14); #else bak = (dat<<5) ((no&0x03)<<14) (1<<13); #endif for(m=0; m<11; m++) SCLK1(); // CLK1 = 1 Delay(); if((bak&0x8000) == 0) CDAT1(); // DAT1 = 0 else SDAT1(); // DAT1 = 1 Delay(); CCLK1(); // CLK1 = 0 Delay(); bak <<= 1; CLOAD(); // LOAD = 0 Delay(); SLOAD(); // LOAD = 1 Delay(); CLDAC(); // LDAC = 0 Delay(); SLDAC(); // LDAC = 1 Delay(); void Delay(void) uint32 i; for(i=0; i<50; i++);

68 dac5620 三角波 : /********************************************************* * SPI 控制 DA(TLC5620) 同步通信 * * SPI 三线主模式 * * 硬件连接图 * * P STE1----DA LOAD * * P SIMO1----DA DATA * * P SOMI1----DA LDAC * * P UCLK1----DA CLK * * 采用的是 : * Figure 3. Load-Controlled Update Using 8-Bit Serial Word (LDAC = Low) A1=0 A0=0 RNG=0 *********************************************************/ #include <msp430x14x.h> unsigned char a; delay() int i; for(i=0;i<30000;i++); void main() WDTCTL = WDTPW + WDTHOLD; // 关闭关门狗 P5SEL = 0x0a; //P 用于 spi 模式 P5DIR =0x0f; //P5.0~P5.3 为输出 U1CTL = CHAR + SYNC+MM + SWRST; // CHAR: 字符长度为 1 //SYNC:SPI 模式 //MM: 主机模式 //SWRST: 控制位 U1TCTL = CKPH+ SSEL0 + STC; //CKPL+//CKPL: 时钟相位控制位 //SSEL1: 时钟源选择位 //STC: 从机发送控制位 spi 三线模式 U1BR0 = 0x02; // 波特率选择寄存器 0 U1BR1 = 0x00; // 波特率选择寄存器 1 U1MCTL = 0x00; ME2 = USPIE1; U1CTL&=~SWRST; P5OUT =BIT0+BIT2; P5OUT ^=0x04; // 模块使能 // 开启 SPI //P5.0 P5.2 拉高 //P5.2 拉低

69 // 给 DA 发数据图形 : 锯齿波 while(1) // 以下注释部分为产生锯齿波的程序 for(a =0x00;a<0x7f;) U1TXBUF = a; while((ifg2&utxifg1)==0); a=a+1; P5OUT ^=0x01; P5OUT =BIT0; //USART1 发送数据是否准备好 //P5.0 拉低 //P5.0 拉高 // 以下程序为发光二极管程序 /* for(a =0x30;a<0x50;) U1TXBUF = a; while((ifg2&utxifg1)==0); a=a+1; P5OUT ^=0x01; P5OUT =BIT0; delay(); //USART1 发送数据是否准备好 //P5.0 拉低 //P5.0 拉高 */

70 实验十二 :DS18b20 温度传感器实验 实验电路 : 实验结果为用 DS18B20 测量室温并用 6 位数码管显示 /************************************************* 程序功能 : 用 DS18B20 测量室温并在数码管上显示 测试说明 : 观察显示温度数值 *************************************************/ #include <msp430x14x.h> #include "DS18B20.c" // 要显示的 6 位温度数字 uchar dn[6]; // 数码管七段码 ;0--f //uchar scandata[16] = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, // 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; // 共阳笔段码 uchar scandata[16] = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; // 数码管位选变量 uchar cnt = 2; void Disp_Numb(uint temper); /**************** 主函数 ****************/ void main(void)

71 uchar i; WDTCTL=WDTPW+WDTHOLD; /* 选择系统主时钟为 8MHz */ BCSCTL1 &= ~XT2OFF; // 打开 XT2 高频晶体振荡器 do IFG1 &= ~OFIFG; // 清除晶振失败标志 for (i = 0xFF; i > 0; i--); // 等待 8MHz 晶体起振 while ((IFG1 & OFIFG)); // 晶振失效标志仍然存在? BCSCTL2 = SELM_2 + SELS; //MCLK 和 SMCLK 选择高频晶振 // 设置看门狗定时器, 初始化控制数码管的 IO WDTCTL = WDT_ADLY_1_9; IE1 = WDTIE; P4DIR = 0xff; P6DIR = 0xfc; P4OUT = 0x00; P6OUT = 0xfc; // 设置 DS18B20 的 IO 状态 P3DIR = BIT0; P3OUT = BIT0; // 计数时钟选择 SMLK=8MHz,1/8 分频后为 1MHz TACTL = TASSEL_2 + ID_3; // 打开全局中断 _EINT(); // 循环读数显示 while(1) Disp_Numb(Do1Convert()); /******************************************* 函数名称 :watchdog_timer 功能 : 看门狗定时器中断服务函数, 进行数码管动态扫描参数 : 无返回值 : 无 ********************************************/ #pragma vector = WDT_VECTOR

72 interrupt void watchdog_timer(void) P6OUT = 0xfc; P4OUT = scandata[dn[cnt-2]]; if(cnt==6) P4OUT &= 0x7f; // 在第二位显示小数点 P6OUT &= ~(1<<cnt); cnt++; if(cnt == 8) cnt = 2; /******************************************* 函数名称 :Disp_Numb 功能 : 将从 DS18B20 读取的 11bit 温度数据转换成数码管显示的温度数字参数 :temper--11bit 温度数据返回值 : 无 ********************************************/ void Disp_Numb(uint temper) uchar i; for(i = 0;i < 6;i++) dn[i] = 0; // 初始化显示变量 // 数值转换 if(temper & BIT0) dn[0] = 5; dn[1] = 2; dn[2] = 6; if(temper&bit1) dn[1] += 5; dn[2] += 2; dn[3] += 1; if(temper & BIT2) dn[2] += 5; dn[3] += 2; if(dn[2] >= 10) dn[2] -= 10; dn[3] += 1;

73 if(temper&bit3) dn[3] += 5; if(temper & BIT4) dn[4] += 1; if(temper & BIT5) dn[4] += 2; if(temper & BIT6) dn[4] += 4; if(temper & BIT7) dn[4] += 8; if(dn[4] >= 10) dn[4] -= 10; dn[5] += 1; if(temper & BIT8) dn[4] += 6; dn[5] += 1; if(dn[4] >= 10) dn[4] -= 10; dn[5] += 1; if(temper & BIT9) dn[4] += 2; dn[5] += 3; if(dn[4] >= 10) dn[4] -= 10;

74 dn[5] += 1; if(temper & BITA) dn[4] += 4; dn[5] += 6; if(dn[4] >= 10) dn[4] -= 10; dn[5] += 1; if(dn[5] >= 10) dn[5] -= 10;

75 实验十三 :LCD1602 液晶实验 实验电路 : 在做 1602 或者 液晶实验时, 如果液晶显示亮度很低是由于 usb 供电不足所造成, 可以选择将数码管控制 J13 跳帽拔下, 以减少电流损耗!

76 实验结果为熟悉 LCD 的使用方法, 将 LCD 本站网址和电话显示在液晶上! // 实验目的 : 熟悉 LCD 的使用方法 //LCD 循环显示本站网址和电话 // 硬件要求 :LCD 直接与单片机的 A 口和 D 口相连接 // 所有拨码开关置 OFF // 调节电位器, 调节 LCD 亮度 #include<msp430x14x.h> #define set(x) P6OUT =x #define clr(x) P6OUT &=~x #define rs BIT2 #define rw BIT3 #define e BIT4 const char web[ ]=' ','w','w','w','.','2','2','s','k','y','.','c','o','m',' ',' '; //'C','1','6','.','C','O','M',' ',' '; // 显示公司 web 地址 const char tel[ ]='T','E','L',':','1','3','0','7','4','5','6','7','7','0','4',' '; // 显示公司电话号码 void init(); void lcd_init(); void write_web(); void write_tel(); void write(char x); void lcd_enable(); void delay(); // 申明 I/O 口初始化函数 // 申明 LCD 初始化函数 // 申明显示公司 web 地址函数 // 申明显示公司 tel 函数 // 申明显示 1 字节数据函数 // 申明 LCD 显示设置函数 // 申明延时函数 // // 主函数

77 void main() init(); // 调用 I/O 口初始化函数 lcd_init(); // 调用 LCD 初始化函数 write_web(); // 调用显示公司 web 地址函数 P4OUT=0Xc0;//PORTD=0XC0; // 设置第 2 行显示地址 lcd_enable(); // 调用 LCD 显示设置函数 write_tel(); // 调用显示公司 tel 函数 while(1); // //I/O 口初始化函数 void init() //ADCON1=0X07; // 设置 A 口为普通 I/O 口 //TRISA=0X00; // 设置 A 口为输出 //TRISD=0X00; // 设置 D 口为输出 P4DIR=0xff; P6DIR=0x1c;// 设置 A 口为输出 WDTCTL = WDTPW + WDTHOLD; // 杀狗 // //LCD 初始化函数 void lcd_init() P4OUT=0x01;//PORTD=0X1; lcd_enable(); P4OUT=0x38;//PORTD=0X38; lcd_enable(); P4OUT=0x0e;//PORTD=0X0e; lcd_enable(); P4OUT=0x06;//PORTD=0X06; lcd_enable(); P4OUT=0x80;//PORTD=0X80; lcd_enable(); // 清除显示 //8 位 2 行 5*7 点阵 // 显示开, 光标开, 闪烁 // 文字不动, 光标右移 // 公司 web 显示地址 // // 显示公司 web 地址

78 void write_web() int i; for(i=0;i<0x10;i++) write(web[i]); // 一共 16 字节数据 // 查表获取数据并调用写一个字节数据函数送 LCD 显示 // // 显示公司 tel 函数 void write_tel() int i; for(i=0;i<0x10;i++) // 一共显示 16 字节数据 write(tel[i]); // 查表获取数据并调用写一个字节数据函数送 LCD 显示 // // 写一个字节数据函数 void write(char x) P4OUT=x;//PORTD=x; // 待显示数据送 PORTD 口 set(rs);//rs=1; // 该字节数据为数据, 而不是命令 clr(rw);//rw=0; // 此次操作为写, 而不是读 clr(e);//e=0; // 拉低使能信号 delay(); // 保持使能信号为低一段时间 set(e);//e=1; // 拉高使能信号, 建立 LCD 操作所需要的上升沿 // //LCD 显示设置函数 void lcd_enable() clr(rs); // 该字节数据为命令, 而不是数据 clr(rw); // 此次操作为写, 而不是读 clr(e); // 拉低使能信号 delay(); // 保持使能信号为低一段时间 set(e); // 拉高使能信号, 建立 LCD 操作所需要的上升沿 //

79 // 延时函数 void delay() unsigned int i; for(i=0;i<10000;i++);

80 实验十四 :24C02(I2C 协议 ) 实验 实验电路 : i2c: 实验结果为 MCU 先向 I2C 写十个数, 然后再从 I2C 中读出显示在数码管上 i2c_uart: 实验结果为 PC 机通过串口可以控制从 EEPROM 的指定地址中读出一个字节的数据, 或者向指定地址写入一个字节的数据 i2c\i2c /********************************************************* 程序功能 :PC 机通过串口可以控制从 EEPROM 的指定地址中读出一个字节的数据, 或者向指定地址写入一个字节的数据特别说明 : 在 PC 机发送 EEPROM 内的存储地址或者是写入数据时, 必须使用十六进制发送, 而在发送读写控制命令时要使用默认的发送 ASCII 码的设置, 这点要注意, 否则操作无法完成 通信格式 :N.8.1, 测试说明 : 打开串口调试精灵, 正确设置通信格式, 根据屏幕显示的提示信息发送控制数据进行测试 **********************************************************/ #include <msp430x14x.h> #include "EEPROM.c" uchar table[16] = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; delay1(uint ts) while(ts--); void main( void ) uchar i; uchar rd[10]=0;

81 WDTCTL = WDTPW + WDTHOLD; // 关狗 P4DIR = 0xff; P6DIR = 0xfc; P4OUT = 0x00; P6OUT = 0xfc; P3DIR = BIT3 + BIT1; // 设置相应端口为输出状态 P3OUT = BIT3 + BIT1; for(i=0;i<10;i++) delay1(2000); //24c02 写入后需要擦除操作, 一定要加延时 Write_1Byte(i,i); // 功 能 : 向 EEPROM 中写入 1 个字节的数据 delay1(2000); //24c02 写入后需要擦除操作, 一定要加延时 for(i=1;i<10;i++) rd[i]=read_1byte_randomaddress(i); P4OUT=table[rd[i]]; P6OUT = ~BIT2; delay1(20000); //24c02 写入后需要擦除操作, 一定要加延时 while(1); i2c\i2c_uart /********************************************************* 程序功能 :PC 机通过串口可以控制从 EEPROM 的指定地址中读出一个字节的数据, 或者向指定地址写入一个字节的数据特别说明 : 在 PC 机发送 EEPROM 内的存储地址或者是写入数据时, 必须使用十六进制发送, 而在发送读写控制命令时要使用默认的发送 ASCII 码的设置, 这点要注意, 否则操作无法完成 通信格式 :N.8.1, 测试说明 : 打开串口调试精灵, 正确设置通信格式, 根据屏幕显示的提示信息发送控制数据进行测试 **********************************************************/ #include <msp430x14x.h> #include "EEPROM.c"

82 #include "uart.c" uchar step = 0xff; void main( void ) uchar i; WDTCTL = WDTPW + WDTHOLD; // 关狗 P3DIR = BIT3 + BIT1; P3OUT = BIT3 + BIT1; InitUART(); // 设置相应端口为输出状态 // 初始化 UART 端口 DisplayConfigMenu(); while(1) Send1Char('>'); Send1Char('\n'); i=get1char(); HandleConfigMenu(i);

83 实验十五 :HS0038 红外接收解码实验 实验电路 : HS0038: 实验结果为将遥控器按下键值, 在数码管上显示解码结果 #include <MSP430X14X.h> #define uchar unsigned char #define uint unsigned int #define t_3ms #define t_1ms 666 uchar get_code[4] = 0; uchar dat_code=0; uint timer; #include "msp430.c" #include "disp_4led.c" void delay(uint time) while(time--); //10ms void dat_high() P1DIR = BIT6; P1OUT = BIT6; void dat_low() P1DIR = BIT6; P1OUT &= ~BIT6;

84 uchar rd_dat() uchar stat; P1DIR = BIT6; P1OUT = BIT6; P1DIR &= ~BIT6; stat = P1IN; return (stat); uchar get_num() uchar i,j,rd,dat=0; _DINT(); // 关闭中断 for(j=0;j<4;j++) for(i=8;i>0;i--) dat>>=1; do rd=rd_dat(); while(!(rd & BIT6)); // wait high set_timer_b0(); // 检测高电平时间 do rd=rd_dat(); while(rd & BIT6); // wait low timer=tbr; stop_timer_b0(); if(timer>t_1ms)dat=dat 0x80; else dat=dat&0x7f; get_code[j]=dat; _EINT(); return(get_code[2]); void main( void ) uchar rd; WDTCTL = WDTPW + WDTHOLD; dat_high(); set_timer_a0(); judge: do rd=rd_dat(); while(rd & BIT6); //wait low delay(100); rd=rd_dat();

85 if(rd & BIT6)goto judge; //xiao dou do rd=rd_dat(); while(!(rd & BIT6)); //wait high set_timer_b0(); do rd=rd_dat(); while(rd & BIT6); //wait low timer=tbr; stop_timer_b0(); if(timer<t_3ms5)delay(1000);goto judge;// 连续按下, 重复标志 dat_code=get_num(); goto judge;

86 实验十六 :LCD12864 液晶实验 实验电路 : 在做 1602 或者 液晶实验时, 如果液晶显示亮度很低是由于 usb 供电不足所造成, 可以选择将数码管控制 J10 跳帽拔下, 以减少电流损耗!

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft Word - MSP430 Launchpad 指导书.docx Contents 3... 9... 14 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project

More information

(3)ADC12Ó¦Ó÷¶Àý

(3)ADC12Ó¦Ó÷¶Àý MSP430 单片机入门应用系列例程 V1.0 (3)ADC12 应用范例策划 : 微控设计网 DC 例 3.1 ADC12- 使用外部参考电压 简述 : 使用单通进行 ADC 转换, 电压参考源来自外部 ADC12 的 Vr+=VeREF+,Vr-=Avss; Vr+ Vr- 是 ADC12 模块的最大值和最小值的参考电压源 当输入模拟电压信号等于或高于 Vr+ 时,ADC12 转换满幅输出, 此时输出值为

More information

untitled

untitled www.mcudriver.cn 1.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 1.2. MCU ATMEGA16 1.3. AVR8 1.4 LED0~LED7 1 1.5 #include // Program 1.1 LED.C #define uchar unsigned

More information

MSP430单片机简介

MSP430单片机简介 . September 14, 2012 . 1 简介 MSP430 单片机特点超低功耗 2 MSP430 时钟系统 3 MSP430 的端口 4 定时器看门狗定时器定时器 A 5 示例 MSP430 单片机特点. 简介 MSP430 单片机是美国德州仪器 (TI) 公司 1996 年开始推向市场的一种 16 位超低功耗 具有精简指令集的混合信号处理器 它将多个不同功能的模拟电路 数字电路模块和微处理器集成在了一个芯片上

More information

bingdian001.com

bingdian001.com TSM12M TSM12 STM8L152C6, STM8L152R8 MSP430F5325 whym1987@126.com! /******************************************************************************* * : TSM12.c * : * : 2013/10/21 * : TSM12, STM8L f(sysclk)

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

untitled

untitled 0571-89908088 89908091 www.lierda.com MSP430X11X2,MSP430X12X2 :1.8V-3.6V -:1MHz 2.2V 200 ua -:0.7 ua -(RAM ):0.1uA 6us 16, 125us -DCO -DCO - 32kHz - 16MHz - - 3 / 16 Timer_A 200ksps 10 A/D,,,. (USART0)(MSP430X12X2),

More information

Microsoft Word - MSP_430学习笔记.doc

Microsoft Word - MSP_430学习笔记.doc MSP430 学习笔记 (1) 这只是我在学习 TI 公司生产的 16 位超的功耗单片机 MSP430 的随笔, 希望能对其他朋友有所借鉴, 不对之处还请多指教 下面, 开始 430 之旅 讲解 430 的书现在也有很多了, 不过大多数都是详细说明底层硬件结构的, 看了不免有些空洞和枯燥, 我认为了解一个 MCU 的操作首先要对其基础特性有所了解, 然后再仔细研究各模块的功能 1. 首先你要知道 msp430

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

MSP430F KB+256B flash 10KB RAM 64 Quad Flat Pack QFP MSP430x1xx SLAU049 MSP430 MSP RISC CPU 16 DCO 6 MSP430x15x/16x/161x A/D 12 D/A

MSP430F KB+256B flash 10KB RAM 64 Quad Flat Pack QFP MSP430x1xx SLAU049 MSP430 MSP RISC CPU 16 DCO 6 MSP430x15x/16x/161x A/D 12 D/A MSP430x15x, MSP430x16x MSP430x161x 1.8V 3.6V 1MHz 2.2V 280 A 1.6 A RAM 0.1 A 6 S 16 125 DMA 12 A/D 12 D/A / 16 A / 16 B USART1 UART SPI USART0 UART SPI I 2 C / Bootstrap Loader MSP430F155: 16KB+256B flash

More information

Microsoft Word - LMB402CBC-AppNote-V0.1.doc

Microsoft Word - LMB402CBC-AppNote-V0.1.doc LMB402CBC 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本描述日期编者 0.1 新版本 2006-02-09 杨军 http://www.topwaysz.com 1 / 1 目录 1 概述 3 2 硬件接口 3 3 软件特性 3 3.1 控制器接口信号说明 3 3.2 模块指令系统 4 4 显示数据存储器的地址 4 5 字符发生器 CGRAM 的地址 5 6 应用举例 5 6.1

More information

MSP430 串行异步通讯原理与实现 南京航空航天大学 魏小龙 本讲讲述串口功能与连接的实现 大多数 MSP430 芯片都有硬件异步通讯功能, 有一些器件有两个通讯端口, 也有少数没有 没有硬件串口的芯片可以实现软件 ( 模拟 ) 串口 下面表格为 430 系列芯片串口的情况 系列芯片 F11 系列

MSP430 串行异步通讯原理与实现 南京航空航天大学 魏小龙 本讲讲述串口功能与连接的实现 大多数 MSP430 芯片都有硬件异步通讯功能, 有一些器件有两个通讯端口, 也有少数没有 没有硬件串口的芯片可以实现软件 ( 模拟 ) 串口 下面表格为 430 系列芯片串口的情况 系列芯片 F11 系列 MSP430 串行异步通讯原理与实现 南京航空航天大学 魏小龙 本讲讲述串口功能与连接的实现 大多数 MSP430 芯片都有硬件异步通讯功能, 有一些器件有两个通讯端口, 也有少数没有 没有硬件串口的芯片可以实现软件 ( 模拟 ) 串口 下面表格为 430 系列芯片串口的情况 系列芯片 F11 系列 F12 系列 F13 系列 F14 系列 F15 系列 F16 系列 串口数量 0 1 1 2 1

More information

JLX

JLX PRODUCT:LCD MODULE. Model No.: JLX177-006 Product Type: 1.77 inch QVGA TFT Modoule. 产品规格书 晶联讯研发研发部 : Written By Checked By Approved By 客户名称 : 结构电子核准 地址 : 深圳市宝安区西乡宝安大道东华工业区 A3 栋 6 楼电话 :0755-29784961 Http://www.jlxlcd.cn

More information

MSP430 MSP430 F149 MSP430F149 P USART MSP430F PWM 63#

MSP430 MSP430 F149 MSP430F149 P USART MSP430F PWM 63# MSP430 MSP430 0002 63# 710061 2003 7 63# 710061 1 MSP430 MSP430 F149 MSP430F149 P USART MSP430F149 485 232 PWM 63# 710061 2 MSP430 MSP430 16 FLASH,, 16, 64K,, 16 14 12 6 P USART DCO, 8M FLASH,, JTAG FET(FLASH

More information

2 12

2 12 SHENZHEN BRILLIANT CRYSTAL TECHNOLOGIC CO.,LTD. The specification for the following models Graphic LCM serial communication control board CB001 PROPOSED BY APPROVED Design Approved TEL:+86-755-29995238

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

MSP430 Launchpad 指导书

MSP430 Launchpad 指导书 MSP430 Launchpad 指导书 徐珺 2013.12 Contents 第一部分第一个工程... 3 第二部分中断和计时器... 10 第三部分 UART... 16 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 在这一部分中, 我们将介绍 CCS 集成开发环境的一些基本 使用方法, 并试着编写一个简单的小程序, 实现按键打开 LED TI 的 Launchpad 板本身是完整的

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

第三章 3.5 Flash 使用的代码样例 #include "msp430g2553.h" /**************************************************** g2553 有 4 个数据段, 每个数据段有 64bytes, 共 256bytes D:0x10

第三章 3.5 Flash 使用的代码样例 #include msp430g2553.h /**************************************************** g2553 有 4 个数据段, 每个数据段有 64bytes, 共 256bytes D:0x10 MSP-EXP430Launchpad 实验指南参考代码附录 本附录为 MSP-EXP430Launchpad 实验指南中各章节涉及示例程序的完整参考代码 目录 第三章... 2 3.5... 2 3.6... 5 第五章... 11 5.1.1... 11 5.1.2... 13 5.1.3... 14 5.1.4... 17 5.1.5... 18 5.1.6... 21 5.2.1... 22

More information

MSP430x11x1 T A -40 ~ SOWB 20 TSSOP (DW) (PW) MSP430F110IDW MSP430F110IPW MSP430F112IDW MSP430F112IPW + F11x 30kΩ

MSP430x11x1 T A -40 ~ SOWB 20 TSSOP (DW) (PW) MSP430F110IDW MSP430F110IPW MSP430F112IDW MSP430F112IPW + F11x 30kΩ MSP430F11x 1.8-3.6V 1.6uA@4KHz 200uA@1MHz 2.2V 5 ( 0.8uA RAM 0.1uA) 6us 16 RISC 125nS 32KHz / 16 A/D MSP430F110 1KB+128B 128B RAM MSP430F112 4KB+256B 256B RAM 20 (SOWB) 20 (TSSOP) MSP430 16 RISC CPU 16

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

Microsoft Word - ¹ØÓÚMSP430flash×ÔÉý¼¶µÄ³¢ÊÔ.doc

Microsoft Word - ¹ØÓÚMSP430flash×ÔÉý¼¶µÄ³¢ÊÔ.doc MSP430 程序自升级的实现原理及过程 更新 : 01 作者 : 乔海坤微控论坛特约 DC 微控论坛版主 在过去有很多公司或个人对于 MSP430 单片机串口自升级技术都当一个技术机密 而 TI 公布的是汇编语言编写的例子, 在理解上也不便 而在网络上也很难得到公开例程, 这样使得部分 MSP430 用户想实现这个功能时极为艰难 为此, 微控论坛和大家分享如何利用 MSP430 单片机串口自升级的实现实验

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

Microsoft Word - 实用案例.doc

Microsoft Word - 实用案例.doc 计 算 机 系 统 应 用 2009 年 第 12 期 嵌 入 式 Linux 下 温 湿 度 传 感 器 的 设 计 与 实 现 1 Design and Implementation of Temperature and Humidity Sensor Based on Embedded Linux 陈 博 刘 锦 高 ( 华 东 师 范 大 学 电 子 科 学 技 术 系 上 海 200241)

More information

Microsoft Word - LM6029-AppNote-V0.2.doc

Microsoft Word - LM6029-AppNote-V0.2.doc LM6029 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本 描述 日期 编者 0.1 新版本 2005-11-22 PanFeng 0.2 修改 4 节指令集说明 LCD bias select 的指令描述 2006-02-10 PanFeng Ref LM6029-AppNote-V0.2.doc http//www.topwaysz.com 1 / 7 目录 1. 简介...3 2.

More information

untitled

untitled MSP430F22X4 :1.8V-3.6V -:1MHz 2.2V 250 ua -:0.7 ua -(RAM ):0.1uA 1us 16, 65ns -16MHz ±1% - - 32kHz - 16M - - - 3 / 16 Timer_A 3 / 16 Timer_B 10 A/D 200ksps (USCI) - UART LIN -IrDA - SPI -I2C Bootstrap

More information

从MCS51向AVR的快速转换.PDF

从MCS51向AVR的快速转换.PDF MCS51 AVR MCS51 AVR ATMEL AVR RISC MCS51 AVR 1 MHZ 1MIPS 8MHZ AVR 224MHZ MCS51 FLASH EEPROM ISP WatchDog AVR MCS51 AT90S1200/2313 AT89C1051/2051 AT90S4414/8515 AT89C51/52 PCB / AVR C ICCAVR60 AVR C IAR

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

More information

HCS08微控制器上有关内存分配的几个问题.doc

HCS08微控制器上有关内存分配的几个问题.doc HCS08 shylion@gmail.com HCS08 Tiny Small shylion@gmail.com HCS08...- 1-1.1. HCS08...- 2-1.1...- 2-1.2 RAM...- 5-1.3 FLASH...- 5-1.4 Vectors...- 6-1.2....- 7-1.3. HCS08 Tiny Small...- 9-1.4. heap segment...12

More information

<453A5C D5CCFEEC4BF315C6D696E CCEC4B5B55C4D696E6951CAB9D3C3CAD6B2E1A3A E6FB0E6B1BEA3A92E646F63>

<453A5C D5CCFEEC4BF315C6D696E CCEC4B5B55C4D696E6951CAB9D3C3CAD6B2E1A3A E6FB0E6B1BEA3A92E646F63> 4WD MiniQ Complete Kit Introduction 4WD MiniQ mobile robot is especially designed for learning purpose. It comes fully assembled and all your need is a PC with Arduino IDE and 4xAA battery. The 4WD MiniQ

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

12232A LED LED LED EL EL CCFL EL CCF

12232A LED LED LED EL EL CCFL EL CCF 12232A 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 122 x 32 1/32Duty 1/5Bias 6:00 STN( ), EL LED EL/100VAC 400HZ LED/4.2VDC 1 / VDD-VSS 0 6.5 V Ta=25 LCD VDD-V0 0 12.0 V V1 0 VDD V VDD-VSS - 4.75

More information

Microsoft Word - MSP430F³£ÓÃÄ£¿éÓ¦ÓÃÔ�Àí.doc

Microsoft Word - MSP430F³£ÓÃÄ£¿éÓ¦ÓÃÔ�Àí.doc http://www.microcontrol.cn 微控设计网 中国 MSP430 单片机专业网站 MSP430F 常用模块应用原理 微控设计网版主 DC 策划原创于 :2006-3-7 最后更新 :2008-5-31 V8.2 为了更好地引导 MSP430 单片机爱好者的入门, 微控设计网为大家整理了一个份 MS430 单片机入门资料, 希望能够帮助到更多的国内单片机爱好者朋友 如果你在学习或应用

More information

第 1 章 MSP430 快速入门 因为最近转入 MPS430 的技术支持工作, 所以现在开始学习 430 的开发 由于之前用过 51, 也用过 TI 的 ARM CORTEX-M3, 但是就是没有用过 TI 的 430, 所以将 我学习 430 的过程写出来, 给像我一样之前没有 430 开发经验

第 1 章 MSP430 快速入门 因为最近转入 MPS430 的技术支持工作, 所以现在开始学习 430 的开发 由于之前用过 51, 也用过 TI 的 ARM CORTEX-M3, 但是就是没有用过 TI 的 430, 所以将 我学习 430 的过程写出来, 给像我一样之前没有 430 开发经验 目录 第 1 章 MSP430 快速入门...1 1.1 准备工作... 1 1.2 MSP430 的时钟系统... 3 1.3 DCO 时钟校准...3 1.4 硬件最小系统...4 1.5 在 IAR 下新建工程...4 i/11 第 1 章 MSP430 快速入门 因为最近转入 MPS430 的技术支持工作, 所以现在开始学习 430 的开发 由于之前用过 51, 也用过 TI 的 ARM CORTEX-M3,

More information

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63> 臺 北 市 立 松 山 高 級 工 農 職 業 學 校 資 訊 科 專 題 製 作 報 告 題 目 : 反 彈 空 間 指 導 老 師 : 余 耀 銘 學 生 : 廖 國 銓 趙 信 瑋 中 華 民 國 102 年 5 月 摘 要 在 這 高 速 科 技 的 起 飛 下, 科 技 都 建 立 起 於 基 礎, 有 些 人 把 這 基 礎 轉 為 理 論, 教 給 大 眾 學 習 ; 有 些 人 利

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

作业四:

作业四: 考试试题姓名 : 班级 : 分数 : 一 : 简述题 (1)MSP430F5xx 单片机的时钟系统中有哪几个时钟, 并分别讲述下它们的作用 (7) MSP430F5xx 单片机的时钟系统有 MCLK ACLK SMCLK MCLK 为主系统时钟, 主 要为 CPU 提供时钟 ACLK 为辅助系统时钟, 主要为低速的外围模块提供时钟 SMCLK 为子系统时钟, 主要为高速外围模块时钟 各种模块时钟的选择取决于系统对处理速度

More information

untitled

untitled XP248 1 XP248 XP248 DCS PLC SCnet SCnet DCS SCnet DCS 1.1 XP248 Modbus HostLink Modbus XP248 4 DB25 XP248 MODBUS XP248 SCControl XP248 4 RS232 RS485 4 32 XP248 COM0-COM1 COM2-COM3 1200 19200bit/s 5 8 1

More information

《计算机应用基础》学习材料(讲义)

《计算机应用基础》学习材料(讲义) 计 算 机 应 用 基 础 学 习 材 料 ( 讲 义 ) Fundamentals of Computer Application 2014-3-22 JIANGSU OPEN UNIVERSITY 第 二 学 习 周 计 算 机 基 础 知 识 ( 一 ) 导 学 在 本 学 习 周, 我 们 主 要 的 任 务 是 认 识 计 算 机 你 将 知 道 计 算 机 是 什 么 时 候 产 生 的,

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示 实验题目 : 串行接口芯片 8251 实验目的 : 1. 掌握 8251 的工作方式及应用 2. 了解有关串口通讯的知识 串行接口芯片 8251 3. 掌握使用 8251 实现双机通讯的软件编程和电路连接 实验设备 : IA-32 架构的微机系统及应用教学平台两套 实验原理 : 1. 8251 的基本性能 性能 : 8251 是可编程的串行通信接口, 可以管理信号变化范围很大的串行数据通信 有下列基本

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

1... 4 2... 5 2.1... 5 2.2... 5 2.3... 6 2.4... 6 2.5... 7 2.6... 7 3 2005... 8 3.1... 8 3.2... 9 3.3... 9 3.4 ( RMB100,000)... 9 3.5... 9 4...11 4.1.

1... 4 2... 5 2.1... 5 2.2... 5 2.3... 6 2.4... 6 2.5... 7 2.6... 7 3 2005... 8 3.1... 8 3.2... 9 3.3... 9 3.4 ( RMB100,000)... 9 3.5... 9 4...11 4.1. http://www.unsp.com.cn 1... 4 2... 5 2.1... 5 2.2... 5 2.3... 6 2.4... 6 2.5... 7 2.6... 7 3 2005... 8 3.1... 8 3.2... 9 3.3... 9 3.4 ( RMB100,000)... 9 3.5... 9 4...11 4.1... 11 4.2... 12 5... 13 5.1...

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Microsoft Word - MAN2023A_CH_APPONE.doc

Microsoft Word - MAN2023A_CH_APPONE.doc AT91 softpack 1.5 代码解读 基于 SAM7X EK 综合应用代码解读 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,GPIO H161T01 代码解读 关键词 AT91SAM7X256 系统板 创建日期 2010 07 14 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone

More information

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x 115 AVR W.V. Awdrey ATMEL AVR PIC AVR PIC AVR RISC AVR PIC AVR AVR AVR AVR AVR ATtiny15 AVR AVR AVR RAM ROM 121 116 122 ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r31 3 16 X Y Z 6-1 118 7 0

More information

专业主干课程与主要专业课程教学大纲(2009年、2011年).doc

专业主干课程与主要专业课程教学大纲(2009年、2011年).doc ... 1... 4... 9... 12... 16... 20... 23... 26... 30... 33... 36 Electric Circuits 00440021 64 0 0 4 1 2 Y- 3 4 ZYT H 5 Analog Electronic Technique 00440041 54 14 0 3.5 1. 2. 1. 2. 3. RC 4. 5. 1. 20 2.

More information

RO 电容检测 : 其原理就是测震荡电路频率, 关键参数在电容 ----C1 的充放电,R5 和 C1 构成一阶 RC 震荡电路 比较器的输入电压时随着输出电压变化而变化的, 而比较器负输入端电压是由 C1 充放电决定 通过计算可以发现, 电容电压在 1/3VCC-2/3VCC 之间反复变化 其震荡

RO 电容检测 : 其原理就是测震荡电路频率, 关键参数在电容 ----C1 的充放电,R5 和 C1 构成一阶 RC 震荡电路 比较器的输入电压时随着输出电压变化而变化的, 而比较器负输入端电压是由 C1 充放电决定 通过计算可以发现, 电容电压在 1/3VCC-2/3VCC 之间反复变化 其震荡 硬件检测电路原理 : Capitiactive Touch Pad 3 种常见电容检测电路介绍 :1.RC 检测, 基本趋于淘汰, 灵敏度低,2.RO 外部震荡, 外围需要一些电阻电容, 加大 PCB 体积,3.PinOsc with internal RO, 外部只需挂一个电容 RO 电容检测 : 其原理就是测震荡电路频率, 关键参数在电容 ----C1 的充放电,R5 和 C1 构成一阶 RC

More information

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C AUTOMATIC TROLLEY H K Hwang K K Chen J-S Lin S-C Wang M-L Li C-C Lin W-B Lin Dept. Of Electrical Engineering Far East College ABSTRACT This paper proposes an automatic trolley which can move automatically

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

SH79F161B I/O 1. SH79F161B SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = IO PxCRy IO x=0-3 y=0-7

SH79F161B I/O 1. SH79F161B SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = IO PxCRy IO x=0-3 y=0-7 SH79F161B - 10 ADC 8051 V 1.0 SH79F161B I/O 1. SH79F161B 8051 8051 SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = 0-7 2. IO PxCRy IO x=0-3 y=0-7 PxPCRy IO x=0-3 y=0-7

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

a b c d e f g C2 C1 2

a b c d e f g C2 C1 2 a b c d e f g C2 C1 2 IN1 IN2 0 2 to 1 Mux 1 IN1 IN2 0 2 to 1 Mux 1 Sel= 0 M0 High C2 C1 Sel= 1 M0 Low C2 C1 1 to 2 decoder M1 Low 1 to 2 decoder M1 High 3 BCD 1Hz clk 64Hz BCD 4 4 0 1 2 to 1 Mux sel 4

More information

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCAB5D1E9CAD2B7BDB0B82E646F63>

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCAB5D1E9CAD2B7BDB0B82E646F63> 目 录 一 嵌 入 式 系 统 的 应 用 及 前 景... - 1 - 二 目 前 嵌 入 式 系 统 教 学 现 状 和 实 验 体 系 的 建 设... - 1 - 三 嵌 入 式 教 学 在 本 科 生 中 的 教 学 难 点... - 1 - 四 教 学 难 点 解 决 方 法... - 2-1 选 择 S+core7 核 学 习... - 2-2 选 择 ecos 操 作 系 统 进 行

More information

2005.book

2005.book ...4... 4... 7...10... 10... 10... 10... 10... 11... 11 PCC... 11 TB170... 12 /... 12...13... 13 BP150 / BP151 / BP152 / BP155... 14...15... 15... 15... 15... 15... 15... 15... 16 PS465 / PS477... 17 PS692

More information

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg 1 1 a. 0.5V 5V 1Hz 1MHz b. 0.1% 2 : a. 0.5V 5V 1Hz 1MHz b. 0.1% (3) a. 0.5V 5V 100 s b. 1% 4 1 10 5 1MHz 6 1 2 1 0.1Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn Xi III Zebra XI III 1 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn 230V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666

More information

Microsoft Word - 34.doc

Microsoft Word - 34.doc 基于 MSP430 单片机和 OLED 的现场通用显示系统设计 田鑫 1, 刘金涛 1, 张凯临 ( 1. 中国海洋大学信息科学与工程学院电子工程系山东青岛 266100 2. 中国海洋大学信息科学与工程学院海洋技术系山东青岛 266100) 2 摘要 : 针对自容式和手持式的现场仪器, 提出了基于有机发光显示屏 (OLED) 的通用全彩色显示系统设计 分析了 OLED 显示驱动芯片 SSD1332

More information

PIC16F F MPLAB 08 16F LED 15 LED

PIC16F F MPLAB 08 16F LED 15 LED PIC16F877 PIC16F877 03 16F877 05 06 MPLAB 08 16F877 13 LED 15 LED 17 20 24 2 PIC16F877 PIC16F877 DIP VDD VSS CLOCK CPU :,AND,OR,XOR ROM: CPU ROM RAM: CPU,CPU I/O:CPU, CPU,, 16F877 RAM 512 128 Bank Bank

More information

ARK-14013/14017/14018

ARK-14013/14017/14018 ARK-24017F 8 ARK-24017F : 8 2 ii 1997~2000,,,,,, 1...3 1.1 ARK...3 1.2 ARK-24017F...3 ARK-24017F?...3 ARK-24017F...3 ARK-24017F...3 ARK-24017F...5 ARK-24017F...6...7 2.1...7 2.2...7 ARK...7...8...8...8...9

More information

Microsoft Word - ~ doc

Microsoft Word - ~ doc EEPROM 功能使用方法 1 适用产品 : 1.1 SM39R16A2/ SM39R12A2/ SM39R08A2 1.2 SM39R4051/ SM39R2051 1.3 SM39R04G1/ SM39R02G1 2 EEPROM 功能概述 : 2.1 使用 code flash 仿真为 Internal EEPROM, 在程序执行时, 可将 code flash 作为 data flash 储存数据使用

More information

DVK530/531扩展板

DVK530/531扩展板 DVK720 扩展板 驱动移植手册 2014.04.03 V1.0 版权声明 本手册所有权由深圳市微雪电子有限公司独家持有 未经本公司的书 面许可, 不得以任何方式或形式进行修改 分发或复制本文档的任何 部分, 否则一切后果由违者自负 版本更新记录 版本日期说明 V1.0 2014.04.03 初始发布 深圳市微雪电子有限公司 www.waveshare.net I 目录 版权声明... I 版本更新记录...

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

SPMC75F2413A_EVM_使用说明_V1.2.doc

SPMC75F2413A_EVM_使用说明_V1.2.doc SPMCFA EVM V. - Jan 0, 00 http://www.sunplusmcu.com ................ SPMCFA........... EEPROM.... I/O............ LED.... LED.... RS-........0............ EVM................ 0.....0..... SPMCFA EVM SPMCFA

More information

MCU DSP MSO MCU DSP MSO MSO MSO MCU/DSP I/O MSO 16 Microchip IC18 turn-on MSO chirp MCU I/O I 2 C

MCU DSP MSO MCU DSP MSO MSO MSO MCU/DSP I/O MSO 16 Microchip IC18 turn-on MSO chirp MCU I/O I 2 C MSO MCU DSP MSO MCU DSP MSO MSO MSO MCU/DSP I/O MSO 16 Microchip IC18 turn-on MSO chirp MCU I/O I 2 C 03 Keysight MSO MSO MSO DSO holdoff infinite-persistence / de-skew MSO 1 MSO MSO MSO MSO MCU DSP 1

More information

static unsigned int n250ms=o; n250ms++; if(n250ms==2){ // 延时 250ms 2=500ms n250ms=0; // 清零计数器 DelayTime&=~Delay500ms;// 复位标志位 WDTCTL=WDTHOLD+WDTPW; 1E

static unsigned int n250ms=o; n250ms++; if(n250ms==2){ // 延时 250ms 2=500ms n250ms=0; // 清零计数器 DelayTime&=~Delay500ms;// 复位标志位 WDTCTL=WDTHOLD+WDTPW; 1E MSP430C 延时程序设计 ( 为了阅读方便, 贴在下面 ) MSP430 是超低功耗 16 位单片机, 越来越受到电子工程师亲睐并得到广泛应用 C 程序直观, 可读性好, 易于移植和维护, 已被很多单片机编程人员所采用 MSP430 集成开发环境 ( 如 IAR Embedded Workbench 和 AQ430) 都集成了 C 编译器和 C 语言级调试器 C SPY 但是 C 语言难以实现精确延时,

More information

KB-1B开发板使用说明V3.0.doc

KB-1B开发板使用说明V3.0.doc MSP430F149 开发板使用说明 2011 年 01 月 1 第一章新手入门 1.1 MSP430F149 学习板特点 : 选用 16 位超低功耗单片机 MSP430F149, 采用子母双板分离设计,MCU 子板与集成外设母板通过插针座连接, 使用灵活方便 母板功能全面 板上资源丰富 : 两种可选供电方式 ( 标准稳压器接口 USB 接口 ) 一个 8-Bit 双向电平转换接口 (5V--3.3V,

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

MCCB EMI EMI

MCCB EMI EMI HD5L HD5L HD5L 4008-858 -959 189 4871 3800 MCCB EMI EMI ... 1 1.1... 1 1.2... 1 1.3... 2... 3 2.1... 3 2.2... 3 2.3... 4 2.4... 5 2.5... 6... 9 3.1... 9 3.2... 9 3.3... 10 3.4... 10 3.5... 12 3.6... 13...

More information

图 片 展 示 : 资 源 简 介 : FPGA Altera CycloneII EP2C5T144C8 (4608 个 LE) 2 路 有 源 晶 振 (50M,25M) AS & JTAG 标 准 接 口 VGA 接 口 UART 接 口 蜂 鸣 器 8bit 并 行 DAC 8 路 按 键

图 片 展 示 : 资 源 简 介 : FPGA Altera CycloneII EP2C5T144C8 (4608 个 LE) 2 路 有 源 晶 振 (50M,25M) AS & JTAG 标 准 接 口 VGA 接 口 UART 接 口 蜂 鸣 器 8bit 并 行 DAC 8 路 按 键 官 方 淘 宝 地 址 :http://metech.taobao.com/ MeTech verilog 典 型 例 程 讲 解 V1.0 笔 者 :MeTech 小 芯 技 术 支 持 QQ : 417765928 1026690567 技 术 支 持 QQ 群 :207186911 China AET 讨 论 组 http://group.chinaaet.com/293 笔 者 博 客 :http://blog.csdn.net/ywhfdl

More information

MSP430

MSP430 微控设计网 http://www.microcontrol.cn 微控技术论坛 http://bbs.microcontrol.cn 主题 : 基于模拟前端信号处理与控制技术的专业论坛, 网站. 基于模拟前端信号处理与控制技术的专业论坛 网站. MSP430F20xx 小巧 快速 灵活 Vincent Chan 德州仪器亚洲 MSP430 市场经理 vince-chan@ti.com 2005 Texas

More information

极客良品 -CC3200xx wifi 学习板 -PWM 实验 CC32xx-PWM 实验 片内定时器功能介绍 ( 使用的 mcu 外设和上一个节内容是一样的 ) 该 CC320 包含 4 个 32 位用户可编程通用定时 (GPTA0~3 或有文档标注为 TIMERA0~3),GPT 可以用于对具有

极客良品 -CC3200xx wifi 学习板 -PWM 实验 CC32xx-PWM 实验 片内定时器功能介绍 ( 使用的 mcu 外设和上一个节内容是一样的 ) 该 CC320 包含 4 个 32 位用户可编程通用定时 (GPTA0~3 或有文档标注为 TIMERA0~3),GPT 可以用于对具有 CC32xx-PWM 实验 片内定时器功能介绍 ( 使用的 mcu 外设和上一个节内容是一样的 ) 该 CC320 包含 4 个 32 位用户可编程通用定时 (GPTA0~3 或有文档标注为 TIMERA0~3),GPT 可以用于对具有定时器复用功能的管脚进入的外部事件进行计数或计时, 也可以在输出引脚上产生脉冲宽度调试 (PWM) 信号 每个 GPT 模块包含两个 16 位定时 / 计数器 (TimerA

More information

STEP-MXO2 V2硬件手册

STEP-MXO2 V2硬件手册 小脚丫 STEP FPGA STEP 2016/8/28 目录 1. 概述... 2 2.STEP-MXO2 V2 硬件简介 :... 3 2.1 STEP-MXO2 V2 开发板... 3 2.2 FT232 编程器... 3 2.3 FPGA... 3 2.4 供电... 4 2.5 时钟... 4 2.6 七段数码管... 4 2.7 三色 LED... 4 2.8 拨码开关... 4 2.9

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

USB解决方案.ppt

USB解决方案.ppt USB USB? RS232 USB USB HID U modem ADSL cable modem IrDA Silabs USB CP210x USB UART USB RS-232 USB MCU 15 USB 12 FLASH MCU 3 USB MCU USB MCU C8051F32x 10 ADC 1.5%, Vref CPU 25MIPS 8051 16KB Flash -AMUX

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

Microsoft Word - LM1095R-AppNote-V0.3.doc

Microsoft Word - LM1095R-AppNote-V0.3.doc LM1095R 液 晶 显 示 模 块 应 用 参 考 深 圳 市 拓 普 微 科 技 开 发 有 限 公 司 版 本 描 述 日 期 编 者 0.1 新 版 本 2005-10-28 淮 俊 霞 0.2 修 改 2.4: 双 图 层 的 灰 阶 显 示 2006-01-18 淮 俊 霞 修 改 参 考 程 序 中 的 错 字 0.3 修 改 2.6: 初 始 化 寄 存 器 的 设 置 修 改 参

More information

目 录

目      录 目 录 实验一 I/O 与时钟... 2 实验二键盘与 LED... 5 实验三定时器实验... 15 实验四外围模块操作... 20 实验五使用口线模拟 IIC 操作... 30 实验六同步通讯模块与扩展 FLASH... 41 实验七异步通讯模块... 53 实验八 ADC 与 LCD... 66 实验九图形点阵 LCD... 74 实验十超低功耗实验... 86 实验十一模拟设定时间和 RS-485

More information

单片机原理及应用实验指导书.doc

单片机原理及应用实验指导书.doc 1 2 3 4...2...4...9...9 AEDK598 MCS51...9 MCS51...10...10...10...10...10...10...11 P1...12...12...12....12...12...13 P3...14...14...14...14...14...14 I/O...15...15...15...15...15...16...17...17...17...17...17...18...19...19

More information

INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVL

INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVL ;************************************************ ; Null Clock REV:1.0 by Jed ; www.xuan.idv.tw ;************************************************ INCLUDE P16F84A.INC LIST P=16F84A,R=Dec CONFIG _XT_OSC&_WDT_OFF

More information

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING 前言 - Andrew Payne 目录 1 2 Firefly Basics 3 COMPONENT TOOLBOX 目录 4 RESOURCES 致谢

More information

练习 5: 冒泡程序目的 : 了解 C 语言的基础知识, 学会比较数据和排序要求 : 1 将 9,17,5,38,26 这五个数按从小到大的顺序排序 ; 2 将排序函数放在起始地址为 0XC000 的 FLASH 中 ; 3 将排好序的数组放到起始地址为 0x300 开始的 RAM 中 ; 4 程序

练习 5: 冒泡程序目的 : 了解 C 语言的基础知识, 学会比较数据和排序要求 : 1 将 9,17,5,38,26 这五个数按从小到大的顺序排序 ; 2 将排序函数放在起始地址为 0XC000 的 FLASH 中 ; 3 将排好序的数组放到起始地址为 0x300 开始的 RAM 中 ; 4 程序 第一周汇编指令系统培训作业 练习 1: 一个 16 进制的字与 BCD 码相互转换目的 : 了解不同进制之间的关系, 学习加 减等指令 要求 : 绘制流程图 参数使用通用寄存器 R11-R15 练习 2:1.2s 延时程序目的 : 了解寻址方式和指令执行周期, 学习跳转等指令 要求 : 绘制流程图 时钟采用 MCLK( 默认 1M), 延时 1.2s, 双层循环结构 练习 3:16 16 软件乘法程序目的

More information

PCM-3386用户手册.doc

PCM-3386用户手册.doc PCM-3386 BBPC-4x86 10/100M PC/104 (Lanry technology Co. Ltd. Zhuhai) 38 1012836 (Address: Room 1012,Linhai Building,No. 38,west of Shihua Road,Zhuhai City,Guangdong Province,China) (post code)519015 (phone)0756-3366659

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

DR2010.doc

DR2010.doc DR/2010 HACH 11-8-96-2 HACH. DR/2010, / UL E79852 CSA C22.223 LR 58275 VDE GS 1015-92 FCC"A" 15 : AMADOR CORP, HACH. EN50 011/CISPR 11 "B" (EMI)/89/336/EEC/EMC: AMADOR CORP, HACH.. EN50 082-1( )/89/226/EEC

More information