完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`看郭天祥老师,遇到的问题程序已标出 程序如下: #include #include #define uchar unsigned char #define uint unsigned int /*12864端口定义*/ #define LCD_data P0 //数据口 ***it LCD_RS = P3^5; //寄存器选择输入 ***it LCD_RW = P3^6; //液晶读/写控制 ***it LCD_EN = P3^4; //液晶使能控制 ***it LCD_PSB = P3^7; //串/并方式控制 ***it wela = P2^6; ***it dula = P2^7; unsigned char code zhu[]= //图片代码 { 。。。 }; #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; void delay0(uchar x); //x*0.14MS void beep(); void dataconv(); void lcd_pos(uchar X,uchar Y); //确定显示位置 void delay(int ms) { while(ms--) { uchar i; for(i=0;i<250;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } /*******************************************************************/ /* */ /*检查LCD忙状态 */ /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */ /* */ /*******************************************************************/ bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); } /*******************************************************************/ /* */ /*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /* */ /*******************************************************************/ void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } /*******************************************************************/ /* */ /*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ /* */ /*******************************************************************/ void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } /*******************************************************************/ /* */ /* LCD初始化设定 */ /* */ /*******************************************************************/ void lcd_init() { LCD_PSB = 1; //并口方式 lcd_wcmd(0x34); //扩充指令操作 delay(5); lcd_wcmd(0x30); //基本指令操作 delay(5); lcd_wcmd(0x0C); //显示开,关光标 delay(5); lcd_wcmd(0x01); //清除LCD的显示内容 delay(5); } /******************************************* 函数名称:Draw_PM 功 能:在整个液晶屏幕上画图 参 数:无 返回值 :无 ********************************************/ void Draw_PM(const uchar *ptr) { uchar i,j,k; wela=0; dula=0; lcd_wcmd(0x34); //打开扩展指令集 i = 0x80; for(j = 0;j < 32;j++) { lcd_wcmd(i++); lcd_wcmd(0x80); // for(k = 0;k < 16;k++) { lcd_wdat(*ptr++); } } i = 0x80; for(j = 0;j < 32;j++) { lcd_wcmd(i++); lcd_wcmd(0x88); for(k = 0;k < 16;k++) // { lcd_wdat(*ptr++); } } lcd_wcmd(0x36); //打开绘图显示 lcd_wcmd(0x30); //回到基本指令集 } main() { wela=0; dula=0; lcd_init(); //初始化LCD Draw_PM(zhu); //显示可爱猪的图片 while(1); } 有2个问题: 1.为什么Y轴的地址有J++,而x轴的上部分一直是0x80,下部分是0x88,去没有++ x轴自动加? 2.x轴取值时,为什么K是k<16? 谢谢了 ` |
|
相关推荐
3 个讨论
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:34 , Processed in 0.595233 second(s), Total 47, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号