完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include"msp430.h"
#define GPIO P1OUT #define CLK1 GPIO|=BIT5 #define CLK0 GPIO&=~BIT5 #define CS1 GPIO|=BIT2 #define CS0 GPIO&=~BIT2 #define MOSI1 GPIO|=BIT3 #define MOSI0 GPIO&=~BIT3 #define MISO1 GPIO|=BIT4 #define MISO0 GPIO&=~BIT4 #define MOSI_Out GPIO|=BIT3 #define MISO_In GPIO&=~BIT4 #define CLK_Out GPIO|=BIT5 #define CS_Out GPIO&=~BIT2 #define MISO (P1IN&BIT4) unsigned char shuzu[]={"0123465789"}; unsigned int Value,ConfigRegister; //定义读取AD转换数值和配置寄存器 int SPI_Read_OneByte(void) { int i; long int temp = 0; for(i=0;i<16;i++) { temp <<= 1; //读取MISO 8次输入的值,存入temp。之所以不放在“SCK = 0”语句之后的位置是因为: //读取最后1byte的最后一位(即LSB)之后,不能再左移了 CLK1; if(MISO) //读取最高位,保存至最末尾,通过左移位完成读整个字节 temp |= 0x0001; else temp &= ~0x0001; CLK0; //下降沿来了(SCK从1-->0),MISO上的数据将发生改变,稳定后读取存入temp } return temp; } } void SPI_Write_OneByte(int u8_writedata) { int i; for(i=0;i<16;i++) { if(u8_writedata & 0x8000) //判断最高位,总是发送最高位 MOSI1; //MOSI输出1,数据总线准备数据1 else MOSI0; //MOSI输出0,数据总线准备数据0 CLK1; //上升沿来了(SCK从0-->1),数据总线上的数据写入到器件 u8_writedata <<= 1; //左移抛弃已经输出的最高位 CLK0; //拉低SCK信号,初始化为0 } } int ads1118_Write(int value) { CS0; //CS片选拉低 SPI_Write_OneByte(value); //SPI写数据 CS1; //CS片选拉高 } int ads1118_Read() { int value; CS0; //CS片选拉低 value = SPI_Read_OneByte(); //SPI读数据 CS1; //CS片选拉高 return value; } void SPI_Init(void) { UCB1CTL1 |= UCSWRST; // **Put state machine in reset** UCB1CTL0 |= UCMST+UCSYNC+UCMSB; //+UCCKPH 3-pin, 8-bit SPI master // Clock polarity high, MSB UCB1CTL1 |= UCSSEL_2; // SMCLK UCB1BR0 = 200; // /2 UCB1BR1 = 1; // UCB1CTL1 &= ~UCSWRST; // **Initialize USCI state machine** __delay_cycles(100); // Wait for slave to initialize } void main() { long int value,k,a; WDTCTL = WDTPW+WDTHOLD; MOSI_Out; //MOSI MISO_In; //MISO CLK_Out; //CLK CS_Out; //CS SPI_Init(); LCMInit(); LCMDisplayString(3,1,"测量电压"); while(1) { ConfigRegister = ads1118_Write(0xc343); //配置寄存器 Config Register a=ads1118_Read(); a = (float)a*1.0/32768*4.096*10000; LCMWriteCommand(0x90); LCMWriteData(shuzu[a/100]); LCMWriteData(shuzu[a/100%10]); LCMWriteData(0x2e); LCMWriteData(shuzu[a%10]); // __delay_cycles(100); // Wait for slave to initialize } } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
3039个成员聚集在这个小组
加入小组2938 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3615 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2350 浏览 1 评论
4813 浏览 1 评论
2579 浏览 1 评论
1335浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3616浏览 2评论
2940浏览 1评论
1524浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 09:58 , Processed in 1.338581 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号