完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
之前使用P1.4到P1.7作为数据输出到LCD我已经成功但是通过改变引脚即P1.2到P1.5作为我的数据输出引脚到LCD,它就不起作用了。这是什么问题,谢谢,下面是我的代码。
#define CMD 0 #define DATA 1 #define LCD_OUT P1OUT #define LCD_DIR P1DIR #define D4 BIT4 #define D5 BIT5 #define D6 BIT6 #define D7 BIT7 #define RS BIT2 #define EN BIT3 // Delay function for producing delay in0.1 ms increments void delay(uint8_t t) { uint8_t i; for(i=t; i > 0; i--) __delay_cycles(100); } // Function to pulse EN pin after data iswritten void pulseEN(void) { LCD_OUT |= EN; delay(1); LCD_OUT = ~EN; delay(1); } //Function to write data/command to LCD void lcd_write(uint8_t value uint8_t mode) { if(mode == CMD) LCD_OUT = ~RS; // Set RS -> LOW forCommand mode else LCD_OUT |= RS; // Set RS -> HIGH forData mode LCD_OUT = ((LCD_OUT 0x0F) | (value 0xF0)); // Write high nibble first pulseEN(); delay(1); LCD_OUT = ((LCD_OUT 0x0F) | ((value<< 4) 0xF0)); // Write low nibble next pulseEN(); delay(1); } // Function to print a string on LCD void lcd_print(char *s) { while(*s) { lcd_write(*s DATA); s++; } } // Function to move cursor to desiredposition on LCD void lcd_setCursor(uint8_t row uint8_tcol) { const uint8_t row_offsets[] = { 0x000x40}; lcd_write(0x80 | (col + row_offsets[row])CMD); delay(1); } // Initialize LCD void lcd_init() { //P2SEL = ~(BIT6+BIT7); LCD_DIR |= (D4+D5+D6+D7+RS+EN); LCD_OUT = ~(D4+D5+D6+D7+RS+EN); delay(150); // Wait for power up ( 15ms ) lcd_write(0x33 CMD); // InitializationSequence 1 delay(50); // Wait ( 4.1 ms ) lcd_write(0x32 CMD); // InitializationSequence 2 delay(1); // Wait ( 100 us ) // All subsequent commands take 40 us toexecute except clear cursor return (1.64 ms) lcd_write(0x28 CMD); // 4 bit mode 2 line delay(1); lcd_write(0x0F CMD); // Display ON CursorON blink ON delay(1); lcd_write(0x01 CMD); // Clear screen delay(20); lcd_write(0x06 CMD); // Auto IncrementCursor delay(1); lcd_setCursor(00); // Goto Row 1 Column 1 } void main(void) { WDTCTL = WDTPW + WDTHOLD; // stop watchdog lcd_init(); lcd_setCursor(05); lcd_print("hello"); // lcd_setCursor(15); //lcd_print("lcd"); lcd_setCursor(00); while(1); } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNK210使用指南 -CanMV版 V1.0》第十一章 FPIOA管理器实验
733 浏览 0 评论
675 浏览 0 评论
713 浏览 0 评论
2185 浏览 1 评论
2319 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11448 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-12 11:25 , Processed in 0.570689 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号