文档库 最新最全的文档下载
当前位置:文档库 › MSP430f149驱动LCD1602

MSP430f149驱动LCD1602

MSP430f149驱动LCD1602
MSP430f149驱动LCD1602

/************************************************

*MSP430f1602写的1602液晶显示程序*

* 2012-08-24 19:11 *

*硬件连接:P2 数据口P6.3--RS P6.4--RW P6.5--E *

************************************************/

#include"msp430x14x.h"#include"msp430x14x.h"

#define uint unsigned int

#define rw(x) P3OUT=(P3OUT&(~BIT6))|(x?BIT6:0);

unsigned char table0[]="diansai 2010-7";

unsigned char table1[]="liudaquan";

//**************延时***********************************

void delay(uint z)

{

uint t,y;

for(t=z;t>0;t--)

for(y=110;y>0;y--);

}

//*******写命令*****************************************

void write_com(unsigned char com)

{

P3OUT&=~BIT5;//作为RS选择端低电平有效

rw(0);

P4OUT=com;

delay(5);

P3OUT|=BIT7;

//delay(5);

P3OUT&=~BIT7;

}

//*******写数据*************************************************** void write_data(unsigned char date)

{

P3OUT|=BIT5;//作为RS选择端高电平有效劳

rw(0);

P4OUT=date;

delay(5);

P3OUT|=BIT7;//作为E选择端=1;

// delay(5);

P3OUT&=~BIT7;

}

//********初始化******************************************

void init()

{

P3DIR=0xff;//P3输出作控制口

P3SEL=0;

P3OUT=0x00;

P3OUT&=~BIT7;//E

P3OUT&=~BIT5;//RS

P4DIR=0XFF;//P4输出作数据口

P4SEL=0;

P4OUT=0X00;

write_com(0x38);//显示模式设置

write_com(0x0c);//开显示,不显光标

write_com(0x06);//数据地址指针

write_com(0x01);//清屏

_BIS_SR(GIE);//两个开总中断的方法随便用哪一个

// _EINT();

}

//************显示函数2********************

display2(unsigned char x,unsigned char *p)

{

unsigned char y=0; //y要给其初值0否则出乱码

write_com(x);

while(p[y]!=0x00)

{

write_data(p[y]);

y++;

delay(5);

}

}

//***************主函数**************************************************** void main()

{

WDTCTL=WDTPW+WDTHOLD; //关看门狗

init();

display2(0x80+0x01,table0); display2(0x80+0x40+0x03,table1); }

LCD1602汇编显示程序

;1602显示ABC LCD_RS EQU P2.5 LCD_RW EQU P2.6 LCD_EN EQU P2.7 LCD_DATA EQU P3 ;----------------- ORG0000H JMP START ORG0030H ;----------------- LCD: CALL LCD_INIT MOV A, #80H CALL LCD_WCMD MOV A, #'A' CALL LCD_WDATA MOV A, #'B' CALL LCD_WDATA MOV A, #'C' CALL LCD_WDATA AJMP$ ;---------------- DELAY5MS: MOV R6, #10 DL1:DJNZ R7, $ DJNZ R6, DL1 RET ;---------------- LCD_INIT: CALL DELAY5MS MOV A, #38H CALL LCD_WCMD CALL DELAY5MS

CALL DELAY5MS MOV A, #06H CALL LCD_WCMD MOV A, #01H CALL LCD_WCMD MOV A, #0CH CALL LCD_WCMD RET ;===================================== LCD_WCMD: CALL CHECKBUSY CLR LCD_RS JMP W_LCD ;---------------- LCD_WDATA: CALL CHECKBUSY SETB LCD_RS W_LCD: CLR LCD_RW MOV LCD_DATA, A SETB LCD_EN NOP CLR LCD_EN RET ;---------------- CHECKBUSY: PUSH ACC MOV LCD_DATA, #255 CLR LCD_RS SETB LCD_RW BUSYLOOP: SETB LCD_EN NOP MOV A, LCD_DATA CLR LCD_EN JB ACC.7, BUSYLOOP POP ACC RET

lcd1602四线驱动

LCD1602 4 位数据线连接方式驱动程序(转载) 2008-10-14 11:00 LCD1602 4 位数据线连接方式驱动程序(转载) /* 单片机 I/O口使单片机资源的重要组成部分,也是用来扩展外围设备的必选资源, 尽可能以更少的 I/O口实现更多的功能是单片机工程师追求的目标,现在的一些串 行器件也为这一目标的实现添加了更多的可能性,比如 I2C总线,MAXIM 力推 的 1-WIRE 等等,都可以以很少的I/O 口实现更多的功能,当然这是以降低一定的速度 为代价的。 显示器件多见的是 LED数码管,LCD 液晶屏等。一般的数码管成本低廉,在显示内 容要求不多的时候适用;LCD 液晶屏以更多的显示空间得到了许多人的爱好,不过 成本上要高的多(市场价在 20元左右),本文以 LCD1602为例说明如何驱动液晶屏。 LCD1602 外接的控制接口有RS,R/W,E;数据接口为 DB7--DB0。总共有11 跟 线与单 片机的 I/O口连接,若使用标准的 51单片机,至少占用了一个端口再加上另一个端 口的部分 I/O 口。这再很多应用场合是不大可取的。所以很有必要减少连接数。从 其数据手册上介绍的 4线连接方式可以达到只使用 7个 I/O口即可满足要求,其中为 3 个控制口 RS , R/W , E 和数据口的 DB7--DB 4 ;写入数据或指令的顺序是先写高半个 字节,再写低半个字节。 其中 P2 口的高四位接到 LCD1602 的 DB7-DB4,P2.2-P2.3 分别接 RS,E; RW 接地

下面给出驱动源程序*/ /* -------------------------------------------------------- 液晶 LCD1602C 使用4 条数据线(D4~D7) ---------------------------------------------------------- */ /* ------------------------------------------------------------ LCD 引脚定义 1---GND 2---VCC 3---VO 4---RS 5---RW 6---EN 7 到 14--D0-D7 15--背景灯+ 16--背景灯- ---------------------------------------------------------------- */ #include #include #define LCD_DATA P2 sbit LCD1602_RS=P2^2; sbit LCD1602_EN=P2^3; //1602_RW 接地 int p=0; /* 函数说明 ----------------------------- */ void LCD_init(void);

电力载波芯片

电力载波芯片ST7538及其应用 摘要:介绍一种最新推出的电力载波调制解调器芯片ST7538的基本原理,给出ST7538的主要控制电路和接口电路,讨论应用该芯片后些注意事项。 关键词:电力载波通信 ST7538 家庭网络工业网络 利用电力线作为通信介质的电力载波通信,具有极大的方便性、免维护性、即插即用等优点,在很多情况下是人们首选的通信方式。ST7538是最近SGSTHOMSON公司在电力载波芯片ST7536、ST7537基础上推出的又一款半双工、同步/异步FSK(调频)调制解调器芯片。该芯片是为家庭和工业领域电力线网络通信而设计的,与ST7536和ST7537相比,主要具有以下特点: *有8个工作频段,即:60kHz、66kHz、72kHz、76kHz、82.05kHz、86kHz、110k Hz和132.5kHz; *内部集成电力线驱动接口,并且提供电压控制和电流控制; *内部集成+5V线性电源,可对外提供100mA电流; *可编程通信速率高达4800bps; *提供过零检测功能; *具有看门狗功能; *集成了一个片内运算放大器; *内部含有一个具有可校验和的、24位可编程控制寄存器; *采用TQFP44封装。 可以看出,ST7538是一款功能强大的、单芯片电力线调制解调器。 图1 1 ST7538工作原理

