单片机脉冲宽度测量程序

合集下载

用51单片机的外部中断来测频率

用51单片机的外部中断来测频率
+ (unsigned long)ov_counter * 0x10000 / 500; //计算脉冲宽度
}
}
void main(void)
{
TCCR1B=0x42; //初始化T/C1,1/8分频,上升沿触发捕捉
TIMSK=0x24; //允许T/C1溢出和捕捉中断
表5-1 T/C0计时精度和时宽(系统时钟4MHz)
分频系数 计时频率 最高计时精度(TCNT0=255) 最宽时宽(TCNT0=0)
1 4MHz 0.25us 64us
8 500KHz 2us 512us
unsigned int dis[6];
uchar con[]={0xfe,0xfd,0xfb,0xf7,0xef}; //共阳型数码管控制端
init();
delay(uvoid main()
{guandz();
uchar counter1;
sbit duan=P2^6; //74HC573的LE端 U5 LED的段选端
sbit wei=P2^7; //74HC573的LE端 U4 LED的位选端
unsigned int counter2,tmp;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 共阳型数码管0—9显示
}
else
display();
}
/计数器(Timer/counter)是单片机芯片中最基本的外围接口,它的用途非常广泛,常用于测量时间、速度、频率、脉宽、提供定时脉冲信号等。相对于一般8位单片机而言,AVR不仅配备了更多的定时/计数器接口,而且还是增强型的,功能非常强大。ATmega128一共配置了2个8位和2个16位,共4个定时/计数器,本小节重点对它的一些增强功能的应用做基本的介绍。

单片机PWM(脉冲宽度调制)原理与实现

单片机PWM(脉冲宽度调制)原理与实现

、PWM原理2、调制器设计思想3、具体实现设计一、PWM(脉冲宽度调制Pulse Width Modulation)原理:脉冲宽度调制波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例。

图1所示为脉冲宽度调制系统的原理框图和波形图。

该系统有一个比较器和一个周期为Ts的锯齿波发生器组成。

语音信号如果大于锯齿波信号,比较器输出正常数A,否则输出0。

因此,从图1中可以看出,比较器输出一列下降沿调制的脉冲宽度调制波。

通过图1b的分析可以看出,生成的矩形脉冲的宽度取决于脉冲下降沿时刻t k时的语音信号幅度值。

因而,采样值之间的时间间隔是非均匀的。

在系统的输入端插入一个采样保持电路可以得到均匀的采样信号,但是对于实际中tk-kTs< (1)其中,x{t}是离散化的语音信号;Ts是采样周期;是未调制宽度;m是调制指数。

然而,如果对矩形脉冲作如下近似:脉冲幅度为A,中心在t = k Ts处,在相邻脉冲间变化缓慢,则脉冲宽度调制波xp(t)可以表示为:(2)其中,。

无需作频谱分析,由式(2)可以看出脉冲宽度信号由语音信号x(t)加上一个直流成分以及相位调制波构成。

当时,相位调制部分引起的信号交迭可以忽略,因此,脉冲宽度调制波可以直接通过低通滤波器进行解调。

二、数字脉冲宽度调制器的实现:实现数字脉冲宽度调制器的基本思想参看图2。

图中,在时钟脉冲的作用下,循环计数器的5位输出逐次增大。

5位数字调制信号用一个寄存器来控制,不断于循环计数器的输出进行比较,当调制信号大于循环计数器的输出时,比较器输出高电平,否则输出低电平。

循环计数器循环一个周期后,向寄存器发出一个使能信号EN,寄存器送入下一组数据。

在每一个计数器计数周期,由于输入的调制信号的大小不同,比较器输出端输出的高电平个数不一样,因而产生出占空比不同的脉冲宽度调制波。

图3为了使矩形脉冲的中心近似在t=kTs处,计数器所产生的数字码不是由小到大或由大到小顺序变化,而是将数据分成偶数序列和奇数序列,在一个计数周期,偶数序列由小变大,直到最大值,然后变为对奇数序列计数,变化为由大到小。

单片机脉冲计数

单片机脉冲计数

单片机脉冲计数单片机脉冲计数是指通过单片机对输入的脉冲信号进行计数。

在工业自动化、电子测量等领域中,脉冲计数广泛应用。

单片机脉冲计数是一种高精度、高可靠性的计数方式,可以实现对脉冲信号的精确计数和处理。

一、单片机脉冲计数的原理单片机脉冲计数的原理是通过单片机的计数器来实现的。

当有脉冲信号输入时,单片机的计数器开始计数。

在计数的过程中,单片机可以通过编程来实现对计数器的控制,如计数器的清零、计数器的读取等操作。

当计数结束时,单片机可以通过计算来得到脉冲信号的频率、周期、脉宽等参数。

二、单片机脉冲计数的步骤单片机脉冲计数的步骤主要包括以下几个方面:1.硬件电路设计硬件电路设计是单片机脉冲计数的重要环节。

在设计电路时,需要根据实际需要选择合适的计数器、脉冲输入口等元器件,并合理布局电路,确保电路的稳定性和可靠性。

2.编写单片机程序编写单片机程序是单片机脉冲计数的关键。

在编写程序时,需要考虑计数器的清零、计数器的读取、频率、周期、脉宽等参数的计算等多个方面。

同时,还需要考虑程序的效率和稳定性,确保程序能够正确地运行。

3.测试和调试测试和调试是单片机脉冲计数的最后一步。

在测试和调试时,需要使用示波器、计数器等设备进行检验,确保计数的精度和稳定性符合要求。

如果发现问题,需要及时进行排查和解决。

三、单片机脉冲计数的应用单片机脉冲计数在工业自动化、电子测量等领域中有着广泛的应用。

例如,可以用于物料计数、流量计量、速度检测、频率测量等方面。

在电子测量领域中,单片机脉冲计数可以实现高精度的波形测量和分析,如脉冲宽度测量、脉冲周期测量等。

四、单片机脉冲计数的优点单片机脉冲计数具有以下几个优点:1.高精度:单片机脉冲计数可以实现高精度的计数和测量,可以满足高精度的应用需求。

2.高可靠性:单片机脉冲计数采用数字化处理,具有高可靠性和稳定性,可以保证计数结果的准确性和可靠性。

3.易于扩展:单片机脉冲计数可以通过编程来实现计数器的扩展和功能的扩展,可以满足不同应用场合的需求。

脉冲宽度的测量

脉冲宽度的测量

电子科技大学综合课程设计报告基于单片机门控位的脉冲宽度测量与显示think2011/5/4一、 可行性分析及其原理:该项目是要实现脉冲宽度的测量,再把测量值用数码管显示。

为了实现这一功能我们大致把整个系统分为以下几个模块:1. 振荡器模块:产生某一特定振荡频率的时钟,一般要求这一频率较高,本题要求精度为10us ,所以采用100kHZ 的振荡频率即可。

2. 计数器模块:对振荡脉冲进行计数,用待测脉冲信号作为使能输入(或开关),这样就可以记录下脉冲有效的时间,计数值乘以10us 即为待测脉冲宽度。

3. 译码显示模块:题目中要求用数码管显示6位测量值,分别完成译码和数码管的静态显示或是动态扫描输出即可。

框图如下:二、 本次设计构思了两个方案:方案一:运用CD4518(BCD 码全加器)的级联来实现计数,CD4511七段译码,555多谐振荡器提供100kHZ 频率,待测信号输入到计数器使能。

电路连接图如下:上述方案为数码管静态显示。

优点为方案简单无需编程,只需要组合逻辑与时序逻辑即可完成。

缺点为硬件电路的连线过于复杂上容易出错且很难排除故障,另一个问题在于使用的外接振荡源精度不是很高,势必带来不小的误差。

此方案理论上可行,由于实际操作带来的不方便,我们考虑了后面一种方案。

方案二:利用单片机门控位实现脉冲宽度测量。

基本思路为:利用单片机内部定时器的GATE信号,对于定时器T0来讲,如果GATE=1,则用软件把TR0置1,且INT0为高电平时可以启动定时器T0,所以我们就把被测脉冲信号从INT0端输入,使其上升沿触发启动T0计数,下降沿停止T0计数。

定时器数值乘以机器周期即为脉冲宽度。

电路连接图如下:可以看出,电路结构由以下部分构成:1.振荡模块:12MHZ晶体振荡器,由XTAL1和XTAL2接入单片机。

2.单片机控制模块:AT89S51单片机实现控制,主要任务是对其进行必要的编程设计。

3.输出显示模块:由数码管动态扫描显示,注意P0需要外接上拉电阻。

基于单片机的脉冲宽度测量

基于单片机的脉冲宽度测量

山东科技大学电工电子实验教学中心创新性实验研究报告课程名称:单片机原理及应用实验项目名称脉冲宽度测量姓名学号_________________专业_____________ 班级____________指导教师及职称________________________开课学期2011 至2012 学年第一学期提交时间2012 年 1 月 3 日五、实验结果与分析1、实验现象、数据记录按照流程图所示,按动脉冲按钮,可以看到,显示屏显示出所测脉冲的宽度。

再次按动,可以清楚地观察到所示的示数变化。

每次显示的示数,都根据所按按钮的时间长短,即高电平的脉宽长度。

第一张图为T0工作方式,第二张图为T2捕捉方式。

六、实验结论七、指导老师评语及得分:附件:源程序等。

T0门控方式:ORG 0000HLJMP MAINORG 000BHLJMP T0_INTORG 0030H MAIN: MOV TMOD,#09HMOV TL0,#0FCHMOV TH0,#17HMOV R4,#00HMOV R3,#00HJB ,$SETB ET0SETB EAIOC: SETB TR0JNB ,$MOV R3,#00HMOV R4,#00HJB ,$CLR TR0MOV 34H,R4MOV 35H,R3LCALL BCDLCALL UBCD DIS: LCALL DISPJB ,IOCSJMP DIST0_INT:INC R3CJNE R3,#00H,NEXTINC R4NEXT: MOV TH0,#0FCHMOV TL0,#17HRETIBCD: MOV R7,#16CLR AMOV 47h,AMOV 46h,AMOV 45h,ABCD1:CLR CMOV A,35HRLC AMOV 35H,AMOV A,34HRLC AMOV 34H,AMOV A,47HADDC A,47HDA AMOV 47H,AMOV A,46HADDC A,46HDA AMOV 46H,AMOV A,45HADDC A,45HDA AMOV 45H,ADJNZ R7,BCD1RETUBCD:MOV A,45HANL A,#0F0HSWAP AMOV 50H,AMOV A,45HANL A,#0FHMOV 51H,AMOV A,46HANL A,#0F0HSWAP AMOV 52H,AMOV A,46HANL A,#0FHMOV 53H,AMOV A,47HANL A,#0F0HSWAP AMOV 54H,AMOV A,47HANL A,#0FHMOV 55H,ARETDISP:MOV R0,#55HMOV R2,#20HMOV A,#0FFHMOV P0,AACALL DIPMOV R0,#54H MOV R2,#10H ACALL DIPMOV R0,#53H MOV R2,#08H ACALL DIPMOV R0,#52H MOV R2,#04H MOV A,R2MOV P2,AMOV A,@R0MOV DPTR,#TABLE MOVC A,@A+DPTR ANL A,#7FHMOV P0,AACALL DELAY MOV R0,#51H MOV R2,#02H ACALL DIPMOV R0,#50HMOV R2,#01HACALL DIPRETDIP:MOV A,R2MOV P2,AMOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AACALL DELAYRETDELAY:MOV R5,#9FHDJNZ R5,$RETTABLE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ,80H,90H,88H,83H,0C6H,0A1H,86H,8EH ENDT2捕捉方式:T2CON EQU 0C8HTH2 EQU 0CDHTL2 EQU 0CCHRCAP2H EQU 0CBHRCAP2L EQU 0CAHTR2 BIT 0CAHORG 0000HLJMP MAINORG 000BHLJMP T0_INTORG 0030H MAIN: MOV TMOD, #01HMOV T2CON,#0FHJB ,$STR: MOV TL0, #17HMOV TH0, #0FCHMOV TH2, #00MOV TL2 ,#00MOV 50H,#00HMOV 51H,50HCLRSETB EASETB ET0JNB , $SETB TR0SETB TR2JB , $CLR TR0MOV 50H,RCAP2LMOV 51H,RCAP2HLCALL ZHUANHUAN LOOP1: LCALL DISPJB ,STRAJMP LOOP1T0_INT: MOV TL0, #17HMOV TH0, #0FCHSETBNOPNOPCLRRETI ZHUANHUAN: CLR A百度文库- 好好学习,天天向上-9 MOV 38H,51H MOV 37H,50H MOV 34H,#0 MOV 35H,#0 MOV 36H,#0 MOV R7,#16LOOP2: CLR CMOV A,37HRLC AMOV 37H ,AMOV A,38HRLC AMOV 38H ,AMOV A,36HADDC A,36HDA AMOV 36H,AMOV A,35HADDC A,35HDA AMOV 35H,AMOV A,34HADDC A,34HDA AMOV 34H,ADJNZ R7 ,LOOP2MOV R1,#35HMOV R0,#36HMOV A,#00XCHD A,@R0MOV 58H,AMOV A,@R0SWAP AMOV 57H,AMOV A,#00XCHD A,@R1MOV 56H,AMOV A,@R1SWAP AMOV 55H,AMOV A,#00MOV R0,#34HXCHD A,@R0MOV 54H,AMOV A,@R0SWAP AMOV 53H,ARETDISP: MOV R0,#53HMOV R2,#01HLOP11: MOV A,#0FFHMOV P0,AMOV A,R2MOV P2,AMOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTRCJNE R0,#55H,LOP21ANL A,#7FHLOP21: MOV P0,AACALL DELAYINC R0MOV A,R2JB ,EXIT1RL AMOV R2,AAJMP LOP11EXIT1: RETDELAY: MOV R7,#0FEHLOOP: MOV R6,#70HDJNZ R7,LOOPRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8 H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH END。

stc8 pca脉冲宽度 -回复

stc8 pca脉冲宽度 -回复

stc8 pca脉冲宽度-回复什么是STC8 PCA脉冲宽度?STC8是一款由STC公司推出的高性能单片机,而PCA(Pulse-Code Modulation)脉冲宽度调制是一种常见的数字调制技术。

将它们结合使用,就可以实现多种应用,例如控制电机速度、音频编码等。

在本文中,我们将详细介绍STC8 PCA脉冲宽度调制的原理和实现方法。

首先,我们需要理解PCA脉冲宽度调制的基本原理。

PCA是一种将模拟信号转换为数字信号的技术。

它通过对一个周期的脉冲宽度进行编码,将模拟信号的幅度信息转换为数字信号的占空比。

这样,我们可以用数字信号来模拟模拟信号的变化,从而实现信号的数字传输和处理。

在STC8单片机中,PCA模块是其内部集成的一个特殊功能模块。

它能够通过硬件自动产生PWM脉冲,并且具有多种工作模式和功能。

它的主要工作原理是通过选择不同的时钟源和计数器配置来产生不同频率和占空比的PWM波形。

STC8 PCA模块具有较高的精度和稳定性,能够满足多种应用的需求。

下面,我们将详细介绍STC8 PCA脉冲宽度调制的步骤。

步骤一:使能PCA模块首先,在使用PCA脉冲宽度调制之前,需要使能STC8单片机的PCA模块。

可以通过设置相应的寄存器来实现使能操作。

具体的操作步骤可以参考STC8的用户手册或者开发工具的相关文档。

步骤二:选择时钟源在使用PCA模块进行脉冲宽度调制之前,需要选择适当的时钟源来提供时钟信号。

STC8单片机的PCA模块可以支持多种时钟源,如系统时钟、外部时钟等。

选择不同的时钟源可以实现不同的PWM波形频率和精度。

选择合适的时钟源需要根据具体的应用需求进行。

步骤三:配置计数器和比较器在开始使用PCA模块进行脉冲宽度调制之前,还需要配置计数器和比较器的参数。

计数器决定了PWM波形的周期,比较器决定了PWM波形的占空比。

STC8单片机的PCA模块具有多个可配置的计数器和比较器,可以通过设置相应的寄存器来完成配置。

单片机PWM调光程序

单片机PWM调光程序

单片机PWM调光程序一、概述PWM(Pulse Width Modulation,脉宽调制)是一种常用的调光技术,通过控制信号的脉冲宽度来调节输出电平的平均值,从而实现对光源亮度的调节。

本文将介绍如何编写单片机PWM调光程序,并提供一个基于XX单片机的示例代码。

二、硬件准备1. 单片机:XX单片机(型号)2. 光源:LED灯(型号)3. 光敏电阻:用于实时检测环境光强度的元件4. 电路连接:将单片机的PWM输出引脚连接到LED灯的控制引脚,将光敏电阻连接到单片机的模拟输入引脚三、软件设计1. 引入头文件:根据单片机型号,引入相应的头文件,例如"xx.h"。

2. 定义宏:定义LED灯的控制引脚和光敏电阻的模拟输入引脚。

3. 初始化:设置单片机的引脚模式和PWM参数,例如设置PWM频率、占空比等。

4. 光敏检测:通过模拟输入引脚读取光敏电阻的电压值,将其转换为环境光强度的数值。

5. PWM调光:根据光敏检测到的环境光强度数值,计算对应的PWM占空比,并将其输出到LED灯的控制引脚。

四、示例代码```c#include <xx.h> // 引入相应的头文件#define LED_PIN 1 // 定义LED灯的控制引脚#define LDR_PIN 2 // 定义光敏电阻的模拟输入引脚void init_pwm() {// 设置引脚模式为PWM输出pinMode(LED_PIN, PWM_OUTPUT);// 设置PWM参数pwmSetMode(PWM_MODE_MS);pwmSetClock(100); // 设置PWM频率为100HzpwmSetRange(1024); // 设置PWM占空比范围为0-1024 }int read_ldr() {// 读取光敏电阻的电压值int ldr_value = analogRead(LDR_PIN);// 根据电压值转换为环境光强度数值int light_intensity = map(ldr_value, 0, 1023, 0, 100);return light_intensity;}void adjust_brightness(int light_intensity) {// 根据环境光强度计算PWM占空比int pwm_duty_cycle = map(light_intensity, 0, 100, 0, 1023);// 输出PWM占空比到LED灯的控制引脚pwmWrite(LED_PIN, pwm_duty_cycle);}int main() {init_pwm(); // 初始化PWMwhile (1) {int light_intensity = read_ldr(); // 光敏检测adjust_brightness(light_intensity); // PWM调光}return 0;}```五、使用方法1. 将示例代码中的XX单片机型号替换为实际使用的单片机型号。

单片机中的计数器与脉冲宽度测量

单片机中的计数器与脉冲宽度测量

单片机中的计数器与脉冲宽度测量计数器和脉冲宽度测量是单片机中常用的功能模块之一。

计数器可以用于对信号的计数和计时,而脉冲宽度测量可以用于测量信号的高电平或低电平脉冲宽度。

本文将介绍计数器的原理和应用,以及脉冲宽度测量的方法和技巧。

一、计数器的原理与应用计数器是一种用于计数和计时的电子器件,广泛应用于单片机系统中。

单片机中常用的计数器有定时器/计数器模块,可以通过编程来控制计数器的功能和工作方式。

计数器的原理是基于时钟信号进行计数。

时钟信号可以是外部信号源,也可以是内部时钟源。

计数器在每次接收到时钟信号时,根据设定的计数方式进行计数。

计数可以是递增也可以是递减,根据具体应用的需求进行选择。

计数器的应用非常广泛,常见的应用场景包括:1. 频率测量:通过计数器来测量信号的频率。

2. 周期测量:通过计数器来测量信号的周期。

3. 脉冲宽度测量:通过计数器来测量信号的高电平或低电平脉冲宽度。

4. 脉冲个数测量:通过计数器来测量信号的脉冲个数。

5. 定时器:通过计数器来实现精确的定时功能。

二、脉冲宽度测量的方法和技巧脉冲宽度测量是单片机中常用的应用之一,可以用于测量信号的高电平或低电平脉冲宽度。

下面介绍两种常用的脉冲宽度测量方法和技巧。

1. 利用捕获/比较模式:现代的单片机通常会配备捕获/比较模块,可以用于测量信号的脉冲宽度。

通过设置定时器的计数方式和捕获/比较模式,可以实现对信号脉冲宽度的测量。

2. 利用外部中断:单片机通常具有外部中断功能,可以用于检测外部信号的边沿触发。

通过设置外部中断的触发方式和中断服务程序,可以实现对信号脉冲宽度的测量。

中断服务程序可以在触发边沿时开始计时,直到下一个触发边沿时停止计时,得到信号的脉冲宽度。

脉冲宽度测量的技巧包括:1. 选择适当的计数精度:计数器的精度越高,脉冲宽度测量的准确性越高。

根据具体应用需求,选择适当的计数精度。

2. 注意信号的稳定性:脉冲宽度测量需要信号稳定,避免信号发生抖动或干扰。

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

AJMP MAIN
ORG 0003H
AJMP INTR0
ORG 0100H
;**********************初始化*********************************
MAIN: MOV DPTR,#TAB
MOV SP,#60H ;
MOV TMOD,#09H;工作在门控方式(GATE=1),定时器t0工作方式1
MOV TL0,#00H ;计数清零
MOV TH0,#01H
MOV IE,#81H ;开放定时器中断和总中断和外部中断0
MOV TCON,#11H
MOV R5,#05H
LOOP: ACALL BCD ;十六位二进制转换十进制的BCD码
ACALL UBCD ;把压缩BCD码转换成非压缩BCD码
LOOP1: ACALL LED ;显示
ACALL DELAY
DJNZ R5,LOOP1
MOV R5,08H
AJMP LOOP
;********************外部中断0服务程序************
INTR0: MOV 41H,TH0
MOV 40H,TL0
MOV TH0,#01H
MOV TL0,#00H;重新将定时器T0赋初值
RETI
;********************二—十进制转换*************
BCD: CLR A ;将41H,40H中值转换成BCD码存入3AH,3BH,3CH中MOV 3EH,40H
MOV 3FH,41H
MOV 3AH,A
MOV 3BH,A
MOV 3CH,A
MOV R7,#16
LOOP2: CLR C
MOV A,3EH
RLC A
MOV 3EH,A
MOV A,3FH
RLC A
MOV 3FH,A
ADDC A,3CH
DA A
MOV 3CH,A
MOV A,3BH
ADDC A,3BH
DA A
MOV 3BH,A
MOV A,3AH
ADDC A,3AH
DA A
MOV 3AH,A
DJNZ R7,LOOP2
RET
;*********************把压缩BCD码转换成非压缩BCD码**********
UBCD: MOV 35H,3AH
MOV A,3BH
ANL A,#0FH
MOV 37H,A
MOV A,3BH
ANL A,#0F0H
SWAP A
MOV 36H,A
MOV A,3CH
ANL A,#0FH
MOV 39H,A
MOV A,3CH
ANL A,#0F0H
SWAP A
MOV 38H,A
MOV A,35H
CJNE A,#00H,CHOOSE;判断第五位是否为零,为零则按照4位有效数值处理,小数点加在第一位(31h)上
MOV A,36H
ADD A,#10
MOV 31H,A
MOV 32H,37H
MOV 33H,38H
MOV 34H,39H
RET
CHOOSE: MOV 31H,35H;第五位不为零,小数点加在第二位(32h)上MOV A,36H
ADD A,#10
MOV 32H,A
MOV 33H,37H
MOV 34H,38H
RET
;*******************数码管显示************
LED: MOV A,31H ;显示第一位(高位)
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0F7H
MOV P2,A
LCALL DELAY
MOV A,32H ;显示第二位
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FBH
MOV P2,A
LCALL DELAY
MOV A,33H ;显示第三位
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FDH
MOV P2,A
LCALL DELAY
MOV A,34H ;显示第四位
MOVC A,@A+DPTR
MOV P0,A
MOV A,#0FEH
MOV P2,A
LCALL DELAY
RET
;****************延时********************
DELAY: MOV R6,#2
DELAY1: MOV R4,#250;;;;;;延时时间:2*250*2=1ms
DJNZ R4,$
DJNZ R6,DELAY1
RET
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;不带小数点的字型码DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;带小数点的字型码END。

相关文档
最新文档