61阅读

单片机原理及接口技术-LCD1602工作原理及与51单片机的接口电路

发布时间:2017-11-14 所属栏目:单片机原理及接口技术

一 : LCD1602工作原理及与51单片机的接口电路

1602LCD 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光 的厚,是否带背光在应用中并无差别

1602LCD 主要技术参数:

显示容量:16×2 个字符

芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95×4.35(W×H)mm

引脚功能说明

1602LCD 采用标准的 14脚(无背光)或 16脚(带背光)接口,各引脚接口说明如表 10-13 所示:

编号 符号 引脚说明 编号 符号 引脚说明

1 VSS 电源地 9 D2 数据

2 VDD 电源正极 10 D3 数据

3 VL 液晶显示偏压 11 D4 数据

4 RS 数据/命令选择 12 D5 数据

5 R/W 读/写选择 13 D6 数据

6 E 使能信号 14 D7 数据

7 D0 数据 15 BLA 背光源正极

8 D1 数据 16 BLK 背光源负极

表 10-13:引脚接口说明表

第 1 脚:VSS 为地电源。

第 2 脚:VDD接 5V正电源。

第 3 脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对

比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。

第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS和 R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W为低电平时可以写入数据。

第 6 脚:E端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 7~14脚:D0~D7为 8 位双向数据线。

第 15脚:背光源正极。

第 16脚:背光源负极。

图 10-57 1602LCD 内部显示地址

例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行 第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7恒定为高电平 1 所以

实际写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的, 无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。

1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形, 如图 10-58 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名

等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B (41H),

显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A”

图表 1写数据流程

图表 2写命令流程

图表 3判断LCD是否忙碌,忙则返回1

#include <reg51.h>

#include <intrins.h>

sbit rs= P3^5; //寄存器类型,1表示数据寄存器,2表示指令寄存器 sbit rw = P3^6; //读写选择,1表示读,0表示写

sbit ep = P3^7; //读写使能,下降沿使能

void delay(unsigned char ms) //延时n ms

{

unsigned char i;

while(ms--)

{

for(i = 0; i<123; i++)

{

;

}

}

}

bit lcd_bz() //判断LCD是否忙碌,1忙碌 {

bit result;

rs = 0;

rw = 1;

ep = 1;

_nop_();

_nop_();

_nop_();

_nop_();

result = (bit)(P1 & 0x80);

ep = 0;

return result;

}

void lcd_wcmd(unsigned char cmd)

{

while(lcd_bz());//判断 LCD是否忙碌

rs = 0;

rw = 0;

ep = 0;

_nop_();

_nop_();

P1 = cmd;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 1;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 0;

}

void lcd_pos(unsigned char pos)

{

lcd_wcmd(pos | 0x80);

}

//写指令 //显示地址 //写数据

void lcd_wdat(unsigned char dat)

{

while(lcd_bz());//判断 LCD是否忙碌

rs = 1;

rw = 0;

ep = 0;

P1 = dat;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 1;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 0;

}

void lcd_wstr(const unsigned char *s) //写字符串 {

unsigned char i = 0;

while(s[i] != '\0')

{

lcd_wdat(s[i]);// 显示字符

delay(1000);

i++;

}

}

void lcd_init() //LCD初始化 {

lcd_wcmd(0x38); //功能设定

delay(1);

lcd_wcmd(0x0c); //显示器开关

delay(1);

lcd_wcmd(0x06); //设定进入模式

delay(1);

lcd_wcmd(0x01); //清除显示屏,把光标移至左上角 delay(1);

}

void main(void)

{ } lcd_init();// 初始化 LCD delay(10); lcd_pos(0x01);//设置显示位置 //i = 0; while(1){ } lcd_wstr("abcdefg"); lcd_pos(0x42); lcd_wstr("abcdefg"); lcd_wcmd(0x01); delay(3);

二 : 基于AT89S51/AT89S52单片机ISP技术原理及在线编程器的实现

以ATMEL公司的AT89S51/AT89S52单片机为例,介绍ISP技术原理,及ISP在线编程器的实现方法。[www.61k.com)

AT89S51/AT89S52单片机的ISP引脚共有4个:RST、MOSI、MISO和SCK。

各引脚的功能如下:RST为在线编程输入控制端,仅在ISP下载过程中保持高电平,在系统正常工作时该引脚为系统复位端,保持低电平状态。MOSI为主机输出/从机输入的数据端,系统正常工作时,该引脚为通用I/OP1.5口线。MISO为主机输入/从机输出的数据端。系统正常工作时,该引脚为通用1/0P1.6口线。SCK为串行编程的时钟端,可实现主、从机时序的同步,该时钟频率不得超过系统时钟的1/16。

