登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] LCD1602自定义字符

[复制链接]
发表于 2019-2-2 20:59:54 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 尝试利用lcd1602制作一艘移动的小船
开始时间: 2019-01-31
结束时间: 2019-02-01
IMG_20190131_184433.jpg 2019-02-02 (8).png

#include <STC12C5A60S2.H>
#include <string.h>
#define DB P0
//sbit LCD1602_DB=P0;   //&Ograve;&Ocirc;&ordm;ó&Ccedil;§&Iacute;ò&sup2;&raquo;&Ograve;&ordf;&Otilde;&acirc;&Atilde;&acute;&Oacute;&Atilde;&pound;&not;&Ouml;±&frac12;&Oacute0,·&ntilde;&Ocirc;ò&raquo;á&micro;&frac14;&Ouml;&Acirc;&Icirc;&THORN;·¨&micro;&Atilde;&sup3;&ouml;&frac12;á&sup1;&ucirc;
sbit LCD1602_RS=P2^0;
sbit LCD1602_RW=P2^1;
sbit LCD1602_E=P1^2;
void delay()  //&ETH;&iexcl;&Ntilde;&Oacute;&Ecirc;±
{
  int i=2000;
while(i--);
}
void delay1()  //&sup3;¤&Ntilde;&Oacute;&Ecirc;±
{
  int i=2000,j=10;
while(j--)
while(i--);
}
void ready()  //&Aring;&ETH;&para;&Iuml;LCD1602&Ecirc;&Ccedil;·&ntilde;&acute;&brvbar;&Oacute;&Uacute;&iexcl;°&Atilde;&brvbar;&iexcl;°&micro;&Auml;×&acute;&Igrave;&not;
{
unsigned int sta;
DB = 0XFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do
{
LCD1602_E = 1;
sta=P0;  //&para;&Aacute;&Egrave;&iexcl;DB&micro;&Auml;×&acute;&Igrave;&not;
  LCD1602_E=0;
}while(sta&0x80); //0x80&Icirc;&ordf;10000000&pound;&raquo;&Oacute;&Atilde;°&acute;&Icirc;&raquo;&Oacute;&euml;&Aring;&ETH;&para;&Iuml;×&icirc;&ordm;ó&Ograve;&raquo;&Icirc;&raquo;&Ecirc;&Ccedil;·&ntilde;&Icirc;&ordf;0&pound;&not;0&micro;&Auml;&Ecirc;±&ordm;ò&Igrave;&oslash;&sup3;&ouml;&Ntilde;&shy;&raquo;·
}
void cmd(unsigned char ticmd)  //&ETH;&acute;&Ouml;&cedil;&Aacute;&icirc;
{
  ready();
DB=ticmd;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_E=1;
LCD1602_E=0;
delay();
}
void write(unsigned char charer) //&ETH;&acute;&Ecirc;&yacute;&frac34;&Yacute;
{
ready();
LCD1602_RS=1;
LCD1602_RW=0;
DB=charer;
LCD1602_E=1;
LCD1602_E=0;
delay();
}
void start1602()  //&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;1602
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x01);
}

void main()
{
//unsigned char cn[]={0x00,0x00,0x00,0x00,0x1E,0x1C,0x18,0x1F};  //&acute;&not;&Iacute;·
//unsigned char bn[]={0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x1F};  //&acute;&not;&Icirc;&sup2;
//unsigned char an[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F};  //&acute;&not;&Iacute;·3&pound;&not;&Euml;&reg;&Atilde;&aelig;
unsigned char code dn[5][8]={
                            {0x00,0x00,0x00,0x00,0x1F,0x1E,0x1C,0x1F},
                           {0x00,0x00,0x00,0x00,0x1F,0x1F,0x1E,0x1F},     
                            {0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F},
                 {0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x1F},
                {0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x1F}
                        };/*&acute;&not;&Iacute;·1*//*&acute;&not;&Iacute;·2*//*&acute;&not;&Iacute;·3*//*&acute;&not;&Iacute;·4*/ /*&acute;&not;&Iacute;·5&ordm;&Iacute;&acute;&not;&Icirc;&sup2;&Ograve;&raquo;&Ntilde;ù*/
unsigned char code en[5][8]={
                          {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F},/*&acute;&not;&Icirc;&sup2;3&ordm;&Iacute;&Euml;&reg;&Atilde;&aelig;&Ograve;&raquo;&Ntilde;ù*/
                           {0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x1F},/*&acute;&not;&Iacute;·&sup1;&yacute;&frac12;&ccedil;*/
                           {0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x1F},/*&acute;&not;&Iacute;·&sup1;&yacute;&frac12;&ccedil;1*/
                           {0x00,0x00,0x00,0x00,0x1C,0x18,0x10,0x1F},/*&acute;&not;&Iacute;·&sup1;&yacute;&frac12;&ccedil;2*/
              {0x00,0x00,0x00,0x00,0x1E,0x1C,0x18,0x1F},/*&ordm;&Iacute;&acute;&not;&Iacute;·&Ograve;&raquo;&Ntilde;ù*/
                         };

unsigned char code fn[5][8]={
                          {0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x1F},/*&acute;&not;&Icirc;&sup2;1*/
                          {0x00,0x00,0x00,0x00,0x01,0x09,0x05,0x1F},/*&acute;&not;&Icirc;&sup2;2*/
                          {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F},/*&acute;&not;&Icirc;&sup2;3&ordm;&Iacute;&Euml;&reg;&Atilde;&aelig;&Ograve;&raquo;&Ntilde;ù*/
             {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F},/*&acute;&not;&Icirc;&sup2;3&ordm;&Iacute;&Euml;&reg;&Atilde;&aelig;&Ograve;&raquo;&Ntilde;ù*/
             {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F}/*&acute;&not;&Icirc;&sup2;3&ordm;&Iacute;&Euml;&reg;&Atilde;&aelig;&Ograve;&raquo;&Ntilde;ù*/
                         };            
            
  unsigned int fen=0,num,num1=0,num2=0,num3=0;
  unsigned char *a="(^*^)",*b="(-_-)";
int i=50000;
start1602();
delay();
do{
  
  cmd(0x40);
for(num=0;num<8;num++)  //&Euml;&reg;&Atilde;&aelig;
{
   write(fn[2][num]);
}
cmd(0x48);
for(num=0;num<8;num++)  //&acute;&not;&Icirc;&sup2;
{
  write(dn[4][num]);
}
cmd(0x50);
for(num=0;num<8;num++)  //&acute;&not;&Iacute;·
{
  write(en[3][num]);
}

  fen++;
  cmd(0x01);  //&Ograve;&Eacute;&Icirc;&Ecirc;
  cmd(0x02);   //&Ograve;&Eacute;&Icirc;&Ecirc;
  cmd(0x80);
  for(num=0;num<=15;num++)
  {
   write(0);
  }

    cmd(0xc0+fen);
    while(*b!='\0')
    {
     while(i--);
   write(*b++);
   }
  
  cmd(0x81+fen);
    write(2);  //&Otilde;&yacute;&sup3;&pound;
    cmd(0x80+fen);
  write(1);
    for(i=0;i<5;i++)
  {
     cmd(0x58);
      for(num=0;num<8;num++)  //3
       {
         write(fn[num1][num]);
       }
       cmd(0x60);
      for(num=0;num<8;num++)  //4
       {
         write(dn[num2][num]);
        }
       cmd(0x68);
     for(num=0;num<8;num++)  //5
       {
         write(en[num3][num]);
       }
    cmd(0x80+fen);
     write(3);
    cmd(0x81+fen);
     write(4);
    cmd(0x82+fen);
     write(5);
     num1++;
        num2++;
        num3++;
    delay1();
  }
     num1=0;
        num2=0;
        num3=0;
    b=b-5;  //×&Ouml;·&ucirc;&acute;&reg;&Ouml;&cedil;&Otilde;&euml;&cedil;&acute;&Icirc;&raquo;
    a=a-5;  //×&Ouml;·&ucirc;&acute;&reg;&Ouml;&cedil;&Otilde;&euml;&cedil;&acute;&Icirc;&raquo;
  
   if(fen==16)
  fen=0;
  }while(1);
}

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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