您好,欢迎来到九壹网。
搜索
您的当前位置:首页LCD液晶显示

LCD液晶显示

来源:九壹网
#include /* for EnableInterrupts macro */ #include \"derivative.h\" /* include peripheral declarations */

#define Senddata PTGD_PTGD2 #define sclk PTGD_PTGD1 #define rclk PTGD_PTGD0

#define LCDE PTDD_PTDD0 #define LCDRW PTBD_PTBD2 #define LCDRS PTBD_PTBD3

void delay (unsigned int a);

void LCD_writedata(unsigned char WDLCD);

void LCD_writecommand(unsigned char WCLCD); void LCD_init(void);

void displayone (unsigned char x, unsigned char y,unsigned char data); void displaystring(unsigned char x, unsigned char y,unsigned char *data); void shift595(unsigned char a);

void main(void) {

unsigned char title[]=\"lcd1602\" ; EnableInterrupts; /* enable interrupts */ /* include your code here */

PTGDD=0x07; PTBDD=0x0c; PTDDD=0x01;

LCD_init(); delay (100);

//displayone (0,0,'x'); for(;;) {

displaystring(0,0,title);

__RESET_WATCHDOG(); /* feeds the dog */ } /* loop forever */

/* please make sure that you never leave main */ }

void LCD_writedata(unsigned char WDLCD) {

LCDRS=1; LCDRW=0;

shift595(WDLCD); delay(30); LCDE=0; LCDE=1; LCDE=0; delay(30); }

void LCD_writecommand(unsigned char WCLCD) {

LCDRS=0; LCDRW=0;

shift595(WCLCD); delay(30); LCDE=0; LCDE=1; LCDE=0; delay(30); }

void LCD_init(void) {

shift595(0x00);

LCD_writecommand(0x38); delay(30);

LCD_writecommand(0x38);

delay(30);

LCD_writecommand(0x08); delay(30);

LCD_writecommand(0x08); delay(30);

LCD_writecommand(0x06); delay(30);

LCD_writecommand(0x0c); delay(30); }

void displayone (unsigned char x, unsigned char y,unsigned char data) { x&=0x0f; y&=0x01; if(y) x|=0x40; x|=0x80;

LCD_writecommand(x); LCD_writedata(data);

}

void displaystring(unsigned char x, unsigned char y,unsigned char *data) { unsigned char stringlength; x&=0x0f; y&=0x01;

stringlength=0;

while(data[stringlength]!='\\0') {

if(x<0x0f)

displayone( x,y,data[stringlength]); else { x=x-0x10; y=y+1;

displayone( x,y,data[stringlength]); }

stringlength++; x++; } }

void delay (unsigned int a) {

unsigned int i; unsigned char j; for(i=0;ifor(j=0;j<200;j++); __RESET_WATCHDOG(); } }

void shift595(unsigned char a) { unsigned char j; for(j=0;j<8;j++) { if(a&0x80) Senddata=1;

else

Senddata=0; a=a<<1; sclk=0;

sclk=1; }

rclk=0; rclk=1; }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务