51+12864液晶调试成功

发布者:心灵清澈最新更新时间:2015-10-29 来源: eefocus关键字:12864液晶  调试成功 手机看文章 扫描二维码
随时随地手机看文章
51+12864液晶调试成功


#include
#define uchar unsigned char
#define uint unsigned int
#define LCDLCDDisp_off  0x3e
#define LCDLCDDisp_on   0x3f
#define Page_Add    0xb8
#define LCDCol_Add  0x40
#define Start_Line  0xC0
 
 #define data_ora P0
 sbit LCDMcs=P2^1; //H-选择右半屏信号
 sbit LCDScs=P2^2;  //H-选择左半屏信号
 sbit RESET=P2^3; //低电平复位
 sbit LCDDi=P2^4;
 sbit LCDRW=P2^5;
 sbit LCDEnable=P2^6;
uchar code Hz_xu[]=
 {
0x02,0xF2,0x12,0x12,0x1E,0x00,0x80,0x80,0xFF,0xA0,0x90,0x88,0x86,0x84,0x80,0x00,
0x01,0x03,0x41,0x81,0x7F,0x00,0x00,0x40,0xFF,0x40,0x23,0x0C,0x10,0x60,0x20,0x00
 };
uchar code jia[]=
 {
0x00,0x02,0x02,0xE2,0xAA,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0xE2,0x02,0x02,0x00,0x00,
0x82,0x4A,0x2A,0x1E,0x4B,0x8A,0x7A,0x02,0x02,0x7B,0x4A,0x4A,0x7A,0x02,0x02,0x00
 };
uchar code de[]=
 {
0x10,0x88,0xE4,0x3B,0x12,0x04,0xF4,0x94,0xF4,0x9F,0x94,0xF4,0x94,0xF4,0x04,0x00,
0x01,0x00,0xFF,0x00,0x42,0x3A,0x02,0x3A,0x42,0x4A,0x52,0x42,0x62,0x0A,0x32,0x00
 };


void LCDdelay(uint t)
uint i,j;
      for(i=0;i     for(j=0;j<10;j++)
    ;
}

void CheckState()
{
  uchar dat,DATA;
  LCDDi=0;//Di=0,表示DB7-DB0为显示指令数据
  LCDRW=1;//RW=1,表示数据被读到 DB7-DB0
  do
  {
   DATA=0x00;
   LCDEnable=1;
 LCDdelay(2);
 dat=DATA;
 LCDEnable=0;
 dat=0x80&dat;//仅当第七位为0时菜可操作(判断BUSY信号)
  }
   while(!(dat==0x00));
}
void write_com(uchar cmdcode)
{
   CheckState(); //检查是否忙
   LCDDi=0;
   LCDRW=0;
   P0=cmdcode;
   LCDdelay(2);
   LCDEnable=1;
   LCDdelay(2);
   LCDEnable=0;
}
 void inti_lcd()
 {
   LCDdelay(100);
   LCDMcs=1; //关闭两屏
   LCDScs=1;
   LCDdelay(100);
   write_com(LCDLCDDisp_off); //关屏
   write_com(Page_Add+0);  //设置页地址
   write_com(Start_Line+0); //设置起始行
   write_com(LCDCol_Add+0);  //设置起始列
   write_com(LCDLCDDisp_on);  //开屏
 }
 void write_data(uchar LCDDispdata)
{
   CheckState(); //检查是否忙
   LCDDi=1;
   LCDRW=0;
   P0=LCDDispdata;
   LCDdelay(2);
   LCDEnable=1;
   LCDdelay(2);
   LCDEnable=0;
}
void Clr_Scr()  //清楚LCD内存程序{
{
   uchar j,k;
   LCDMcs=0; //打开两屏
   LCDScs=0;
   write_com(Page_Add+0);
   write_com(LCDCol_Add+0);
    for(k=0;k<8;k++)
 {write_com(Page_Add+k);
  for(j=0;j<64;j++)
    {
      write_com(LCDCol_Add+j);
   write_data(0x00);//控制列数0-63,共64列,列表地址自动加1
    }
  }
}

void hz_LCDDisp16(uchar page,uchar column,uchar code*hzk)
 
  uchar j=0,i=0;
  for(j=0;j<2;j++)
   {
    write_com(Page_Add+page+j);
    write_com(LCDCol_Add+column);
 for(i=0;i<16;i++)
     write_data(hzk[16*j+i]);
   }
}
void main()
{
 inti_lcd();
 while(1)
 {
 Clr_Scr();
//  LCDdelay(500);
 LCDMcs=1;
 LCDScs=0; //左屏开显示
 hz_LCDDisp16(0,32,Hz_xu);//为某个汉字的首地址
 LCDMcs=0;//右屏开显示
 LCDScs=1;
 hz_LCDDisp16(2,0,jia);
 hz_LCDDisp16(2,16,de);
 LCDdelay(500);
  }
}

关键字:12864液晶  调试成功 引用地址:51+12864液晶调试成功

上一篇:51单片机的C语言延时的一些总结
下一篇:51驱动1602液晶+按键 protues仿真

推荐阅读最新更新时间:2024-03-16 14:38

51单片机系列——LCD1602显示计算器上按键字符
昨天研究了矩阵按键在proteus7.8上的仿真问题,今天直接上个实例,用LCD1602显示在计算器上按下的按键字符。 仿真图: LCD1602.h #ifndef _LCD1602_H_ #define _LCD1602_H_ #include reg52.h //重定义关键字 #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif /********************************** PIN口定义 ***************************
[单片机]
<font color='red'>51</font>单片机系列——LCD1602显示计算器上按键字符
基于AT89C2051单片机的大气温度采集和记录系统
1 引 言 大气温度的测量具有重要意义, 一般是采用各种温度计进行人工测量, 并定时记录测量结果, 这种方法费时费工, 十分不便。本文提出了一种非常小巧的大气温度测量和记录装置, 能对范围为- 55 ℃ ~ + 125 ℃ 的温度进行定时自动测量, 同时记录测量结果, 精度最高可达0. 0625℃ 。 2 系统原理 系统结构如图1所示。系统主要由AT89C2051单片机和外围电路构成。其基本思想是由串行时钟芯片DS1306 提供时间基准, 由温度传感器DS18B20进行温度测量, 温度数据存储在DS2433中。AT89C2051单片机负责整个系统的协调控制。 AT89C2051是一款低电压, 高性能的CMOS 8位单片机, 片内含2
[单片机]
基于AT89C20<font color='red'>51</font>单片机的大气温度采集和记录系统
51单片机基础结构
·8位CPU·4kbytes程序存储器(ROM) (52为8K) ·128bytes的数据存储器(RAM) (52有256bytes的RAM) ·32条I/O口线·111条指令,大部分为单字节指令 ·21个专用寄存器 ·2个可编程定时/计数器·5个中断源,2个优先级(52有6个) ·一个全双工串行通信口 ·外部数据存储器寻址空间为64kB ·外部程序存储器寻址空间为64kB ·逻辑操作位寻址功能·双列直插40PinDIP封装 ·单一 5V电源供电 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及
[单片机]
基于增强型8051单片机实现记忆示波器的设计和应用研究
1、 引言 示波器是电子测量的基本仪器。由于其具有图形显示实时、直观和形象等特性,在一般的物理实验室中它也是常用仪器之一。众所周知,示波器是依据输入电压调制的电子束扫描、荧屏余辉以及人眼的暂留效应等原理制成的;它要求输入周期信号;对于非周期性的信号,普通示波器是无能为力的,必须使用具有记忆功能的专用示波器,但这种示波器价格高昂,一般的物理实验室无法大量配置。 信息时代,个人计算机大量普及。普通物理实验室以及一般的中学都已配备了大量的计算机(以下称PC)。但这些PC大都用于文字信息处理和计算工作,其内在的功能还远远没有发挥,实际上造成了巨大的浪费。 我们知道,PC具有很强的图像显示功能。如果能够开发、利用这一功能,配上外部接
[单片机]
基于增强型80<font color='red'>51</font>单片机实现记忆示波器的设计和应用研究
基于AT89C51系列单片机和霍尔传感器实现测控系统的设计
近年来,随着传感器技术的不断发展,特别是单片机技术的广泛应用,采用单片机与PC机构成的小型传感器测控系统越来越多。因为它们很好地结合了单片机的价格低,功能强,抗干扰能力好,温限宽和面向控制等优点及Pc机操作系统中Windows的高级用户界面、多任务、自动内存管理等特点。在这种测控系统中,单片机主要进行实时数据采集及预处理,然后通过串行口将数据送给PC机,PC机再对这些数据进一步处理,例如求均值、方差、画动态曲线与计算给定、打印输出的各种参数等任务。 这里采用霍尔传感器作为前端进行数据采集,然后在单片机控制下进行A/D转换,并将信号通过串口送给PC机进行绘图处理。 1 系统介绍 系统可以分为3个部分。第一部分是信号源,由霍尔
[单片机]
基于AT89C<font color='red'>51</font>系列单片机和霍尔传感器实现测控系统的设计
C51单片机头文件和启动文件
STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 reg51.h //特殊寄存器的字节地址和位地址,sfr定义字节变量、sbit定义位变量,用通俗名作为变量名,并赋地址值,从而用名称来使用这些特殊寄存器。 intrins.h //定义了一些外部函数,在 C51 单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用 汇编 时一样简便. /*-- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Ele
[单片机]
89C51单片机怎么样?89C51单片机过时了吗
89C51单片机是一款8位单片机,最常用的是艾特梅尔产的AT89C51,我在上学时是用的最多的一款单片机芯片,现在来说它早已停产多年了。我认为尽管这样,作为一种性价比很高的芯片非常适合刚接触单片机的小白们学习,我认为在一些低端产品中还是能见到它的“踪影”,下面我来谈谈我的看法。 单片机作为一种控制类芯片,不管其性能是如何发展,现在仍然没有摆脱它的基本架构。我认为作为刚学单片机的新手来说这款芯片并没有过时,俗话说“万仗高楼平地起”,我们学单片机不仅仅是学单片机芯片本身的内部结构,我认为更重要的是学习单片机的一些硬件外设和软件部分。从这一方面来讲选一款经典的低端芯片来学习是我们的明智之举,一来可以增加我们学习的自信心,二来也可以节
[单片机]
基于C8051F000的多通道数据采集范围控制系统
1 引 言      在实际应用中,对被控对象的物理参数(温度、湿度、位移、电流、电压等)在一定的范围内进行控制,是单片机的典型应用之一。很多宏观要求精确控制的场合,其微观控制过程,仍可归结为是对某些参数变化范围的控制。如,传统的三相异步电机从启动到正常运行,其电流、电压和温度的变化;抽水塔水位的变化;机床刀具的行程变化及数字电表的自动量程变换等。这些控制过程最显著的特点是:被控物理量都是一个变化范围,而非某一个精确的“点”。有效控制物理量变化范围的方法很多,本文重点介绍利用C8051F000单片机片内8路高性能的12位ADC数据采集系统和可编程窗口检测器,实现对多路参数变化范围控制的硬件组成和软件设计方法。 2 C805
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved