找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4808|回复: 3
收起左侧

基于STM32的1602液晶显示汉字“生日快乐”源程序

[复制链接]
ID:320732 发表于 2018-10-12 14:35 | 显示全部楼层 |阅读模式
lcd1602对应芯片管脚
1602
P1.0PB9
RS
P1.1PB8
R/W
P2.5PB1
E
P0.0PA0
DB0
P0.1PA1
DB1
P0.2PA2
DB2
P0.3PA3
DB3
P0.4PA4
DB4
P0.5PA5
DB5
P0.6PA6
DB6
P0.7PA7
DB7

利用自摸提取软件,得到想要显示汉字的字模。
主函数代码
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd1602.h"

  6. int main(void)
  7. {
  8. //u8 str[] = "ATOM@ALIENTEK";        
  9. int i;
  10. u8 sheng[]={0x04,0x14,0x1f,0x14,0x0e,0x04,0x1f,0x00};  //“生”
  11. u8    ri[]={0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00};  //“日“
  12. u8  kuai[]={0x0a,0x0a,0x1f,0x1b,0x1f,0x0a,0x0d,0x00};  //“快”
  13. u8    le[]={0x1e,0x10,0x14,0x1f,0x04,0x15,0x15,0x00};  //"乐"
  14.         delay_init();
  15.         NVIC_Configuration();
  16.         uart_init(9600);
  17.         GPIO_Configuration();
  18.         LED_Init();
  19.         LCD1602_Init();
  20. //        LCD1602_Show_Str(1, 0, str);
  21. //LCD1602_Show_Str(2, 1, "I love STM32");
  22. //1
  23. for(i=0;i<8;i++)                                                                      //1第一行“生”
  24.                                                                                                                                 {
  25.                                                                                                                                                                                         lcd_w_cmd(0x40+i);
  26.                                                                                                                                                                                         lcd_w_dat(sheng[i]);
  27.                                                                                                                                                                                         //Delay(100);
  28.                                                                                                                                 }
  29.                                                                                                                                 lcd_w_cmd(0x80);
  30.                                                                                                                                 lcd_w_dat(0x00);
  31. for(i=0;i<8;i++)                                                                      /2第一行“日”
  32.                                                                                                                                 {
  33.                                                                                                                                                                                         lcd_w_cmd(0x48+i);
  34.                                                                                                                                                                                         lcd_w_dat(ri[i]);
  35.                                                                                                                                                                                         //Delay(100);
  36.                                                                                                                                 }
  37.                                                                                                                                 lcd_w_cmd(0x80+1);
  38.                                                                                                                                 lcd_w_dat(0x01);
  39. for(i=0;i<8;i++)                                                                      //3第一行“快”                                                                                                                                {
  40.                                                                                                                                                                                         lcd_w_cmd(0x50+i);
  41.                                                                                                                                                                                         lcd_w_dat(kuai[i]);
  42.                                                                                                                                                                                         //Delay(100);
  43.                                                                                                                                 }
  44.                                                                                                                                 lcd_w_cmd(0x80+2);
  45.                                                                                                                                 lcd_w_dat(0x02);
  46. for(i=0;i<8;i++)                                                                      /4第一行“乐”
  47.                                                                                                                                 {
  48.                                                                                                                                                                                         lcd_w_cmd(0x58+i);
  49.                                                                                                                                                                                         lcd_w_dat(le[i]);
  50.                                                                                                                                                                                         //Delay(100);
  51.                                                                                                                                 }
  52.                                                                                                                                 lcd_w_cmd(0x80+3);
  53.                                                                                                                                 lcd_w_dat(0x03);
  54. //1I
  55. for(i=0;i<8;i++)                                                                      /5第一行第五列“生”
  56.                                                                                                                                 {
  57.                                                                                                                                                                                         lcd_w_cmd(0x40+i);
  58.                                                                                                                                                                                         lcd_w_dat(sheng[i]);
  59.                                                                                                                                                                                         //Delay(100);
  60.                                                                                                                                 }
  61.                                                                                                                                 lcd_w_cmd(0x80+4);
  62.                                                                                                                                 lcd_w_dat(0x00);
  63. for(i=0;i<8;i++)                                                                      //5第一行第六列“日”
  64.                                                                                                                                 {
  65.                                                                                                                                                                                         lcd_w_cmd(0x48+i);
  66.                                                                                                                                                                                         lcd_w_dat(ri[i]);
  67.                                                                                                                                                                                         //Delay(100);
  68.                                                                                                                                 }
  69.                                                                                                                                 lcd_w_cmd(0x80+5);
  70.                                                                                                                                 lcd_w_dat(0x01);
  71. for(i=0;i<8;i++)                                                                      //5第一行第七列“快”
  72.                                                                                                                                 {
  73.                                                                                                                                                                                         lcd_w_cmd(0x50+i);
  74.                                                                                                                                                                                         lcd_w_dat(kuai[i]);
  75.                                                                                                                                                                                         //Delay(100);
  76.                                                                                                                                 }
  77.                                                                                                                                 lcd_w_cmd(0x80+6);
  78.                                                                                                                                 lcd_w_dat(0x02);
  79. for(i=0;i<8;i++)                                                                      //5第一行第八列“乐”
  80.                                                                                                                                 {
  81.                                                                                                                                                                                         lcd_w_cmd(0x58+i);
  82.                                                                                                                                                                                         lcd_w_dat(le[i]);
  83.                                                                                                                                                                                         //Delay(100);
  84.                                                                                                                                 }
  85.                                                                                                                                 lcd_w_cmd(0x80+7);
  86.                                                                                                                                 lcd_w_dat(0x03);

  87. //2                                                                                                                                                                                                                                                        
  88. for(i=0;i<8;i++)                                                                      //1  第二行“生”
  89.                                                                                                                                 {
  90.                                                                                                                                                                                         lcd_w_cmd(0x40+i);
  91.                                                                                                                                                                                         lcd_w_dat(sheng[i]);
  92.                                                                                                                                                                                         //Delay(100);
  93.                                                                                                                                 }
  94.                                                                                                                                 lcd_w_cmd(0xc0);
  95.                                                                                                                                 lcd_w_dat(0x00);
  96. for(i=0;i<8;i++)                                                                      //1  第二行“日”
  97.                                                                                                                                 {
  98.                                                                                                                                                                                         lcd_w_cmd(0x48+i);
  99.                                                                                                                                                                                         lcd_w_dat(ri[i]);
  100.                                                                                                                                                                                         //Delay(100);
  101.                                                                                                                                 }
  102.                                                                                                                                 lcd_w_cmd(0xc0+1);
  103.                                                                                                                                 lcd_w_dat(0x01);
  104. for(i=0;i<8;i++)                                                                      //1  第二行“快”
  105.                                                                                                                                 {
  106.                                                                                                                                                                                         lcd_w_cmd(0x50+i);
  107.                                                                                                                                                                                         lcd_w_dat(kuai[i]);
  108.                                                                                                                                                                                         //Delay(100);
  109.                                                                                                                                 }
  110.                                                                                                                                 lcd_w_cmd(0xc0+2);
  111.                                                                                                                                 lcd_w_dat(0x02);
  112. for(i=0;i<8;i++)                                                                      //1  第二行“乐”
  113.                                                                                                                                 {
  114.                                                                                                                                                                                         lcd_w_cmd(0x58+i);
  115.                                                                                                                                                                                         lcd_w_dat(le[i]);
  116.                                                                                                                                                                                         //Delay(100);
  117.                                                                                                                                 }
  118.                                                                                                                                 lcd_w_cmd(0xc0+3);
  119.                                                                                                                                 lcd_w_dat(0x03);


  120.                                                                                                                                 
  121.                                                                                                                                 
  122.         while(1)
  123.         {
  124.                 LED0 = 0;
  125.                 delay_ms(200);
  126.                 LED0 = 1;
  127.                 delay_ms(200);
  128.         }
  129. }
复制代码

下载:
基于STM32的1602液晶汉字显示程序.rar (321.35 KB, 下载次数: 80)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:451468 发表于 2020-4-21 21:48 | 显示全部楼层
为啥不对呢,第一行全黑,第二行啥也没有。
回复

使用道具 举报

ID:867005 发表于 2021-11-5 09:10 | 显示全部楼层
LCD1602是字符型的液晶显示屏,不能显示汉字吧?LCD12864的显示屏能够显示汉字,使用字模提取软件
回复

使用道具 举报

ID:116773 发表于 2021-11-5 14:28 | 显示全部楼层
染沫冉 发表于 2021-11-5 09:10
LCD1602是字符型的液晶显示屏,不能显示汉字吧?LCD12864的显示屏能够显示汉字,使用字模提取软件

    LCD1602每个字符显示的点阵是5*7,而且有6个可供用户自定义的字符,可以根据需要定义简单笔划的汉字或图形。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表