历史上的今天
今天是:2025年04月17日(星期四)
2018年04月17日 | STM32F10X系列LCD屏的配置及子函数
2018-04-17 来源:eefocus
首先是LCD的RAM写子函数:
[objc] view plain copy
void LCD_WriteRAM(u16 RGB_Code)
{
GPIO_SetBits(LCD_RS_PORT,LCD_RS_PIN);
GPIO_Write(LCD_PORT_PORT,RGB_Code>>8);
//Delay(5);
GPIO_ResetBits(LCD_WR_PORT,LCD_WR_PIN);
//Delay(10);
GPIO_SetBits(LCD_WR_PORT,LCD_WR_PIN);
GPIO_Write(LCD_PORT_PORT,RGB_Code);
// Delay(10);
GPIO_ResetBits(LCD_WR_PORT,LCD_WR_PIN);
//Delay(10);
GPIO_SetBits(LCD_WR_PORT,LCD_WR_PIN);
}
LCD从RAM读取字符并进行显示的子函数:
[objc] view plain copy
void LCD_DrawChar(u8 Xpos, u16 Ypos, const u16 *c)
{
u32 index = 0, i = 0;
u8 Xaddress = 0;
Xaddress = Xpos;
LCD_SetCursor(Xaddress, 319-Ypos);
for(index = 0; index < 24; index++)
{
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
for(i = 0; i < 16; i++)
{
if((c[index] & (1 << i)) == 0x00)
{
LCD_WriteRAM(BackColor);
}
else
{
LCD_WriteRAM(TextColor);
}
}
LCD_CtrlLinesWrite(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, Bit_SET);
Xaddress++;
LCD_SetCursor(Xaddress, 319-Ypos);
}
}
ASCII码转换的基本
[objc] view plain copy
void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii)
{
Ascii -= 32;
LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]);
}
可以应用于主函数的数字显示函数:
[objc] view plain copy
void LCD_ShowNum(uint8_t x,uint16_t y,uint16_t data)
{
LCD_DisplayChar(x,y,data/10000+48);
LCD_DisplayChar(x,(y+25),data%10000/1000+48); // %10000
LCD_DisplayChar(x,(y+50),data%1000/100+48);
LCD_DisplayChar(x,(y+75),data%100/10+48);
LCD_DisplayChar(x,(y+100),data%10+48);
}
可以用于主函数的字符显示函数:
[objc] view plain copy
void LCD_DisplayStringLine(u8 Line, u8 *ptr)
{
u32 i = 0;
u16 refcolumn =0;
/* Send the string character by character on lCD */
while ((*ptr != 0) & (i < 20))
{
/* Display one character on LCD */
LCD_DisplayChar(Line*FONT_HEIGHT, refcolumn, *ptr);
/* Decrement the column position by 16 */
refcolumn += FONT_WIDTH;
/* Point on the next character */
ptr++;
/* Increment the character counter */
i++;
}
}
上一篇:stm32 FSMC的函数解释
史海拾趣
|
各位能否推荐一8位模数芯片,AD/DA集成到一个片子上的,最好是I2C接口,或spi接口的,我知道一款,但不好买,各位仁兄还知道有没有其他的吗?小弟在此先谢了啊… 查看全部问答> |
|
我用内嵌TCP/IP协议的GPRS模块进行数据传输,其它命令都是正确的回复,但是最后一个上网的命令不正确 大家好,希望能帮帮我。我用西门子公司的MC55进行GPRS中的TCP/IP数据传输,用51单片机控制,现在TCP/IP设置的命令都回复的OK,但是最后一条连网命令不正确,经查证发现连网的命令是发送正确的,就是连不上网,是怎么回事啊?… 查看全部问答> |
|
为了单独测试这个DS18B20的初始化,弄了个最小化的电路如下: DS18B20接P1.7,LED接P1.0 如果初始化成功,则LED应该点亮. 程序: #include sbit DQ = P1^7; sbit LED = P1^0; void delay2us(unsigned char t) { whil ...… 查看全部问答> |
|
交流下大家的Windows CE产品,看看目前市场上用到的Windows CE产品有哪些? 注:标明Windows CE版本号、产品名及简要介绍、工资。 先说我自己的: Windows CE 5.0、Windows CE 6.0 终端——类似电脑,主要用户行业的窗口柜台(如银行、邮政 ...… 查看全部问答> |
|
我的屏幕的分辨率为800*480.那么对应的屏幕坐标为(3200,1920)?。。我现在出现的问题是,平常的操作基本正常,但是无法出现右键,AYGSHELL组件也已经选了。是不是抖动问题?但是我在DdsiTouchPanelGetPoint中保存第一次按下时的坐标,在弹起之前 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:37 编辑 今年大赛做B题基于自由摆的平板控制系统的参赛者有时间可以而看看,这个论文感觉就是我们试题B的出处!由于文件太大。。采用分卷压缩的!将3个附件同时下载下来即可解压! … 查看全部问答> |
|
想用休眠模式让电机停,执行到寄存器pcon不停? #include #define uchar unsigned char #define uint unsigned int sbit a = P2^6;//电机 sbit k = P3^7;//按键进入休眠 void ex_int0() interrupt 0//外部中断0唤醒函数 { PCON=0; } void ...… 查看全部问答> |




