液晶显示源程序代码及相关注释

最新更新时间:2012-04-17来源: 21IC关键字:液晶显示源  程序代码  相关注释 手机看文章 扫描二维码
随时随地手机看文章

**************************************************
*yj.c
*连线图:
* DB0---DPROT.0 DB4---DPROT.4 RS-------------P2.5
* DB1---DPROT.1 DB5---DPROT.5 RW-------------P2.6
* DB2---DPROT.2 DB6---DPROT.6 E--------------P2.7
* DB3---DPROT.3 DB7---DPROT.7 VLCD接10K可调电阻到GND*
*80C51的晶振频率为12MHz
*液晶显示程序
***************************************************/
#include "reg51.h"
#include

#include

#define DPORT P0
#define uchar unsigned char
sbit RS = P2^5;
sbit RW = P2^6;
sbit E = P2^7;

uchar Xpos; //列方向地址指针
uchar Ypos; //行方向地址指针


#define NoDisp 0
#define NoCur 1
#define CurNoFlash 2
#define CurFlash 3
/*延时程序
由Delay参数确定延迟时间
*/

void LcdWcn(uchar);
void LcdWc(uchar);
void WriteChar(uchar);
void LcdPos();
void LcdWd(uchar);
void LcdWdn(uchar);


void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}

/*光标设置命令
Cur 为设定光标参数
*/
void SetCur(uchar Cur)
{ switch(Cur)
{ case 0x0:
{ LcdWc(0x08); //关显示
break;
}
case 0x1:
{ LcdWc(0x0c); //开显示但无光标
break;
}
case 0x2:
{ LcdWc(0x0e); //开显示有光标但不闪烁
break;
}
case 0x3:
{ LcdWc(0x0f); //开显示有光标且闪烁
break;
}
default: break;
}
}
/*清屏命令
*/
void ClrLcd()
{ LcdWc(0x01);
}
/*在指定的行与列显示
*/
void WriteChar(uchar c)
{ LcdPos();
LcdWd(c);
}
/*正常读写操作之前检测LCD控制器
*/
void WaitIdle()
{ uchar tmp;
DPORT=0xff;
RS=0;
RW=1;
E=1;
_nop_();
for(;;)
{ tmp=DPORT;
tmp&=0x80;
if(tmp==0)
break;
}
E=0;
}

/*不检测忙的写字符子程序
*/
void LcdWdn(uchar c)
{
RS=1;
RW=0;
DPORT=c; //写入待写字符
E=1;
_nop_();E=0;
}
/*带忙检测的写字符子程序
*/
void LcdWd(uchar c)
{ WaitIdle();
LcdWdn(c);
}

/*检测忙信号的送控制字子程序*/
void LcdWcn(uchar c)
{ RS=0;
RW=0;
DPORT=c;
E=1;
_nop_();
E=0;
}
/*检测忙信号的送控制字子程序*/
void LcdWc(uchar c)
{ WaitIdle();
LcdWcn(c);
}
void LcdPos()
{ uchar tmp;
Xpos&=0x0f; //16xx型液晶的范围是0~15
Ypos&=0x01; //Y的范围是0~1
tmp=Xpos;
if(Ypos==1)
{ tmp+=0x40;
}
tmp|=0x80;
LcdWc(tmp);
}

/*LCD的复位程序
*/
void RstLcd()
{ mDelay(15); //延时15ms
LcdWcn(0x38);
mDelay(5);
LcdWcn(0x38);
mDelay(5);
LcdWcn(0x38);

LcdWc(0x38);
LcdWc(0x08);
LcdWc(0x01);
LcdWc(0x06);
LcdWc(0x0c);
}

void WriteString(char s[])
{ uchar pS=0;
for(;;)
{ WriteChar(s[pS]);
pS++;
if(s[pS]==0)
break;
if(++Xpos>=15) //每行最多显示16个字符
break;
}
}

void main()
{ uchar s1[]="Hellow World!";
RstLcd(); //复位LCD
ClrLcd();
SetCur(CurFlash); //光标显示且闪烁
Xpos=2;
Ypos=1;
WriteString(s1);
for(;;)
{;}
}

关键字:液晶显示源  程序代码  相关注释 编辑:探路者 引用地址:液晶显示源程序代码及相关注释

上一篇:液晶电视CCFL控制电路的设计技巧
下一篇:数字隔离器在智能电能计量中的应用

推荐阅读最新更新时间:2023-10-18 16:38

