㈠ 怎麼在stm32f429 單片機顯示中文文字
不管何種 單片機顯示中文文字,首先要看液晶屏是否自帶字型檔
如果帶字型檔只管送中文文字的Uinicode編碼就行(編譯軟體會自選查找)
如果不帶字型檔,就要製作或復制字模(庫)文件,顯示時計算好要顯示的漢字在字型檔中的位置,讀出該字字模後,逐位判斷是1還是0,從而決定是畫黑點還是白點(當然彩屏還可以是多種顏色)這些在野火和正點原子的STM32教程中都有
㈡ 誰能幫我做一下單片機系統中自製硬體字型檔的應用的程序,模擬圖在下面,程序一定要正確,救急!
// --------------------main.c-----------------------
#include<reg51.h>
#include<intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigend int
#define ulong unsigned long
//12864LCD相關函數
void LCD_Initialize();
void Display_A_Char(uchar,uchar,uchar *);
void Display_A_WORD_String(uchar,uchar,uchar,uchar *);
void Display_A_Image(uchar,uchar,uchar,uchar,uchar *);
//I2C相關函數
void IIC_24C1024_Init();
uchar RecString (uchar Slave,ulong Mem_address,uchar *Buffer,uchar N);
uchar Word_Dot_Matrix[32];
uchar LCD_Dot_Matrix[32];
void Read_HZ_dot_Matrix_AND_Convert_TO_LCD_Fmt(uchar c[])
{
ulong Offset;
uchar SectionCode,PlaceCode;
uchar AT24C1024_a1;
uchar i,j,LCD_Byte,block;
uchar Idx[4] = {0,1,16,17};
SectionCode = c[0]-0xa0;
PlaceCode = c[1]-0xa0;
Offset = (94 * (SectionCode - 1) = (PlaceCode - 1))*32L;
AT24C1024_A1 = Offset >> 17;
Offset &= 0x0001FFFF;
if (AT24C1024_A1 == 0)
RecString(0xa0,Offest,Word_Dot_Matrix,32);
else
RecString(0xa4,Offest,Word_Dot_Matrix,32);
for(block = 0;block < 4; block ++)
{
for(i = 0;i < 8; i++)
{
LCD_Byte = 0x00;
for(j = 0;j < 8; j++)
{
if((Word_Dot_Matrix[Idx[block] + 2*j] & (0x80>>i))!=0x00)
LCD_Byte |= (uchar)0x01 <<j;
}
LCD_Dot_Matrix[i+block * 8]= LCD_Byte;
}
}
}
void main()
{
uchar i,j;
char code Poem[][15]=
{
"白日依山盡,","黃河入海流。","欲窮千里目,","更上一層樓。"
};
LCD_Initialize();
IIC_24C1024_Init();
for(i = 0;i < 4; i++)
{
for(j = 0;j < strlen(Poem[i]);j+=2)
{
Read_HZ_dot_Matrix_AND_Convert_TO_LCD_Fmt(Poem[i] + j);
Display_A_WORD_String(i*2,j/2 *16 +19,1,LCD_Dot_Matrix);
}
}
}
#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define Delay4us() { _nop-(); _nop_(); _nop_(); _nop_();}
sbit SCL =P3^2;
sbit SDA =P3^3;
void Start()
{
SDA=1;SCL = 1; Delay4us();
SDA=0;Delay4us();SCL = 0;
}
void Stop()
{
SDA=0;SCL = 1; Delay4us();
SDA=1;Delay4us();SCL = 0;
}
void IIC_24C1024_Init()
{
SCL=0;Stop();
}
void ACK()
{
SDA=0;SCL=1;Delay4us();SCL=0;SDA =1;
}
void NO_ACK()
{
SDA =1;SCL=1;Delay4us();SCL=0;SDA =0;
}
uchar SendByte(uchar wd)
{
uchar i;
bit ACK0;
for(i=0;i<8;i++)
{
SDA=(bit)(wd & 0x80); _nop_();
SCL=1;Delay4us();SCL=0;wd <<= 1;
}
Delay4us();
SDA=1;
SCL=1;
Delay4us();
ACK0 =!SDA;
SCL=0;
Delay4us();
return ACK0;
}
uchar RecString(uchar Slave,ulong Mem_address,uchar *Buffer,uchar N)
{
uchar i,page;
uint addr16;
page = (uchar)((Mem_address>>16) &0x00000001);
page <<= 1;
addr16 =(uint)(Memaddress & 0x0000FFFF);
Start();
if(!SendByte(Slave | page)) return 0;
if(!SendByte((uchar)(addr16 >> 8))) return 0;
if(!SendByte((uchar)(addr16))) return 0;
Start();
if(!SendByte(Slave | 0x01)) return 0;
for(i=0;i<N-1;i++)
{
BVuffer[i] = RecByte();
ACK();
}
Buffer[N-1]=RecByte();
NO_ACK();
Stop();
}
㈢ 請問你怎麼把字型檔寫到單片機里的啊
上位機寫個小軟體一行行讀字型檔文件然後通過串口燒到但單片機里,單片機串口收到後就保存到需要的位置。
㈣ 51單片機如何實現漢字顯示,如「龍」字,能否給程序和電路圖
方案一:含字型檔的液晶,單片機給出相應指令即可顯示。效果最好,成本較高,程序量小,難度適中。
方案二:點陣液晶或LED點陣,以16*16解析度,用漢字取模軟體取模,將字模數據依次送至點陣電路顯示。效果很好(可巨型高亮),程序量大,成本較高。
方案三:用LED或小燈泡排列成漢字,單片機控制開關總電源即可。效果較差,不能變化,基本無程序,成本和難度均最低。
方案三,把N個LED串成一串,擺成漢字就OK了。
㈤ 單片機控制的LED點陣顯示的字型檔如何製作
我以前做的是使用ucdos下的點陣字型檔,16*16點陣的,包含GB2312的全部漢字,大約260多KB。如果去掉部分不常用的符號,可以縮小到256K。單片機顯示的時候,可以根據漢字內碼計算出漢字在點陣里的位置,然後讀出,顯示。
對了,那個文件名叫HZK16,你在網上應該能收到。
可以用任何ROM晶元來存儲,如果你的單片機引腳不夠,可以用串列EEPROM,有不少是256KB的。
㈥ 怎麼編寫單片機——TFT彩屏漢字程序
你現在看到的這兩個函數LCD_ShowString()ChineseChar()是你在上層調用的,具體的函數定義你要去看底層是怎麼實現的。我先簡單介紹下著兩個函數
LCD_ShowString(12,60,colors[0],colors[7],"-");應該是講屏幕上x=12,y=60的地方顯示一個「-」字元,字元顏色應該是你定義的colors[0],TFT屏的背景顏色是colors[7],這兩個是你函數庫自己定義的,可以改。
ChineseChar(20,60,1,colors[0],colors[7],1); //帶 這個函數和上面那個函數大致相同,至於為什麼會顯示「帶」,是因為最後那個1,這個程序你應該定義一個數組,在這個數組裡面對你所要顯示的字全部編碼並存在這個數組中,最後你只需用想調用數組下標那樣調用這個漢子。
至於你想顯示班級、姓名 只需用把班級姓名進行編碼就可以調用這個ChineseChar()函數進行顯示
其實很簡單的,只需用該幾步就可以達到你想要的,不難~~
㈦ 高分懸賞!求12x12點陣的漢字型檔,C51 ,單片機,硬體,led, lcd ,編程,
/*本文件為12×12點陣中文字型檔文件,字的橫向8點構成一位元組,左邊點在位元組的高位,字元點陣四角按左上角→右上角→左下角→右下角取字*/
/*如你想在以後繼續用HZDotReader打開文件,追加漢字點陣數據,請不要修改或增刪所有注釋*/
unsigned char code hzdot[90240] = {
/*啊 CB0A1 */
0x1D,0xE0,0xF4,0x20,0xB4,0x20,0xBB,0xA0,
0xB6,0xA0,0xB6,0xA0,0xF7,0xA0,0x1C,0x20,
0x10,0x20,0x10,0x20,0x10,0xE0,0x00,0x00,
/*阿 CB0A2 */
0xF7,0xE0,0x90,0x40,0xA0,0x40,0xC7,0x40,
0xA5,0x40,0x95,0x40,0x97,0x40,0xF0,0x40,
0x80,0x40,0x80,0x40,0x81,0xC0,0x00,0x00,
/*埃 CB0A3 */
0x22,0x00,0x24,0x40,0x2F,0xE0,0xF0,0x00,
0x24,0x00,0x27,0xC0,0x29,0x00,0x3F,0xE0,
0xC2,0x80,0x04,0x40,0x18,0x20,0x00,0x00,
/*挨 CB0A4 */
0x21,0x00,0x22,0x40,0xF7,0xE0,0x20,0x20,
0x24,0x00,0x37,0xC0,0xE9,0x00,0x3F,0xE0,
0x22,0x80,0x24,0x40,0x78,0x20,0x00,0x00,
/*哎 CB0A5 */
0x04,0x80,0xEF,0xE0,0xA4,0x80,0xA0,0x00,
0xA4,0x80,0xA4,0x80,0xA4,0x80,0xE3,0x00,
0x03,0x00,0x04,0x80,0x38,0x60,0x00,0x00,
/*唉 CB0A6 */
0x02,0x80,0xE4,0x40,0xAF,0xE0,0xA4,0x00,
0xA7,0xC0,0xA9,0x00,0xA9,0x00,0xFF,0xE0,
0x02,0x80,0x04,0x40,0x18,0x20,0x00,0x00,
/*哀 CB0A7 */
0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,
0x20,0x80,0x3F,0x80,0x0C,0x40,0x12,0x80,
0x31,0x00,0xD4,0x80,0x18,0x60,0x00,0x00,
/*皚 CB0A8 */
0x21,0x00,0x45,0x20,0xF7,0xE0,0x90,0x00,
0x97,0xC0,0xF0,0x40,0x97,0xC0,0x94,0x00,
0xF4,0x20,0x94,0x20,0x07,0xE0,0x00,0x00,
/*癌 CB0A9 */
0x02,0x00,0x7F,0xE0,0x48,0x40,0xCF,0xC0,
0x40,0x00,0x5D,0xE0,0xD5,0x20,0x5D,0xE0,
0x42,0x00,0x92,0x40,0x9F,0xC0,0x00,0x00,
/*藹 CB0AA */
0x12,0x00,0xFF,0xE0,0x48,0x40,0x2F,0xC0,
0x08,0x40,0xCF,0xC0,0x48,0x60,0x59,0x20,
0x4A,0xA0,0x6F,0xA0,0x00,0xC0,0x00,0x00,
/*矮 CB0AB */
0x41,0xC0,0x4F,0x00,0xF1,0x00,0xAF,0xE0,
0x25,0x40,0xF9,0x20,0x22,0x00,0x2F,0xE0,
0x54,0x80,0x43,0x80,0x9C,0x60,0x00,0x00,
/*艾 CB0AC */
0x09,0x00,0xFF,0xE0,0x09,0x00,0x09,0x00,
0x10,0x80,0x10,0x80,0x09,0x00,0x0A,0x00,
0x06,0x00,0x19,0x00,0xE0,0xE0,0x00,0x00,
/*礙 CB0AD */
0xF7,0xC0,0x24,0x40,0x27,0xC0,0x44,0x40,
0x77,0xC0,0xD0,0x00,0x57,0xE0,0x50,0x40,
0x77,0xE0,0x52,0x40,0x01,0xC0,0x00,0x00,
/*愛 CB0AE */
0x03,0xC0,0x7C,0x80,0x15,0x00,0xFF,0xE0,
0x88,0x20,0x7F,0xC0,0x08,0x00,0x0F,0x80,
0x19,0x00,0x26,0x00,0xD9,0xE0,0x00,0x00,
/*隘 CB0AF */
0xE8,0x40,0xA4,0x80,0xBF,0xE0,0xA2,0x80,
0xE4,0x40,0x98,0x20,0x9F,0xC0,0xF5,0x40,
0x95,0x40,0x95,0x40,0xBF,0xE0,0x00,0x00,
/*鞍 CB0B0 */
0x51,0x00,0xFF,0xE0,0x54,0x20,0x71,0x00,
0x21,0x00,0xFF,0xE0,0xAA,0x40,0xFA,0x40,
0x23,0x80,0xF9,0x40,0x26,0x20,0x00,0x00,
/*氨 CB0B1 */
0x20,0x00,0x7F,0xE0,0x40,0x00,0xBF,0x80,
0x08,0x80,0x7F,0x80,0x51,0x80,0xFE,0x80,
0x24,0xA0,0x1E,0x60,0xE3,0x20,0x00,0x00,
/*安 CB0B2 */
……
……
㈧ 單片機,字型檔文件是怎麼調用的
字型檔文件必須嵌入到程序裡面才能使用,一般而言,要製作小字型檔,以節約代碼空間。單片機程序空間是比較緊張的,所以不能使用整個字型檔(比如漢字型檔),只取有用字的字模。
㈨ 怎麼用單片機和led顯示模塊顯示任意一個漢字,不是那種提前編好碼的那種固定漢字的加漢字型檔
漢字字型檔比較大,如16X16點陣一個漢字32位元組(8*8點陣效果太差),國標一級字型檔就有6千多個漢字,總共要200多K的存儲空間,對於即使用STm32單片機,寫入字型檔後,程序存儲空間也受到限制,因此,字型檔多保存在外擴FLASHROM中或SD卡上。所以要顯示漢字就要學會訪問FLASHROM(如Q25Q16)或SD卡,野火和正點原子的STM32教程都講有查找字型檔和在LCD屏上顯示漢字的方法,LED顯示原理和LCD完全一樣。
㈩ 51單片機點陣顯示一個漢字
8x8的點陣太小,很難正常顯示一個漢字,通常,會使用4個8x8的點陣即16x16的點陣來顯示一個漢字。
單片機在通過點陣顯示漢字的時候,需要用到如下技術手段:
1、漢字取模
漢字取模,即把漢字對應16x16點陣的圖形用16進制數來描述,形成可以用於驅動顯示的數據。
例如下圖,的漢字「中」
該字的16x16點陣圖形中,每行有16個像素,可以編碼為2個位元組,每8個像素,對應一個位元組的高低位,則該字編碼的前2個位元組為0x01,0x80……,如此,可用32個位元組描述漢字的點陣圖形。
關於漢字取模有很多開源的軟體,你可以搜索下載並使用,將你的程序中所需要使用的漢字,全部處理成字模,再定義到程序中即可。(也可以使用漢字字型檔晶元,這里就不討論了)
2、掃描顯示
通常,驅動點陣設備時,為了節約單片機的管腳資源,會使用鎖存器一類的期間,即鎖存器輸出端與點陣連接,而輸入段由單片機控制,採用行、場掃描或分塊行、場掃描的方式驅動,具體你可以搜尋相關資料。