求一段msp430控制LCD程序

求一段msp430控制LCD程序,第1张

/*------------------------------------------------------------------------------*/

//Drive:MSP430F413

//File: LCD1602_8.H

//Date: 08-7-29

//Time: 16:09

//Note: LCD1602 Mini Driver.

//QQ:269829973

//Mail:wty014198@163.com

/*------------------------------------------------------------------------------*/

#ifndef __LCD1602_8_H__

#define __LCD1602_8_H__

/*------------------------------------------------------------------------------*/

//LCD接口定义

//sfr io = 0x80 //P0-0x80,P1-0x90,P2-0xA0,P3-0xB0

//sbit rs = P1^0 //LCD数据/命令选择端(H/L)

//sbit rw = P1^1 //核亮帆LCD读/写选择端(H/L)

//sbit ep = P1^2 //LCD使能控制

//sbit bz = io^7 //LCD忙标志位

#define RS BIT7

#define RW BIT6

#define EN BIT5

/*------------------------------------------------------------------------------*/

//函数声明

void lcd_busy(void) //测试LCD忙碌状态程序

void lcd_wcmd(unsigned char cmd) //写入指令到LCD程序

void lcd_wdat(unsigned char dat) //写入数据到LCD程序

void lcd_pos( unsigned char y,unsigned char x)//LCD数据指针位置程序

//void printc(unsigned char CHAR) /键配/显示字符

void prints(unsigned char y,unsigned x,unsigned char n,unsigned char *string) //显示字符串改雹

void lcd_init(void)//LCD初始化设定程序

void lcd_clear(void)

void cursor_move(unsigned char yy,unsigned char xx)

void delay_nms(unsigned int n)

{

unsigned int i=0,j=0

for (i=ni>0i--)

for (j=0j<800j++)//800

}

void delay_mini(unsigned char n)

{

while(n--)

{

_NOP()

}

}

/*------------------------------------------------------------------------------*/

//测试LCD忙碌状态

void lcd_busy(void)

{ unsigned char bz

do{

P5OUT&=~(EN)//ep = 0

P5OUT&=~(RS)//rs = 0 //指令

P5OUT|=RW//rw = 1 //读出

P6OUT=0xff//io = 0xff

P5OUT|=EN //ep = 1

delay_mini(10) //_nop_()//高电平读出 1us

P6DIR=0

bz=(P6IN&BIT7)>>7

// bz=0

P6DIR=0xff

}while(bz) //bz=1表示忙,bz=0表示空闲

P5OUT&=~(EN) //ep = 0

delay_mini(100)

}

/*------------------------------------------------------------------------------*/

//写入指令到LCD

void lcd_wcmd(unsigned char cmd)

{

lcd_busy()//检测忙

P5OUT&=~(RS) //rs = 0 //指令

P5OUT&=~(RW) //rw = 0 //写入

P5OUT|=EN//ep = 1

delay_mini(5)

P6OUT = cmd//指令

delay_mini(5)

P5OUT&=~(EN) //ep = 0 //下降沿有效

delay_mini(5)

}

/*------------------------------------------------------------------------------*/

//写入数据函数

void lcd_wdat(unsigned char Data)

{

lcd_busy() //检测忙

P5OUT|=RS //rs = 1 //数据

P5OUT&=~(RW)//rw = 0 //写入

P5OUT|=EN //ep = 1

delay_mini(5)

P6OUT = Data //数据

delay_mini(5)

P5OUT&=~(EN)//ep = 0 //下降沿有效

delay_mini(5)

}

/*------------------------------------------------------------------------------*/

//LCD数据指针位置程序

void lcd_point( unsigned char y,unsigned char x)

{

if(y)lcd_wcmd(x|0xc0)//y=1,第二行显示y=0,第一行显示 0<=x<16

else lcd_wcmd(x|0x80)//数据指针=80+地址码(00H~27H,40H~67H)

}

/*------------------------------------------------------------------------------*/

//显示字符

/*

void printc(unsigned char CHAR)

{

lcd_wdat(CHAR)

}

*/

void lcd_clear(void)

{

lcd_wcmd(0x01) //清除LCD的显示内容

}

/*------------------------------------------------------------------------------*/

//显示字符串

void prints(unsigned char y,unsigned x,unsigned char n,unsigned char *string)

{

unsigned char i

lcd_point(y,x)

//do{lcd_wdat(string[i])i++}while(string[i]!='\0')//生成代码比for循环大

for(i=0i<ni++)lcd_wdat(string[i]) //有时用for循环也好哈

}

/*------------------------------------------------------------------------------*/

//LCD初始化设定

void lcd_init()

{ P6DIR=0xff//设P6口为输入方式

P6SEL=0 //设P6口为一般I/O口

P5DIR|=BIT7

P5DIR|=BIT6

P5DIR|=BIT5

P5SEL=0

lcd_wcmd(0x38) //设置LCD为16X2显示,5X7点阵,八位数据接口

lcd_wcmd(0x06) //LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)

lcd_wcmd(0x0f) //LCD开显示及光标设置(光标不闪烁,不显示"_")

lcd_wcmd(0x01) //清除LCD的显示内容

}

void cursor_move(unsigned char yy,unsigned char xx)

{

lcd_point( yy,xx)

lcd_wcmd(0x0f)

}

#endif

单片机不亮念清一样,同样的程序肯定不一高岩定能用。

void test_busy(void)

void write_CMD(uchar cmd)

void write_data( uchar data )

这三个函数中延时的多少应该调整一下,敬前可能就好。

MSP430程序可以通过使用MSP430 Flasher工具来固化,它是一庆枣个用于将二进制文件烧录到MSP430 MCU的烧录器。它能够誉锋拆处理ELF和TI-TXT文件,它还具有验证功能,可以验证程序文件是否正确地烧录到MCU中。基答


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8253886.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存