• 1602显示中文


    因1602每个字符用5*8点阵所以只能显示简单的字符,以下程序为了简洁只显示一个中文“年”

     1 /*
     2 RS =数据/命令选择端(H/L)
     3 R/W=读/写选择端(H/L)因TX-1X开发板此脚接地所以只能写不能读取,故本程序不读只写
     4 此试验板1602液晶接P0口故此数据通过P0传送
     5 lilongjiang@live.com 8/16/2010
     6  */
     7 
     8 #include<reg52.h>
     9  #define uchar unsigned char
    10  #define uint unsigned int
    11 sbit EN=P3^4;        
    12 sbit RS=P3^5;
    13 sbit dula=P2^6;        //断选
    14 sbit wela=P2^7;        //位选 因这两个芯片也接在P0口故使用液晶避免造成电压低故关闭这两个芯片
    15 uchar code year[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02};
    16 void delay(uint);
    17 uchar i;
    18 void write_com(uchar com)    //写命令
    19 {
    20     RS=0;
    21     P0=com;
    22     delay(1);
    23     EN=1;
    24     EN=0;
    25 }
    26 void write_data(uchar date)    //写数据
    27 {
    28     RS=1;
    29     P0=date;
    30     delay(1);
    31     EN=1;
    32     EN=0;
    33 }
    34 void init()
    35 {
    36     EN=0;
    37     dula=0;                //关闭断选
    38     wela=0;                //关闭位选
    39     write_com(0x38);    //开显示
    40     write_com(0x0F);    //光标
    41     write_com(0x06);    //指针
    42 }
    43 void main()
    44 {
    45     init();
    46     write_com(0x40);    //将自定义字符写入CGRAM
    47     for(i=0;i<9;i++)    //循环8次写入
    48     {
    49         write_data(year[i]);
    50     }
    51     write_com(0x80);    //写入初始地址
    52     write_data(0x00);
    53     while(1);
    54 }
    55 void delay(uint x)
    56 {
    57     uint i;
    58     while(x--)
    59         for(i=0;i<110;i++);
    60 }
  • 相关阅读:
    什么是32位汇编的flat平坦内存模式
    oracle随机操作
    网线8根排列顺序
    vb创建NT服务
    函数声明后面加个stdcall是什么意思
    一些基础问题。
    ArcGIS Server中地图打印的实现
    添加BaseCommand 和Base Tool 的注意事项
    获取字符串中的某个子字符串
    AE, C#,按纸张打印地图
  • 原文地址:https://www.cnblogs.com/lilongjiang/p/1800691.html
Copyright © 2020-2023  润新知