版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一验证性试验#include int flag;void DCmotor(int p) switch(p) case 0:/停转 P1OUT &= BIT0; P1OUT &= BIT6; P1OUT &= BIT7; break; case 1:/正转 P1OUT |= BIT0; P1OUT |= BIT6; P1OUT &= BIT7; break; case 2:/反转 P1OUT |= BIT0; P1OUT &= BIT6; P1OUT |= BIT7; break; int main(void) WDTCTL = WDTPW | WDTHOLD;/ Stop watchdog
2、 timer P4REN |=BIT0+BIT1+BIT2+BIT3+BIT4; / 上下拉电阻使能 P4OUT |=BIT0+BIT1+BIT2+BIT3+BIT4; /设置为上拉电阻 P4DIR |=BIT5+BIT6+BIT7; /LED管脚设置 P5DIR |=BIT7; P8DIR |=BIT0; P1DIR |= BIT0+BIT6+BIT7; while(1) if(P4IN&BIT0)=0) /按键S7 _delay_cycles(160000); if(P4IN&BIT0)=0) flag=2; if(P4IN&BIT4)=0) /按键S3 _delay_cycles(160
3、000); if(P4IN&BIT4)=0) flag=1; DCmotor(flag);设计性试验#include int main(void)WDTCTL = WDTPW +WDTHOLD;P4REN |=BIT0+BIT2+BIT4; P4OUT |=BIT0+BIT2+BIT4; P1DIR |=BIT0+BIT6+BIT7; while(1)if(P4IN&BIT0)=0)_delay_cycles(160000); if(P4IN&BIT0)=0) P1OUT |=BIT0; P1OUT |=BIT6; P1OUT &=BIT7; if(P4IN&BIT4)=0)_delay_cy
4、cles(160000); if(P4IN&BIT4)=0) P1OUT |=BIT0; P1OUT &=BIT6; P1OUT |=BIT7; if(P4IN&BIT2)=0)_delay_cycles(160000); if(P4IN&BIT2)=0) P1OUT &=BIT0; 1、验证性实验:利用 MSP430F6638 开发板上的拨盘电位器,控制改变AD 转换的输入电压值,转换后的数字量显示在段式液晶上面。使用万用表测得当前输入电压,通过计算得到转换后的理想的数字量与液晶显示的数字量进行比较。/* * main.c */#include #include #include #incl
5、ude #include dr_lcdseg.h /调用段式液晶驱动头文件#define XT2_FREQ 4000000#define MCLK_FREQ 16000000#define SMCLK_FREQ 4000000void initAdc() ADC12CTL0 |= ADC12MSC;/自动循环采样转换 ADC12CTL0 |= ADC12ON;/启动ADC12模块 ADC12CTL1 |= ADC12CONSEQ1 ;/选择单通道循环采样转换 ADC12CTL1 |= ADC12SHP;/采样保持模式 ADC12MCTL0 |= ADC12INCH_15; /选择通道15,连接
6、拨码电位器 ADC12CTL0 |= ADC12ENC;void initClock() while(BAKCTL & LOCKIO) /解锁XT1引脚操作 BAKCTL &= (LOCKIO); UCSCTL6 &= XT1OFF; /启动XT1,选择内部时钟源 P7SEL |= BIT2 + BIT3; /XT2引脚功能选择 UCSCTL6 &= XT2OFF; /启动XT2while (SFRIFG1 & OFIFG) /等待XT1、XT2与DCO稳定 UCSCTL7 &= (DCOFFG+XT1LFOFFG+XT2OFFG); SFRIFG1 &= OFIFG; UCSCTL4 = S
7、ELA_XT1CLK + SELS_XT2CLK + SELM_XT2CLK; /避免DCO调整中跑飞 UCSCTL1 = DCORSEL_5; /6000kHz23.7MHz UCSCTL2 = MCLK_FREQ / (XT2_FREQ / 16); /XT2频率较高,分频后作为基准可获得更高的精度 UCSCTL3 = SELREF_XT2CLK + FLLREFDIV_16; /XT2进行16分频后作为基准 while (SFRIFG1 & OFIFG) /等待XT1、XT2与DCO稳定 UCSCTL7 &= (DCOFFG+XT1LFOFFG+XT2OFFG); SFRIFG1 &=
8、OFIFG; UCSCTL5 = DIVA_1 + DIVS_1 + DIVM_1; /设定几个CLK的分频 UCSCTL4 = SELA_XT1CLK + SELS_XT2CLK + SELM_DCOCLK; /设定几个CLK的时钟源void main(void) WDTCTL = WDTPW | WDTHOLD;/ 停止看门狗 initClock(); /配置系统时钟 initLcdSeg(); /初始化段式液晶 initAdc(); /初始化ADC volatile unsigned int value = 0;/设置判断变量 while(1) /进入程序主循环 ADC12CTL0 |=
9、 ADC12SC;/开始采样转换 value = ADC12MEM0;/把结果赋给变量 LCDSEG_DisplayNumber(value,0); /显示六位数,从111111-999999 _delay_cycles(MCLK_FREQ/2);/延时500ms 2、设计性实验:AD 转换结束会产生中断,编写AD 中断服务程序。利用信号发生器输出信号(例如正弦波、三角波信号)作为AD 转换的输入,根据输入电压的大小控制LED 灯的亮灭(例如随着输入电压值的增大,LED1 到LED5 按顺序点亮;随着输入电压值减小,LED 灯按顺序熄灭),LED 和单片机IO 口连接如下图所示。#includ
10、e int main(void)WDTCTL = WDTPW +WDTHOLD;P4DIR|=BIT5+BIT6+BIT7;P5DIR|=BIT7;P8DIR|=BIT0;ADC12CTL0=ADC12MSC+ADC12ON+ADC12SHT1_8;ADC12CTL1=ADC12CONSEQ1+ADC12SHP;ADC12MCTL0=ADC12INCH_7;ADC12CTL0|=ADC12ENC;ADC12IE|=BIT0;ADC12CTL0|=ADC12SC;_EINT();#pragma vector=ADC12_VECTOR_interrupt void ADC12ISR(void)if
11、(ADC12MEM0=3413)P4OUT|=BIT5+BIT6+BIT7;P5OUT|=BIT7;P8OUT|=BIT0;if(ADC12MEM0=2730)P4OUT&=BIT5;P4OUT|=BIT7+BIT6;P5OUT|=BIT7;P8OUT|=BIT0;if(ADC12MEM0=2048)P4OUT&=(BIT6+BIT5);P4OUT|=BIT7;P5OUT|=BIT7;P8OUT|=BIT0;if(ADC12MEM0=1365)P4OUT&=(BIT5+BIT6+BIT7);P5OUT|=BIT7;P8OUT|=BIT0;if(ADC12MEM0=683)P4OUT&=(BIT
12、5+BIT6+BIT7);P5OUT&=BIT7;P8OUT|=BIT0;if(ADC12MEM00)P4OUT&=(BIT5+BIT6+BIT7);P5OUT&=BIT7;P8OUT&=BIT0;实验四 Zigbee无线通信及RS232串口通信实验 1、验证性实验利用两个Zigbee模块通信,一个模块作发射,一个作接收。发射模块所在实验箱按下按键控制接收模块所在实验箱上LED1的亮灭,从而实现无线点灯的功能。#include typedef unsigned char uint8; / 无符号8位整型变量typedef signed char int8; / 有符号8位整型变量typedef
13、 unsigned short uint16; /无符号16位整型变量typedef signed short int16; /有符号16位整型变量typedef unsigned long uint32; / 无符号32位整型变量typedef signed long int32; / 有符号32位整型变量typedef float fp32; / 单精度浮点数(32位长度)typedef double fp64; /双精度浮点数(64位长度)#define TRUE 1#define FALSE 0#define NULL 0/-CC2520引脚定义-#define RESET_ON()
14、P4OUT |= BIT1#define RESET_OFF() P4OUT &=BIT1#define SCLK_ON() P2OUT |= BIT4#define SCLK_OFF() P2OUT &=BIT4#define MOSI_ON() P2OUT |= BIT5#define MOSI_OFF() P2OUT &=BIT5#define CSN_ON() P3OUT |= BIT5#define CSN_OFF() P3OUT &=BIT5#define VREG_EN_ON() P4OUT |= BIT4#define VREG_EN_OFF() P4OUT &=BIT4#de
15、fine MISO_IN (P2IN&BIT6) /P2.6/#define GPIO4_IN (P2IN&0x40)/#define GPIO5_IN (P2IN&0x20)#define GPIO0_IN (P4IN&BIT0) /P4.0#define GPIO1_IN (P4IN&BIT2) /P4.2/-LED-#define LED1_0 P8OUT &=BIT0 /输出0#define LED1_1 P8OUT |= BIT0 /输出1#define LED1_10 P8OUT = BIT0 /输出1/0#define LED2_0 P5OUT &=BIT7 /输出0#defin
16、e LED2_1 P5OUT |= BIT7 /输出1#define LED2_10 P5OUT = BIT7 /输出1/0/-BELL-#define BELL_0 P6OUT &=BIT3 /输出0#define BELL_1 P6OUT |= BIT3 /输出1/-射频芯片相关定义-#define REG_READ (0x80)#define REG_WRITE (0xC0)#define MEM_READ (0x10)#define MEM_WRITE (0x20)#define RXFIFO_READ (0x30)#define TXFIFO_WRITE (0x3A)/- CC252
17、0 命令字定义-#define CMD_SNOP (0x00)#define CMD_IBUFLD (0x02)#define CMD_SIBUFEX (0x03)#define CMD_SSAMPLECCA (0x04)#define CMD_SRES (0x09)#define CMD_SXOSCON (0x40)#define CMD_SRXON (0x42)#define CMD_STXON (0x43)#define CMD_SRFOFF (0x45)#define CMD_SFLUSHRX (0x47)#define CMD_SFLUSHTX (0x48)/- CC2520 配置寄
18、存器-#define FRMFILT0 (0x00)#define FRMFILT1 (0x01)#define SRCMATCH (0x02)#define SRCSHORTEN0 (0x04)#define SRCSHORTEN1 (0x05)#define SRCSHORTEN2 (0x06)#define SRCEXTEN0 (0x08)#define SRCEXTEN1 (0x09)#define SRCEXTEN2 (0x0A)#define FRMCTRL0 (0x0C)#define FRMCTRL1 (0x0D)#define RXENABLE0 (0x0E)#define
19、RXENABLE1 (0x0F)#define EXCFLAG0 (0x10)#define EXCFLAG1 (0x11)#define EXCFLAG2 (0x12)#define EXCMASKA0 (0x14)#define EXCMASKA1 (0x15)#define EXCMASKA2 (0x16)#define EXCMASKB0 (0x18)#define EXCMASKB1 (0x19)#define EXCMASKB2 (0x1A)#define EXCBINDX0 (0x1C)#define EXCBINDX1 (0x1D)#define EXCBINDY0 (0x1E
20、)#define EXCBINDY1 (0x1F)#define GPIOCTRL0 (0x20)#define GPIOCTRL1 (0x21)#define GPIOCTRL2 (0x22)#define GPIOCTRL3 (0x23)#define GPIOCTRL4 (0x24)#define GPIOCTRL5 (0x25)#define GPIOPOLARITY (0x26)#define GPIOCTRL (0x28)#define DPUCON (0x2A)#define DPUSTAT (0x2C)#define FREQCTRL (0x2E)#define FREQTUN
21、E (0x2F)#define TXPOWER (0x30)#define FSMSTAT0 (0x32)#define FSMSTAT1 (0x33)#define FIFOPCTRL (0x34)#define FSMCTRL (0x35)#define CCACTRL0 (0x36)#define CCACTRL1 (0x37)#define RSSI (0x38)#define RSSISTAT (0x39)#define RXFIRST (0x3C)#define RXFIFOCNT (0x3E)#define TXFIFOCNT (0x3F)/-PSDU相关定义-/FRAME_CO
22、NTROL_FIELD/FRAME_TYPE#define FRAME_TYPE_BEACCON 0x00#define FRAME_TYPE_DATA 0x01#define FRAME_TYPE_ACK 0x02#define FRAME_TYPE_MAC 0x03#define SECURITY_ENABLE 0x00#define FRAME_PENDING 0x00#define ACKNOWLEDGMENT_REQUEST 0x00#define PAN_ID_COMPRESSION 0x00#define DEST_ADDRESSING_MODE 0x03#define FRAM
23、E_VERSION 0x01#define SOURCE_ADDRESSING_MODE 0x03/#define SEQUENCE_NUMBER 0x02/- CC2520 RAM 地址-#define RAM_IEEEADR (0xEA)#define RAM_PANID (0xF2)#define RAM_SHORTADR (0xF4)/-函数原型-void CC2520_Init(void);uint8 CC2520_ReadReg(uint8 addr);void CC2520_WriteReg(uint8 addr, uint8 value);uint8 CC2520_ReadRA
24、M(uint8 addrH,uint8 addrL);void CC2520_WriteRAM(uint8 addrH,uint8 addrL, uint8 value);void CC2520_ReadRXFIFO(void);void CC2520_WriteTXFIFO(void);void CC2520_Command(uint8 cmd);void CC2520_SetRxMode(void);uint8 CC2520_RxPacket(void) ;void CC2520_TxPacket(void);void SPI_Init(void);uint8 SPI_Read(void)
25、;void SPI_Write(uint8 txdata);uint8 SPI_WriteRead(uint8 txdata);void IO_Init(void);void delay_ms(uint8 n);void delay_10us(uint8 n);#define CC2520_PSDU_Len 127uint8 CC2520_PSDU1+CC2520_PSDU_Len;uint8 CC2520_PSDU1+CC2520_PSDU_Len;uint8 CC2520_Source_PANID2 = 0xcc,0xcc;uint8 CC2520_Source_ShortAddr2 =
26、0xcc,0xcc;uint8 CC2520_Source_IEEEAddr8 = 0x12,0x34,0x56,0x7c,0xcc,0xcc,0xcc,0xcc;uint8 CC2520_Destination_PANID2 = 0xcc,0xcc;uint8 CC2520_Destination_ShortAddr2 = 0xcc,0xcc;uint8 CC2520_Destination_IEEEAddr8 = 0x12,0x34,0x56,0x7c,0xcc,0xcc,0xcc,0xcc;/*/系统初始化/*void InitSys() P1DIR |= BIT0; / ACLK se
27、t out to pins P1SEL |= BIT0; P3DIR |= BIT4; / SMCLK set out to pins P3SEL |= BIT4; while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= (XT1OFF); / XT1 On UCSCTL6 |= XCAP_3; / Internal load cap / Loop until XT1 fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1LFOFFG
28、 + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag / Initialize DCO to 2.45MHz _bis_SR_register(SCG0); / Disable the FLL control loop UCSCTL0 = 0x0000; / Set lowest possible DCOx, MODx UCSCTL1 = DCORSEL_5; / Set RSELx
29、 for DCO = 8 MHz UCSCTL2 = FLLD_1 + 243; / Set DCO Multiplier for 2.45MHz / (N + 1) * FLLRef = Fdco / (243 + 1) * 32768 = 8MHz / Set FLL Div = fDCOCLK/2 _bic_SR_register(SCG0); / Enable the FLL control loop / Worst-case settling time for the DCO when the DCO range bits have been / changed is n x 32
30、x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx / UG for optimization. / 32 x 32 x 2.45 MHz / 32,768 Hz = 76563 = MCLK cycles for DCO to settle _delay_cycles(250000); / Loop until XT1,XT2 & DCO fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); / Clear XT2,XT1,DC
31、O fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); /UCSCTL4 =SELM_DCOCLK+SELM_DCOCLK;/-SPI初始化函数-void SPI_Init(void)SCLK_OFF();CSN_ON();/-SPI单字节读取函数-uint8 SPI_Read(void)uint8 i,rxdata;rxdata = 0x00;for (i = 0;i 8;i+)rxdata = rxdata1;SCLK_ON();if (MISO_IN) rxdata |= 0x01;elserx
32、data &= 0x01;SCLK_OFF(); return rxdata;/-SPI单字节写入函数-void SPI_Write(uint8 txdata)uint8 i;for (i = 0;i 8;i+)if (txdata&0x80)MOSI_ON();elseMOSI_OFF();SCLK_ON();txdata = txdata1;SCLK_OFF();/-SPI单字节写入读取函数-uint8 SPI_WriteRead(uint8 txdata)uint8 i,rxdata;rxdata = 0x00;for (i = 0;i 8;i+)rxdata = rxdata1;if
33、(txdata&0x80)MOSI_ON();elseMOSI_OFF();SCLK_ON();if (MISO_IN)rxdata |= 0x01;elserxdata &= 0x01;SCLK_OFF();txdata = txdata1; return rxdata;/-CC2520寄存器读取函数-uint8 CC2520_ReadReg(uint8 addr)uint16 value;CSN_OFF();SPI_Write(addr|REG_READ);value = SPI_Read();CSN_ON();return value;/-CC2520寄存器写入函数-void CC252
34、0_WriteReg(uint8 addr, uint8 value)CSN_OFF();SPI_Write(addr|REG_WRITE);SPI_Write(value);CSN_ON();/-CC2520 RAM 读取函数-uint8 CC2520_ReadRAM(uint8 addrH,uint8 addrL)uint8 value;CSN_OFF();SPI_Write(addrH|MEM_READ);SPI_Write(addrL);value = SPI_Read();CSN_ON();return value;/-CC2520 RAM 写入函数-void CC2520_Writ
35、eRAM(uint8 addrH,uint8 addrL, uint8 value)CSN_OFF();SPI_Write(addrH|MEM_WRITE);SPI_Write(addrL);SPI_Write(value);CSN_ON();/-CC2520 RXFIFIO 读取函数-void CC2520_ReadRXFIFO(void)uint8 i;CSN_OFF();SPI_Write(RXFIFO_READ);CC2520_PSDU0 = SPI_Read();for(i=0;iCC2520_PSDU0;i+)CC2520_PSDU1+i = SPI_Read();CSN_ON()
36、;CC2520_Command(CMD_SFLUSHRX);/-CC2520 TXFIFIO 写入函数-void CC2520_WriteTXFIFO(void)uint8 i;CC2520_Command(CMD_SFLUSHTX);CSN_OFF();SPI_Write(TXFIFO_WRITE);SPI_Write(CC2520_PSDU0);for(i=0;iCC2520_PSDU0;i+)SPI_Write(CC2520_PSDU1+i);CSN_ON();/-CC2520命令函数-void CC2520_Command(uint8 cmd)CSN_OFF();SPI_Write(c
37、md);CSN_ON();/-CC2520 设置接收函数-void CC2520_SetRxMode(void)CC2520_Command(CMD_SRFOFF);CC2520_Command(CMD_SRXON);/-CC2520 判断接收函数-uint8 CC2520_RxPacket(void) if(!GPIO0_IN)&(GPIO1_IN)return TRUE;return FALSE;/-CC2520 发送函数-void CC2520_TxPacket(void)CC2520_Command(CMD_SRFOFF);CC2520_Command(CMD_STXON);while(!GPIO0_IN);while(GPIO0_IN);/-led端口设置-void LED_IO_set(void) P8DIR |= BIT0; P5DIR |= BIT7;/-RF2520端口设置-void RF2520_IO_set(void) P2DIR |= BIT4+BIT5; P3DIR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微专题21+不等式+课件-2025届高考数学二轮复习
- 京东客服考试试卷及答案
- 2026五年级数学上册 小数除法的综合能力训练
- 2025-2026学年广州市小学一年级英语期末模拟考试试卷及答案
- 2026三年级数学下册 乘法计算比赛
- 辽宁地质考试题库及答案
- 夹江地理中考试题及答案
- 中学班主任班级奖惩制度
- 工程实验室奖惩制度
- 装饰公司奖惩制度模板
- 航运企业合规管理制度
- 2026年高考语文备考之非连续性文本阅读训练(人工智能、科技文化)
- 幼儿园伙食费管理制度
- 月结60天合同协议书
- 肉羊高效健康养殖与疫病防控技术培训
- 养老院食品安全培训
- -世界水日主题班会课件
- 全球核安全形势课件
- 《婴幼儿常见病识别与预防》高职早期教育专业全套教学课件
- 《智能制造基础与应用》课件全套 第1-8章 绪论、智能制造数字化基础- 智能制造应用
- 供电所所长安全演讲
评论
0/150
提交评论