你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM8入门资料】第62讲 LCD彩色液晶屏显示汉字、英文、...

[复制链接]
众想@刘洋 发布时间:2016-11-10 17:30
【剑齿虎】STM8开发板学习笔记分享
62   LCD彩色液晶屏显示汉字、英文、数字
62.1 实验目的
移植LCD底层驱动程序到工程中,在LCD彩色液晶屏上显示汉字、英文、数字。
62.2 使用软件方法取字模
在例程中有一个“软件”文件夹,存放的是我们取字模的应用软件“PCtoLCD2002完美版”,我们使用这个软件获取我们需要的字模形式和大小。在此例程中我们需要现实的汉字是24×24,界面入下图所示。
1.png
62.1  字模应用软件界面
    我们需要字模格式是C51方式,所以在设置界面中要把“自定义格式”选择为“C51格式”。点阵输入框经过计算后填入正确的数值。
2.png
62.2  字模应用软件格式设置界面
62.3 程序文件设计      62.3.1  main.c文件中的程序
主程序就实现初始化和调用驱动程序,这样主程序控制思路清晰,流程简单。要想了解全面详实的程序,请大家参考光盘(网盘)中程序及程序注释。
/***********************************************************************
*   说    明: LCD彩色液晶屏显示汉字、英文、数字
*   开发平台: 剑齿虎STM8开发板      
*   作    者: 刘洋 张殿东
*   版    本: V1.0
*   日    期: 2016-05-03   
*
*   IAR开发环境    版本 V2.20.1
*   ST库函数       版本 V2.2.0
***********************************************************************/
#include"pbdata.h"//引入自定义公共头文件
voidBSP_Configuration(void);//硬件初始化函数声明
/***********************************************************************
*   函 数 名: main
*   功能说明: c程序入口
*   形    参:无
*   返 回 值: 错误代码(无需处理)
***********************************************************************/
intmain(void)
{
  BSP_Configuration();//硬件驱动初始化函数
  LCD_Demo();
  while(1)//主程序循环,反复执行循环体里的语句
  {
  }
}
/***********************************************************************
*   函 数 名:BSP_Configuration
*   功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
*   形    参:无
*   返 回 值: 无
***********************************************************************/
voidBSP_Configuration(void)
{  
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
  UART1_Congfiguration();//调用RS232串口1初始化函数
  LED_Init();//调用LED初始化函数
  LCD_Init();
  rim();//打开总中断
}
/*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
#ifdefUSE_FULL_ASSERT
voidassert_failed(u8* file,u32 line)
{
  while(1)
  {
  }
}
#endif
62.3.2  pbdata.c文件中的程序
#include "pbdata.h"   //引入自定义公共头文件
/***************************************************************************
*  函 数 名: delay_us
*  功能说明: 微秒延时程序,注意此函数的运行环境为(16M时钟速度)
*  形    参:nCount要延时的微秒数,输入nCount=1微妙
*  返 回 值: 无
***************************************************************************/
void delay_us(u16 nCount)   //16M 晶振时  延时 1个微妙
{
   nCount*=3;//等同于 nCount=nCount*3  相当于把nCount变量扩大3倍
   while(--nCount);//nCount变量数值先减一,再判断nCount的数值是否大于0,大于0循环减一,等于0退出循环。
}
/***************************************************************************
*  函 数 名: delay_ms
*  功能说明: 毫秒延时程序,注意此函数的运行环境为(16M时钟速度)
*  形    参:nCount要延时的毫秒数,输入nCount=1毫秒
*  返 回 值: 无
***************************************************************************/
void delay_ms(u16 nCount)  //16M 晶振时  延时 1个毫秒
{
   while(nCount--)//先判断while()循环体里的nCount数值是否大于0,大于0循环,减一执行循环体,等于0退出循环。
   {
       delay_us(1000);//调用微妙延时函数,输入1000等译演示1毫秒。
   }
}
/***************************************************************************
*  函 数 名: Get_decimal
*  功能说明: 获得数值小数部分
*  形    参:dt输入数据 deci小数位数,最多保留4位小数
*  返 回 值: 放大后的小数部分
***************************************************************************/
u16 Get_decimal(double dt,u8 deci)   //获得数值小数部分
{
    long x1=0;
   u16 x2=0,x3=0;
   if(deci>4) deci=4;
   if(deci<1) deci=1;
   x3=(u16)pow(10, deci);
   x1=(long)(dt*x3);
   x2=(u16)(x1%x3);
   return x2;
}
62.3.3  pbdata.h文件中的程序
#ifndef_PBDATA_H//宏定义,定义文件名称
#define_PBDATA_H
#include"stm8s.h"//引入STM8的头文件
#include<stdio.h>//需要引用这个头文件才能实现
#include"math.h"//需要引用这个头文件才能实现
#include"led.h"  //引用LED头文件
#include"uart1.h"//引用RS232头文件
#include"ili9328.h"
#include"lcd.h"
voiddelay_us(u16 nCount); //微秒延时程序
voiddelay_ms(u16 nCount); //毫秒延时程序
u16Get_decimal(double dt,u8 deci);   //获得数值小数部分
#endif//定义文件名称结束
62.3.4  ili9328.c文件中的程序
底层驱动程序,直接加入到工程中即可。……详细程序请参考程序例程。
62.3.5  ili9328.h文件中的程序
底层驱动程序,直接加入到工程中即可。……详细程序请参考程序例程。
' y" ~7 W: p0 y4 r$ Y

