找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2463|回复: 11
打印 上一主题 下一主题
收起左侧

求LCD1602实现数字,英文,中文,时间的源程序,用C语言,通俗易懂的适合新手

[复制链接]
跳转到指定楼层
楼主
求一个89c51单片机和LCD1602用C语言编写的源程序,实现数字,汉字,英文,时间的功能。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111634 发表于 2016-10-22 16:52 | 只看该作者
本帖最后由 zl2168 于 2016-10-22 16:58 编辑

LCD1602能显示数字和英文字母,不能显示汉字,虽然可显示自定义字符,但自定义字符存储器容量有限,只有8个5*8点阵或4个5*11点阵,很难组成汉字。
回复

使用道具 举报

板凳
ID:61002 发表于 2016-10-22 16:55 | 只看该作者
1602不能显示汉字,至于程序有很多,在论坛,百度搜都是有很多的
回复

使用道具 举报

地板
ID:143939 发表于 2016-10-22 17:15 | 只看该作者
zl2168 发表于 2016-10-22 16:52
LCD1602能显示数字和英文字母,不能显示汉字,虽然可显示自定义字符,但自定义字符存储器容量有限,只有8个 ...

可以分屏显示,帮帮忙,很急
回复

使用道具 举报

5#
ID:111634 发表于 2016-10-22 17:18 | 只看该作者
本帖最后由 zl2168 于 2016-10-22 17:21 编辑

要用12864
回复

使用道具 举报

6#
ID:111634 发表于 2016-10-22 17:26 | 只看该作者
本帖最后由 zl2168 于 2016-10-22 17:28 编辑

实例90  开机显示PC机时间的时钟1302(LCD1602显示)


DS 1302简介


引脚功能


操作控制字


读写时序


片内寄存器


读写子程序


电路设计


程序设计


Keil调试


Proteus仿真



Proteus仿真一下,确认有效。
实例90 开机显示PC机时间的时钟1302(LCD1602显示).rar (50.36 KB, 下载次数: 5)

摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版

书中电路和程序设计有详细说明,程序语句条条有注解。






回复

使用道具 举报

7#
ID:61002 发表于 2016-10-24 08:43 | 只看该作者
这个是以前找的12864的驱动程序,你可以参考,具体的还需要看你的接线
  1. /***************************************************************************
  2. 原创重庆三峡学院创新实验室唐老鸭
  3. ***************************************************************************/
  4. #include <reg52.h>
  5. #include <string.h>
  6. #include "delay.h"
  7. #define uchar unsigned char
  8. #define uint unsigned int
  9. sbit RW=P2^5;  
  10. sbit EN=P2^6;
  11. uint Strlen(uchar *p)
  12. {
  13.         uint i;
  14.         for(i=0;*(p+i);i++);
  15.         return i;
  16. }
  17. void WriteBytes(uchar *p)
  18. {
  19.         uchar i,j,temp;
  20.     EN=0;
  21.         for(j=0;j<3;j++)
  22.         {
  23.                 temp=p[j];
  24.                 for(i=0;i<8;i++)
  25.                 {
  26.                         if(temp & 0x80)
  27.                   RW=1;
  28.                 else RW=0;
  29.                         EN=1;
  30.                         delay(1);
  31.                         EN=0;
  32.                         temp<<=1;
  33.                 }
  34.         }
  35.         RW=1;
  36. }
  37. void SerialWriteData(uchar send)
  38. {
  39.         uchar data1[3];
  40.         data1[0]=0xfa ;     //1111 1010向液晶写数据
  41.         data1[1]=send & 0xf0;      //取高4位
  42.         data1[2]=(send<<4)&0xf0;       //取低4位
  43.         WriteBytes(data1);
  44. }
  45. void SerialWriteCmd(uchar send)
  46. {
  47.         uchar data1[3];
  48.         data1[0]=0xf8 ;                    //1111 1000向液晶写命令
  49.         data1[1]=send & 0xf0;      //取高4位
  50.         data1[2]=(send<<4) & 0xf0;       //取低4位
  51.         WriteBytes(data1);       
  52. }
  53. void init_lcd()
  54. {
  55.         SerialWriteCmd(0x0C);
  56.         SerialWriteCmd(0x06);
  57.         SerialWriteCmd(0x01);
  58. }
  59. void display_12864(uchar hang,uchar lie,uchar *p)
  60. {
  61.         uchar i;
  62.         switch(hang)
  63.         {
  64.             case 1:SerialWriteCmd(0x80+lie);break;
  65.             case 2:SerialWriteCmd(0x90+lie);break;
  66.             case 3:SerialWriteCmd(0x88+lie);break;
  67.             case 4:SerialWriteCmd(0x98+lie);break;
  68.         }
  69.         for(i=0;i<strlen(p);i++)
  70.         {
  71.             SerialWriteData(p[i]);
  72.         }      
  73. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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