604液晶屏输入输出C51源程序

发布者:EtherealJourney最新更新时间:2016-11-14 来源: eefocus关键字:604液晶屏  输入输出  C51 手机看文章 扫描二维码
随时随地手机看文章
#include

#include "INC\LCD1604.H"


sfr  LCD_INTER = 0x80;    //数据总线接口
 sbit LCDBUSY=LCD_INTER^7;  //标志位

sfr  LCD_CONTROL = 0xA0;   //数据总线接口
 sbit LCDRS=LCD_CONTROL^0;  //数据、指令选择
 sbit LCDRW=LCD_CONTROL^1;  //读写选择
 sbit LCDE =LCD_CONTROL^2;  //使能

 

/******************************自定义字符*******************************/
unsigned char code Symbol[40] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x04,0x0E,0x1F,0x00,0x00,0x00, //UP 01H 
         0x00,0x00,0x1F,0x0E,0x04,0x00,0x00,0x00, //DOWN 02H
         0x00,0x02,0x06,0x0E,0x06,0x02,0x00,0x00, //LEFT 03H
         0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00}; //RIGHT 04H          
/***********************************************************************/
/*名称: LCD_WriteCmd()
/*说明: 向LCD送入1字节指令数据
/*输入: cmd 要输入的指令数据 
/*输出: 无
/***********************************************************************/ 
void LCD_WriteCmd(unsigned char cmd)

 bit BF;
 do
 {
  LCDRS=0;
  LCDRW=1;
  LCD_INTER = 0xFF;
  LCDE=1;
  BF=LCDBUSY;
  LCDE=0;
 }
 while(BF==1);

 LCDE=0;
 LCDRS=0;
 LCDRW=0;
 LCD_INTER = cmd;
 LCDE=1; 
 LCDE=0;
 LCDRS=1;
 LCDRW=1;
 LCD_INTER = 0xFF;
}
/***********************************************************************/
/*名称: LCD_SendData()
/*说明: 向LCD送入1字节数据
/*输入: Word 要输入的数据 
/*输出: 无 
/***********************************************************************/
void LCD_SendData(unsigned char Word)
{   
 bit BF;
 do
 {
  LCDRS=0;
  LCDRW=1;
  LCD_INTER = 0xFF;
  LCDE=1;
  BF=LCDBUSY;
  LCDE=0;
 }
 while(BF==1);

 LCDE=0;
 LCDRS=1;
 LCDRW=0;
 LCD_INTER = Word;
 LCDE=1;   
 LCDE=0;
 LCDRS=1;
 LCDRW=1;
 LCD_INTER = 0xFF;
}

/**********************************************************************/
/*名称: LCD_Init()
/*说明: LCD初始化程序
/*输入: 无
/*输出: 无
/**********************************************************************/ 
void LCD_Init(void)
{
 LCD_WriteCmd(0x30);
 LCD_WriteCmd(0x30);
 LCD_WriteCmd(0x30);
 LCD_WriteCmd(SET_FUCTION);
 LCD_WriteCmd(CLEAR_WINDOW);
 LCD_WriteCmd(RESET_AC);
 LCD_WriteCmd(INPUT_MODE);
 LCD_WriteCmd(DISPLAY_CON);
 LCD_WriteCmd(CLEAR_WINDOW);
}

/**********************************************************************/
/*名称: LCD_WriteCGRam()
/*说明: 写入自定义字符
/*输入: 无
/*输出: 无
/**********************************************************************/
void LCD_WriteCGRam(void)
{
 unsigned int i;
 LCD_WriteCmd(0x40);
 for(i=0;i<40;i++)
 {
  LCD_SendData(Symbol[i]);
 }
 LCD_WriteCmd(CLEAR_WINDOW);
}
/**********************************************************************/
/*名称: LCD_ByteWrite()
/*说明: LCD单字符输出程序
/*输入: pos  要输出的位置
/*  byte 要输出的字符
/*输出: 无
/**********************************************************************/
void LCD_ByteWrite(unsigned char pos,unsigned char byte)
{
 LCD_WriteCmd(pos);
 LCD_SendData(byte); 
}