ST7538是采用FSK调制技术的高集成度电力载波芯片。内部集成了发送和接收数据的所有功能,通过串行通信,可以方便地与微处理器相连接。内部具有电压自动控制和电流自动控制,只要通过耦合变压器等少量外部器件即可连接到电力网中。ST7538还提供了看门狗、过零检测、运算放大器、时钟输出、超时溢出输出、+5V电源和+5V电源状态输出等,大大减少了ST7538应用电路的外围器件数量。此外,该芯片符合欧洲CENELEC(E N50065-1)和美国FCC标准。图1为ST7538内部原理框图。 1.1 发送数据 当RxTx为低时,ST7538处于发送数据状态。待发数据从TxD脚进入ST7538,时钟上升沿时被采样,并送入FSK调制器调制。调制频率由控制寄存器bit0~bit2决定,速率由控制寄存器bit3~bit4决定。调制信号经D/A变化、滤波和自动电平控制电路(ALC),再通过差分放大器输同到电力线。当打开时间溢出功能,且发送数据时间超过1s或3s时,TOUT变为高电平,同时发送状态自动转为接收状态。这样可以避免信道长时间被某一节点(ST7538)点用。 1.2 接收数据 当RxTx为高时,ST7538处于接收数据状态。信号由模拟输入端RAI脚进入ST7538,经过一个带宽±10kHz的带通滤波器,送入一个带有自动增益AGC的放大器。该滤波器可以通过控制寄存器bit23置零取消滤波功能。自动增益放大器可以根据电力线的信号强度自动调整。为提高信噪比,经过放大器的信号送入一个以通信频率为中心点、带宽为±6kHz 的窄带滤波器。此信号再经过解调、滤波和锁相,变成串行数字信号,输出给出ST7538 相连的微处理器。

lcd1602按键显示程序

#include<> #include<> //包含_nop_()函数定义的头文件 typedef unsigned int uint ; typedef unsigned char uchar ; sbit RS=P2^0; //寄存器选择位,将RS位定义为引脚 sbit RW=P2^1; //读写选择位,将RW位定义为引脚 sbit E=P2^2; //使能信号位,将E位定义为引脚 sbit BF=P0^7; //忙碌标志位,,将BF位定义为引脚 " uchar keyscan(); void delay1ms(); void delay(unsigned char n); unsigned char BusyTest(void); void WriteInstruction (unsigned char dictate); void WriteAddress(unsigned char x); … void WriteData(unsigned char y); void LcdInitiate(void); void delay1ms() { unsigned char i,j; for(i=0;i<10;i++) for(j=0;j<33;j++); } ! void delay(unsigned char n) { unsigned char i; for(i=0;i

lcd1602显示程序

lcd1602显示程序 液晶显示简介①液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。 ②液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(StaTIc)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(AcTIve Matrix)三种。 ③液晶显示器各种图形的显示原理: 线段的显示 点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。 字符的显示 用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为1,其它的为0,为1的点亮,为0的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显

LCD1602资料及单片机对其驱动

技术支持:https://www.wendangku.net/doc/ca14075053.html,/bbs 主 讲:wang1jin Wang1jin 带您从零学单片机 配套开发板:WJ-V4.0 AVR+51开发板 第三章:LCD 部分

技术支持:https://www.wendangku.net/doc/ca14075053.html,/bbs 主 讲:wang1jin 单片机驱动LED ?LCD1602简介 ?LCD1602硬件原理图?LCD1602工作方式?LCD1602时序及应用?LCD1602显示应用流程 ?实例操作:在LCD1602上显示一个字符?实例操作:在LCD1602上显示一串字符?实例操作:在LCD1602上显示自定义图形

这里介绍的字符型液晶模块是一种用 5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里我们使用常用的2行16个字的LCD1602液晶模块来介绍它的编程方法。 技术支持:https://www.wendangku.net/doc/ca14075053.html,/bbs 主讲:wang1jin

LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,其代码与标准的ASCII字符代码一致。因此,我们只要写入显示字符的ASCII码即可,这种标准化的设计给使用带来很大的方便。 比如大写的英文字母“A”的ASCII代码是01000001B (41H),显示时单片机往液晶模块写入显示指令,模块就把地址41H中的点阵字符图形显示出来,我们就能在相应位置上看到字母“A”。 技术支持:https://www.wendangku.net/doc/ca14075053.html,/bbs 主讲:wang1jin

电力线载波通讯驱动芯片