系统正常工作时,该引脚为通用I/OPl.7口线。AT89S51/AT89S52单片机的ISP引脚功能如下图所示。

at89s52 基于AT89S51/AT89S52单片机ISP技术原理及在线编程器的实现

ISP下载是基于串行传输方式,并且符合SPI协议。在SPI协议中,数据的发送和接收是同步进行的,即在同步时钟的作用下,在发送数据的同时也接收数据。

ISP的时序如下图所示。每一字节的数据都是低位在先,高位在后,在串行时钟的作用下逐位传输。在传输过程中,数据是在时钟输入端为高电平时有效,在时钟输入端低电平时更新数据,在编写ISP下载程序时务必注意这一点。

at89s52 基于AT89S51/AT89S52单片机ISP技术原理及在线编程器的实现

ISP下载功能的指令集如下表所示。

at89s52 基于AT89S51/AT89S52单片机ISP技术原理及在线编程器的实现

使用上述指令时,需注意以下事项:

1.要进行ISP编程,首先要确保RST引脚为高电平,且该高电平一直持续到整个编程过程结束。

2.ISP编程操作是通过不同的指令实现的,以编程使能命令作为其他命令的前导命令,必须首先执行编程使能命令,再执行其他命令。例如要擦除芯片,首先执行编程使能命令,然后执行芯片擦除命令,这样才能完成操作擦除。

3.各个命令有自己的格式,使用不同命令时,必须严格按照命令的格式进行,例如在芯片擦除命令中,虽然有2个多字节可为任意数据,但也要发送。

4.ISP数据传输符合SPI协议,虽然在发送数据的同时也接收数据,但接收数据的取舍是由用户决定。

5.在ISP编程中尤其是写Flash的过程中,最好不要被意外情况中断,比如断电,或者RST引脚电压变低,这样容易造成芯片内部的Flash永久性损坏。at89s52 基于AT89S51/AT89S52单片机ISP技术原理及在线编程器的实现

AT89S51/AT89S52单片机的在线编程(ISP)电路设计如下:计算机并行接口共有25个口线,丰要包括数据端口DO—D7(端口发地址为378H,用于数据输出);状态端口Busy、nAck.PE、Select、nError(端口地址为379H,用于数据输入);控制端口nSelin、nlnit、AnrtoFeed、nStrobe(端口地址为37AH,用于输出控制)。从中选出4个口线来模拟ISP所需的引脚,非常灵活,只需考虑数据的输入、输出方向及操作方便,但要注意同一端口的数据方向必须一致,例如数据端口是8位同时操作的,只能全部作为输入或输出,而不能将一部分作输入,另一端分作输出。电路下图可实现ISP(在系统编程)的功能。

该电路在计算机并行接口部分,用第⑥脚模拟SCK、第⑦脚模拟MOSI,第⑨脚模拟RST、第⑩脚模拟MISO。用第④脚来控制驱动隔离电路SN74AS244的使能端。注意不同端口操作地址不同,这涉及程序的编写。下图中UIB的引脚A2、A3、A4并接是为了增大驱动能力,上拉电阻是为了确保空闲时的电平状态。该电路制作出的实物如右图所示。

不同的在线编程电路对应于不同的硬件电路,在程序实现上也有区别。本文的硬件电路设计完全依照共享软件Easy51Pro来完成设计的,故可上网下载此共享软件来实现在线编程,并目,下载后无须安装即可直接运行该程序以实现ISP(在线编程)的功能。

at89s52 基于AT89S51/AT89S52单片机ISP技术原理及在线编程器的实现

三 : 单片机接口芯片之(一)——74HC595及74ls164

刚开始写单片机接口的系列文章,可能会有些错误,恳请更正,一起进步!

转载请注明出处!

74HC595为现行流行的串并转换芯片,它是1个移位寄存器锁存器,既有移位功能又有锁存总能,相较74LS164来说更有实用价值。164也是应用很广泛的接口芯片,一般的书上都死以164为例来讲解的,它内部没有锁存器,只有个移位寄存器。在显示时会有闪烁!因此,595淘汰了164!

而且595的驱动电流达35毫安,足以驱动一般的TTL及CMOS芯片!放心使用!

单片机接口芯片之(一)——74HC595及74ls164

单片机接口芯片之(一)——74HC595及74ls164

595的优点是,当锁存器时钟来上升沿时才会有输出,否则保持上一次数据,这样就很好的适用于低速显示的场所!

