实验七 单片机定时、计数器实验2——脉冲计数器
单片机定时器 计数器
单片机定时器计数器单片机定时器/计数器在单片机的世界里,定时器/计数器就像是一个精准的小管家,默默地为系统的各种操作提供着精确的时间控制和计数服务。
无论是在简单的电子时钟、还是复杂的通信系统中,都能看到它们忙碌的身影。
那什么是单片机的定时器/计数器呢?简单来说,定时器就是能够按照设定的时间间隔产生中断或者触发事件的模块;而计数器则是用于对外部脉冲或者内部事件进行计数的功能单元。
我们先来看看定时器的工作原理。
想象一下,单片机内部有一个像小闹钟一样的东西,我们可以给它设定一个时间值,比如说 1 毫秒。
当单片机开始工作后,这个小闹钟就会以一个固定的频率开始倒计时,当倒计时结束,也就是 1 毫秒到了,它就会发出一个信号,告诉单片机“时间到啦”!这个信号可以用来触发各种操作,比如更新显示、读取传感器数据等等。
定时器的核心在于它的时钟源。
就好比小闹钟的动力来源,时钟源决定了定时器倒计时的速度。
常见的时钟源有单片机的内部时钟和外部时钟。
内部时钟一般比较稳定,但精度可能会受到一些限制;而外部时钟则可以提供更高的精度,但需要额外的电路支持。
再来说说计数器。
计数器就像是一个勤劳的小会计,不停地数着外面进来的“豆子”。
这些“豆子”可以是外部的脉冲信号,也可以是单片机内部产生的事件。
比如,我们可以用计数器来统计电机旋转的圈数,或者计算按键被按下的次数。
计数器的工作方式也有多种。
可以是向上计数,就是从 0 开始,不断增加,直到达到设定的最大值;也可以是向下计数,从设定的最大值开始,逐渐减少到 0。
还有一种更灵活的方式是双向计数,根据需要在向上和向下之间切换。
那么,定时器/计数器在实际应用中有哪些用处呢?比如说,在一个智能温度控制系统中,我们可以用定时器每隔一段时间读取一次温度传感器的数据,然后根据温度的变化来控制加热或者制冷设备的工作。
而计数器则可以用来统计设备运行的次数,以便进行维护和保养。
在电子时钟的设计中,定时器更是发挥了关键作用。
单片机课程设计外部脉冲计数器
单片机课程设计外部脉冲计数器目录摘要:单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
本课程设计的指导思想是控制单片机实现从0到99的计数功能,其结果显示在两位一体的共阳极数码管上。
关键词:脉冲计数器数码管单片机本设计基于单片机技术原理,以单片机芯片STC89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出脉冲,按下键就开始计数,并将数值显示在两位一体的共阳极数码管上。
1课题原理PCB板上设置开始计数按键和清零按键,以上按键与89C52单片机的P1口连接,通过查询按键是否被按下来判断进行计数或者清零。
若按下计数健,则单片机控制两位一体的共阳极数码管显示从00开始的数字,按下一次,则数字加一,一次类推;若按下清零键,则程序返回程序开始处,并且数码管显示00。
2 硬件及软件设计2.1 硬件系统2.1.1 硬件系统设计此设计是在单片机最小系统的基础上进行开发和拓展,增加了按键电路和和数码管显示电路,由于单片机输出电流不足以驱动数码管发光,所以数码管需要驱动电路。
我们采用了三极管对数码管电流进行放大,使电流大小达到要求值。
2.1.2 单元电路设计基本框架如下图2.1开始按键数码管 89C52单片机清零按键显示控制加一按键2.1基本框架SEL11JDB91627384954.7kR112P3VCC142C00Q91vccVCC5PP25440CCPC-RXPC-TX0112110Q9465317126118vcc01-+DpVV7SEG-2abcdefghNVCCGR1INR2IN39867412T1OUTT2OUT0000000000000000R104.7k11111111D S232A-NR1OUTT2INC1+C1-C2+C2-T1INR2OUT123456781RRRRRRRRU20134519SEL2111DB0DB1DB2DB3DB4DB5DB6DB7PP1444 VCCCC0011RXDTXDDB0DB1DB2DB3DB4DB5DB6DB7TXDRXD92987654321234567800010333333332 222222242113DNP00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27VCCGPSENP30/ RXDP31/ TXDALE/ PROGP10P11P12P13P14P15P16P17P32/ INT0P33/ INT1P34/ T0P35/T1EA/VppXTAL1XTAL2RST/VpdP36/ WRP37/RD89C52AT89S5X123456784518991131123671111VCCR10DTTWRINT1INT0P10P11SEL1SE L2SPEAKP12P13VCCC1010UF/16V12311.0592MHzXTALVCC4K35021RSTP1KEYK0R121PP67 00C3C3VCC211234SSW-PBSSW-PBSSW-PBSSW-PB2PDC5V图2.2 计数器原理图图2.3 计数器PCB图1(STC89C52芯片 89C52STC89C52RC芯片包括: 8k字节139P10P00238P11P01Flash,512字节RAM, 32位I/O口337P12P02436P13P03线,看门狗定时器,两个数据指针,535P14P04634三个16位定时器/计数器,一个6向P15P05733P16P06832量2级中断结构,全双工串行口,片P17P071221内晶振及时钟电路。
单片机的定时及计数器实验-脉冲计数器
实验六单片机定时、计数器实验2——脉冲计数器一、实验目的1.AT89C51有两个定时/计数器,本实验中,定时/计数器1(T1)作定时器用,定时1s;定时/计数器0(T0)作计数器用。
被计数的外部输入脉冲信号从单片机的P3.4(T0)接入,单片机将在1s内对脉冲计数并送四位数码管实时显示,最大计数值为0FFFFH。
2.用proteus设计、仿真基于AT89C51单片机的脉冲计数器。
3.学会使用VSM虚拟计数/计时器。
二、电路设计1.从PROTEUS库中选取元件①AT89C51:单片机;②RES:电阻;③7SEG-BCD- GRN:七段BCD绿色数码管;④CAP、CAP-ELEC:电容、电解电容;⑤CRYSTAL:晶振;SEG-COM- GRN为带段译码器的数码管,其引脚逻辑状态如图所示。
对着显示的正方向,从左到右各引脚的权码为8、4、2、1。
2.放置元器件3.放置电源和地4.连线5.元器件属性设置6.电气检测7.虚拟检测仪器(1)VSM虚拟示波器单击小工具栏中的按钮,在对象选择器列表中单击COUNTER(计数/计时器),打开其属性编辑框,单击运行模式的下拉菜单,如图所示,可选择计时、频率、计数模式,当前设置其为频率计工作方式。
(2)数字时钟DCLOCK单击按钮,在对象选择器中选择DCLOCK(数字时钟)。
在需要添加信号的线或终端单击即可完成添加DCLOCK输入信号。
当前信号设置为DIGITAL型的时钟CLOCK,频率为50K。
三、源程序设计、生成目标代码文件1.流程图2.源程序设计通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC36.ASM。
通过菜单“sourc e→DZC36.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。
程序编辑好后,单击按钮存入文件DZC32.ASM。
3.源程序编译汇编、生成目标代码文件通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。
单片机脉冲计数word文档良心出品
单片机实验报告0903 班级:自动姓名:一.软件实验实验题目:脉冲计数(定时/计数器实验)1,实验目的:熟悉单片机内部定时/计数器功能,掌握初始化编程方法。
2,实验内容:把外部中断0输入的脉冲进行计数,并送数码管显示。
仿真电路图如下所示:设定频率发生器为50Hz程序如下:#include <reg51.h>sbit P2_0=P2^0; //数码管选定位sbit P2_1=P2^1;sbit P2_2=P2^2;sbit P2_3=P2^3;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; unsigned int motorspeed;unsigned char GE,SHI,BAI,QIAN;unsigned int counter=0; //脉冲数unsigned int calsp; //设定多长时间计算一次void display(); //数码管显示void delay(); //延迟函数void calspeed();void main(){EA=1; //开启总中断EX0=1; //开启外部中断0IT0=1; //设置成下降沿触发方式TMOD=0x01; //设置定时器0为模式1,即16位计数模式TH0=(65536-10000)/256; //计数时间为10msTL0=(65536-10000)%6;ET0=1; //开启定时器0中断TR0=1; //启动定时器0P2=P2&0xf0;while(1){display();calspeed();}}void calspeed(){if(calsp>=100) //100*10ms=1s计算一次{motorspeed=counter;counter=0; //清零脉冲数calsp=0; //清零标志}}void _TIMER0() interrupt 1{TH0=(65536-10000)/256; //重新装入初值,计数时间为10ms TL0=(65536-10000)%6;calsp++;}void _INT0() interrupt 0{counter++;}void display() //数码管显示函数{GE=motorspeed_x0010_;SHI=motorspeed/10_x0010_;BAI=motorspeed/100_x0010_;QIAN=motorspeed/1000_x0010_;P2_0=1;P0=table[QIAN];delay();P2_0=0;P2_1=1;P0=table[BAI];delay();P2_1=0;P2_2=1;P0=table[SHI];delay();P2_2=0;P2_3=1;P0=table[GE];delay();P2_3=0;}void delay() //延迟函数{unsigned char i=10;while(i--);}二.硬件实验实验题目:用单片机控制二极管1,实验目的:熟悉用单片机控制二极管及其编程方法2,实验内容:跑马灯显示二极管仿真电路图如下所示:程序如下:#include <reg51.h>#include <intrins.h>void delay();//延时子函数void main(void){unsigned char temp;temp=0xfe;while(1){P2=temp;delay();temp=_crol_(temp,1); }}void delay(){unsigned int y;y=10000;while(y--);}。
单片机实验之定时器计数器应用实验二
、实验目的1 、掌握定时器/计数器计数功能的使用方法。
2 、掌握定时器/计数器的中断、查询使用方法。
3 、掌握Proteus 软件与Keil 软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
、设计要求1 、用Proteus 软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满 100个脉冲,则取反P1.0 口线状态,在P 1.0 口线上接示波器观察波形。
2、用Proteus 软件画出电路原理图,单片机的定时器/计数器以中断方式工 作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满 200个脉冲, 则取反P1.0 口线状态,在P 1.0 口线上接示波器观察波形。
通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD 初值的计 算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。
七、思考题1、利用定时器0,在P1.0 口线上产生周期为200微秒的连续方波,利用定 时器1,对P1.0 口线上波形进行计数,满50个,则取反P1.1 口线状态,在P 1.1 口线上接示波器观察波形。
tJI-JTTALlRSTIPO 1 Z^Cil POiPD 3/jfiD3 IPCLW/MH FD-5/^CB”血P2 O/jtS PNUMa P 2 .2/AJOPI F3JD/RKDP1 且1门池F1 2P1 .3P3^/|NT1 卩11 .4P3.4Z1D P1.5 P3 .5fT1 尸1P3.0AA/RP1I.7 P3.?/RD17三、电路原理图 18HQAT69C52P 2 .4/A12P2 5/A13 P2P2 .7XA1«5蝕丘2Q 37答:程序见程序清单四、实验程序流程框图和程序清单1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,MAIN: MOV IE, #00HMOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1LOOP: JNB TF1, LOOP CLRTF1 CPL P1.0 AJMP LOOP ENDC 语言程序:#in elude <reg52.h> sbit Y=P1A0; void mai n() {EA=0; ET1=0; TMOD=0x60;TH1=0x9C;计数数值初始化中断断 艙化!l[启动 =时器1 器一、r动 启N箱 * 1溢断清计数溢出标志—1 ~ P1.(口线取反TL 仁 0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } }2、定时器/计数器以中断方式工作,对外部连续周期性脉冲信号进行计数, 每计满200个脉冲,则取反P1.0 口线状态。
单片机脉冲计数
模拟磨损试验机测定试件磨损次数装置实验——脉冲计数实验一,实验目的1,熟悉单片机定时/计数功能,掌握初始化编成方法;2,掌握顺序控制程序的简单编程;3,掌握显示数据的编程方法。
二,实验内容1,利用单相全波整流及直流电动机调速系统电气控制实验仪上脉冲产生电路,检测电机转动次数并显示。
实验仪上有八位LED共阴极显示块,软件设定预置数,计到预置数后电机停止运行。
2,开机前,显示预置数。
计数过程中在预置数范围内时,可随时停车并保持已计数值,再按启动钮继续计数或按清除钮删除计数值,重新运行并计数。
三,实验仪器、设备及材料PC机、有关连接线、数字万用表、电气控制实验仪、直流电压表、直流电动机。
四,实验原理用SST8位单片机SST89E564内部定时器/计数器T0计数方式进行计数,计数脉冲通过单片机P3.4口输入,并送八位显示块显示。
由于在显示块上显示的数据是十进制数,编写程序时必须进行二转十及BCD码调整。
在单相全波整流及直流电动机调速系统实验仪上显示时,把P2口作为控制字位输出,字位移动,逐位显示;P0口作为送字形代码输出。
采用共阴极字形代码,每显示一位后要关闭显示,循环逐位(8位)5次。
实验仪上设有按钮NK1、NK2、NK3,分别可作为启动(继续)、停车、清除按键,低电平有效,设计程序时要考虑延时。
五,实验步骤1,连接电气控制仪、直流电压表、直流电动机、外部脉冲输入端2,PC机上编程,通过数据线传输至电气控制实验仪,启动电气控制实验仪,完成实验。
六,实验程序;-----------------------------------------------------------------------------ORG 0000HLJMP START ;转发送主程序;-----------------------------------------------------------------------------ORG 001BHLJMP STOP ;转发送中断服务;----------------------------------------------------------------------------- ;主程序START: MOV SP,#60H ;堆栈SP=60HMOV TMOD,#15H ;T0为计算器,工作方式1,T1为定时器,工作方式1MOV P0,#03FHMOV P1,#0FFHMOV P2,#0FFH ;P0,P1,P2口赋初值MOV TH0,#00HMOV TL0,#00H ;TO从0开始计数MOV TH1,#00HMOV TL1,#00H ;T1定时时间为65.5msMOV 59H,#00H ;计数器溢出的数累计存放在59H单元 CLR 30H ;将停止标志位清零MOV 30H,#00H ;设预置数70000MOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#07HMOV 35H,#00HMOV 36H,#00HMOV 37H,#00HLCALL CT6 ;显示预置数START1: JB P1.0,START1LCALL DELYJB P1.0,START1 ;电机是否启动LL0: JB 30H,STOP1 ;电机是否停止LL1: SETB TR1 ;开定时器SETB EASETB ET1 ;开中断SETB TR0 ;开计数器CLR P1.3 ;启动电机LL2: LCALL CT ;显示LL3: SETB RS1 ;选择2区工作寄存器组CJNE R7,#00H,LL0CJNE R6,#00H,LL0CJNE R5,#07H,LL0CJNE R4,#00H,LL0 ;预置数到否LL4: SETB P1.3 ; 关电机CLR TR0 ; 关计数器CLR TR1 ; 关定时器CLR ET1CLR EA ; 关中断LL5: JB P1.2,LL6LCALL DELYJB P1.2,LL6 ;清零否LJMP START ;清零调转到STARTLL6: LCALL CT ; 显示LJMP LL5 ; 不清零调转到LL5RET;------------------------------------------------------------------------------STOP1: SETB P1.3 ;关电机CLR 30H ;停止标志位清零CLR TR0 ;关计数器CLR TR1 ;关定时器CLR EACLR ET1 ;关中断STOP2: LCALL CT ;显示START2: JB P1.0,ST1LCALL DELYJB P1.0,ST1 ; 继续启动电机否LJMP LL1 ; 继续启动电机,调转到LL1ST1: JB P1.2,STOP1LCALL DELYJB P1.2,STOP1 ; 清零否LJMP START ; 清零后,调转到STARTRET;------------------------------------------------------------------------------ ;中断子程序STOP: JB P1.1,STPLCALL DELYJB P1.1,STP ;是否停止SETB 30H ;停止,标志位置1STP: RETI;------------------------------------------------------------------------------ ;显示子程序CT: CLR RS1 ;选择0区通用工作寄存器组MOV R6,TH0 ;计数器高八位传给R6MOV R7,TL0 ;计数器低八位传给R7JNB TF0,HB ;计数器是否溢出INC 59H ;将溢出的数累加后存在59H单元CLR TF0 ;溢出标志位清零HB: MOV R5,59H ;将累加后的溢出数传给R5SETB RS1 ;选择2区通用工作寄存器组CLR AMOV R4,AMOV R5,AMOV R6,AMOV R7,A ;清零MOV R2,#24 ;24次移位H_B: CLR RS1 ;选择0区通用工作寄存器组RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R5RLC AMOV R5,ASETB RS1 ;选择2区通用工作寄存器组MOV A,R7ADDC A,R7DA AMOV R7,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R2,H_B ;二进制数转十进制CT1: SETB RS1 ;选择2区通用工作寄存器组MOV R0,#30H ;拆字,十进制数由低位到高位依次存放到30H-37H MOV A,R7LCALL C_TMOV A,R6LCALL C_TMOV A,R5LCALL C_TMOV A,R4LCALL C_TCT6: MOV R3,#5 ;循环显示5次CT2: MOV DPTR,#TAB ;查表MOV R0,#30HCT3: MOV R1,#80HMOV P2,A ;送字位RR AMOV R1,AMOV A,@R0MOVC A,@A+DPTRMOV P0,A ;送字形MOV R2,#4FHDJNZ R2,$INC R0CJNE R1,#80H,CT4DJNZ R3,CT2CT5: RET;------------------------------------------------------------------------------C_T: MOV R1,A ;拆字子程序ACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV @R0,AINC R0RET;------------------------------------------------------------------------------DELY: SETB RS0 ;消抖延时子程序MOV R5,#04HDEL1: MOV R4,#0FFHDJNZ R4,$DJNZ R2,DEL1CLR RS0RET;------------------------------------------------------------------------------TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H;------------------------------------------------------------------------------ END七,实验流程图.。
实实验二 脉冲产生电路及计数器的使用1
实验二脉冲产生电路及计数器的使用一、实验目的1、掌握使用门电路、555定时器构成脉冲信号产生电路的方法。
2、掌握中规模集成计数器的使用及功能测试方法。
二、实验设备与器件1、数字电路实验箱。
2、集成门电路:CC4011×13、电阻器: 100Ω×1、1MΩ×2、2MΩ×1、4、电容器:0.01μF×1、0.1μF×1、1μF×15、555定时器×16、集成计数器:CC40192(74LS192)×216 15 14 13 12 11 10 9V D D D0 CR BO CO LD D2 D3CC40192(74LS192)D1Q1Q0 CP D CP U Q2 Q3V S S1 2 3 4 5 6 7 8图中:CP U——加法计数时钟脉冲输入端,CP D——减法计数时钟脉冲输入端,LD——置数端,CR——清除端,CO——非同步进位输出端,BO——非同步借位输出端,D0、D1、D2、D3——数据输入端,Q0、Q1、Q2、Q3——数据输出端。
CC40192(74LS192)的功能如下表一所示:表一三、实验过程1、依图一所示带RC延迟电路环形振荡器原理图,在数字电路实验箱上,用1片CC4011、100Ω及2MΩ电阻各1个、0.1μF电容器1个接成脉冲产生电路的实际电路。
图一图一电路中,R为2MΩ电阻,R S为100Ω电阻,C为0.1μF电容器。
电路利用电容C的充放电过程,控制d点的电位,从而控制非门的自动启闭,形成多谐振荡。
改变R和C可改变电路输出的振荡周期T=2.2RC。
(1)请画出带RC延迟电路环形振荡器的实际接线图。
(2)电路是否一次接线成功且实现应有功能?若不是,请将遇到的情况记下,并说明解决的方法。
2、依图二所示用555定时器构成的多谐振荡器原理图,在数字电路实验箱上,用1片555定时器、1MΩ电阻2个、1μF及0.01μF电容器各1个接成脉冲产生电路的实际电路。
单片机设计实验--脉冲计数器
实验八脉冲计数实验一、实验目的:(1)掌握定时器/计数器的计数工作方式;(2)掌握用定时器/计数器实现脉冲计数的方法;(3)掌握用Keil实现软件调试的方法;(4)掌握用Proteus实现电路设计,程序设计和仿真的方法。
二、实验内容:定时器0外部输入端(P3.4)和定时器1外部输入端(P3.5)作为计数脉冲输入端,利用按钮手控产生单脉冲信号作为计数输入脉冲,编写程序控制,每输入一个(5个)脉冲,工作寄存器R0(R1)的内容加1,同时将R0(R1)的内容送到两位LED数码管中显示出来,晶振频率6MHZ。
三、实验参考电路:P1口接两位数码管显示工作寄存器R0的内容,P2口接两位数码管显示工作寄存器R0的内容,两只按钮分别接P3.2(外部中断0中断输入端)和P3.3(外部中断1中断输入端)。
实验电路如图:四、实验参考程序:ORG 0000HLJMP MAIN 指向主程序;ORG 000BH 定时器/计数器0的入口地址;LJMP T0C 指向中断服务程序;ORG 001BH 定时器/计数器1的入口地址;LJMP T1C 指向中断服务程序;ORG 0030HMAIN: MOV R0,#00H 清零;MOV R1,#00HMOV P1,#00HMOV P2,#00HMOV TMOD,#66H 置计数器0,计数器1为方式2;MOV TH0,#0FFH 置1次计数初值;MOV TL0,#0FFHMOV TH1,#0FBH 置5次计数初值;MOV TL1,#0FBHSETB EA 开中断;SETB ET0SETB ET1SETB TR0 启动计数器0;SETB TR1 启动计数器1;SJMP $ORG 0100HT0C: MOV A,R0 计数器0中断服务程序;ADD A,#01HDA A 十进制调整;MOV R0,A 保存计数器;MOV P1,A 计数值送显示器;RETIORG 0200HT1C: MOV A,R1 计数器1中断服务程序;ADD A,#01HDA A 十进制调整;MOV R1,A 保存计数器;MOV P2,A 计数器送显示器;RETIEND五、实验步骤:(1)建立工程文件,选择单片机型号,生成asm文件,在所生成文件中输入参考程序并调试如下:如图可以看出程序调试无错误,所以可以将其生成HEX文件。
单片机实验-定时器计数器应用实验二
定时器/计数器应用实验二一、实验目的和要求1、掌握定时器/计数器计数功能的使用方法。
2、掌握定时器/计数器的中断、查询使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、实验内容或原理1、利用单片机的定时器/计数器以查询方式计数外部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。
2、利用单片机的定时器/计数器以中断方式计数外部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。
三、设计要求1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。
2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。
四、实验报告要求1、实验目的和要求。
2、设计要求。
3、电路原理图。
4、实验程序流程框图和程序清单。
5、实验结果(波形图)。
6、实验总结。
7、思考题。
五、思考题1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。
原理图:程序清单:/*功能:用计数器1以工作方式2实现计数(查询方式)每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000HSTART:MOV TMOD,#60HMOV TH1,#9CHMOV TL1,#9CHMOV IE,#00HSETB TR1LOOP:JBC TF1,LOOP1AJMP LOOPLOOP1:CPL P1.0AJMP LOOPEND/*功能:用计数器1以工作方式2实现计数(中断方式)每计满200个脉冲,则取反P1.0口线状态*/ ORG 0000HSTART:LJMP MAINORG 001BHLJMP LOOP1ORG 0030HMAIN:MOV SP,#30HMOV TMOD,#60HMOV TH1,#38HMOV TL1,#38HSETB EASETB ET1SETB TR1HERE:LJMP $ORG 001FHLOOP1:CPL P1.0RETIEND原理图:/*功能:用定时器0(工作方式2)在P1.0口线上产生周期为200us的连续方波用定时器1对P1.0口线上波形进行计数,满50个则取反P1.1口线状态在P1.1口线上接示波器观察波形*/ORG 0000HSTART:LJMP MAINORG 001BHLJMP TT1ORG 0030HMAIN:MOV SP,#60HMOV TMOD,#62HMOV IE,#88HMOV TH0,#0CEH ;设置计数初值MOV TL0,#0CEHMOV TH1,#0CEHMOV TL1,#0CEHSETB TR0 ;启动定时SETB TR1SETB P1.0LOOP:JBC TF0,LOOP1 ;查询计数溢出AJMP LOOPLOOP1:CPL P1.0AJMP LOOP ;重复循环HERE:LJMP $TT1:CPL P1.1RETIEND。
采用单片机内部定时器0计时,定时器1对外部脉冲计数
0x6F, //"9"
};//共阴极数码管
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);//延迟1ms
}
void main()
{
P0 = leddata[0];//P0初始化
TMOD = 0x61;//定时器0计时模式1
ET1 = 1;//开定时器1中断
TR1 = 1;
TR0 = 1;
while(1);
}
void in_in0() interrupt 1//定时器0中断程序
{
TH0 = (65536-25000)/256;//重装初值
TL0 = (65536-25000)%256;
time++;
if(time == part)
仿真图:
源程序:
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar total = 40;//2000ms = 50ms*40
uchar part = 32;//高电平占空比80%
uchar time;//定时器0计数
{
count = 0;
P0 = leddata[0];
}
}
//定时器1计数模式2
TH0 = (65536-25000)/256;
TL0 = (65536-25000)%256;//定时器0定时50ms
TH1 = 256 - 1;
脉冲计数(定时计数器的记数功能实验)
实验三脉冲计数(定时/计数器的记数功能实验1、实验目的:(1熟悉8031定时/计数器的记数功能,(2掌握初始化编程方法(3掌握中断程序的调试方法2、实验内容:定时/记数器0对外部输入的脉冲进行计数,并送显示器显示。
3.实验电路图:方案1方案24、实验器材:(1超想-3000TB综合实验仪 1 台(2超想3000仿真器 1 台(3连线若干根(4计算机 1 台5、实验连线:方案1:总线插孔的P3.4接脉冲源的DOWN,按下脉冲按钮,观察数码管上计数脉冲的个数。
6、实验原理:MCS-51有两个16位的定时/计数器:T0和T1。
计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已.当工作在定时方式时,计数脉冲来自单片机的内部,每个机器周期使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间,故可通过设定计数值来实现定时功能。
当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个由1到0 的电平变化时,计数器的值加1,从而实现计数功能。
可以通过编程来指定时计数器的功能,以及它的工作方式。
读取计数器的当前值时,应读3次。
这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。
7、程序框图8、程序清单; “验证式”实验三脉冲计数(定时/记数实验;对定时器0外部输入的脉冲信号进行计数且显示OUTBIT equ 0e101hCLK164 equ 0e102h ; 段控制口(接164时钟位DAT164 equ 0e102h ; 段控制口(接164数据位LEDBuf equ 40hORG 0000hMOV SP,#60HMOV DPTR,#0e100H ;8155初始化MOV A,#03HMOVX @DPTR,AMOV TMOD,#05H ;定时器初始化MOV TH0,#00HMOV TL0,#00HSETB TR0LOOP0:MOV R2,TH0MOV R3,TL0LCALL LOOP1 ;调用二转十子程序,结果放在R4 R5 R6中MOV R0,#40H MOV A,R6LCALL PTDSMOV A,R5LCALL PTDSMOV A,R4LCALL PTDSLCALL DISPLAYSJMP LOOP0LOOP1:CLR A ;二转十子程序MOV R4,AMOV R5,AMOV R6,AMOV R7,#10H LOOP2:CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,LOOP2RETPTDS: MOV R1,A ;拆字子程序ACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV @R0,AINC R0RETDelay:mov r7, #0 ; 延时子程序DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDISPLAY:setb 0d3hmov r0, #LEDBufmov r1, #6 ; 共6个八段管 mov r2, #00000001b ; 从左边开始显示Loop: mov dptr, #OUTBITmov a, #00hmovx @dptr, a ; 关所有八段管mov a, @r0mov dptr,#LEDmapmovc a,@a+dptrmov B, #8 ; 送164DLP:rlc amov r3, amov acc.0, canl a,#0fdhmov dptr, #DAT164movx @dptr, amov dptr, #CLK164orl a,#02hmovx @dptr, aanl a,#0fDhmovx @dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管 mov r6, #1 call Delaymov a, r2 ; 显示下一位rl amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ; 关所有八段管clr 0d3hretLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h END。
实验二 单片机定时器计数器编程
实验二单片机定时器/计数器编程一、实验目的1、掌握单片机定时器/计数器的工作方式;2、掌握单片机定时器/计数器的编程方法。
二、实验内容1、学习单片机定时器/计数器的工作方式、初始化以及应用等;2、利用单片机定时器/计数器编写程序驱动开发板上的LED灯按一定规律工作。
基本要求:利用定时器1控制LEDB闪烁,闪烁频率为2Hz。
提高要求:读懂教材定时器/计数器的应用实例4和5,在实验室开发板上采用分模块设计的方法编程实现以下两个任务之一:1、控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。
2、将教材例5对P1.0和P1.1的控制,改为对LEDB和LEDG的控制,时序不变。
三、实验设备1、STC单片机开发板;2、PC机以及串口线。
四、实验分析及关键代码(1)利用定时器1控制LEDB闪烁,闪烁频率为2Hz。
实验分析:控制LEDB闪烁,频率为2Hz,即0.5s。
解决思路:定时器工作方式选0x01,计数器初值为(65536-50000),循环10次即为0.5s。
代码如下:#include<reg51.h>#define uchar unsigned char sbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=!A;i=0;}}}}(2)控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。
解决思路:设置两个循环,计数器初值设为(65536-50000),亮灯循环10次,灭灯循环40次。
代码如下:#include<reg51.h>#define uchar unsigned charsbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=1;}if(i==50){A=0;i=0;}}}}五、实验总结对软件及计数器的操作及代码不太熟悉,多次查询课本及上网查找资料后懂得计数器工作方式及计数操作,其他问题迎刃而解。
单片机实验二 定时器-计数器应用
实验二单片机之定时器/计数器应用一、实验目的1.学习89C51内部定时计数器的使用和编程方法2.进一步掌握中断处理程序的编写方法二、实验说明1、51单片机有。
两个16位内部定时器/计数器(T/C,Timer/ Counter)。
若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。
定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。
由于脉冲周期固定由计数值可以计算出时间,有定时功能。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
2、TMOD1) M1M0工作方式控制位2) C/T 定时器方式或计数器方式选择位若C/T=1时, 为计数器方式; C/T = 0时, 为定时器方式。
3)GATE 定时器/计数器运行门控标志位当GATE=1时, T/C的启动受双重控制,即要求INT0 (或INT1)引脚为高电平且TR0(或TR1 )置1 时, 相应的T/C才被选通工作。
若GA TE=0, T/C的启动仅受TR0 (或TR1)控制,即置1, T/C就被选通, 而不管INT0 (或INT1)的电平是高还是低。
3、TCONTF0、TF1分别是定时器/计数器T0、T1 的溢出中断标志位, 加法计数器计满溢出时置1, 申请中断, 在中断响应后自动复位0。
TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。
TR1、TR0 分别是定时器/计数器T1、T0 的运行控制位, 通过软件置1 后, 定时器/计数器才开始工作, 在系统复位时被清0。
4、初始化1)初始化步骤在使用51系列单片机的T/C前,应对它进行编程初始化,主要是对TCON和TMOD 编程,还需要计算和装载T/C的计数初值。
一般完成以下几个步骤:(1)确定T/C的工作方式——编程TMOD寄存器;(2)计算T/C中的计数初值,并装载到TH和TL;(3)T/C在中断方式工作时,必须开CPU中断和源中断——编程IE寄存器;(4)启动定时器/计数器——编程TCON中TR1或TR0位。
实验二、定时器计数器编程
实验二、定时器/计数器编程
一、实验目的
1、掌握定时器的基本编程方法。
2、掌握计数器的基本编程方法。
二、实验内容
设计单片机程序,用T0作定时器产生周期为1秒的方波在P3.7输出,用示波器显示该信号,用T1作计数器对该脉冲进行计数并在数码管上显示。
三、实验原理
电路原理图如下,所需元件为:AT89C52、7SEG-BCD、LED
当晶振为12M时机器周期为1微秒,要实现500毫秒的定时,需要500000个机器周期,对于51单片机内部定时器来说,最大只能定时65536个机器周期,能定时65.535毫秒,不能满足要求,为此必须借助软件循环进行扩展,当中断定时为10毫秒时,扩展50倍可得到500毫秒的定时,当到达500毫秒时,在输出P3.7输出一个脉冲信号。
让T1工作于计数器模式,就可以对外部引脚P3.5的脉冲进行计数,所以将
P3.5与P3.7相连,能对P3.7进行计数。
对计数值进行显示需要读出T1的计数值,送到P1在数码管上显示。
有关定时计数器的特殊功能寄存器,请参考课本。
四、实验预习
1、学习有关定时器和计数器的知识。
2、提前编写程序,写出预习报告。
五、实验报告
1、总结出实验的详细步骤。
2、写出调试正确的程序及框图。
定时器计数器的定时实验
定时器计数器的定时实验简介本文将介绍定时器计数器的定时实验,主要涉及定时器计数器的原理、使用方法以及实验步骤。
定时器计数器是一种常用的计时设备,广泛应用于各种计时场景。
定时器计数器的原理定时器计数器是一种能够精确计时的设备,它通常由一个可编程的时钟和一个计数器组成。
计数器根据时钟的脉冲信号进行计数,从而实现计时的功能。
定时器计数器的工作原理如下:1.初始化计数器:将计数器的初始值设置为0。
2.启动计数器:通过控制信号将时钟输入到计数器中,开始计数。
3.计数过程:计数器根据时钟的脉冲信号进行计数,每接收到一个时钟脉冲,计数器的值加1。
4.判断定时完成:当计数器的值等于设定的定时值时,表示定时完成。
5.停止计数器:定时完成后,停止时钟信号的输入,计数器停止计数。
定时器计数器的使用方法定时器计数器通常由软件通过编程的方式进行使用,具体方法如下:1.初始化定时器计数器:首先,需要将计数器的初始值设置为0,并且设定定时的时间。
2.启动计数器:通过控制信号将时钟输入到计数器中,开始计数。
3.监测计数器的值:在计数的过程中,可以通过查询计数器的值来获取当前的计时结果。
4.判断定时完成:当计数器的值等于设定的定时值时,表示定时完成。
5.停止计数器:定时完成后,停止时钟信号的输入,计数器停止计数。
实验步骤以下是一个简单的实验步骤,用于演示定时器计数器的定时功能:1.准备硬件:–打开开发板,并确保定时器计数器的引脚与外部设备连接正常。
–连接调试器,以便在实验过程中监测计数器的值。
2.编写代码:–在开发环境中,编写一段代码,完成实验的需求,包括初始化计数器、设定定时值等。
3.烧录程序:–将编写好的程序烧录到开发板中。
4.启动实验:–启动开发板,开始实验。
5.监测计数器的值:–在实验过程中,通过调试器监测计数器的值,以便实时了解计时结果。
6.判断定时完成:–当计数器的值等于设定的定时值时,表示定时完成,可以进行相关操作,如触发其他事件、输出提示信息等。
项目定时器与脉冲计数器设计
试计算X的初值。
解:采用定时器0的方式0:
500*10-6=(213-X)*12*1/fosc
x=7692=1E0CH=1 1110 000 0 1100
F0H
0CH
即 TH0=F0H , TL0 =0CH
TMOD=GATE C/T M1M0 GATE C/T M1M0
0 0 00
0 0 00 00H
TH0 =(65536-40000)/256; TL0 =(65536-40000)%256;
3. 任务设计 (1) 硬件原理图设计
C1
22pF
X1
C2
12M
22pF
R1
10k
C3
10uF
U1
19 XTAL1 18 XTAL2
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
{ unsigned int i;
TMOD=0x00; //设定时器1为方式0
TH1=0x63; //置定时器初值
TL1=0x18;
TR1=1;
//启动T1
for(i=0; i<=200 ; )
{ if ( TF1 == 1) //查询计数溢出
{ i++;
TF1=0;
TH1=0x63; //重新置定时器初值
X = 213 – 8000 =192 =0xC0
计数方式:
计数次数值N=213-X 计数初值:X= 213-计数次数值N
注意:X的低5位送TL0(TL1),TL0(TL1)的高 3位数为任意值,常取0,高8位送TH0(TH1)。
任务操作
1.任务要求 本任务要求用AT89C51的定时器1,方式0设计
脉冲计数实验报告
脉冲计数实验报告实验目的1. 了解脉冲计数的基本原理和方法;2. 熟悉使用计数器进行脉冲计数实验。
实验器材1. 脉冲信号发生器2. 数字计时器3. 示波器4. 连线电缆实验原理脉冲计数是通过计数器对一定时间内的脉冲数量进行计数的方法。
实验中我们使用数字计时器作为计数器,利用示波器观察脉冲信号的频率和幅度。
实验步骤1. 将脉冲信号发生器的信号输出端与计数器的输入端相连;2. 将计数器的输出端与数字计时器的输入端相连;3. 设置脉冲信号发生器的频率和幅度,并调节示波器观察脉冲信号;4. 启动数字计时器开始计时;5. 观察数字计时器的显示结果,并记录下实验数据;6. 更改脉冲信号发生器的频率和幅度,重复步骤3-5,直至完成所有需要的实验数据。
实验结果在本次实验中,我们设置了不同的脉冲信号频率和幅度,以观察计数器的计数情况。
脉冲信号频率(Hz)幅度(V)计数结果信号1 100 1 5000信号2 1000 1 50000信号3 10000 1 500000从实验结果中可以看出,计数结果与脉冲信号的频率成正比。
当频率增加时,计数结果也相应增加。
幅度的变化对计数结果没有明显影响。
实验分析实验结果符合预期,脉冲信号的频率对计数结果有较大影响。
这是因为计数器在一定时间内记录脉冲的个数,频率越高,单位时间内脉冲的个数越多,计数结果也就越大。
另外,幅度变化对计数结果没有明显影响,这是因为计数器只计算脉冲的个数,并不关注脉冲的幅度大小。
实验总结本次实验通过使用计数器对脉冲进行计数,加深了我们对脉冲计数原理的理解,并且通过实验验证了频率对计数结果的影响。
同时,我们还学会了使用示波器观察脉冲信号,数字计时器进行计时。
此外,实验中我们还注意了正确连接实验器材,遵守实验室安全规定。
实验改进为了进一步完善实验,可以考虑以下改进点:1. 增加实验次数以提高结果的准确性;2. 增加更多不同频率和幅度的脉冲信号,以观察计数结果的多样性;3. 进一步研究幅度对计数结果的影响,可能会发现某些特定条件下的异常情况。
脉冲计数(定时计数器实验)
ORG
0000H AJMP START ORG 000BH ;T0中断入口地址 RETI ORG 001BH ;T1中断入口地址 AJMP INT_T1 ORG 0040H START: MOV SP,#60H MOV TMOD,#1DH ;置T1为方式1 ;置T0为方式1,计数方式, ;门控选通位有效 MOV TL0,#0H ;计数器清零 MOV TH0,#0H MOV TL1,#32H ;延时0.50mS常数 MOV TH1,#0FEH MOV R0,#20 ;延时 5 秒常数 SETB TR0 ;启动T0 SETB ET0 SETB TR1 ;启动T1 SETB ET1 SETB EA ;开中断 SJMP $
源代码:
INT_T1: PUSH ACC PUSH PSW CLR TR1 MOV TL1,#32H ;延时0.50mS 常数 MOV TH1,#0FEH MOV R1,TL0 ;保存计数值 MOV R2,TH0 MOV TL0,#00H ;清计数器 MOV TH0,#00H SETB TR1 DJNZ R0,EXIT MOV R0,#20 ;延时 5 秒常数 MOV DPTR,#8300H ;LED地址 MOV A,R1 MOVX @DPTR,A ;把计数值在 LED上显示 EXIT: POP PSW POP ACC RETI END
实验结束脉冲计数(定时源自数器实验)实验要求:8031内部定时计数器,按计数器模式和方式1工 作,对P3.4(T0)引脚进行计数。使用8031的T1
作定时器,50ms中断一次,看T0内每0.50ms来了
多少脉冲,将其数值按二进制数在74LS273驱动 LED灯上显示出来,5秒后再次测试。
实验目的:
1.学习8031内部定时/计数器使用方法 。
定时计数器实验-单片机
单片机实验报告G A T EC /TM 1M 0G A T EC /TM 1M 0TH1TL1TH0TL0T1方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON 外部中断相关位T F 1T R 1T F 0T R 0实验五 定时/计数器实验一、实验目的1.学习8051内部定时/计数器的工作原理及编程方法; 2.掌握定时/计数器外扩中断的方法。
二、实验原理8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。
它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。
T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。
作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。
计数的最高频率一般为振荡频率的1/24。
定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
计数器初值的计算:设计数器的最大计数值为M(根据不同工作方式,M 可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值(十六进制数)定时器初值的计算:在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。
因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc)80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。
TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
❖工作方式寄存器TMOD:工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
其格式如下:GATE:门控位。
GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七单片机定时、计数器实验2——脉冲计数器
一、实验目的
1.AT89C51有两个定时/计数器,本实验中,定时/计数器1(T1)作定时器用,定时1s;定时/计数器0(T0)作计数器用。
被计数的外部输入脉冲信号从单片机的P3.4(T0)接入,单片机将在1s内对脉冲计数并送四位数码管实时显示,最大计数值为0FFFFH。
2.用proteus设计、仿真基于AT89C51单片机的脉冲计数器。
3.学会使用VSM虚拟计数/计时器。
二、电路设计
1.从PROTEUS库中选取元件
①AT89C51:单片机;
②RES:电阻;
③7SEG-BCD- GRN:七段BCD绿色数码管;
④CAP、CAP-ELEC:电容、电解电容;
⑤CRYSTAL:晶振;
SEG-COM- GRN为带段译码器的数码管,其引脚逻辑状态如图所示。
对着显示的正方向,从左到右各引脚的权码为8、4、2、1。
2.放置元器件
3.放置电源和地
4.连线
5.元器件属性设置
6.电气检测
7.虚拟检测仪器
(1)VSM虚拟示波器
单击小工具栏中的按钮,在对象选择器列表中单击COUNTER(计
数/计时器),打开其属性编辑框,单击运行模式的下拉菜单,如图所示,可选择计时、频率、计数模式,当前设置其为频率计工作方式。
(2)数字时钟DCLOCK
单击按钮,在对象选择器中选择DCLOCK(数字时钟)。
在需要添加信
号的线或终端单击即可完成添加DCLOCK输入信号。
当前信号设置为DIGITAL型的时钟CLOCK,频率为50K。
三、源程序设计、生成目标代码文件
1.流程图
2.源程序设计
通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC37.ASM。
通过菜单“sourc e→DZC37.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。
程序编辑好后,单击按钮存入文件DZC37.ASM。
3.源程序编译汇编、生成目标代码文件
通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。
若编译失败,可对程序进行修改调试直至汇编成功。
四、PROTEUS仿真
1.加载目标代码文件
2.仿真
单击按钮,启动仿真。
输入技术频率为50K,所以频率计上显示
的是50000。
同时P2口输出计数值为C358H,即为50000的十六进制数(百分误差,小于1/1000)。
在观察窗口中显示的计数值为:(TH0)=0XC3、(TL0)=0X58,如图所示。
五、思考题:
1.利用定时功能输出40ms方波时,定时初值是如何计算的?写出计算公式。
2. 定时器工作于方式l、方式2时,其一次溢出的最大定时时间是多少(设单片机的晶振为11.0592MHz)?。