资源描述
/LCD12864液晶屏测试程序(已通过)/IIIIII液晶屏型号:HJ12864M-1/#inelude#defineucharunsignedchar#defineuintunsignedint/8bit数据接入IO口#definePartPOPO接8位数据线控制数据端sbitLCD_RS=P2a5;定义12864液晶RS端,寄存器选择信号H:数据寄存器L:指令寄存器sbitLCD_RW=P2AS;/定义12864液晶RV端,读/写信号H:读L:写sbitLCD_EN=P2A7;定义12864液晶LCDE端,片选信号下降沿触发,锁存数据sbitLCD_PSB=P3A2;/定义12864液晶PSB端,H:并行L:串行sbitLCD_RST=P3A4;/定义12864液晶RST端,H:不复位L:复位ucharcodedis1=”床前明月光”;ucharcodedis2=”疑是地上霜;ucharcodedis4=”低头思故乡”;ucharcodedis3=”举头望明月”;毫秒延时函数voiddelay(uintxms)uinti,j;for(j=0;ivxms;j+)for(i=0;i110;i+);/LCD忙检测函数bitlcd_busy()bitresult;LCD_RS=0;LCD_RW=;LCD_EN=1;result=(bit)(Part&0x80);ikffii目匚卑檢用result氐头思故乡液晶写命令函数voidlcd_write_cmd(ucharcom)while(lcd_busy();LCD_RS0;选择指令寄存器LCDRW/=写LCD_EN0;Part=com;指令值赋给P0口delay(5);LCD_EN=;delay(5);LCD_EN0;液晶写一个字符数据函数voidlcd_write_dat(uchardate)while(lcd_busy();LCD_RS=;选择数据奇存器LCDRW=写LCD_EN0;P0=date;数据值赋给P0口delay(5);LCD_EN=;delay(5);LCD_EN0;液晶写一个字符串函数while(*str!=0*)/未结束lcd_write_dat(*str+);delay(5);液晶显示位置函数voidlcd_pos(ucharx,uchary)/从第X行的第Y位置开始显示ucharpos;if(x=1)第一行x=0x80;elseif(x=2)/第二行x=0x90;elseif(x=3)/第三行x=0x88;elseif(x=4)第四行x=0x98;pos=x+y-1;首地址为0X80lcd_write_cmd(pos);液晶初始化函数voidledJnit()LCD_PSB=;并行方式LCD_RST=;/不复位lcd_write_cmd(0x30);delay(5);lcd_write_cmd(0x0c);开显示,不显示光标delay(5);delay(5);Icd_write_cmd(0x01);/清屏主函数函数voidmain()/uchari;ledJnit();while(1)lcd_pos(1,1);/lcd_write_string(dis1);Icd_pos(2,1);/lcd_write_string(dis2);lcd_write_string(”疑是地上霜”);delay(5);lcd_pos(3,1);/lcd_write_string(dis3);lcd_write_string(”举头望明月”);delay(5);lcd_pos(4,1);/lcd_write_string(dis4);lcd_write_string(”低头思故乡”);delay(500);
展开阅读全文