* w& ?5 y5 H5 q8 i+ T
3.png
收藏 1 评论7 发布时间:2016-11-10 17:30

举报

7个回答
众想@刘洋 回答时间:2016-11-10 17:31:02
62.3.6  lcd.c文件中的程序
2 [$ }5 g; E0 v#include "pbdata.h"
. v' `$ c) z1 b0 qconst u8 font[2][72]={
- b1 ]3 u& a5 l& k& f# I{0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x02,0x00,0x10,0x0C,0x00,0x10,0x38,0x00,0x20,0xE0,0x00,0x5F,0x80,0x00,0x99,0x00,0x03,0x00,0x80,0x06,0x00,0xC2,0x1C,0x00,0x72,0x70,0x00,0x04,0x28,0x00,0x08,0x04,0x00,0x30,0x03,0x03,0xE0,0x01,0xBF,0x00,0x00,0xD7,0x00,0x00,0x60,0xC0,0x00,0x60,0x30,0x00,0x30,0x18,0x00,0x30,0x0E,0x00,0x20,0x06,0x00,0x00,0x04,0x00,0x00,0x00},/*"众",0*/
+ J3 n3 G4 m9 c9 ~4 h1 e4 B{0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x04,0x00,0x02,0x08,0x0C,0x02,0x30,0x38,0x02,0xE0,0x00,0x7F,0xFE,0x00,0x3F,0xFE,0x00,0x02,0xC0,0xFC,0x06,0x60,0x04,0x02,0x20,0x04,0x00,0x01,0x04,0x1F,0xFE,0xC4,0x09,0x24,0xE4,0x09,0x24,0x04,0x09,0x24,0x04,0x09,0x24,0x04,0x09,0x24,0x3C,0x09,0x24,0x00,0x1F,0xFE,0x40,0x1F,0xFE,0x30,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00}};/*"想",1*/
" s* f7 N: d, kconst u8 str[15][36]={
2 z& L8 ~. K& Q) I{0x00,0x20,0x00,0x00,0x3C,0x00,0x00,0x3F,0xE0,0x00,0x23,0xF8,0x00,0x00,0xE0,0x00,0x27,0x00,0x00,0x3E,0x00,0x00,0x3F,0xE0,0x00,0x21,0xF8,0x00,0x01,0xE0,0x00,0x3E,0x00,0x00,0x20,0x00},/*"w",0*/
" M4 v8 ^! M/ i# z0 p1 o{0x00,0x20,0x00,0x00,0x3C,0x00,0x00,0x3F,0xE0,0x00,0x23,0xF8,0x00,0x00,0xE0,0x00,0x27,0x00,0x00,0x3E,0x00,0x00,0x3F,0xE0,0x00,0x21,0xF8,0x00,0x01,0xE0,0x00,0x3E,0x00,0x00,0x20,0x00},/*"w",1*/
: n& i. Y$ G1 U& W7 s{0x00,0x20,0x00,0x00,0x3C,0x00,0x00,0x3F,0xE0,0x00,0x23,0xF8,0x00,0x00,0xE0,0x00,0x27,0x00,0x00,0x3E,0x00,0x00,0x3F,0xE0,0x00,0x21,0xF8,0x00,0x01,0xE0,0x00,0x3E,0x00,0x00,0x20,0x00},/*"w",2*/
. O' K  b; ^) ?% b- {% B, K# k6 c  n{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",3*/
% Z0 z' o+ I& f! Z: [( [% d{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x00,0x20,0x38,0x00,0x20,0xF8,0x00,0x23,0xE8,0x00,0x2F,0x88,0x00,0x3E,0x08,0x00,0x38,0x08,0x00,0x20,0x18,0x00,0x00,0x70,0x00,0x00,0x00},/*"z",4*/- F% L/ p5 g& v5 o
{0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x38,0x38,0x00,0x3E,0x68,0x00,0x27,0x80,0x00,0x03,0xC8,0x00,0x2C,0xF8,0x00,0x38,0x38,0x00,0x20,0x18,0x00,0x20,0x08,0x00,0x00,0x00},/*"x",5*/; r6 m$ ^" {  j  S, X
{0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x01,0x88,0x00,0x03,0x00,0x00,0x2F,0xC0,0x00,0x38,0xF8,0x00,0x20,0x38,0x00,0x20,0x08,0x00,0x00,0x08,0x00,0x00,0x00},/*"k",6*/
1 c# M( D7 S' O2 P; `{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x20,0x01,0x00,0x20,0x01,0x00,0x20,0x03,0x06,0x3F,0xFE,0x06,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"j",7*/' U" L7 f# O2 F. B! m% O5 a% _
{0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x00,0x08},/*"m",8*/  ^4 x9 U. y# A  i3 i
{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x18,0x30,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x3C,0x08,0x00,0x1C,0x10,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00},/*"c",9*/
# X8 G6 {3 |( E8 P{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x3F,0xF0,0x00,0x7F,0xF8,0x00,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x20,0x10,0x00,0x3F,0xF8,0x00,0x7F,0xF0,0x00,0x00,0x10,0x00,0x00,0x00},/*"u",10*/
2 K3 Y' D& [/ \5 {$ u+ o{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",11*/6 i- X5 r/ c+ U
{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x18,0x30,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x3C,0x08,0x00,0x1C,0x10,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00},/*"c",12*/
) j8 g# T( h* Y{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x0F,0xF0,0x00,0x18,0x30,0x00,0x30,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x08,0x00,0x18,0x30,0x00,0x0F,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00},/*"o",13*/
' E+ s* B$ t: o9 I- n9 P{0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x00,0x08}};/*"m",14*/* J2 A/ Q2 b! w. Q
void show_font(u16 x,u16 y,u8 id,u16 qj,u16 bj)2 [4 U7 ?! x! {& {2 R: e0 @# p
{) u( Z( P0 W7 c2 z% d$ f, O" k
    u8 k=0,t=0,temp=0;
" \1 D& J6 ^$ G    u16 y0=0;( P- O1 f: O6 Z) b( K5 {- p1 y1 v
    y0=y;
7 b; l( T- U2 K1 s5 @" Y    for(k=0;k<72;k++)' r9 T0 k/ ^* k- m
    {. U7 x! b0 z; y! @8 U- a' {, _  j
        temp=font[id][k];
, f( q( l# c) x9 M( u9 B        for(t=0;t<8;t++)
1 Q6 p: {, U% V. ^- l8 g5 m; h. q1 E        {
5 A1 [1 N. @+ n( C: l            if(temp&0x80)7 k  l8 g* i+ m2 |# i; j1 @) q5 s
            {
) O5 }( y% v- b/ w( p; y: d                LCD_DrawPoint(x,y,qj);
& [* u) C! F; N' x            }
/ I1 m+ K- b' j% k  B            else
& P8 j( {6 V( x2 D! @) G            {. L7 }1 G3 x4 `& F8 S8 P$ |* ~0 u2 J5 ^
                LCD_DrawPoint(x,y,bj);6 C- j4 t8 H! D! ?0 `7 c
            }- g2 r: U* Q$ A! ~0 `5 u" {2 a# F+ ~" B
            temp<<=1;
: b* B# M( o' z3 h' ~4 q& D/ u            y++;2 q% n3 O, b! T- Y4 ^
           # ~8 Z4 b' |: v' B. }
            if((y-y0)==24)9 I/ B1 o6 t/ p0 k& H+ `% w
            {7 h" S$ `2 L4 `2 l6 l; c! x
                y=y0;4 S. C0 W. D; }- m) |) a
                x++;
0 X" R6 s5 ^, |1 ]; `- ^5 y$ G' z" s/ W                break;- q# [9 r( z) s1 @1 l3 E- N) D
            }
2 A( |7 z* g5 F        }! I! V# z1 f6 X6 [% K
    }
6 ~: L4 N0 R4 L  Z& Y; a}
! q' p& {; @* j: U5 X/ F  s3 bvoid show_str(u16 x,u16 y,u8 id,u16 qj,u16 bj)- E* N4 R/ K2 a1 A2 O, R- q
{
* l, d& _- k4 f7 Y    u8 k=0,t=0,temp=0;
# Q, ^- a% i- [! h+ F) C/ g4 @    u16 y0=0;
, |, l& r2 J3 ~) B) }* G    y0=y;
6 i9 R" M7 ?) I3 W1 Y8 ^2 ^. Y    for(k=0;k<36;k++)
& C: N6 V' m% z) v) l9 i, [5 ?3 n    {
( a6 @, u+ R* k/ Y+ P3 z0 C, y        temp=str[id][k];8 ]4 O8 b, E% }# E7 W  c) ?$ N
        for(t=0;t<8;t++)7 u  h( z# u- O( X/ c. r# E
        {
( f# _' `1 C% E! c2 U8 t: l. [            if(temp&0x80), M1 @; w! O, M  s) r& f: u7 n5 v
            {! n( Z3 `- f2 ^
                LCD_DrawPoint(x,y,qj);
; n" W( c" ]3 F( B5 }            }
( K- \) t, r: k9 Q: z            else# H( _- @, e; [: N
            {
( a" \& E5 ~) I- y( u; A6 {& r+ p                LCD_DrawPoint(x,y,bj);8 y+ H! x8 A$ e" B/ p
            }
# v# Q) c; z) R; P) y! }! l- b5 C            temp<<=1;) u. _6 e8 Y% l3 f2 H) ]2 M
            y++;
- V& t! O# y$ Q, w           8 I  L, Z# v2 O. g
            if((y-y0)==24)
- ^( r* i4 w- Y            {
0 M8 q8 g2 y/ j$ y1 V                y=y0;% h- ~, e) F# P# ]& q
                x++;
5 r6 i% }0 M& G                break;
7 ^& u% M! S; S. p9 g6 N, q# m            }- u" U, @: y- ]* L4 {8 \5 o
        }7 b- x! A. b" a* {. v6 B
    }
' I9 N; f  H: z( w7 A$ }  M) e}
( d/ o" h# {: ]+ r+ \void LCD_Demo(void)
$ r; R6 g) e' Z' p3 @( _' V0 s{, \" e+ }# @; J% d) Z4 Q7 _* l
  u8 i=0;
: Y1 W2 F' |0 T8 A9 j. s& Z! f4 H- a! o  for(i=0;i<2;i++)
7 r- O) g" S, y) D) q9 D$ G, h4 B& J  {$ O" \% E& o% v* ?$ ~6 r
    show_font(80+i*50,50,i,RED,LIGHTBLUE);8 A2 t$ D: c& }6 E2 L
  }8 c5 D8 E3 }. Q- J7 x5 }
  for(i=0;i<15;i++)' S  d# z0 Q- ~6 O
  {( L9 C" Y* v$ p: F8 H
    show_str(10+i*15,100,i,RED,LIGHTBLUE);+ c' V% }* g( X
  }! ^+ i5 _" g& n4 \2 g, E
}
0 p# T4 |$ g8 F9 \+ n62.3.7  lcd.h文件中的程序
9 b. Q3 u: M' P# B, F#ifndef _LCD_H  //宏定义,定义文件名称
, `' G/ n2 m/ {" \) o#define _LCDD_H
- }2 W3 l1 T! z& }" h- j#include "stm8s.h"//引用STM8头文件7 n/ X" N; A$ h6 p
void show_font(u16 x,u16 y,u8 id,u16 qj,u16 bj);1 c; K2 I0 |% D% F  c; ~
void show_str(u16 x,u16 y,u8 id,u16 qj,u16 bj);6 K( _5 b4 u! ~# V2 M7 h
void LCD_Demo(void);
  u  P3 N) n& e; S, Q/ R! u#endif
5 a1 C) n; O/ B* W" h62.3.8  uart1.c文件中的程序
7 E) F2 y4 i4 N3 L/ d# p6 l ……详细程序请参考程序例程。
9 C. d. u- ?  v! v' K) k' t62.3.9  uart1.h文件中的程序
+ d% D% ?8 X: } ……详细程序请参考程序例程。
# t" W1 Z& B5 S3 j' e62.4 实验效果      $ v( L  e. e2 f
复位后,程序创建一个新的文件,文件名为“LY-STM8 主讲人:刘洋 视频教程下载地址 www.zxkjmcu.com”,如果SD卡中已经有这个文件了,就会提示“文件已经存在”。
+ W8 I( t3 I* m7 K% D+ o3 b/ f9 m
图62.3  LCD彩色液晶屏显示实验效果
- `7 Q$ t0 o/ b- ^
众想@刘洋 回答时间:2016-11-10 17:31:32
本套视频教程共64讲,81课时,2350分钟,欢迎学习
assssdz 回答时间:2016-11-11 00:41:02
zengyi703-16313 回答时间:2016-11-11 08:08:42
谢楼主分享
高二毛 回答时间:2016-11-11 10:44:26
感谢分享
anny 回答时间:2016-11-12 08:24:56
多谢老师分享!!!
feixiang20 回答时间:2017-5-26 09:51:56
0.png
, r+ F1 @9 N: l! [
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版