#include

#include

#include

#define uint unsigned int

#define LCD_EN_PORT P1OUT    //以下2个要设为同一个口

#define LCD_EN_DDR P1DIR

#define LCD_RS_PORT P1OUT    //以下2个要设为同一个口

#define LCD_RS_DDR P1DIR

#define LCD_DATA_PORT P2OUT  //以下3个要设为同一个口

#define LCD_DATA_DDR P2DIR   //一定要用高4位

#define LCD_RS BIT6

#define LCD_EN BIT7

#define LCD_DATA    BIT7|BIT6|BIT5|BIT4 //4位数据线连接模式

void LCD_init(void);

void LCD_init_first(void);

void LCD_en_write1(void);  //上升沿使能

void LCD_en_write2(void);  //下降沿使能

void LCD_write_command(unsigned charcommand);

void LCD_write_data(unsigned char data);

void LCD_set_xy (unsigned char x, unsignedchar y);

void LCD_write_string(unsigned charX,unsigned char Y, unsigned char s);

void LCD_write_char(unsigned charX,unsigned char Y, unsigned char data);

void delay_1ms(void);

void delay_nus(unsigned int n);

void delay_nms(unsigned int n);

unsigned char rev;

void putchar(unsigned char c)    //发送字符函数

{

while (!(IFG2&UCA0TXIFG));  // USCI_A0 TX buffer ready? 等待TX buffer为空

UCA0TXBUF = c;      // TX ->RXed character  发送字符c

}

void putstr(char *s)  //发送字符串函数

{

IE2 &= ~UCA0RXIE;  //发送时先关闭接收中断,不接收

while((*s)!='\0')  //如果没有发完,就继续循环发送

{

putchar(*s);

putchar('\n');  //发送换行符

s++;

}

IE2 |= UCA0RXIE;    //发送完了打开接收中断

}

void Init_USTAR(void)

{

BCSCTL1 =CALBC1_1MHZ;   // Set DCO为1MHz

DCOCTL =CALDCO_1MHZ;

P1SEL = BIT1 + BIT2;    // P1.1 =RXD, P1.2=TXD

P1SEL2 = BIT1 + BIT2;   //第二外围模式选择

UCA0CTL1 |= UCSSEL_2;   // SMCLK 其他默认:软件复位使能 USCI逻辑保持在复位状态,用于设置串口

UCA0BR0 = 8;            // SMCLK1MHz 115200    8

UCA0BR1 = 0;            // 1MHz115200

UCA0MCTL = UCBRS2 + UCBRS0;

UCA0CTL1 &= ~UCSWRST;

IE2|= UCA0RXIE;            //  接收中断使能

}

void main()//主函数

{

WDTCTL = WDTPW + WDTHOLD;     // 关闭看门狗

LCD_init_first();

LCD_init();

Init_USTAR();

_BIS_SR(LPM3_bits+GIE); // Enter LPM0, interrupts enabled

}

// LCD液晶操作函数

void LCD_init_first(void)     //LCD1602液晶初始化函数(热启动)

{

delay_nms(500);

LCD_DATA_DDR|=LCD_DATA;   //数据口方向为输出

LCD_EN_DDR|=LCD_EN;       //设置EN方向为输出

LCD_RS_DDR|=LCD_RS;       //设置RS方向为输出

delay_nms(50);

LCD_write_command(0x30);

delay_nms(50);

LCD_write_command(0x30);

delay_nms(5);

LCD_write_command(0x30);

delay_nms(500);

}

//LCD1602液晶初始化函数

void LCD_init(void)

{

delay_nms(500);

LCD_DATA_DDR|=LCD_DATA;   //数据口方向为输出

LCD_EN_DDR|=LCD_EN;       //设置EN方向为输出

LCD_RS_DDR|=LCD_RS;       //设置RS方向为输出

delay_nms(500);

LCD_write_command(0x28);  //4位数据接口

delay_nms(50);

LCD_write_command(0x28);  //4位数据接口

delay_nms(50);

LCD_write_command(0x28);  //4位数据接口

delay_nms(50);

LCD_en_write2();

delay_nms(50);

LCD_write_command(0x28); //4位数据接口

delay_nms(500);

LCD_write_command(0x01); //清屏

LCD_write_command(0x0c); //显示开,关光标,不闪烁

LCD_write_command(0x06); //设定输入方式,增量不移位

delay_nms(50);

}

