51单片机1602LCD显示数字频率计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;硬件连接:1602lcd 显示000000hz 短接p1.4--p3.5则显示0000010hz

;LCD1602显示在不增加外部计数硬件的情况下,本试验软件可测最高频率达到460KHz

;工作原理:

;1S 钟内对输入脉冲所计数的次数则为频率值。

;16位二进制加法计数器的最大计数值为65535。

;设置定时器0 工作在定时方式1,定时1S。

;设置定时器1 工作在计数方式1,对输入脉冲进行计数,溢出产生中断。

;将定时器1中断定义为优先。在中断处理程序里对中断次数进行计数。1S到后,

;将中断次数和计数器里的计数值取出进行综合数据处理,处理后的数据送LCD1602显示? ;信号来源:

;1、软件里对P1.4定时取反,形成输出脉冲,接到P3.5 可自测。

; 显示结果:P1.4 →P3.5 显示:000010 (Hz)

;如果有条件的话,可使用专用设备(信号发生器和频率计)进行校正。

;频率计的程序

;包含:外部中断设置,中断服务程序,定时程序,定时服务程序

;以及数据处理,显示,包括三位十进制数转化为四位BCD码,

;------------------------------------------------------------

BEEP BIT P3.7

LCD_RS BIT P2.0

LCD_RW BIT P2.1

LCD_EN BIT P2.2

LCD_X EQU 3FH ;LCD 地址变量

TIMER_H EQU 30H ;定时器高位字节单元

TIMER_L EQU 31H ;定时器低位字节单元

TIMCOUNT EQU 32H ;时间中断数

INT_G EQU 35H ;中断计数缓冲单元高地址

INT_H EQU 34H ;中断计数缓冲单元中地址

INT_L EQU 33H ;中断计数缓冲单元低地址

T_S EQU 36H ;数据显示低位

T_M EQU 37H ;数据显示中位

T_H EQU 38H ;数据显示高位

T_G EQU 39H ;数据显示最高位

;----------------------------------------------------------

ORG 0000H

JMP MAIN ;主程序开始

ORG 000BH

JMP TIMER_INT ;定时器T0中断服务程序

ORG 001BH ;定时器T1中断服务程序

JMP TIMER1

ORG 0030H

;----------------------------------------------------------

MAIN:

MOV SP,#60H ;设置SP指针

LCALL PRO_SET ;初始化

CALL SET_LCD

LCALL TIM_T0

;-----------------------------------------------------------

;LCD1602是慢速显示器件,故100MS显示一次。

;-----------------------------------------------------------

MAIN1:

MOV R5,40

MAIN2:

ACALL DELAY1 ;3ms

DJNZ R5,MAIN2

ACALL SBIN_SBCD

CALL CONV

JMP MAIN1

;------------------------------------------------------------

;T1计数器中断服务子程序

;计T1计数器溢出次数

;------------------------------------------------------------

TIMER1:

INC 2AH

RETI

;------------------------------------------------------------

;初始化程序

;------------------------------------------------------------

PRO_SET: MOV A,#00H

MOV B,#00H

MOV 2AH,A

MOV P0,#0FFH

MOV P1,#0FFH

MOV P2,#0FFH

MOV INT_H,#00H

MOV INT_L,#00H

MOV INT_G,#00H

MOV T_S,#00H

MOV T_H,#00H

MOV T_M,#00H

MOV T_G,#00H

MOV TIMCOUNT,#00H

MOV TIMER_H,#04CH ;定时50 MS

MOV TIMER_L,#10H ;

CLR BEEP

SETB P3.5 ;P3.5端口置输入状态

RET ;T1(TIMER1的外部输入脚);-----------------------------------------------------

;LCD 初始化设置

;-----------------------------------------------------

SET_LCD:

CLR LCD_EN

CALL INIT_LCD ;初始化LCD

CALL DELAY1

MOV DPTR,#INFO1 ;指针指到显示信息1

MOV A,#1 ;显示在第一行

CALL LCD_SHOW

MOV DPTR,#INFO2 ;指针指到显示信息2

MOV A,#2 ;显示在第二行

CALL LCD_SHOW

RET

;-----------------------------------------------------

INFO1: DB " CYMOMETER ",0 ;LCD 第一行显示信息INFO2: DB "FREQ: HZ ",0 ;LCD 第二行显示信息

;-----------------------------------------------------

;LCD 接口初始化

;8位I/O控制

;-----------------------------------------------------

INIT_LCD:

MOV A,#38H ;双列显示,字形5*7点阵

CALL WCOM

CALL DELAY1

MOV A,#38H ;双列显示,字形5*7点阵

CALL WCOM

CALL DELAY1

MOV A,#38H ;双列显示,字形5*7点阵

CALL WCOM

CALL DELAY1

MOV A,#0CH ;开显示,关光标,

CALL WCOM

CALL DELAY1

MOV A,#01H ;清除LCD 显示屏

CALL WCOM

CALL DELAY1

RET

相关文档
最新文档