单片机怎么用12864显示16X32字体

单片机怎么用12864显示16X32字体,第1张

单片机用12864显示16X32字体的方法是图像取模:

1、首先先去下载取模软件,下载完成点击打开取模软件。

2、在菜单栏点击模式然后选择图形模式。

3、现在就可以点击打开图片文件,要注意的是取模之前要把图片转换为bmp格式,选择图片点击打开进行添加。

4、现在点击选项,进行参数设置。

5、根据下图进行设置字模格式,设置完成点击确定。

6、点击下面的生成字模就可以获得代码了,点击将代码复制到程序,就可以了。

问题有多种,一、对比度是否调好

(即是否有硬件问题)

二、void

WriteData(uchar

Data)

{

EN=0/*使能端*/

RS=1/*根据时序图拉低,选择写指令*/

RW=0/*根据时序图拉低,选择写模式*/

P0=Data/*命令数据准备*/

delay(0)

此处延时(省略判忙)

EN=1/*使能端跳变*/

EN=0/*使能端再次跳变*/

}

三、确认你的初始化没有问题

四、你的模块是否带字库

五、

我推测你这个程序最可能出现的问题v

void

display(uchar

show[])

{

delay(1)

WriteData()

}

此处未写任何数据

如有不明白Q

451526010

用这个吧。我以前用的

#include <reg52.h>

#include<intrins.h>

#include <string.h>

#define uchar unsigned char

#define uint unsigned int

//8bit数据接入IO口

#define Part P0 //P0接8位数据线

//控制数据端

sbit LCD_RS=P3^2//定义12864液晶RS端,寄存器选择信号 H:数据寄存器 L:指令寄存器

sbit LCD_RW=P1^1//定义12864液晶RW端,读/写信号 H:读 L:写

sbit LCD_EN=P1^2//定义12864液晶LCDEN端, 片选信号 下降沿触发,锁存数据

//sbit LCD_PSB=P3^2//定义12864液晶PSB端, H:并行 L:串行

sbit LCD_RST=P3^6//定义12864液晶RST端, H:不复位 L:复位

sbit AD_ST=P1^6//定义AD

sbit AD_OE=P3^7

sbit AD_A=P1^3

sbit AD_B=P1^4

sbit AD_C=P1^5

sbit AD_EOC=P1^7

sfr T2MOD=0XC9

uchar code dis1[]={"转速"}

uchar code dis2[]={"加速度x方向"}

uchar code dis3[]={"加速度y方向"}

uchar code dis4[]={"加速度z方向"}

uchar code Text[]={"欢迎大家观看"}

uint i

uchar code dat[]

int jishu

int sudu1

int sudu2

int maichong1

int maichong2

//毫秒延时函数

void delayms(uint x) //nms的延时

{

uint i

while(x--)

{

for(i=0i<125i++)

{}

}

}

void delay(uint xms)

{

uint i,j

for(j=0i<xmsj++)

for(i=0i<110i++)

}

//LCD忙检测函数

bit lcd_busy()

{

bit result

LCD_RS=0

LCD_RW=1

LCD_EN= 1

result=(bit)(Part &0x80)

LCD_EN=0

return result

}

//液晶写命令函数

void lcd_write_cmd(uchar com)

{

while(lcd_busy())

LCD_RS=0//选择指令寄存器

LCD_RW=0//写

LCD_EN=0

Part=com//指令值赋给P0口

delay(5)

LCD_EN=1

delay(5)

LCD_EN=0

}

//液晶写一个字符数据函数

void lcd_write_dat(uchar date)

{

while(lcd_busy())

LCD_RS=1//选择数据寄存器

LCD_RW=0//写

LCD_EN=0

P0=date//数据值赋给P0口

delay(5)

LCD_EN=1

delay(5)

LCD_EN=0

}

//液晶写一个字符串函数

void lcd_write_string(uchar *str)

{

while(*str!='\0') //未结束

{

lcd_write_dat(*str++)

delay(5)

}

}

//液晶显示位置函数

void lcd_pos(uchar x,uchar y) //从第X行的第Y位置开始显示

{

uchar pos

if(x==1) //第一行

{x=0x80}

else if(x==2) //第二行

{x=0x90}

else if(x==3) //第三行

{x=0x88}

else if(x==4) //第四行

{x=0x98}

pos=x+y-1//首地址为0X80

lcd_write_cmd(pos)

}

//液晶初始化函数

void lcd_init()

{

// LCD_PSB=1//并行方式

LCD_RST=1//不复位

lcd_write_cmd(0x30)

delay(5)

lcd_write_cmd(0x0c)//开显示,不显示光标

delay(5)

lcd_write_cmd(0x06)//写一个字符后地址指针自动加1

delay(5)

lcd_write_cmd(0x01)//清屏

delay(5)

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存