微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 合泰单片机笔段式LCD显示程序+电路图

合泰单片机笔段式LCD显示程序+电路图

时间:12-01 来源:互联网 点击:
电路图:



;内容:5位LCD笔段式LCD显示
;lcd接法SEG0-PD0...SEG7-PD7,SEG8-PE.0
;COM0-PC0,COM1-PC1,COM2-PC6,COM3-PC7
;完整源码下载:http://www.51hei.com/f/htbdlcd.rar
include HT66F50.inc
ds.sectiondata
COM0EQUPC.0;COM0管脚定义
COM1EQUPC.1;COM0管脚定义
COM2EQUPC.6;COM0管脚定义
COM3EQUPC.7;COM0管脚定义
SEGEQUPD;SEG管脚定义
SEG9EQUPE.0;seg8管脚定义
SEG01EQU[90H];SEG0与seg1管脚数据寄存器
SEG23EQU[91H];SEG2与seg3管脚数据寄存器
SEG45EQU[92H];SEG4与seg5管脚数据寄存器
SEG67EQU[93H];SEG6与seg7管脚数据寄存器
SEG8EQU[94H];SEG8管脚数据寄存器
SEG_0EQU[95H];SEG管脚数据处理暂存寄存器
LCD1EQU[9AH];第1位LCD显示数据寄存器
LCD2EQU[9BH];第2位LCD显示数据寄存器
LCD3EQU[9CH];第3位LCD显示数据寄存器
LCD4EQU[9DH];第4位LCD显示数据寄存器
LCD5EQU[9EH];第5位LCD显示数据寄存器
cs.sectioncode

ORG0000H
JMPA1
Q1:
DC06FH; 0
DC00AH; 1
DC073H; 2
DC03BH; 3
DC01EH; 4
DC03DH; 5
DC07DH; 6
DC00BH; 7
DC07FH; 8
DC03FH; 9
DC05FH; A
DC07CH; B
DC065H; C
DC07AH; D
DC075H; E
DC055H; F
A1:
MOVA,08H;
MOVCP0C,A;设置管脚不为比较器输入口
MOVCP1C,A;
MOVA,7FH;
MOVSCOMC,A;设置PC.0.1.6.7为COM口并使能
CLRPCC;设置PC口为输出口
CLRPDC;设置PD口为输出口
CLRPEC.0;设置PE.0为输出口
MOVA,1;
MOVLCD1,A;LCD1显示数据
MOVA,2;
MOVLCD2,A;LCD2显示数据
MOVA,3;
MOVLCD3,A;LCD3显示数据
MOVA,4;
MOVLCD4,A;LCD4显示数据
A2:
MOVA,LOWQ1;数据表地址低8位
MOVTBLP,A
MOVA,HIGHQ1;数据表地址高8位
MOVTBHP,A;
MOVA,LCD1;显示数据地址码
ADDMA,TBLP;查找数据表所在位置
TABRDSEG01;查表并存数据到SEG01
MOVA,LOWQ1;
MOVTBLP,A
MOVA,HIGHQ1;
MOVTBHP,A;
MOVA,LCD2;
ADDMA,TBLP;
TABRDSEG23;查表并存数据到SEG23
MOVA,LOWQ1;
MOVTBLP,A
MOVA,HIGHQ1;
MOVTBHP,A;
MOVA,LCD3;
ADDMA,TBLP;
TABRDSEG45;查表并存数据到SEG45
MOVA,LOWQ1;
MOVTBLP,A
MOVA,HIGHQ1;
MOVTBHP,A;
MOVA,LCD4;
ADDMA,TBLP;
TABRDSEG67;查表并存数据到SEG67
MOVA,LOWQ1;
MOVTBLP,A;
MOVA,HIGHQ1;
MOVTBHP,A;
MOVA,LCD5;
ADDMA,TBLP;
TABRDSEG8;查表并存数据到SEG8

