脉冲计数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回本节
返回目录
DISP1:
MOV DPTR,#0FF21H
MOV A,R2 MOVX @DPTR,A MOV DPTR,#CDATA MOV A,@R1 MOVC A,@A+DPTR MOV DPTR,#0FF22H MOVX @DPTR,A DISP2: DEC R1
返回本节
DJNZ R3,DISP2
课题十五 脉冲计数
一.基本原理 MCS-51系列单片机中,一般有两个定时/计数器,它们至多可 进行16位二进制计数,计数值最长为65536。 用作计数器时,外部计数脉冲应接至T0(P3.4)或T1(P3.5) ,且每个周期中其高、低电平时间均不应小于一个机器周期。 本课题中,希望对外部脉冲进行十进制计数,并用6个LED显 示器将计数结果实时显示出来。最大的计数值应能达到999999 。
mov 52h,42h
返回本节
返回目录
lp:
mov a,#36h add a,r6 da a mov r6,a mov a,#55h addc a,r5 da a mov r5,a mov a,#06h addc a,r4
返回本节
返回目录
da a mov r4,a djnz 52h,lp fdis: MOV R0,#79H MOV A,R6 LCALL PWOR MOV A,R5 LCALL PWOR MOV A,R4 LCALL PWOR
返回本节
返回目录
返回本节
返回目录
mov 42h,#0 SETB TR0 setb et0 setb ea loop: MOV R2,TH0 MOV R3,TL0 LCALL CONT2 conn: mov a,42h jz fdis ;accumulate to display ;16-bits binary number to BCD
返回本节
返回目录
⑥调用显示子程序 ⑦转③ 每当计数到65536时溢出,T0发生中断,这时只须让溢出计数次 数增1即可,TF0会由硬件自动清零。 3.参考程序 RAM 42H T0 以下程序中,内部RAM的42H用来存放T0的溢出次数。主程序 中,R2、R3临时存放T0中十六位二进制计数值的高8位和低8位 ,通过二—十进制转换后存入R4、R5、R6中。利用溢出次数, 即可得到实际的脉冲计数次数,转换为非压缩BCD码形式,再 存入显示缓冲区,即可送显示。
返回目录
CLR C MOV A,R2 RRC A MOV R2,A JNZ DISP1 MOV A,#0FFH MOV DPTR,#0FF22H MOVX @DPTR,A CLR 0D4H RET
返回本节
返回目录
CDATA:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH END 显示子程序DISP中,从显示缓冲区取出非压缩BCD码,经过查 表后得到字形码,送8155PB口(FF22H),再从8155的PA口( FF21H)送出位选码,选择相应的LED显示器显示输出。 三.实训说明 以上程序可先在PC机上汇编,消除语法错误后在单片机系统 上实际运行。连入单脉冲SP,每按一次按钮AN,显示的脉冲计 数值即增1。
返回本节
返回目录
LCALL DISP SJMP loop CONT2: CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,#10H CONT3: CLR C MOV A,R3 RLC A
返回本节
返回目录
MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R6 ADDC A,R6 DA A MOV R6,A MOV A,R5 ADDC A,R5
返回本节
返回目录
DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,CONT3 RET PWOR: MOV r1,A LCALL PWOR1
返回本节
返回目录
MOV A,r1 SWAP A PWOR1: ANL A,#0FH MOV @R0,A INC R0 RET DISP: SETB 0D4H MOV R1,#7EH MOV R2,#20H MOV R3,#00H
返回本节
返回源自文库录
2.软件设计 如前所述,内部定时/计数器T0设为计数方式,C/T需设置 为1。启动T0计数后,其计数值存于TL0和TH0,即使在计数方 式1下,其计数值最大也只能到65535。但当计数值超过65535时 ,硬件会自动将TF0置位。这样,只要统计TF0置位的次数,即 可知道实际脉冲计数值。 T0 1 以下参考程序选用T0工作于方式1,每轮计数值以二进制形 式存于TL0和TH0,经过二--十进制转换后存于R4、R5、R6。而 T0的溢出次数存于42H,每溢出一次意味着已计数65536个脉冲 。这样,利用上述R4、R5、R6和30H中的内容即可统计实际计 数的 脉 冲 个 数。 由 于只有 6个 LED显 示 器 , 因 此 只 须计 数 到 999999即可。
返回本节
返回目录
二.教学指南 1.硬件电路 在单片机开发系统上,使用8031单片机,并通过一块8155 接口芯片驱动LED显示器和键盘。LED显示器采用动态扫描,显 示驱动电路如下图所示。
返回本节
返回目录
其中,6个七段LED显示器采用共阳极接法。当8155的PB口送出 显 示 码 时 , 由 PA0~PA5 选 中 的 数 码 管 显 示 对 应 的 字 符 。 AD0~AD7用于在单片机和8155之间传递地址、数据、命令、状 态信号,它的分时功能与MCS-51单片机完全相同,可直接相连 。其它控制信号包括ALE、RD、WR、RESET,也可与单片机 相连。 单脉冲发生电路见图2,其输出脉冲SP或⁄SP接T0(P3.4) 。
返回目录
单片机系统中,通常使用七段LED显示器,采用动态扫描显 示,以简化硬件电路,降低成本。驱动七段LED显示器,至少 需两个并行口,一个送位选码选择不同的显示器,一个送显示 码以显示期望的符号。单片机自身的并行口有专门用途,需要 扩展并行口。 8155可编程接口芯片可与MCS-51系列单片机直接相连,而不 需要附加任何硬件。8155有两个8位并行口和一个6位并行口, 可以其中两个做为驱动七段LED显示器的并行口。此外,还可 以两个端口做为非编码键盘的连接口。图1电路中,以8155的PA 和PB口控制6个LED显示器。 计数脉冲由RS触发器产生,脉冲发生电路见图2,每按一次按 钮AN,则从SP产生一个正脉冲,从/SP产生负脉冲。
返回本节
返回目录
为了显示脉冲计数个数,把上面以压缩BCD码形式保存的时间 值转换成非压缩形式,存放于显示缓冲区(由低到高为内部 RAM的79H~7EH单元),然后送显示缓冲区显示。显示缓冲区 初始值置为0。 以下程序中,T0采用中断方式控制。 主程序流程图如下: ①堆栈初始化、T0置方式1计数、计数初值清零 ②溢出次数清零、T0开中断、启动T0计数 ③脉冲计数值进行二—十进制转换并存于R4、R5、R6 ④溢出次数X65536+R4R5R6送R4R5R6 ⑤R4R5R6转换为非压缩BCD码送显示缓冲区
返回本节
返回目录
;The program below can count to maximum 999999 org 000bh inc 42h reti ;times of overflow of T0
ORG 1000H CONT: MOV SP,#53H MOV TMOD,#05H MOV TH0,#00H MOV TL0,#00H
返回目录
DISP1:
MOV DPTR,#0FF21H
MOV A,R2 MOVX @DPTR,A MOV DPTR,#CDATA MOV A,@R1 MOVC A,@A+DPTR MOV DPTR,#0FF22H MOVX @DPTR,A DISP2: DEC R1
返回本节
DJNZ R3,DISP2
课题十五 脉冲计数
一.基本原理 MCS-51系列单片机中,一般有两个定时/计数器,它们至多可 进行16位二进制计数,计数值最长为65536。 用作计数器时,外部计数脉冲应接至T0(P3.4)或T1(P3.5) ,且每个周期中其高、低电平时间均不应小于一个机器周期。 本课题中,希望对外部脉冲进行十进制计数,并用6个LED显 示器将计数结果实时显示出来。最大的计数值应能达到999999 。
mov 52h,42h
返回本节
返回目录
lp:
mov a,#36h add a,r6 da a mov r6,a mov a,#55h addc a,r5 da a mov r5,a mov a,#06h addc a,r4
返回本节
返回目录
da a mov r4,a djnz 52h,lp fdis: MOV R0,#79H MOV A,R6 LCALL PWOR MOV A,R5 LCALL PWOR MOV A,R4 LCALL PWOR
返回本节
返回目录
返回本节
返回目录
mov 42h,#0 SETB TR0 setb et0 setb ea loop: MOV R2,TH0 MOV R3,TL0 LCALL CONT2 conn: mov a,42h jz fdis ;accumulate to display ;16-bits binary number to BCD
返回本节
返回目录
⑥调用显示子程序 ⑦转③ 每当计数到65536时溢出,T0发生中断,这时只须让溢出计数次 数增1即可,TF0会由硬件自动清零。 3.参考程序 RAM 42H T0 以下程序中,内部RAM的42H用来存放T0的溢出次数。主程序 中,R2、R3临时存放T0中十六位二进制计数值的高8位和低8位 ,通过二—十进制转换后存入R4、R5、R6中。利用溢出次数, 即可得到实际的脉冲计数次数,转换为非压缩BCD码形式,再 存入显示缓冲区,即可送显示。
返回目录
CLR C MOV A,R2 RRC A MOV R2,A JNZ DISP1 MOV A,#0FFH MOV DPTR,#0FF22H MOVX @DPTR,A CLR 0D4H RET
返回本节
返回目录
CDATA:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH END 显示子程序DISP中,从显示缓冲区取出非压缩BCD码,经过查 表后得到字形码,送8155PB口(FF22H),再从8155的PA口( FF21H)送出位选码,选择相应的LED显示器显示输出。 三.实训说明 以上程序可先在PC机上汇编,消除语法错误后在单片机系统 上实际运行。连入单脉冲SP,每按一次按钮AN,显示的脉冲计 数值即增1。
返回本节
返回目录
LCALL DISP SJMP loop CONT2: CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,#10H CONT3: CLR C MOV A,R3 RLC A
返回本节
返回目录
MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R6 ADDC A,R6 DA A MOV R6,A MOV A,R5 ADDC A,R5
返回本节
返回目录
DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,CONT3 RET PWOR: MOV r1,A LCALL PWOR1
返回本节
返回目录
MOV A,r1 SWAP A PWOR1: ANL A,#0FH MOV @R0,A INC R0 RET DISP: SETB 0D4H MOV R1,#7EH MOV R2,#20H MOV R3,#00H
返回本节
返回源自文库录
2.软件设计 如前所述,内部定时/计数器T0设为计数方式,C/T需设置 为1。启动T0计数后,其计数值存于TL0和TH0,即使在计数方 式1下,其计数值最大也只能到65535。但当计数值超过65535时 ,硬件会自动将TF0置位。这样,只要统计TF0置位的次数,即 可知道实际脉冲计数值。 T0 1 以下参考程序选用T0工作于方式1,每轮计数值以二进制形 式存于TL0和TH0,经过二--十进制转换后存于R4、R5、R6。而 T0的溢出次数存于42H,每溢出一次意味着已计数65536个脉冲 。这样,利用上述R4、R5、R6和30H中的内容即可统计实际计 数的 脉 冲 个 数。 由 于只有 6个 LED显 示 器 , 因 此 只 须计 数 到 999999即可。
返回本节
返回目录
二.教学指南 1.硬件电路 在单片机开发系统上,使用8031单片机,并通过一块8155 接口芯片驱动LED显示器和键盘。LED显示器采用动态扫描,显 示驱动电路如下图所示。
返回本节
返回目录
其中,6个七段LED显示器采用共阳极接法。当8155的PB口送出 显 示 码 时 , 由 PA0~PA5 选 中 的 数 码 管 显 示 对 应 的 字 符 。 AD0~AD7用于在单片机和8155之间传递地址、数据、命令、状 态信号,它的分时功能与MCS-51单片机完全相同,可直接相连 。其它控制信号包括ALE、RD、WR、RESET,也可与单片机 相连。 单脉冲发生电路见图2,其输出脉冲SP或⁄SP接T0(P3.4) 。
返回目录
单片机系统中,通常使用七段LED显示器,采用动态扫描显 示,以简化硬件电路,降低成本。驱动七段LED显示器,至少 需两个并行口,一个送位选码选择不同的显示器,一个送显示 码以显示期望的符号。单片机自身的并行口有专门用途,需要 扩展并行口。 8155可编程接口芯片可与MCS-51系列单片机直接相连,而不 需要附加任何硬件。8155有两个8位并行口和一个6位并行口, 可以其中两个做为驱动七段LED显示器的并行口。此外,还可 以两个端口做为非编码键盘的连接口。图1电路中,以8155的PA 和PB口控制6个LED显示器。 计数脉冲由RS触发器产生,脉冲发生电路见图2,每按一次按 钮AN,则从SP产生一个正脉冲,从/SP产生负脉冲。
返回本节
返回目录
为了显示脉冲计数个数,把上面以压缩BCD码形式保存的时间 值转换成非压缩形式,存放于显示缓冲区(由低到高为内部 RAM的79H~7EH单元),然后送显示缓冲区显示。显示缓冲区 初始值置为0。 以下程序中,T0采用中断方式控制。 主程序流程图如下: ①堆栈初始化、T0置方式1计数、计数初值清零 ②溢出次数清零、T0开中断、启动T0计数 ③脉冲计数值进行二—十进制转换并存于R4、R5、R6 ④溢出次数X65536+R4R5R6送R4R5R6 ⑤R4R5R6转换为非压缩BCD码送显示缓冲区
返回本节
返回目录
;The program below can count to maximum 999999 org 000bh inc 42h reti ;times of overflow of T0
ORG 1000H CONT: MOV SP,#53H MOV TMOD,#05H MOV TH0,#00H MOV TL0,#00H