//液晶使能上升沿

void LCD_en_write1(void)

{

LCD_EN_PORT&=~LCD_EN;

delay_nus(10);

LCD_EN_PORT|=LCD_EN;

}

//液晶使能下降沿

void LCD_en_write2(void)

{

LCD_EN_PORT|=LCD_EN;

delay_nus(10);

LCD_EN_PORT&=~LCD_EN;

}

//写指令函数

void LCD_write_command(unsigned charcommand)

{

delay_nus(16);

P2SEL=0x00;

LCD_RS_PORT&=~LCD_RS; //RS=0

LCD_en_write1();

LCD_DATA_PORT&=0X0f; //清高四位

LCD_DATA_PORT|=command&0xf0; //写高四位

delay_nus(16);

LCD_en_write2();

command=command<<4; //低四位移到高四位

LCD_en_write1();

LCD_DATA_PORT&=0x0f; //清高四位

LCD_DATA_PORT|=command&0xf0; //写低四位

LCD_en_write2();

}

//写数据函数

void LCD_write_data(unsigned char data)

{

delay_nus(16);

P2SEL=0x00;

LCD_RS_PORT|=LCD_RS;      //RS=1

LCD_en_write1();          //E上升沿

LCD_DATA_PORT&=0X0f;      //清高四位

LCD_DATA_PORT|=data&0xf0; //写高四位

delay_nus(16);

LCD_en_write2();

data=data<<4;             //低四位移到高四位

LCD_en_write1();

LCD_DATA_PORT&=0X0f;      //清高四位

LCD_DATA_PORT|=data&0xf0; //写低四位

LCD_en_write2();

}

//写地址函数

void LCD_set_xy( unsigned char x, unsignedchar y )

{

unsigned char address;

if (y == 0) address = 0x80 + x;

else address = 0xc0 + x;

LCD_write_command( address);

}

//LCD在任意位置写字符串,列x=0~15,行y=0,1

void LCD_write_string(unsigned charX,unsigned char Y,unsigned char s)

{

LCD_set_xy( X, Y ); //写地址

LCD_write_data( s );

}

//LCD在任意位置写字符,列x=0~15,行y=0,1

void LCD_write_char(unsigned charX,unsigned char Y,unsigned char data)

{

LCD_set_xy( X, Y ); //写地址

LCD_write_data( data);

}

//1us延时函数

void delay_1us(void)

{

asm("nop");

}

//N us延时函数

void delay_nus(unsigned int n)