CLRCOM0EN;设置管脚为PC.0
CLRCOM0;输出低电平
CALLRR0;调用seg管脚数据处理程序
MOVA,SEG_0;
MOVSEG,A;将处理后的数据从seg连接口输出
CLRSEG9
CALLM001;延时
SETCOM0;输出高电平
CPLSEG_0;将管脚数据取反
MOVA,SEG_0;
MOVSEG,A;数据从seg脚输出
SETSEG9
CALLM001;延时
SETCOM0EN;设置管脚为com0口输出VDD/2电压
CALLM001;延时
clrCOM1EN;设置管脚为PC.1
clrcom1 ;输出低电平
CALLRR0;调用seg管脚数据处理程序
MOVA,SEG_0;
MOVSEG,A;将处理后的数据从seg连接口输出
CLRSEG9
CALLM001;延时
SETCOM1 ;输出高电平
CPLSEG_0;将管脚数据取反
MOVA,SEG_0;
MOVSEG,A;数据从seg脚输出
SETSEG9
CALLM001;延时
SETCOM1EN;设置管脚为com1口输出VDD/2电压
CALLM001;延时
clrCOM2EN;设置管脚为PC.6
clrcom2 ;输出低电平
CALLRR0;调用seg管脚数据处理程序
MOVA,SEG_0;
MOVSEG,A;将处理后的数据从seg连接口输出
CLRSEG9
CALLM001;延时
SETCOM2;输出高电平
CPLSEG_0;将管脚数据取反
MOVA,SEG_0;
MOVSEG,A;数据从seg脚输出
SETSEG9
CALLM001;延时
SETCOM2EN;设置管脚为com2口输出VDD/2电压
CALLM001;延时
clrCOM3EN;设置管脚为PC.7
clrcom3 ;输出低电平
CALLRR0;调用seg管脚数据处理程序
MOVA,SEG_0;
MOVSEG,A;将处理后的数据从seg连接口输出
CLRSEG9
CALLM001;延时
SETCOM3 ;输出高电平
CPLSEG_0;将管脚数据取反
MOVA,SEG_0;
MOVSEG,A;将处理后的数据从seg连接口输出
SETSEG9
CALLM001;
SETCOM3EN;设置管脚为com3口输出VDD/2电压
CALLM001;延时
JMPA2
;*********************************************************
;********seg数据处理子程序********************************
;*********************************************************
;SEG01中为第一位要显示的编码SEG0与SEG1控制
;SEG23--SEG8分别控制对应的编码
;当扫描COM0时SEG(0-7)输出第0位与第1位
;当扫描COM1时SEG(0-7)输出第2位与第3位
;当扫描COM2时SEG(0-7)输出第4位与第5位
;当扫描COM3时SEG(0-7)输出第6位与第7位
;**********************************************************
RR0:
RRCSEG01;将SEG01第0位通过带进位C移到seg_0寄存器
RRCSEG_0;
RRCSEG01;将SEG01第1位通过带进位C移到seg_0寄存器
RRCSEG_0;
RRCSEG23;将SEG23第0位通过带进位C移到seg_0寄存器
RRCSEG_0;
RRCSEG23;将SEG23第1位通过带进位C移到seg_0寄存器
RRCSEG_0;
RRCSEG45;将SEG45第0位通过带进位C移到seg_0寄存器
RRCSEG_0;
RRCSEG45;将SEG45第1位通过带进位C移到seg_0寄存器
RRCSEG_0;
RRCSEG67;将SEG67第0位通过带进位C移到seg_0寄存器
RRCSEG_0;
RRCSEG67;将SEG67第1位通过带进位C移到seg_0寄存器
RRCSEG_0;移完时SEG_0寄存器则是扫描COM时所需seg口
RET;输出状态
;*********************************************************
;延时子程序
;*********************************************************
M001:
MOVA,4
MOV[8AH],A
M002:
MOVA,250
MOV[8BH],A
SDZ[8BH]
JMP$-1
SDZ[8AH]
JMPM002
RET
END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top