历史上的今天
返回首页

历史上的今天

今天是:2025年01月12日(星期日)

2021年01月12日 | MSP430单片机实践篇---数字型LCD-1602显示

2021-01-12 来源:eefocus

/**************************************************
*
* LCD1602显示
* cpu:AVRmega16
*
* 描述:4线数据宽度,操作Lcd1602
* 在LCD1602屏幕上第一行显示
* 第二行显示 13652037001
* 如果没有显示请按复位键,并多试几次
*
* 时间:2008年1月5日调试成功(出现问题主要是因为LCD第3脚V0的2K接地电阻没有接好)
*
* 硬件电路:MSP430F135核心实验板-I型
* 硬件连接:
*
* MSP430与LCD连接信息
* LCD1602,4位接口,即使用D4-D7数据口,D0-D3不接入MCU
* PIN1 --> 地
* PIN2 --> VCC(一定要接+5V)
* PIN3 --> 2K电阻-->地 (一定要接好,否则没有任何显示)
* PIN4 --> RS --> P5.0
* PIN5 --> R/W --> GND
* PIN6 --> EN --> P5.1
* PIN7 --> D0不接
* PIN8 --> D1不接
* PIN9 --> D2不接
* PIN10 --> D3不接
* PIN11 --> D4 --> P4.4
* PIN12 --> D5 --> P4.5
* PIN13 --> D6 --> P4.6
* PIN14 --> D7 --> P4.7
* PIN15 --> VCC(一定要接+5V,如果不要背光可以不接)
* PIN16 --> 地

* 调试器:MSP430FET全系列JTAG仿真器
* 调试软件: IAR Embedded Workbench Version: 3.41A 编译
**************************************************/

#include 
#include 

管脚定义
#define LCD_EN_PORT P5OUT //以下2个要设为同一个口
#define LCD_EN_DDR P5DIR
#define LCD_RS_PORT P5OUT //以下2个要设为同一个口
#define LCD_RS_DDR P5DIR
#define LCD_DATA_PORT P4OUT //以下3个要设为同一个口
#define LCD_DATA_DDR P4DIR //一定要用高4位
#define LCD_RS BIT0
#define LCD_EN BIT1
#define LCD_DATA BIT4|BIT5|BIT6|BIT7

预定义函数//
void LCD_init(void);
void LCD_en_write(void);
void LCD_write_command(unsigned char command);
void LCD_write_data(unsigned char data);
void LCD_set_xy (unsigned char x, unsigned char y);
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data);
void delay_nus(unsigned int n);
void delay_nms(unsigned int n);

void main()
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog

LCD_init();
LCD_write_string(1,0,"www.goodmcu.cn");
LCD_write_string(2,1,"13652037001");
delay_nms(50);
LCD_write_command(0x01); //清屏
delay_nms(50);
LCD_write_char(2,1,'1');
delay_nms(50);
LCD_write_char(3,1,'3');
delay_nms(50);
LCD_write_char(4,1,'6');
delay_nms(50);
LCD_write_char(5,1,'5');
delay_nms(50);
LCD_write_char(6,1,'2');
delay_nms(50);
LCD_write_char(7,1,'0');
delay_nms(50);
LCD_write_char(8,1,'3');
delay_nms(50);
LCD_write_char(9,1,'7');
delay_nms(50);
LCD_write_char(10,1,'0');
delay_nms(50);
LCD_write_char(11,1,'0');
delay_nms(50);
LCD_write_char(12,1,'1');
}
//LCD液晶操作函数///
//LCD1602液晶初始化
void LCD_init(void)
{
LCD_DATA_DDR|=LCD_DATA; //数据口方向为输出
LCD_EN_DDR|=LCD_EN; //设置EN方向为输出
LCD_RS_DDR|=LCD_RS; //设置RS方向为输出

LCD_write_command(0x28); //4位数据接口
delay_nus(40);
LCD_write_command(0x28); //4位显示
LCD_write_command(0x0c); //显示开
LCD_write_command(0x01); //清屏
delay_nms(2);
}
//液晶使能
void LCD_en_write(void)
{
LCD_EN_PORT|=LCD_EN;
delay_nus(1);
LCD_EN_PORT&=~LCD_EN;
}
//写指令
void LCD_write_command(unsigned char command)
{
delay_nus(16);
LCD_RS_PORT&=~LCD_RS; //RS=0
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=command&0xf0; //写高四位
LCD_en_write();
command=command<<4; //低四位移到高四位
LCD_DATA_PORT&=0x0f; //清高四位
LCD_DATA_PORT|=command&0xf0; //写低四位
LCD_en_write();
}
//写数据
void LCD_write_data(unsigned char data)
{
delay_nus(16);
LCD_RS_PORT|=LCD_RS; //RS=1
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=data&0xf0; //写高四位
LCD_en_write();
data=data<<4; //低四位移到高四位
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=data&0xf0; //写低四位
LCD_en_write();
}
//写地址函数
void LCD_set_xy( unsigned char x, unsigned char 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 char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y ); //写地址
while (*s) // 写显示字符
{
LCD_write_data( *s );
s ++;
}
}
//LCD在任意位置写字符
//列x=0~15,行y=0,1
void LCD_write_char(unsigned char X,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;idelay_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;ide


推荐阅读

史海拾趣

Armel Electronics Inc公司的发展小趣事

随着公司产品的不断升级和市场的逐步扩大,Armel Electronics Inc公司开始寻求更广阔的市场空间。公司积极与国内外知名企业展开合作,共同开发新产品,开拓新市场。通过国际合作,Armel不仅提升了自身的技术水平,还进一步扩大了市场份额,实现了公司的快速发展。

启英泰伦(Chiplntelli)公司的发展小趣事

启英泰伦(Chiplntelli)公司成立于2015年,专注于人工智能语音芯片及配套应用解决方案的研发。在公司创立初期,团队面临了众多技术挑战和市场竞争。然而,他们凭借对技术的深刻理解和不懈追求,成功推出了第一代深度神经网络语音AI芯片CI1006,这款芯片在行业内被认定为首创。这一重要里程碑为启英泰伦的发展奠定了坚实的基础,也标志着公司在人工智能语音芯片领域的正式起步。

Falco Electronics公司的发展小趣事

Falco Electronics非常重视企业文化建设。公司倡导“以人为本”的管理理念,注重员工的成长和发展。公司为员工提供了良好的工作环境和福利待遇,还定期开展各种培训活动,帮助员工提升技能水平。这种良好的企业文化吸引了大量优秀人才的加入,也为公司的持续发展提供了有力保障。

DZUS公司的发展小趣事

为了提高产品质量和客户满意度,DZUS公司决定建立质量管理体系。公司引进了先进的生产设备和检测设备,并制定了严格的生产流程和检验标准。此外,公司还加强了员工培训和技能提升工作,确保每一个员工都能熟练掌握操作技能和产品质量要求。这些措施的实施使DZUS公司的产品质量得到了显著提升,并赢得了客户的广泛赞誉。

East Texas Integrated Circuits公司的发展小趣事

随着市场的不断扩大,ETIC意识到必须不断提升自身的研发实力才能保持竞争优势。因此,公司加大了对研发的投入,引进了一批高端人才和先进的研发设备。同时,ETIC还积极与国内外高校和研究机构开展合作,共同开展前沿技术的研究和开发。这些努力使ETIC在集成电路领域的技术实力得到了显著提升。

DACHANG公司的发展小趣事

DACHANG公司深知创新是企业发展的根本动力。因此,公司始终将创新作为自己的核心竞争力,不断推出具有创新性的产品和解决方案。无论是产品设计、技术研发还是市场营销,DACHANG公司都积极引入新的理念和模式,为公司的发展注入了源源不断的活力。

问答坊 | AI 解惑

eboot中断向量问题

作者:[email=wogoyixikexie@gliet]wogoyixikexie@gliet[/email](转载请注明) 前几天这个帖子http://topic.csdn.net/u/20090605/12/abd72d4e-260c-4e72-966f-298ed343ed3c.html搞的一头雾水,现在看懂了一些, 特写篇博客   我一 ...…

查看全部问答>

intel嵌入式的发展

本帖最后由 paulhyde 于 2014-9-15 08:59 编辑 Intel的嵌入式业务   自1976年,推出第一款处理器8048以来到现在的凌动处理器,英特尔嵌入式业务逐渐根深叶茂。英特尔在嵌入式市场投入了30余年的精力,取得了非凡的成绩,并得到了应用领域用户和 ...…

查看全部问答>

source 书写问题

D:\\WINCE600\\PLATFORM\\LPC32XX\\src\\drivers\\GPIO\\sources : ERROR: Your sources file must define the SOURCES= macro. BUILD: [01:0000000021:ERRORE] D:\\WINCE600\\public\\common\\oak\\misc\\makefile.def(300) :  U1050: ...…

查看全部问答>

各种人机界面产品有免费试用了

广州市微嵌计算机科技有限公司是一家专心于工业自动化控制系统配套设备--人机界面产品,公司一直致力于触摸屏(人机界面)和组态软件核心技术的研发与攻克,专业开发、制造。目前我公司的主要产品有组态型人机界面,工业触摸屏,WINCE单板电脑,智 ...…

查看全部问答>

"==="与''==""的用法异同

我是个新手 昨天看到verilog语言的时候 ===  和 ==  有点 没区分开 ===是严格意义上的等于 而 ==看上去 貌似是一个比较意义上的逻辑等于  不太清楚  希望有高手指点  谢谢 我工作之余在学习FPGA 基础 我想以后从事这方 ...…

查看全部问答>

io口的方向是什么意思?

本人初学430单片机请问一下P1OUT P1SEL P1DIR怎么区分呢?P1DIR=0XFF 是设置P1输出那P1OUT干什么用了?…

查看全部问答>

使用MSP430F1121中断需注意的问题

      MSP430F1121(下面简称F1121)是TI公司新近推出的一款廉价的20引脚低功耗16位Flash单片机。它所具备的多种中断功能使其应用灵活,并适用于各种不同的电子论坛应用领域。  不过,我们电子论坛在应用开发中发 ...…

查看全部问答>

一篇好文章(TI LM3S)

和STM32相比,LM3S确实有不少特点,集成MAC+PHY的以太网控制器,带SDRAM的EBI外部总线,这些对于同类芯片来说,已经是很好很强大了。 当然它的发光点还不仅仅是这两处: 单周期FLASH,最高达100M的主频,内置固件函数库,多种方式bootloader,IO位 ...…

查看全部问答>