ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:21.60KB ,
资源ID:10390074      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10390074.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(整理lcd1602.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

整理lcd1602.docx

1、整理lcd1602MSP430G2553实现LCD1602的字符显示,而且是半字节的,用的是P2口的高四位。/* LCD1602显示之高四位相连的方法* 描述:4线数据宽度,操作Lcd1602* 在LCD1602屏幕上第一行显示Hello!LCD1602* 第二行显示MSP430G2553* 硬件电路:MSP430g2553* 硬件连接:* MSP430与LCD连接信息* LCD1602,4位接口,即使用D4-D7数据口,D0-D3不接入MCU* PIN1 - 地* PIN2 - VCC(一定要接+5V)* PIN3 -仿真时悬空,实际电路 2K电阻-地 (一定要接好,否则没有任何显示)* P

2、IN4 - RS - P1.6* PIN5 - R/W - GND* PIN6 - EN - P1.7* PIN7 - D0不接* PIN8 - D1不接* PIN9 - D2不接* PIN10 - D3不接* PIN11 - D4 - P2.4* PIN12 - D5 - P2.5* PIN13 - D6 - P2.6* PIN14 - D7 - P2.7* PIN15 - VCC* PIN16 - 地* 调试器:MSP430FET全系列JTAG仿真器* 调试软件: CCS5.1.1 编译*/#include #include #include /* 端口定义 */#define LCD_E

3、N_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

4、);void LCD_init_first(void);void LCD_en_write1(void); /上升沿使能void LCD_en_write2(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

5、);void LCD_write_char(unsigned char X,unsigned char Y, unsigned char data);void delay_1ms(void);void delay_nus(unsigned int n);void delay_nms(unsigned int n);unsigned char LCDBuf1=Hello!LCD1602; /第一行要显示的内容unsigned char LCDBuf2=MSP430G2553; /第二行要显示的内容/* 主函数 */void main()WDTCTL = WDTPW + WDTHOLD; / 关闭

6、看门狗LCD_init_first();LCD_init();delay_nms(100);LCD_write_string(0,0,LCDBuf1);delay_nms(10);LCD_write_string(0,1,LCDBuf2);/* 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_

7、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)

8、; 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_wr

9、ite_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 cha

10、r command) 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=command4; /低四位移到高四位 LCD_en_write1(); LCD_DATA_PORT&=0x0f; /清高四位 LCD_DATA_PORT|=command&0xf0; /写低四位 LCD_en_write2();/

11、* * * 写数据函数 * */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=data4; /低四位移到高四位 LCD_en_write1(); LCD_DATA_PORT&=0X0f; /清高四位 LCD_DATA_P

12、ORT|=data&0xf0; /写低四位 LCD_en_write2();/* * * 写地址函数 * */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=015,行y=0,1 * */void LCD_write_string(unsigned char X,unsigned ch

13、ar Y,unsigned char *s) LCD_set_xy( X, Y ); /写地址 while (*s) /写显示字符 LCD_write_data( *s ); s+; /* * * LCD在任意位置写字符,列x=015,行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);/*

14、* * N us延时函数 * */void delay_nus(unsigned int n) unsigned int i; for (i=0;in;i+) delay_1us();/* * * 1ms延时函数 * */void delay_1ms(void) unsigned int i; for (i=0;i1140;i+);/* * * N ms延时函数 * */void delay_nms(unsigned int n) unsigned int i=0; for (i=0;i= 23) & (minute = 59) & (second = 59) hour = 0; if(min

15、ute = 59) & (second = 59) minute = 0; hour+; if(second = 59) second = 0; minute+; Initialize_LCD(); LCD_ShowString(0, 0, Temperature:); LCD_ShowString(8, 1, . C); LCD_ShowChar(6, 1, Temp2 + 0); LCD_ShowChar(7, 1, Temp1 + 0); LCD_ShowChar(9, 1, Temp0 + 0); else second1 = second / 10; second0 = second

16、 % 10; minute1 = minute / 10; minute0 = minute % 10; hour1 = hour / 10; hour0 = hour % 10; Initialize_LCD(); LCD_ShowString(0, 0, Time :); LCD_ShowString(4, 1, : :); LCD_ShowChar(2, 1, hour1 + 0); LCD_ShowChar(3, 1, hour0 + 0); LCD_ShowChar(5, 1, minute1 + 0); LCD_ShowChar(6, 1, minute0 + 0); LCD_Sh

17、owChar(8, 1, second1 + 0); LCD_ShowChar(9, 1, second0 + 0); break; MSP430G2553 一个数码管实现按键加1功能 #includeunsigned int i=0,j;unsigned char seg=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;void main(void) WDTCTL = WDTPW + WDTHOLD; / 关闭看门狗 P2DIR |= 0xff; P2SEL&=(0xC0); P1DIR &= BIT3; P1REN |= BIT3; P1

18、IE |= BIT3; / 设置P1.3 可以中断 P1IES = BIT3; / 设置P1.3 为下降沿中断 _EINT(); _BIS_SR(LPM0_bits + GIE); / 进入低功耗睡眠,打开总中断开关unsigned char p1keyj(void) / 判键子程序unsigned char x; x=(P1IN&0X08); / P1.3 接有按键 return(x); / 有按键返回非全 0#pragma vector=PORT1_VECTOR /中断服务程序:_interrupt void p1int(void)if(p1keyj() P2OUT=segi+;for(j=8000;j0;j-) if(i9)i=0;单通道AD转换并通过1602显示的程序/*/#include #include #include /*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1