单片机控制7寸tft模块液晶屏,具体怎么写程序,大概思路

单片机控制7寸tft模块液晶屏,具体怎么写程序,大概思路,第1张

第一,逻纳戚辑上是一样的,如果接的口一样,改动量会很小

第二,如果没有gui的话那就需要你进行液晶屏的最底层 *** 作,比如说初始化,画点,画洞芹陵线这些最基本的工作都需首乱要自己来完成,最好还是用一个gui来减少这些麻烦,不然你浪费的精力不是一点两点

有 *** 作系统的话,直接用 *** 作系统的GUI做硬件移植就好了,也就是说把TFT驱起来,之后GUI里面一般都带汉字库

没有 *** 作系统,就自己加汉字库,存储器够的话呢,就可以直接把hzk16(WPS的汉字库)放进去,存储罩胡器不够嘛,就要自己根据物嫌拦用到的字符,从者羡hzk16里面扒自己需要的那些字模了

TFT汉字显示需要一个个点去显示

一、字库格式是先行磨睁后列,以12*12格式为例,字库的前两字节为第一行点阵(第一字节8bit,第二字节的高4bit),共 24 字节为一个汉字的内容。其它字库依此类推

二、显示时从高bit位(bit7)到低bit位(bit0)依次显示,该bit位为1则输出瞎凳岁字符颜色,为0则输出背景色

三、下面是一个字符的显示例程,从 8*5,12*6,16*8,24*12,。。。

const unsigned long tab_addr_offset_asc[]=

{

offset_asc_8,offset_asc_12,offset_asc_16,offset_asc_24,offset_asc_32,offset_asc_40,offset_asc_48,offset_asc_56,

offset_asc_64,offset_asc_72,offset_asc_80,offset_asc_96,offset_asc_128,offset_asc_end,

}

const unsigned short tab_len_asc[]=

{

0x08,0x0c,0x10,0x30,0x40,0x78,0x90,0xe0,0x100,0x168,0x190,0x240,0x400,

}

const unsigned char tab_xw_asc[]=

{

0x04,0x05,0x07,0x0b,0x0f,0x13,0x17,0x1b,0x1f,0x23,0x27,0x2f,0x3f,

}

const unsigned char tab_yw_asc[]=

{

0x07,0x0b,0x0f,0x17,0x1f,0x27,0x2f,0x37,0x3f,0x47,0x4f,0x5f,0x7f,

}

//*************************************************************************

// 这是一个字符显示程序, 显示数据由 lcd_byte_data 传递

// 显示到 pos_x(行), pos_y(列)

//*************************************************************************

void wr_lcd_hex(unsigned char lcd_byte_data,unsigned char font_ord)

{

unsigned char i,j,k

unsigned char x_w,y_w //行列位宽

unsigned char x_byte_w //行字节宽

unsigned char zoom_bak

unsigned short b_order

x_w=tab_xw_asc[font_ord]

y_w=tab_yw_asc[font_ord]

x_byte_w=x_w

x_byte_w+=0x07

x_byte_w>>=0x03 //每行字节数

clrwdt()

ex_ee_addr.w[0]=lcd_byte_data

ex_ee_addr.w[1]=0x00

ex_ee_addr.val*=tab_len_asc[font_ord]

ex_ee_addr.val+=tab_addr_offset_asc[font_ord]

lcd_set_rang(lcd_pos_x,lcd_pos_x+x_w,lcd_pos_y,lcd_pos_y+y_w)//设定写入区域

b_order=0x00

set_lcd_cs_on

lcd_wr_cmd(lcd_cmd_wr_rams)//写存储器,后跟内容

zoom_bak=zoom

zoom=0x01

x_w++ //宽度实际位数

k=max_45db_buff //进入下面循环程序时粗段自动读入字库

while (b_order<tab_len_asc[font_ord])

{

if (k>=max_45db_buff) //续读字库

{

rd_45db_data(ex_ee_addr.val,rd_45db_buff,max_45db_buff)//读字库

ex_ee_addr.val+=max_45db_buff

i=x_w

k=0x00

}

j=0x80

while ((i)&&(j))

{

if (rd_45db_buff[k]&j)

lcd_wr_color(lcd_word_color)

else

lcd_wr_color(lcd_back_color)

j>>=0x01

i--

}

k++

b_order++

if (i==0x00) //当前行写完,更新行长

i=x_w

}

zoom=zoom_bak

set_lcd_cs_off

//调整到下一显示位置

lcd_pos_x+=x_w

if (lcd_pos_x>max_lcd_pos_x)

{

lcd_pos_x=0x00

lcd_pos_y+=y_w+0x01

if (lcd_pos_y>max_lcd_pos_y)

lcd_pos_y=0x00

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8189665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存