基于51单片机的ADC0809C程序代码
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。 A/D转换器是模拟信号源与计算机或其它数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机等数字系统进行处理、存储、控制和显示。在工业控制
[单片机]
24C01读写的c51源程序代码分享
 程序中很多NOP是冗余的,希望读者能进一步精简,但必须经过验证。   Atmel 24C01 比较特殊,为简约型。   51晶振为11.0592MHz   -----------------------------------------------------------------------------*/   #include “reg51.h   #include ”intrins.h“   sbit SCL= P1^5;   sbit SDA= P1^4;   delay()   {   unsigned int i=1200;   while(i--);   }   /*-------------------
[单片机]
可在线更新应用程序代码的DSP自举模块
针对现有DSP自举模块普遍存在程序代码更新不便的缺陷,提出了一种可便捷高效地在线更新用户应用程序代码的DSP自举模块。该模块由基于LabVIEW的图形用户界面(GUI)软件与C8051F340单片机构成。GUI软件完成DSP应用程序代码的格式转换,并通过驱动USB将转换完成的程序代码传送给C8051F340。C8051F340通过其片上USB外设接收DSP程序代码并存储于片上FLASH中,同时借助标准串行总线控制DSP完成应用程序代码的自举操作。该模块采用在线方式,可一键实现DSP应用程序代码的更新升级与自举操作。 TMS320VC54x系列DSP作为一种低功耗高速处理器在消费电子、通信等领域应用广泛 。通常为实现DSP程序
[嵌入式]
可在线更新应用<font color='red'>程序代码</font>的DSP自举模块
PIC单片机开发板独立键盘扫描+蜂鸣器响+数码管 C程序代码
/* 为自已写的独立键盘扫描+蜂鸣器响+数码管 犯的错:unsigned密写成了unsigner一直提示找不到a,b PORTD0=1;不行,要写成PORTD=0x01;才可以,经实验证得没有PORTD0没这个东西,应为RD0=1; PORTD=0x03;不是第三个灯亮,而是0000 0011是两个灯亮 PORTD=0x8则是0000 1000是第4个灯亮。。。。。出错因原进制转化,刚开始写程序进制转化混掉了。 */ #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); const unsigned
[单片机]
PIC单片机开发板独立键盘扫描+蜂鸣器响+数码管 C<font color='red'>程序代码</font>
lpc2148基于DS18B20的温度控制系统程序代码之dat=(j1)详解
//读一位数据(读位程序) 1unsigned char tmpreadbit(void) //read a bit 2{ 3 unsigned char dat; 4 DS_OUT(); //端口设置为输出 5 DS_L(); //DS=0 6 //Delayn(1); //2uS 7 DS_IN(); //input 8 //Delayn(1); 9 if(DS_R()!=0) 10 dat=1; 11 else 12 dat=0; 13 DelaynUs(50); 14 return (dat); 15} //读一个字节数据 (读字节程序) 16unsign
[单片机]
STM32F1_外部NorFlash存储程序代码
前言 今天总结“STM32F103 外部NorFlash存储程序代码”。今天提供的实例工程是存储程序代码到外部NorFlash,并执行外部NorFlash的代码(既然存储了程序代码,那么肯定也会运行NorFlash的程序)。对于储存在外部NorFlash的程序可以通过多种途径,今天主要使用MDK-ARM工具下载程序到外部NorFlash,但是需要“编程算法”,但这些算法官方都已经写好了的,我们只需要配置一下,直接使用就是了。 NOR FLASH是很常见的一种存储芯片,掉电不会丢失数据。 NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行。这点和NAND FLASH不一样。因此,在嵌入式系统中,
[单片机]
STM32F1_外部NorFlash存储<font color='red'>程序代码</font>
51单片机超声波测距程序代码
51单片机超声波测距程序代码 /超声波模块ME007显示程序 //晶振=8M //MCU=STC10F04XE //P0.0-P0.6共阳数码管引脚 //Trig = P1^0 //Echo = P3^2 #include reg52.h //包括一个52标准内核的头文件 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long //*********************************************** sfr CLK_DIV = 0x9
[单片机]
超声波测距-AVR程序代码
#include #include #define uchar unsigned char #define uint unsigned int uchar int_flag; uint qian,bai,shi,ge; uint i; float distance; // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include // External Interrupt 0 service routine interrupt void ext_int0_isr(void) {#asm( sei ) if
[单片机]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved