1602液晶显示

/*************************************************
          designed by  weiwei
           
              2011-7-29
*************************************************/
#include<reg52.h>
#include"chip_select.h"
#define uint  unsigned int
#define uchar  unsigned char
#define LCD_COMMAND  0
#define LCD_DATA      1
//控制端口、数据端口定义
//***********************************************
sbit LcdRS =P2^2;
sbit LcdRW =P2^1;
sbit LcdEN =P2^0;
uchar code table[]="LCD1602 check ok"; //要显示内容1放入数组tablel 直接接地箱
uchar code table1[]="study up";    //要显示的内容2放入数组table1
//***********************************************
//函数声明
void delay_ms(uint);
void Lcd_Write(bit style, uchar input);
void Lcd_Init();
//主函数
void main()
{
  uchar m,n;
  hc_enable(0); //关闭点阵、数码管、LED的选通信号(避免IO复用引起的错误)
  Lcd_Init();                      //液晶初始化
/*  Lcd_Write(LCD_COMMAND,0x80);
  Lcd_Write(LCD_DATA,0x51); */
  Lcd_Write(LCD_COMMAND,0x80);    //显示地址设为80H(即00H,)上排第一位
  for(m=0;m<16;m++)                  //将table[]中的数据依次写入1602显示
    {
      Lcd_Write(LCD_DATA,table[m]);
      delay_ms(200);
        }
  Lcd_Write(LCD_COMMAND,0x80+0x44);    //显示地址设为0xc4H
  for(n=0;n<8;n++)        //将table1[]中的数据依次写入1602显示
    {
      Lcd_Write(LCD_DATA,table1[n]);
      delay_ms(200);
        }
  while(1);
}
//子函数定义:
//***************************************************
void delay_ms(uint k)                           
{
uint x,y;
  for(x=k;x>0;x--)
    for(y=123;y>0;y--);
}
//***************************************************
//************************************************************************
void Lcd_Write(bit style, uchar input)
张紧轮{
LcdRW=0;        //选择
LcdRS=style;    //选择指令寄存器(style==0) 选择数据寄存器(style==1)
P1=input;        //把要显示的数据送入P0
delay_ms(5);        //延时一小会儿,让1602准备接收数据
LcdEN=1;        //使能线电平变化,数据送入1602的8位数据口
LcdEN=0;
电容式触摸开关
}
//************************************************************************
//***************************************************************************************
void Lcd_Init()
{
  Lcd_Write(LCD_COMMAND,0x38);  //8位数据,双列,5*7字形
  Lcd_Write(LCD_COMMAND,0x0c);  //开启显示屏,关光标,光标不闪烁
  Lcd_Write(LCD_COMMAND,0x06);  //显示地址递增,即写一个数据后,显示位置右移一位
  Lcd_Write(LCD_COMMAND,0x01);  //清屏指令 将DDRAM里的内容全部清空
}
//***************************************************************************************

黄军导航#ifndef _CHIP_SELECT_H__
#define _CHIP_SELECT_H__
#define uchar unsigned char
#define uint unsigned int
sbit U8_EN=P2^3;                //定义U8的E引脚与单片机的P2.3连接
sbit U9_EN=P2^4;                //定义U9的E引脚与单片机的P2.4连接
sbit U10_EN=P2^6;                //定义U10的E引脚与单片机的P2.6连接           
//*****************************************************************************************************************************
//****使能要选择的芯片
void hc_enable(unsigned int m)     
    switch(m)
      {
        case  8:  { U8_EN=1;U9_EN=0;U10_EN=0;}; break;  //选择点阵            芯片8;
        case  9:  { U8_EN=0;U9_EN=1;U10_EN=0;}; break;  //选择点阵            芯片9
        case 10:  { U8_EN=0;U9_EN=0;U10_EN=1;}; break;  //选择LED、数码管    芯片10
        case  0:  { U8_EN=0;U9_EN=0;U10_EN=0;}; break;  //关闭所有的点阵、数码管、LED  芯片8、9、10全部关闭;
        default:  break;
          }
    }
包装内托//*****************************************************************************************************************************
#endif

本文发布于:2024-09-24 00:24:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/240586.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:显示   数据   选择   光标   内容   端口   点阵
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议