完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//在指定位置显示一个字符
//x:0~234 //y:0~308 //num:要显示的字符:" "--->"~" //size:字体大小 12/16 //mode:叠加方式(1)还是非叠加方式(0) void LCD_ShowChar(u8 x,u16 y,u8 num,u8 size,u8 mode) { #define MAX_CHAR_POSX 232 #define MAX_CHAR_POSY 304 u8 temp; u8 pos,t; if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY)return; //设置窗口 LCD_WriteReg(R80,x); //水平方向GRAM起始地址 LCD_WriteReg(R81,x+(size/2-1));//水平方向GRAM结束地址 LCD_WriteReg(R82,y); //垂直方向GRAM起始地址 LCD_WriteReg(R83,y+size-1); //垂直方向GRAM结束地址 LCD_SetCursor(x,y); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM num=num-' ';//得到偏移后的值 if(!mode) //非叠加方式 { for(pos=0;pos if(size==12)temp=asc2_1206[num][pos];//调用1206字体 (对应1206字体库中相应字符的那12个字节) else temp=asc2_1608[num][pos]; //调用1608字体 for(t=0;t if(temp&0x01) (每个字节中如果位为1则显示此点的颜色,那这样t<6岂不是只判断temp中的6个位?对这点不是很理解) { LCD_WR_DATA(POINT_COLOR); }else LCD_WR_DATA(BACK_COLOR); temp>>=1; } } } else//叠加方式 { for(pos=0;pos if(size==12)temp=asc2_1206[num][pos];//调用1206字体 else temp=asc2_1608[num][pos]; //调用1608字体 for(t=0;t if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//画一个点 temp>>=1; } } } //恢复窗体大小 LCD_WriteReg(R80, 0x0000); //水平方向GRAM起始地址 LCD_WriteReg(R81, (LCD_W-1)); //水平方向GRAM结束地址 LCD_WriteReg(R82, 0x0000); //垂直方向GRAM起始地址 LCD_WriteReg(R83, (LCD_H-1)); //垂直方向GRAM结束地址 程序中红色字体部分是有疑惑的程序,括号中蓝色的字体部分是我自己的理解以及不明白的地方,希望原子哥能指点一下。 |
|
相关推荐
2个回答
|
|
|
|
|
|
明白了,谢谢
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
2000 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1782 浏览 1 评论
1248 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
825 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1800 浏览 2 评论
2031浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
942浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
340浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
682浏览 3评论
668浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-6 21:36 , Processed in 0.751574 second(s), Total 46, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191