qq_35109608 2016-05-26 02:35 采纳率: 50%
浏览 1247

430g2553与1602的四位传输

#include "msp430g2553.h"
#include
#define uint unsigned int
#define uchar unsigned char
#define delay_nm() _delay_cycles(10000);//延迟1s
uchar table[]={"hell0"};//输入你想要显示的字符
uchar data;
//void _delay_1us(void);
//void _delay_nus(uint n);
//void _delay_ms(void);
//void _delay_nms(uint n);
//uint busy_1602(void);
void write_com(uchar com);
void write_data(uchar dat);
void LCD_set_xy( uchar x, uint y );
void LCD_write_string(uchar X,uchar Y,uchar s);
void init();//初始化函数
//void LCD_display();
/*LCD数据
///P2.3e P2.4 RW P2.5RS
//p1.4---p1.7接数据位
void main()
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗

DCOCTL=0;
BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ;
BCSCTL2|=SELM_1;//MCLK选择DCOCLK
BCSCTL2|=0X00;//SMCLK选择DCOLCK
P1SEL&=0x00;
P2SEL&=0x00;
P1DIR|=0xff;//选择P1为输出端
P2DIR|=0xff;//P2为输出端
init();
delay_nm();
LCD_write_string(0,0,table);
delay_nm();
while(1);

}

void _delay_1us(void)
{
asm("nop");
}
void _delay_nus(uint n)
{
int i;
for(i=0;i<n;i++)
_delay_1us();
}

void _delay_ms(void)
{
int i;
for(i=0;i<1000;i++);
}
void _delay_nms(uint n)
{
int i;
for(i=0;i<n;i++)
_delay_ms();
}
uint busy_1602(void) //查询忙碌标志信号程序
{
uint busy;
P2OUT&= ~BIT3;
P2OUT&= ~BIT5;
P2OUT|= BIT4;
P2OUT|= BIT3;
busy=P1OUT&0x80;
delay_nm();
P2OUT&= ~BIT3;
return (busy);
}
/*LCD数据*///P2.3e P2.4 RW P2.5RS
void write_com(uchar com)
{
uchar high,low;
high=com&(0xf0);
low =(com<<4)&(0xf0);
//写入高4位
delay_nm();
P2OUT&= ~(BIT5+BIT4);//写指令的时候RS给低
P2OUT|= BIT3;

P1OUT&=~0x0f;
P1OUT=high;//写入高四位
delay_nm();
P2OUT&= ~BIT3;
delay_nm();
P1OUT|=BIT0;

// //写入低4位
P2OUT&= ~(BIT5+BIT4);
P2OUT|= BIT3;
P1OUT&=~0x0f;
P1OUT=low;//写入低四位
delay_nm();
P2OUT&= ~BIT3;
delay_nm();
}
/*LCD数据*///P2.3e P2.4 RW P2.5RS
void write_data(uchar dat)
{
uchar gao,di;
delay_nm();
gao=dat&(0xf0);
di =(dat<<4)&(0xf0);

P2OUT|=BIT5;//写数据的时候RS给高
P2OUT&= ~(BIT3+BIT4);
P2OUT|=BIT3;
P1OUT&=~0x0f;
P1OUT|=gao;//写入高四位
delay_nm();
P2OUT&=~BIT3;
delay_nm();

P2OUT|=BIT5;//写数据的时候RS给高
P2OUT&= ~(BIT3+BIT4);
delay_nm();
P2OUT|=BIT3;
P1OUT&=~0x0f;
P1OUT|=di;//写入第四位
delay_nm();
P2OUT&=~BIT3;
delay_nm();

}
void LCD_set_xy( uchar x, uint y )
{
unsigned char address;
if (y == 0) address = 0x80 + x;
else address = 0xc0 + x;
write_com( address);
}
/*****************************************
*
LCD在任意位置写字符串,列x=0~15,行y=0,1
*
*
**************************************/
void LCD_write_string(uchar X,uchar Y,uchar *s)
{
LCD_set_xy( X, Y ); //写地址
while (*s) //写显示字符
{
write_data( *s );
delay_nm();
s++;

}

}
//P2.3e P2.4 RW P2.5RS
void init()//初始化函数
{
P2OUT&= ~(BIT4+BIT5+BIT3);
P2OUT|=BIT3;
delay_nm();
write_com(0x28); //设置显示,点阵,数据接口等
delay_nm();
write_com(0x28);
delay_nm();
write_com(0x28);
delay_nm();
write_com(0x28);
delay_nm();
write_com(0x01); //数据指针、显示清零
delay_nm();
write_com(0x0f); //开显示,不显示光标,光标不闪烁
delay_nm();
write_com(0x06); //指针自动加一
delay_nm();
write_com(0x08); //从第一格开始显示
}
/*LCD指令*///P2.3e P2.4 RW P2.5RS
//p1.4----p1.7接LCD屏的高4位

void LCD_display()
{
int i;
for(i=0;i<5;i++)//X代表字符的个数
{
write_data(table[i]);
delay_nm();
}
}

  • 写回答

1条回答 默认 最新

  • 普通网友 2016-10-04 18:36
    关注

    #define delay_nm() _delay_cycles(10000);//延迟1s
    uchar table[]={"hell0"};//输入你想要显示的字符
    uchar data;
    //void _delay_1us(void);
    //void _delay_nus(uint n);
    //void _delay_ms(void);
    //void _delay_nms(uint n);
    //uint busy_1602(void);
    void write_com(uchar com);
    void write_data(uchar dat);
    void LCD_set_xy( uchar x, uint y );
    void LCD_write_string(uchar X,uchar Y,uchar s);
    void init();//初始化函数
    //void LCD_display();
    /*LCD数据///P2.3e P2.4 RW P2.5RS
    //p1.4---p1.7接数据位
    void main()
    {
    WDTCTL=WDTPW+WDTHOLD;//关看门狗
    DCOCTL=0;
    BCSCTL1=CALBC1_1MHZ;
    DCOCTL=CALDCO_1MHZ;
    BCSCTL2|=SELM_1;//MCLK选择DCOCLK
    BCSCTL2|=0X00;//SMCLK选择DCOLCK
    P1SEL&=0x00;
    P2SEL&=0x00;
    P1DIR|=0xff;//选择P1为输出端
    P2DIR|=0xff;//P2为输出端
    init();
    delay_nm();
    LCD_write_string(0,0,table);
    delay_nm();
    while(1);
    }
    void _delay_1us(void)
    {
    asm("nop");
    }
    void _delay_nus(uint n)
    {
    int i;
    for(i=0;i<n;i++)
    _delay_1us();
    }

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况