我用了一天的时间来研究这2个芯片,觉得还是用595比较好,因为这个芯片控制起来比较安全,164会出现乱码现象!下面是我的硬件电路图:

单片机接口芯片之(一)——74HC595及74ls164

用3个IO口轻松的控制十八个七段数码管,而且速度是大约每秒执行200次左右,应该没多大问题,这样即可很轻松的实现静态显示。

下面是我的计数程序,很简单的!

#include<reg51.h>
#define uchar unsignedchar
unsigned char data LED[]={0X3F, 0X06, 0X5B,0X4F, 0X66, 0X6D,0X7D, 0X07, 0X7F,0X6F};
sbit sh_cp=P2^0; //移位时钟
sbitds=P2^1;//串行输入数据
sbit st_cp=P2^2; //锁存器时钟
int qq;
//write(int abc)函数是数据写入函数
//display()是显示函数
void write(int abc)
{ uchar i;
for(i=0;i<8;i++)
{
sh_cp=0;
if(abc&0x80)
ds=1;
else
ds=0;
sh_cp=1;
abc<<=1;
}
}
void display(int dx)
{
uchar n;
int d[9];
d[0]=LED[dx%10];
d[1]=LED[dx%100/10];
d[2]=LED[dx%1000/100];
d[3]=LED[dx%10000/1000];
d[4]=LED[dx%100000/10000];
d[5]=LED[dx%1000000/100000];
d[6]=LED[dx%10000000/1000000];
d[7]=LED[dx%10000000[www.61k.com)0/10000000];
d[8]=LED[0];
st_cp=0;
for(n=0;n<9;n++)
write(d[n]);
st_cp=1;
}
void delay(uchar t)
{
uchar a,b;
for(a=t;a>0;a--)
for(b=110;b>0;b--);
}
int count()
{
return ++qq;
//delay(10);
}
void main()
{
qq=120;
while(1)
{
display(count());
// show(1859);
}
}

我写这篇文章的目的在于使大家了解常用的接口芯片及其特性74HC595可以完全兼容TTL芯片,不用接上拉电阻,使用方便,操作简单,是串转并,总线驱动的良好芯片!

也可以考虑一下164,毕竟人家曾经呼风唤雨过,现在的课本上讲的也都还是164进行IO口扩展,其程序差不多就是没有锁存器时钟信号,读者可以自己做一下!

我把164的也发上来:

电路图:

单片机接口芯片之(一)——74HC595及74ls164

这里注意,接的数码管不要太多,否则会闪的很厉害,这里接了4个,差不多效果还可以!

程序:

