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  }

转载于:https://www.cnblogs.com/lilongjiang/archive/2010/08/16/1800691.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值