GM3533电力线载波通信线驱动芯片 1、产品简介 GM3533是一款应用于电力线载波的线驱动器,内部包含了2个电流反馈型放大器。芯片具有极低的失真,可以确保在电力载波通信频段范围内发送功率谱带外信号符合规范,并且具有高达1A的电流输出能力,可以应对强烈的电力载波信道阻抗变化,在重载情况下仍然能保证信号的发送质量。工作电流可以用外接电阻进行设置,同时可以用数字控制端口按照设定值的1/2、3/4静态电流进行工作,可以根据信道状况通过软件调节,使芯片的驱动性能得到进一步的优化。芯片工作电压范围可以高达28V。 芯片内部集成了过流保护、温度补偿等单元模块,确保了芯片在各种条件下性能稳定可靠,使芯片在电力载波应用中具有优越的性能。2、应用范围 ■电力载波通信 3、特色 ■工作电压:6V至28V ■大信号带宽:>20MHz ■3次谐波抑制: >40dBc@10M/10Vpp/50Ω负载 >50dBc@5M/10Vpp/50Ω负载 >60dBc@2M/10Vpp/50Ω负载 >76dBc@500K/10Vpp/50Ω负载■2次谐波抑制: >55dBc@10M/10Vpp/50Ω负载 >60dBc@5M/10Vpp/50Ω负载 >70dBc@2M/10Vpp/50Ω负载 >80dBc@500K/10Vpp/50Ω负载■工作电流外部设定,可数字控制■摆率:500V/us ■最大差分输出:2倍工作电压-6V@50Ω负载 ■TTL/CMOS兼容 ■温度范围-40℃to+85℃ 4、封装类型 ■QFN4×4-16L

5、功能引脚定义 图1、GM3533Top View 序号名称说明 1INP2OP2输入正端 2INN2OP2输入负端 3INN1OP1输入负端 4INP1OP1输入正端 5EN1使能端1 6EN2使能端2 7GND接地端 8GND接地端 9OUTP OP2输出 10OUTP OP2输出 11OUTN OP1输出 12OUTN OP1输出 13VDD供电端 14VDD供电端 15VCM共模电平,外接电容16REXT电流设定端,外接电阻17EP散热底盘,接地 注意:EP必须在PCB设计时接露铜散热区

LCD1602液晶显示实验要点

实验报告 实验名称: [LCD1602液晶显示实验]姓名: 学号: 指导教师: 实验时间: [2013年6月15日] 信息与通信工程学院

LCD1602液晶显示实验 1.实验原理 1.1 基本原理 1.1.1 1602字符型LCD简介 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。 1.1.2 1602LCD的基本参数及引脚功能 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图1-2所示: 图1-2 1602LCD尺寸图 1.1602LCD主要技术参数: 显示容量: 16×2个字符 芯片工作电压: 4.5~5.5V 工作电流: 2.0mA(5.0V) 模块最佳工作电压: 5.0V 字符尺寸: 2.95×4.35(W×H)mm 2.引脚功能说明: 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表: 表1-3引脚接口说明表 编 符号引脚说明编号符号引脚说明 号 1 VSS 电源地9 D 2 数据 2 VDD 电源正极10 D 3 数据 3 VL 液晶显示偏压11 D 4 数据 4 RS 数据/命令选择12 D 5 数据 5 R/W 读/写选择13 D 6 数据 6 E 使能信号14 D 7 数据 7 D0 数据15 BLA 背光源正极 8 D1 数据16 BLK 背光源负极

1.1.3 1602LCD的指令说明及时序 1602液晶模块内部的控制器共有11条控制指令,如表1-4所示: 表1-4 控制命令表 序号指令RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示0 0 0 0 0 0 0 0 0 1 2 光标返回0 0 0 0 0 0 0 0 1 * 3 置输入模式0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制0 0 0 0 0 0 1 D C B 5 光标或字符移位0 0 0 0 0 1 S/C R/L * * 6 置功能0 0 0 0 1 DL N F * * 7 置字符发生存贮器 地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到CGRAM或 DDRAM) 1 0 要写的数据内容 11 从CGRAM或 DDRAM读数 1 1 读出的数据内容 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)读写操作时序如图1-5和1-6所示: 图1-5 读操作时序

已经采用过-LCD1602显示字符和(RAM)数字的汇编程序

单片机LCD1602显示字符和数字的汇编程序(无聊原创) 1,单片机和LCD1602的连线,和程序结果显示如下图: 2,LCD第一行显示字符XIAORENGUANG第二行显示RAM中40H到46H中的数字。程序如下: ORG 0000H AJMP MAIN RS EQU P2.4 RW EQU P2.5 E EQU P2.6 MAIN: MOV SP,#60H MOV 40H,#01H MOV 41H,#02H MOV 42H,#03H MOV 43H,#04H MOV 44H,#05H MOV 45H,#06H MOV 46H,#07H ACALL DD1 ;DD1是LCD初始化

MOV DPTR,#TABLE1 ACALL DD2;DD2是LCD第一行显示TABLE1 ACALL PPP ;PPP是LCD第二行显示RAM中40H到46H中的数据 SJMP $ DD1: MOV p0,#01H ;清屏 CALL ENABLE MOV p0,#38H ;显示功能 CALL ENABLE MOV p0,#0FH ;显示开关控制 CALL ENABLE MOV p0,#06H ;+1 CALL ENABLE RET DD2: MOV p0,#80H;第一行的开始位置 cALL ENABLE CALL WRITE1;到TABLE1取码? RET DD3: MOV p0,#0C0H;第二行的位置 CALL ENABLE CALL WRITE1;到TABLE2 取码 RET ENABLE: CLR RS ;送命令 CLR RW CLR E CALL DELAY SETB E RET WRITE1: MOV R1,#00H ;显示table中的值 A1: MOV A,R1;到table取码 MOVC A,@A+DPTR call wRITE2 ;显示到lcd INC R1 CJNE A,#00H,A1 ;是否到00h RET WRITE2:MOV p0,A ;显示 SETB RS CLR RW CLR E CALL DELAY SETB E RET

[VHDL代码]LCD1602驱动

[VHDL代码]LCD1602驱动 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity LCD1602 is Port ( Clk : in std_logic; --状态机时钟信号,同时也是液晶时钟信号,其周期应该满足液晶数据的建立时间Sec_low,Sec_high,Min_low,Min_high,Hour_low,Hour_high: in std_logic_vector(3 downto 0); LCD_RS : out std_logic; --寄存器选择信号 LCD_RW : out std_logic; --液晶读写信号 LCD_EN : out std_logic; --液晶时钟信号 LCD_Data : out std_logic_vector(7 downto 0)); --液晶数据信号 end LCD1602; architecture Behavioral of LCD1602 is type STATE_TYPE is (START,write_C,write_D,WRITE_BYTE_C,WRITE_BYTE_D,wait_3m1,wait_3m2,wait_5m1,wait_5m2,w ait_100m); type MY_ARRAY1 is array(0 to 4) of std_logic_vector(7 downto 0); type MY_ARRAY2 is array(0 to 7) of std_logic_vector(7 downto 0);--长度为14的8位/字数组 constant c_d: MY_ARRAY1:=(x"38",x"0c",x"06",x"01",x"84"); signal d_d: MY_ARRAY2:=(x"20",x"20",x"3A",x"20",x"20",x"3A",x"20",x"20"); signal STATE: STATE_TYPE:=START; signal w_c_flag : integer range 0 to 2:=0; signal w_d_flag : integer range 0 to 2:=0; signal write_c_cnt : integer range 0 to 5:=0; signal write_d_cnt : integer range 0 to 8:=0; signal cnt : integer range 0 to 10000:=0; signal count : integer range 0 to 10000:=0; begin LCD_RW <= '0' ; --写数据 d_d(0)<="0000"&Hour_high+x"30"; d_d(1)<="0000"&Hour_low+x"30"; d_d(3)<="0000"&Min_high+x"30"; d_d(4)<="0000"&Min_low+x"30"; d_d(6)<="0000"&Sec_high+x"30"; d_d(7)<="0000"&Sec_low+x"30";

电力线载波通讯芯片市场与应用前景

电力线载波通讯芯片市场与应用前景 市场需求 ---- 作为通讯技术的一个应用领域,电力载波通讯技术近几年才在中国真正出现。由于它的实用性以及在中国巨大的市场前景,迅速被各家公司争相采用。 ---- 一户一表,取消用电中间层,降低居民用电价格,消除用电过程腐败现象。配合中国的用电制度改革,以计算机为基础的自动抄表系统成为电力部门响应国家这一政策的解决方法。自动抄表系统目前主要有有线通讯技术和电力载波通讯技术。有线通讯技术作为传统方法,以其稳定性占有优势。但有线通讯铺线工程浩大,而且容易被人为损坏;同时居民楼已建成,再在墙壁表面拉线,难以让居民接受。电力载波通讯技术能有效解决上述问题,它利用现有交流电源线作为通讯线路,省去了不切实际的铺线工程,优势明显。自动抄表系统还适用于水表、煤气表等家用生活表。 ---- 智能大厦、智能小区已成为市场热点,各公司纷纷加入这一新兴领域。智能大厦、智能小区是一个综合性的系统工程,包含许多小系统。各家各户、每一房间也存在铺设通讯线路问题,例如消防报警系统、防盗报警系统等,把各报警点集中起来统一处理,采用电力载波通讯有其无法比拟的优越性。因此对智能大厦、智能小区底层通讯方式的选取,各公司不约而同把电力载波通讯作为首选。 ---- 在有些干扰大、布线困难的工业自动化控制系统,采用电力载波通讯方式能达到事半功倍的效果。电力载波通讯技术适用范围相当广泛,电力线在现代生活中已无处不在,只要能满足通讯要求,而又不便布线,都可采用电力载波通讯技术。 电力线通讯特点 ---- 电力线是给用电设备传送电能的,而不是用来传送数据的,所以电力线对数据传输有许多限制。 ---- 1.配电变压器对电力载波信号有阻隔作用,所以电力载波信号只能在一个配电变压器区域范围内传送。 ---- 2.三相电力线间有很大信号损失(10dB-30dB)。通讯距离很近时,不同相间可能会收到信号。一般电力载波信号只能在单相电力线上传输。 ---- 3.不同信号藕合方式对电力载波信号损失不同,藕合方式有线-地藕合和线-中线藕合。线-地藕合方式与线-中线藕合方式相比,电力载波信号少损失十几dB,但线-地藕合方式不是所有地区电力系统都适用。 ---- 4.电力线存在本身固有的脉冲干扰。目前使用的交流电有50Hz和60Hz,则周期为20ms和16.7ms。在每一交流周期中,出现两次峰值,两次峰值会带来两次脉冲干扰,即电力线上有固定的100Hz或120Hz 脉冲干扰,干扰时间约2 ms,固定干扰必须加以处理。有一种利用波形过0点的短时间内进行数据传输的方法,但由于过0点时间短,实际应用与交流波形同步不好控制,现代通讯数据帧又比较长,所以难以应用。 ---- 5.电力线对载波信号造成高削减。当电力线上负荷很重时,线路阻抗可达1欧姆以下,造成对载波信号的高削减。实际应用中,当电力线空载时,点对点载波信号可传输到几公里。但当电力线上负荷很重时,只能传输几十米。因此,只有进一步提高载波信号功率来满足数据传输的要求,提高载波信号功率会增加产品成本和体积。而且,单一提高载波信号功率往往并不是有效的方法。 ---- 6.电力线上存在高噪声。电力线上接有各种各样的用电设备,阻性的、感性的、容性的,有大功率的、小功率的。各种用电设备经常频繁开闭,就会给电力线上带来各种噪声干扰,而且幅度比较大。用藕合电

lcd1602液晶封装函数

//端口定义 #define DBPort P0 //LCD数据端口 sbit LcdRs = P2^0; sbit LcdRw = P2^1; sbit LcdEn = P2^2; sbit Lcdbf = P0^7; //LCD忙标志Busy Flag void delay(unsigned int t) //延时 { while(t--); } void LCD_Wait(void) //读忙状态 { LcdRs=0; LcdRw=1; LcdEn=1;delay(10);LcdEn=0; //下降沿 while(Lcdbf) { LcdEn=0;LcdEn=1; //仿真才需要此语句,实际硬件中不需要} } void LCD_Write(bit style, unsigned char input) //写数据1/命令0 { LcdRs=style; LcdRw=0; DBPort=input; LcdEn=1;delay(10);LcdEn=0; LCD_Wait(); } void LCD_Initial(void) //初始化LCD { LCD_Write(0,0x38); //8位数据端口,2行显示,5*7点阵 delay(300); LCD_Write(0,0x0c); //显示模式 LCD_Write(0,0x01); //清屏 LCD_Write(0,0x06); //输入模式 } void GotoXY(unsigned char x, unsigned char y) //移动光标到指定位置{ if(y==0) LCD_Write(0,0x80|x);

1602液晶显示计算器电路图及程序

#include #include #include #include unsigned char code Error[]={"error"}; unsigned char code Systemerror[]={"system error"}; unsigned char code Lcd[]={"lcd calculate"}; char str[16]; sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; /*********************** 函数功能:延时1ms ***********************/ void delay1ms() { unsigned char i,j; for (i=0;i<10;i++) for (j=0;j<33;j++) ; } /************************ 函数功能:延时n毫秒 入口参数:n ************************/ void delaynms(unsigned char n) { unsigned char i; for (i=0;i

51单片机控制1602LCD显示程序

LCD显示电路 #include sbit RS=P3^7; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW=P3^6; //读写选择位,将RW位定义为P2.1引脚 sbit E=P2^7; //使能信号位,将E位定义为P2.2引脚 sbit BF=P0^7; //忙碌标志位,将BF位定义为P0.7引脚 #define Lcd_Data P0 #include #include //包含_nop_()函数定义的头文件 unsigned char code string1[ ]= {0x77,0x75,0x20,0x79,0x61,0x6E,0x67,0x20,0x79,0x61,0x6E,0x67,0x20,0x20,0x20,0x20}; //第一行显示的字符 void Lcd_delay1ms() // 函数功能:延时1ms //注:不同单片机不同晶振需要对此函数进行修改 { unsigned char i,j; for(i=0;i<90;i++) for(j=0;j<33;j++); } void Lcd_delay(unsigned int n) // 函数功能:延时若干毫秒,入口参数:n { unsigned int i; for(i=0;i

/***************************************************** 函数功能:判断液晶模块的忙碌状态 返回值:result。result=1,忙碌;result=0,不忙 ***************************************************/ bit Lcd_BusyTest(void) { bit result; RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; //E=1,才允许读写 _nop_(); //空操作 _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 result=BF; //将忙碌标志电平赋给result E=0; return result; } /***************************************************** 函数功能:将模式设置指令或显示地址写入液晶模块 入口参数:dictate ***************************************************/ void Lcd_WriteCom (unsigned char dictate) { while(Lcd_BusyTest()==1); //如果忙就等待 RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0; E=0; //E置低电平(写指令时就是让E从0到1发生正跳变,所以应先置"0" _nop_(); _nop_(); //空操作两个机器周期,给硬件反应时间 Lcd_Data=dictate; //将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 E=1; //E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令} /***************************************************** 函数功能:指定字符显示的实际地址 入口参数:x

LCD1602显示屏地驱动设置及例程

LCD1602显示屏的驱动设置及例程 一般来说,LCD1602有16条引脚,据说还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。我手里这块LCD1602的型号是HJ1602A,是绘晶科 技公司的产品,它有16条引脚。如图1所示: 图1 再来一张它的背面的,如图2所示: 引脚号符号引脚说明引脚号符号引脚说明 1 VSS 电源地9 D 2 数据端口 2 VDD 电源正极10 D 3 数据端口 3 VO 偏压信号11 D 4 数据端口 4 RS 命令/数据12 D 5 数据端口 5 RW 读/写13 D 6 数据端口 6 E 使能14 D 7 数据端口 7 D0 数据端口15 A 背光正极

图3

图4 二.基本操作 LCD1602的基本操作分为四种: 1. 读状态:输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。 2. 读数据:输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。 3. 写命令:输入RS=0,RW=0,E=高脉冲。输出:无。 4. 写数据:输入RS=1,RW=0,E=高脉冲。输出:无。 读操作时序图(如图5): 图5 写操作时序图(如图6):

图6 时序时间参数(如图7): 图7 三.DDRAM、CGROM和CGRAM DDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下(如图8): 图8 DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。同样LCD1602共有80个字节的显存,即DDRAM。但L CD1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不

LCD1602驱动详解

一.接口 LCD1602是很多单片机爱好者较早接触的字符型液晶显示器,它的主控芯片是HD44780或者其它兼容芯片。刚开始接触它的大多是单片机的初学者。由于对它的不了解,不能随心所欲地对它进行驱动。经过一段时间的学习,我对它的驱动有了一点点心得,今天把它记录在这里,以备以后查阅。与此相仿的是LCD12864液晶显示器,它是一种图形点阵显示器,能显示的内容比LCD1602要丰富得多,除了普通字符外,还可以显示点阵图案,带有汉字库的还可以显示汉字,它的并行驱动方式与LCD1602相差无几,所以,在这里花点时间是值得的。 一般来说,LCD1602有16条引脚,据说还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。我手里这块LCD16 02的型号是HJ1602A,是绘晶科技公司的产品,它有16条引脚。如图1所示:

图1 再来一张它的背面的,如图2所示:

图2它的16条引脚定义如下:

3. VO是液晶显示的偏压信号,可接10K的3296精密电位器。或同样阻值的RM065/RM063蓝白可调电阻。见图3。 图3 4. RS是命令/数据选择引脚,接单片机的一个I/O,当RS为低电 平时,选择命令;当RS为高电平时,选择数据。 5. RW是读/写选择引脚,接单片机的一个I/O,当RW为低电平时,向LCD1602写入命令或数据;当RW为高电平时,从LCD1602读取状态 或数据。如果不需要进行读取操作,可以直接将其接VSS。 6. E,执行命令的使能引脚,接单片机的一个I/O。 7. D0—D7,并行数据输入/输出引脚,可接单片机的P0—P3任意 的8个I/O口。如果接P0口,P0口应该接4.7K—10K的上拉电阻。如果是4线并行驱动,只须接4个I/O口。 8. A背光正极,可接一个10—47欧的限流电阻到VDD。 9. K背光负极,接VSS。见图4所示。

LM1602液晶显示程序

#include #define uchar unsigned char #define uint unsigned int unsigned char code tab1[16]=" Now time is: "; unsigned char tab2[16]=" 00:00:00 "; uchar second = 30; uchar minite = 11; uchar hour = 15; sbit RS = P2^5; sbit RW = P2^6; sbit E = P2^7; void delay() { int i,j; for(i=0; i<=100; i++) for(j=0; j<=20; j++); } void Write_Command(uchar command) { P0 = command; RS = 0; RW = 0; E = 1; delay(); E = 0; } void Write_Data(uchar Data) { P0 = Data; RS = 1; RW = 0; E = 1; delay(); E = 0; } void LCD_Init(void)//初始化 { Write_Command(0x01); Write_Command(0x38);

Write_Command(0x0c); Write_Command(0x06); } void LCD_Printfc(uchar hang,uchar lie,uchar sign) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie; Write_Command(a); Write_Data(sign); } void LCD_Display(uchar *tab1) { uchar i; Write_Command(0x80); for(i=0; i<16; i++) { Write_Data(tab1[i]); delay(); } /* Write_Command(0xc0); for(i=0; i<16; i++) { Write_Data(tab2[i]); delay(); }*/ } void time_view(void) { if(second == 60) { minite ++; second = 0; } if(minite == 60) { hour++; minite = 0; } if(hour == 24)

LCD1602-51单片机汇编程序

1602汇编程序,51单片机汇编程序,仅需修改引脚定义即可。晶振大小12M,程序测试完全正确。内部包含写数据、写命令(包括读忙和不读忙)、初始化等子函数。调用时先给LCD_DAT赋值,给出需要写入的数据或命令,然后调用。 ;端口引脚定义区 LCD_RS BIT P2.4 ;1602数据命令选择端口 LCD_RW BIT P2.5 ;1602读写选择端口 LCD_EN BIT P2.6 ;1602使能端口 LCD_DATA EQU P0 ;1602数据端口 ;变量声明区 ALL_FLAG EQU 20H ;标志位 LCD_FLAG EQU ALL_FLAG.7 ;1602读忙标志位 LCD_DAT EQU 30H ;1602数据命令字 DELAYED EQU 31H ;延时字 /***************************************** 1602读命令函数,高位存至LCD_LAG中 *****************************************/ LCD_R_DATA: MOV LCD_DATA,#0FFH LCD_BUSY: CLR LCD_RS SETB L CD_RW NOP SETB L CD_EN NOP MOV Acc,LCD_DATA MOV C,Acc.7 MOV LCD_FLAG,C CLR LCD_EN NOP JB LCD_FLAG,LCD_BUSY RET /***************************************** 1602写数据函数,数据存在LCD_DAT *****************************************/ LCD_W_DATA: LCALL LCD_R_DATA SETB L CD_RS CLR LCD_RW NOP MOV LCD_DATA,LCD_DAT

相关文档