{

unsigned int i;

for(i=0;i

delay_1us();

}

//1ms延时函数

void delay_1ms(void)

{

unsigned int i;

for (i=0;i<1140;i++);

}

//N ms延时函数

void delay_nms(unsigned int n)

{

unsigned int i=0;

for (i=0;i

delay_1ms();

}

#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void)

{

while (!(IFG2&UCA0TXIFG));    // USCI_A0 TX buffer ready? 等待TX buffer为空

UCA0TXBUF = UCA0RXBUF;         //TX -> RXed character  发送接收到是数据

rev=UCA0RXBUF;

putchar(rev);

LCD_write_string(0,0,rev);

delay_nms(10);

}

msp430g2553串口接受数据_msp430g2553的串口发送程序相关推荐

  1. msp430g2553串口接受数据_MSP430G2553串口通讯 发送接收

    数据发送代码: void UartPutchar(unsigned char c) { while(!(IFG2 & UCA0TXIFG));  //待发送为空 UCA0TXBUF=c; IF ...

  2. msp430g2553串口接受数据_MSP430G2553串口通信

    MSP430的不同型号,其串行通讯工作模式是一样的.以MSP430G2553为例进行说明.MSP430G2553是20个引脚的16位单片机.具有内置的16位定时器.16k的FLASH和512B的RAM ...

  3. msp430g2553串口接受数据_msp430g2553串口通信教程

    msp430g2553串口通信教程 MSP430g2553 串口通信MSP430 的不同型号,其串行通讯工作模式是一样的.以MSP430G2553 为例进行说明. MSP430G2553 是 20 个 ...

  4. msp430g2553串口接受数据_详细解读:MSP430G2553单片机串口通信

    MSP430的不同型号,其串行通讯工作模式是一样的.以MSP430G2553为例进行说明.MSP430G2553是20个引脚的16位单片机.具有内置的16位定时器.16k的FLASH和512B的RAM ...

  5. arduino串口接收数据包_Arduino 串口接收转发十六进制数据,软串口收不到数据

    我是Arduino初学者,今日尝试用Arduino nano 收串口发来16进制数据,再由软串口转发给下级设备,下级设备返回16进制数据.首先简单测试代码如下: #include SoftwareSe ...

  6. msp430g2553串口接受数据_使用UART与PC通信实现msp430g2553单片机超声波测距示例

    #include long current_time;//最近一次测得时间 /*MyPro*/ #define LED_1 BIT0 #define SW_2 BIT3 #define TA1_1 B ...

  7. usb键码转linux键值,CH554串口接收数据转USB键值程序 CH559模拟USB复合设备,键鼠,支持类命令...

    /********************************** (C) COPYRIGHT ******************************* * File Name        ...

  8. c语言从串口获取数据,如何通过串口来读写数据,请教达人

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 如何通过终端读取并显示串口连接的某硬件的数据 通过一程序来代替hexdump  从而进行输入输出 用C语言实现 下面一程序为i/o输入输出,请教达人,怎样 ...

  9. stm32 串口通信数据移位寄存器_STM32串口接RS485丢码问题已解决*_*

    static void Rs4851Send(unsigned char *p,unsigned char length) { ///TIM_SetCounter(TIM(RS4851_TIM_NO) ...

最新文章

  1. Java 如何实现二维码?
  2. 捡垃圾、跳大绳、种花、写字,波士顿动力机器狗迎来重大升级
  3. python简单小游戏实现_python基础--小游戏简单实现
  4. QT实现minheap(简单图形界面掌握)
  5. 命令行中创建和打开模Android拟器
  6. ElasticSearch-7.10版本最新万字长文教程【距离搞懂ELK核心你只差这一片文章】
  7. 球球大作战为什么显示服务器神游,球球大作战不能玩怎么解决_球球大作战不能玩解决方案详细分析_好特教程...
  8. UVA - 10118 Free Candies 记忆化搜索经典
  9. 盘点那些让程序员目瞪口呆的Bug都有什么?
  10. 推荐系统国内外团队介绍
  11. 【Restful】你还不懂Restful API规范吗?
  12. python3简单代码_python3实现简单汉诺塔的代码教程
  13. 安装ps时无法验证订阅状态_关于宝马B38/B48发动机无法启动的技术通报
  14. 软件开发者优质资源网站
  15. python selenium爬虫工具
  16. Android开发之so文件使用方法详解
  17. 结合运动流的时间先验在微创手术视频中的器械分割
  18. 北京剩女80万!全国十大单身男女盛产地都在哪?
  19. 64匹马,8赛道,找出跑得最快的4匹马,至少比赛9场
  20. Android指纹解锁

热门文章

  1. python中的numpy函数算相关系数_扩展库numpy的函数corrcoef()用来计算相关系数矩阵。...
  2. word转html java pect,THE PROPECT OF COMPUTERISATION IN THE BANKING 在银行计算机化的前景.doc...
  3. SSM+ckplayer.js实现web项目网页看视频
  4. 大数据工程师值得一考的4个Hadoop认证
  5. 【JavaScript】什么是JavaScript?
  6. 10.深度学习之经典网络-1
  7. 苍穹影视V20七彩视界免sq源码 kyuan源码
  8. mapbox,使用maptalks绘制3D建筑图形
  9. 网页上简体繁体汉字切换
  10. 我tcp可是铁齿金不换,诚实可靠小郎君——谈谈可靠数据传输服务