#include<reg51.h>
unsignedchardataLED[]={0xc0,0xF9,0xA4,0xB0,0x99,//0-4
0x92,0x82,0xF8,0x80,0x90,//5-9
0x88,0x83,0xC6,0xA1,0x86,//A,b,C,d,E
0x8E,0x8C,0x89};//F,G,H,.,-}
sbit CLK=P2^0;
sbit DIN=P2^1;
void delay(int z)
{
int i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void write(char x)
{
int i;
for(i=0;i<8;i++)
{
CLK=0;
DIN= x&0x80;
CLK=1;
x<<=1;
}
}
void display(int z)
{
inti,d[4];
d[0]=z%10;
d[1]=z%100/10;
d[2]=z%1000/100 ;
d[3]=z%10000/1000;
for(i=0;i<4;i++)
{
write(LED[d[i]]) ;
}
}
voidmain()
{
int qq=0;
while(1)
{
qq++;
display(qq);
delay(1000);
}
}

四 : 《单片机原理及接口技术》:《单片机原理及接口技术》-基本信息,《单片

《单片机原理及接口技术》在分析现有教材优缺点的基础上,结合作者多年从事单片机开发和教学工作的经验,从工程应用的角度出发,介绍MCS-51及其兼容系列单片机的工作原理及其软硬件的设计开发方法。以应用实例解释功能,突出应用。提供大量的软件例程和应用实例,每章均提供了有针对性的复习思考题。

单片机原理与接口技术_《单片机原理及接口技术》 -基本信息

《单片机原理及接口技术》:《单片机原理及接口技术》-基本信息,《单片机原理及接口技术》-内容简介_单片机原理与接口技术
《单片机原理及接口技术》

《单片机原理及接口技术》一书为教育部2008年度普通高等教育“精品教材”——《单片机原理及接口技术(第3版)》精简更新而成,称高职高专版。书中增加了一些串行外设芯片扩展的内容,如SPI、串行A/D、D/A、键盘和显示器等实例;同时增加了八个实训内容。《单片机原理及接口技术(高职高专版)》可用作高职高专院校微机原理、单片机原理及应用课程的教材,也可供从事单片机产品开发的工程技术人员参考。

[www.61k.com)单片机原理与接口技术_《单片机原理及接口技术》 -内容简单介绍

《单片机原理及接口技术》一书以89C51为典型机,深入浅出地讲述单片机原理、接口及应用技术。主要内容包括:微机基础知识、89C51单片机硬件结构、指令系统、汇编语言程序设计知识、中断与定时器、89C51串行口及串行通信、89C51小系统及片外扩展、应用系统配置及接口技术和系统应用程序实例。

单片机原理与接口技术_《单片机原理及接口技术》 -目录

第1章微机基础知识
1.1微处理器、微机和单片机的概念
1.1.1微处理器(机)的组成
1.1.2存储器和输入/输出接口
1.2微机的工作过程
1.2.1执行一条指令的顺序
1.2.2执行一条指令的过程
1.2.3执行1个程序的过程
1.3常用数制和编码
1.3.1数制及数制间转换
1.3.2计算机中常用编码
1.4数据在计算机中的表示
1.4.1有符号数
1.4.2无符号数
1.589C51单片机
1.6思考题与习题
1.7实训一KeilμVision2集成开发环境简单介绍
1.7.1实训目的
1.7.2实训说明
1.7.3实训内容及步骤
第2章单片机的硬件结构和原理
2.189C51单片机的内部结构及特点
2.1.1单片机的基本组成
2.1.289C51单片机芯片内部结构
2.289C51单片机的引脚及其功能
2.389C51单片机的存储器配置
2.3.1程序存储器地址空间
2.3.2数据存储器地址空间
2.489C51CPU时序
2.5复位操作
2.5.1复位操作的主要功能
2.5.2复位电路
2.6思考题与习题
2.7实训二硬件实时在线仿真
2.7.1实训目的
2.7.2实训说明
2.7.3实训内容及步骤
第3章89C51单片机指令系统
第4章汇编语言程序设计知识
第5章中断系统
第6章89C51串行口及串行通信技术
第7章单片机小系统及片外扩展
第8章应用系统配置及接口技术
第9章系统实用程序
附录A89C51指令表
附录B89C51指令矩阵(汇编/反汇编表)
附录C8255A可编程外围并行接口芯片及接口
参考文献

单片机原理与接口技术_《单片机原理及接口技术》 -出版信息 1

出版社:清华大学出版社,北京交通大学出版社;第3版(2009年4月1日)
丛书名:国家电工电子教学基地系列教材
平装:345页
正文语种:简体中文
开本:16
ISBN:9787811231601,7811231603
条形码:9787811231601
产品尺寸及重量:22.6x18.4x1.8cm;481g
ASIN:B002AQTQ5C

单片机原理与接口技术_《单片机原理及接口技术》 -出版信息 2

出版社:北京航空航天大学;第3版(2005年10月1日)
平装
开本:0开
ISBN:7810775456,9787810775458
条形码:9787810775458
产品尺寸及重量:22.6x18.2x1.6cm;440g
ASIN:B0011CQORY

单片机原理与接口技术_《单片机原理及接口技术》 -出版信息 3

出版社:清华大学出版社;第1版(2008年7月1日)
丛书名:高等学校教材·电子信息
平装:429页
正文语种:简体中文
开本:16
ISBN:9787302169925
条形码:9787302169925
产品尺寸及重量:25.6x18.4x1.2cm;699g
ASIN:B001BU美眉4K

五 : MAX7219与单片机的接口电路及编程

下图所示为51系列单片机89C2051和MAX7219的连接图,为方便起见,图中仅画出了一位共阴极数码管U3。[www.61k.com)其它七位共阴极数码管连接和此相同。用单片机89C2051的P1口中的P1.7、P1.6、P1.5,分别和MAX7219的DIN、CLK、LOAD相连,MAX7219的段输出A~F,分别和共阴极数码管的A~F相连,位驱动DIGO和数码管的地端3,8脚相连。下面给出89C2051控制MAX7219显示的汇编语言程序。此程序已调试通过。

max7219 MAX7219与单片机的接口电路及编程

max7219 MAX7219与单片机的接口电路及编程

max7219 MAX7219与单片机的接口电路及编程

max7219 MAX7219与单片机的接口电路及编程

扩展:单片机485接口电路 / 单片机usb接口电路 / 单片机接口电路

本文标题:单片机原理及接口技术-LCD1602工作原理及与51单片机的接口电路
本文地址: http://www.61k.com/1071801.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1