/**********************************************************************/
/*名称: LCD_StrNWrite()
/*说明: LCD指定长度字符串输出程序
/*输入: pos  要输出的位置
/*  *str  字符串指针
/*  length 字符串长度 
/*输出: 无
/**********************************************************************/
void LCD_StrNWrite(unsigned char pos,unsigned char *str,unsigned char length)
{
 unsigned char i;
 LCD_WriteCmd(pos);
 for(i=0;i  { 
  LCD_SendData(*(str+i));
 }
}

/**********************************************************************/
/*名称: LCD_StrWrite()
/*说明: LCD字符串输出程序
/*输入: pos  要输出的位置
/*  *str  字符串指针 
/*输出: 无
/**********************************************************************/
void LCD_StrWrite(unsigned char pos,unsigned char *str)
{
 unsigned char i;
 LCD_WriteCmd(pos);
 for(i=0;i  { 
  LCD_SendData(*(str+i));
 }
}     

关键字:604液晶屏  输入输出  C51 引用地址:604液晶屏输入输出C51源程序

上一篇:C51中的reentrant
下一篇:4线EEPROM的C51源程序

推荐阅读最新更新时间:2024-03-16 15:20

c51: 用定时器T0 ,P0输出1s 方波,中断
/* T0工作方式2,自动重载8位定时器。 设 频率:f, 定时器初值 val ,定时时间 T。 关系式 T=(2^8-val)*12/f */ //任务:f=12MHZ ,T0工作方式2,定时250us,中断2000次,P0口翻转,使P0口输出1s 的方波。 #include reg52.h #define uint unsigned int //定义全局变量 uint counter; init_T0() { TMOD=0x02; //定时器工作方式 TL0=0x06; //时间常数 TH0=0x06; IE=0x82; //开中断 TR0=1; //T
[单片机]
C51库函数积累
(1)_chkfloat_: 函数定义:unsigned char _chkfloat_ ( float val); /* number to check */ 函数功能:_chkfloat_函数检查浮点数 val 的类型。 返回值:_chkfloat_函数返回浮点数 val 的类型。 返回值 意义 0 标准浮点数 1 浮点0 2 +INF 正溢出 3 -INF 负溢出 4 NaN 非数 /*本实验测试本征库中的_chkfloat_函数: 函数定义:unsigned char _chkfloat_(float val); 返回值: Return Val
[单片机]
<font color='red'>C51</font>库函数积累
C51/C52的串口原理及参考代码
一、什么是串口(RS232 9针串口) 串口是我们的大多数微控制单元(MCU)都具有的基本的外部接口,一般串口最基本的功能就是调试,又能做数据通信的接口(数据量要小一些)。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 二、串口通信原理 一条信息的各位数据按位依次顺序的通信方式称为串行通信,传信通信可以是串口也可以是
[单片机]
<font color='red'>C51</font>/C52的串口原理及参考代码
直流电机控制Keil c51源代码
直流电机开环控制Keil c51源代码 //-----------------------函数声明,变量定义------------------------ #include reg51.h #include intrins.h #include ABSACC.H //-----------------------定义管脚---------------------------------- sbit PWM=P1^0; //PWM波形输出 sbit DR=P1^1; //方向控制 #define timer_da ta (256-100) //定时器预置值,12M时钟是,定时0.1
[单片机]
STM32之GPIO输入输出
GPIO的输出 背景:应用在点亮LED。LED串联电阻再上拉,另一端与GPIO口相连。因此,GPIO输出高电平则LED灭,输出低电平则LED亮。 第一步工作是初始化GPIO,使能外设时钟,因为GPIO是挂载在APB2中线上的。然后对GPIO_InitTypeDef结构体进行初始化,设置GPIO_Pin的具体引脚,输出频率,工作模式,如上拉,下拉,浮空等。 关于GPIO的库函数里有GPIO_SetBit( )和GPIO_ResetBits ( )两个函数,分别是设置指定的数据端口位和清除指定的数据端口位,就像置1和清零。 函数名 : GPIO_SetBits 函数原形: void GPIO_SetBits(GPIO_Type
[单片机]
C51单片机中常用的头文件
通常有reg51.h,reg52.h,math.h, ctype.h, stdio.h, stdlib.h, absacc.h, intrins.h 。 但常用的却只有reg51.h或reg52.h,math.h 。 reg51.h和reg52.h是定义51单片机或52单片机特殊功能寄存器和位寄存器的,着两个头文件中大部分内容是一样的,52单片机比51单片机多一个定时器T2,因此,reg52.h中也就比reg51.h中多几行定义T2寄存器的内容。 math.h是定义常用数学运算的,比如求绝对值、求方根、求正弦和余弦等,该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。 学习单片机应该掌握的主要内
[单片机]
编写一个简单的C51程序
简 介: 对于嵌入式系统,如果没有运行RTOS,那么程序开发中的 主函数(main())需要通过某种机制使其永远愉快的运行下去,它没有终点。如果想从main函数中退出,具体干什么是由所使用的C语言编译器决定的。 01 问题提出 今天在CSDN的 单片机led模块定义函数的问题 中看到一个有趣的问题。提问者在进行基本的C51编程实验,编写了一个简单的C51程序如下: #includevoidtest(num){switch(num){case1:P2_0=0;P2_1=0;break; } }voidmain(void){ test(1); } 程序执行完之后,可以看到实验板上的有两个LED被点亮,另外六个居然微微发亮。 如
[单片机]
编写一个简单的<font color='red'>C51</font>程序
plc带模拟量输入输出和不带模拟量输入输出有什么区别啊?
PLC是一种广泛应用的自动化控制器,它可通过输入和输出控制信号来管理各种自动化过程。PLC的“模拟量”输入输出和“数字量”输入输出是两种常见的PLC类型,它们之间有很大的差异。 PLC带模拟量输入输出与PLC不带模拟量输入输出的区别在于它们可以控制和处理的不同信号类型。模拟量输入输出和数字量输入输出都是一种用于控制系统的信号类型。 “数字量”信号是通过开关等离散的状态表示的,比如开和关、真和假等。 这种信号是二元的,只有两个可能状态:ON和OFF。在PLC的数字量输入/输出模块中,这些信号被处理为离散的值,可以用来控制开关、闸门、电机等的状态。 “模拟量”信号则是通过连续的数值进行表示的,比如电压、电流、压力、温度等。这种信号是多
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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