单片机计数器实验报告
单片机计数器实验报告

计数器实验报告㈠实验目的1.学习单片机内部定时/计数器的使用和编程方法;2.进一步掌握中断处理程序的编程方法。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台5.信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms中断一次,看T0内每50ms 来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。
㈣实验说明1.本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。
2.计数脉冲由信号发生器输入(从T0端接入)。
3.计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4.将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码ORG 00000H LJMP MAINORG 001BH ;T0的中断入口地址AJMP MAIN1MAIN:MOV SP,#60HMOV TMOD,#15H ;设置T1做定时器,T0做计数器,都于方式1工作MOV 20H,#14H ;装入中断次数MOV TL1,#0B0H ;装入计数值低8位MOV TH1,#3CH ;装入计数值高8位MOV TL0,#00H计数器主程序框图中断返回恢复现场NY 是否到1秒?显示置T1定时常数INT _T1入口保护现场清T0计数值中断服务程序框图开 始置T0,T1模式及初始值设置初始常数开中断等 待MOV TH0,#00HSETB TR1 ;启动定时器T1SETB TR0 ;启动计数器T0SETB ET1 ;允许T1中断SETB EA ;允许CPU中断SJMP $ ;等待中断MAIN1:PUSH PSWPUSH ACCCLR TR0CLR TR1 ;保护现场MOV TL1,#0B0H ;装入计数值低8位MOV TH1,#3CH ;装入计数值高8位,50ms;允许T1中断DJNZ 20H,RETUNT ;未到1s,继续计时MOV 20H ,#14H;1s到重新开始SHOW: ;显示计数器T0的值MOV R0,TH0 ;读计数器当前值MOV R1,TL0MOV A,R1MOV B,#0AHDIV AB;将计数值转为十进制MOV C,ACC.3 ;显示部分,将A中保存的十位赋给L0~L3 MOV P1.0,CMOV C,ACC.2MOV P1.1,CMOV C,ACC.1MOV P1.2,CMOV C,ACC.0MOV P1.3,CMOV A,B ;将B中保存的各位转移到A中MOV C,ACC.3 ;将个位的数字显示在L4~L7上MOV P1.4,CMOV C,ACC.2MOV P1.5,CMOV C,ACC.1MOV P1.6,CMOV C,ACC.0MOV P1.7,CRETUNT:MOV TL0,#00H ;将计数器T0清零MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。
单片机计数器实验报告

单片机计数器实验报告单片机计数器实验报告引言:单片机是一种集成电路,内部集成了处理器、存储器和各种输入输出接口等功能模块。
它广泛应用于各个领域,包括电子设备、通信、汽车电子、家电等。
在这次实验中,我们将学习并实践单片机计数器的原理和应用。
实验目的:1. 理解单片机计数器的工作原理;2. 掌握单片机计数器的编程方法;3. 实现简单的计数功能。
实验器材:1. 单片机开发板;2. 电脑;3. USB数据线;4. 连接线。
实验步骤:1. 准备工作:a. 将单片机开发板连接到电脑上,确保连接稳定;b. 打开开发板的开发环境软件。
2. 编写程序:a. 在开发环境软件中创建一个新的项目;b. 编写程序代码,实现计数功能;c. 调试程序,确保程序没有错误。
3. 烧录程序:a. 将开发板与电脑连接,确保连接稳定;b. 在开发环境软件中选择烧录选项,将程序烧录到单片机中。
4. 运行程序:a. 断开开发板与电脑的连接;b. 将开发板连接到外部电源,确保供电正常;c. 按下开发板上的复位按钮,启动程序。
实验结果:经过以上步骤,我们成功实现了单片机计数器的功能。
当按下复位按钮后,计数器从0开始计数,每经过一个固定的时间周期,计数值加1。
我们可以通过开发板上的数码管显示当前的计数值。
实验分析:单片机计数器是通过定时器模块实现的。
定时器是单片机中的一个重要模块,它可以根据设定的时间间隔来触发中断或执行特定的操作。
在本实验中,我们使用了定时器模块来实现计数功能。
通过编写程序,我们可以设定定时器的工作模式和时间间隔。
在每个时间间隔结束时,定时器会触发中断,程序会执行中断服务程序,从而实现计数器的自动递增。
同时,我们还可以通过程序控制数码管的显示,将计数值实时显示出来。
实验总结:通过本次实验,我们学习了单片机计数器的原理和应用,并成功实现了一个简单的计数功能。
单片机计数器在各个领域都有广泛的应用,例如工业自动化、仪器仪表、电子游戏等。
定时器计数器实验报告

定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。
在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。
计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。
在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。
实验目的:1. 学习定时器和计数器的基本原理及应用。
2. 熟悉定时器和计数器在单片机中的编程方法。
3. 掌握通过定时器和计数器实现延时和计数功能的方法。
实验器材:1. STM32F103C8T6开发板2. ST-LINK V2下载器3. 电脑实验内容:一、实验1:使用定时器和计数器实现延时功能1. 在Keil C中新建一个工程,并编写以下程序代码:```#include "stm32f10x.h"void TIM2_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure ;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode _Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2, ENABLE);}void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {TIM_ClearFlag(TIM2, TIM_FLAG_Update);GPIO_WriteBit(GPIOB,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)));}}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);TIM2_Int_Init(9999,7199);while (1);}```2. 将STM32开发板连接到电脑,并下载程序到开发板中。
51单片机定时器计数器汇编实验报告

批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。
2、掌握定时器/计数器的原理及编程方法。
二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。
若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。
方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。
四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。
设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。
二进制表示为:00010101 10100000B。
十六进制为:高八位(15H),低八位(A0H)。
2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。
单片机实践简易计算器实验报告

零基础DIY单片机简易计算器实践
单片机是一种很有趣的微处理器,它广泛应用于电子产品中。
学习单片机可以帮助我们更深入理解计算机原理和底层运作。
本实验将介绍如何使用单片机来制作一个简易计算器。
所需材料:
1. 单片机开发板
2. 4位7段显示器
3. 数字按键开关
4. 杜邦线
5. 电位器
6. 板子外壳
步骤1:连接电路
将数码管和数字按键开关与单片机开发板连接。
使用杜邦线将每个组件的引脚连接到开发板的相应引脚。
电位器可用于调节数码管显示的亮度。
步骤2:编写程序
使用C语言编写程序。
程序需要识别按键输入的数字和运算符,
并根据不同的情况显示计算结果。
程序中需要使用条件语句、循环语
句和函数等基本语言结构。
步骤3:测试程序
将编写好的程序上传到单片机开发板中。
测试程序的过程中要注
意按键输入的顺序和正确性。
如果按键输入错误,程序需要能够正确
地识别并给出错误提示。
步骤4:完成外壳
将单片机开发板和数码管装进铝盒中,并将数字按键开关与外壳
相连。
在外壳上打开一个窗口,以便能看到数码管和按键。
为了美观,可以涂上一些喜欢的颜色或加上小贴纸等装饰。
通过这个实验,我们深入了解了单片机的基本原理和运作方式,
掌握了C语言编程语言基础知识,并制作了一个实用的计算器。
在实
践中,我们不仅锻炼了问题解决能力和动手能力,还增强了对电子产
品的兴趣和信心。
单片机0-99计数器 秒表报告

姓名班级指导老师时间信息工程学院图1 硬件电路连接图(二)显示电路两位数码管循环显示00~99电路数码管只要就是用于数字得显示.数码管有共阴与共阳得区分,单片机都可以进行驱动,但就是驱动得方法却不同。
两位数码管循环电路就是由电阻、二极管与数码管组成,电源+5V通过560得电阻直接给数码管得7个段位供电,P0、0—P0、7对应了两个接数码管得A,B,C,D,E,F,G与小数点位,P2、6接显示个位数得数码管得3、8引角,P2、7则接十位数得。
P2、6与P2、7端口分别控制数码管得十位与个位得供电,当相应得端口变成低电平时,驱动相应得三极管会导通,+5V通过二极管与驱动三极管给数码管相应得位供电,这时只要P0口送出数字得显示代码,数码管就能正常显示需要得数字。
图2 十位显示动态数码管(共阳数码管)图3 个位显示静态数码管(共阴数码管)(三)时钟电路时钟电路得晶振频率越高,系统得时钟频率越高,单片机得运行速度也越快。
晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中得电容应选择为30pF左右。
图4 时钟电路(四)复位电路MCS—51单片机得复位就是靠外部电路实现得。
MCS—51单片机工作之后,只要在她得RST引线上加载10ms以上得高点平,单片机就能有效地复位。
MCS-51单片机通常采用上电自动复位与按键复位两种方式。
最简单得复位电路如图5:图5 复位电路上电瞬间,RC电路充电,RST引线出现正脉冲,只要RST保持10ms以上得高电平,就能使单if(i++==100)//如果i=0{i=0;count++;P0=CODE[count/10];P2=~CODE[count%10];if(count==99)count=0; //如果到了99,则重新从0开始计数}}结果与分析(可以加页):(一)调试结果1.初始状态图7:初始状态结果图2.开始计时后按下按键暂停图8:中间状态图示(二)问题分析及解决措施1、一开始时没有分清楚数码管就是共阴数码管还就是共阳数码管,C语言程序中默认数码管就是共阴,所以两个P接口得值都就是按照共阴去写得,导致数码管选段及位显有问题,后来经过老师得指点,将共阳数码管P2得接口改成了共阴。
单片机实验报告(计数器)

扬州大学能源与动力工程学院课程设计报告题目:计数器课程:单片机原理及应用课程设计专业:电气工程及其自动化班级:电气1001*名:**学号:*********第一部分任务书《单片机原理及应用》课程设计任务书一、课题名称音乐倒数计数器二、课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《单片机原理及应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。
为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。
三、课程设计内容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。
1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。
2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。
3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。
4. 调试:在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。
单片机原理与应用---按键计数器实验报告

实验报告(2021--2022学年第二学期)课程名称:单片机原理与应用实验项目名称:按键计数器实验一、实验目的1.掌握数码管的动态显示方法;2.掌握独立按键的扫描及去抖动方法。
二、实验仪器1、安装Keil uVison4的计算机;2、USB转串口驱动CH341SER.EXE;3、ISP下载软件stc-isp-15xx-v6.82e.exe;4、单片机开发板一块和USB线(公对公)一条。
三、实验内容编写程序对独立按键进行扫描,根据不同的按键完成不同的操作。
当S2按下时,执行加1操作;当S3按下时,执行减1操作;当S4按下时,执行加2操作;当S5按下时,执行减2操作,并将按键计数值显示在数码管上,显示格式如下所示。
四、实验步骤①在桌面建立一个文件夹。
先用Keil软件建立一个新的工程,芯片选择STC里的89C52RC芯片。
然后新建空白文件,将其保存为后缀为“.c”的文件并添加到这个工程中。
②根据实验要求把要调用的函数做出声明,按要求将代码编写完成。
写完之后要点击“Target Options”选项,在“Output”选项选择“Create HEX File”,将文件编译后生成后缀为“.hex”的文件。
③将程序烧入开发板中并运行,根据实验要求按下S2、S3、S4、S5按钮并拍照记录实验结果。
五、实验原始数据记录与数据处理#include <reg52.h>sbit WE=P2^7;sbit DU=P2^6;unsigned char code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X0 7,0X7F,0X6F,0X00,0X40};unsigned char dspbuf[]={0,1,2,2,11,1,4,5};unsigned char dspcom;void delayms(unsigned int x);void Display();unsigned char counter;void main(){unsigned char temp;while(1){Display();P3=0X0F;/temp=P3&0X0F;if(temp!=0x0F);{delayms(10);temp=P3&0X0F;if(temp!=0X0F);{switch(temp){case 0X0E:counter--;break;case 0X0D:counter++;break;case 0X0b:counter+=2;break; case 0X07:counter-=2;break; default:break;}dspbuf[5]=counter/100;dspbuf[6]=counter/10%10;dspbuf[7]=counter%10; while((P3&0X0F)!=0X0F);}}}}void Display(){P0=0X00;DU=1;DU=0;P0=~(1<<dspcom);WE=1;WE=0;P0=table[dspbuf[dspcom]];DU=1;DU=0;if(++dspcom==8)dspcom=0;}void delayms(unsigned int x) {unsigned int i,j;for(i=x;i>0;i--);for(j=113;j>0;j--);}六、实验结果与分析讨论根据编写的程序,第一次运行时,显示的是“0138-122”当S2按下时,执行加1操作,屏幕显示为“0138-123”,当S3按下时,执行减1操作,屏幕显示还原为“0138-122”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七计数、静态显示、串并转换实验
一、实验目的
学会使用MCS-51系统的定时器/计算器中的计数功能,掌握串行口的同步移位寄存器功能的使用方法以及静态显示程序的编写。
二、实验内容
用MCS-51系统的定时器/计算器0的计数功能,使其工作在方式2下,并把计数结果(范围:00H~FFH)利用串行口通过传入并出芯片74LS164驱动LED数码管显示出来。
三、预备知识
串行口在工作方式0下作为同步移位寄存器使用,RXD(P3.0)用作输入输出端,TXD (P3.1)引脚上输出移位时钟信号,频率固定为fosc/12。
在该工作方式下,51系统经常和与74164或CD4094配合(串入并出芯片),可实现并行输出;与74165或CD4014配合(并入串出芯片),可实现并行输入。
该实验是将串行口利用74164改为并行输出口使用。
四、实验线路图
五、实验程序
; ORG 0100H
MAIN:
MOV TMOD,#06H ;C/T=1,M1M0=10即使定时器0工作在计数功能的方式2下,可自动重装初始值。
MOV TH0, #00H
MOV TL0, #00H ;设置初始值
SETB TR0
MOV SCON, #00H ;使串口工作于工作方式0:同步移位寄存器方式。
CONT1: MOV R3, TL0 ;暂存计数值,用于显示
LCALL DISPLAY
LJMP CONT1
DISPLAY: MOV A, R3 ;显示子程序,通过查表法得到字符的字形码ANL A, #0FH
LOOKUP: MOV DPTR, #TAB
MOVC A, @A+DPTR
MOV SBUF, A ;将低4位数字的字形码送至串口
MOV R7, #0FH
H55S: DJNZ R7, H55S ;用于延时
MOV A, R3 ;下面开始显示高4位
SW AP A
ANL A, #0FH
MOVC A, @A+DPTR
MOV SBUF,A ;将高4位数字的字形码送至串口
LCALL DELAY
RET
DELAY: MOV R6, #0FFh
DELY2: MOV R7, #0FFh
DELY1: DJNZ R7, DELY1
DJNZ R6, DELY2
RET
TAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
END
六、实验步骤
⑴将P3.0(RXD)、P3.1(TXD)分别接至七段数码管显示区的DA TA端和CLK端将P3.4(定时器0的外部计数脉冲输入端T0)接至单脉冲发生器的SP端。
⑵编写程序、保存、联接、调试并运行。
⑶查看结果。
七、思考如何利用中断实现计数值的显示??
八、利用外部中断0来实现计数值的显示,程序如下:
ORG 0100H
MAIN: MOV SP, #53H
MOV TMOD,#06H ;C/T=1,M1M0=10即使定时器0工作在计数功能的方式2下,
;可自动重装初始值。
MOV TH0, #00H
MOV TL0, #00H ;设置计数器初始值
SETB EA
SETB EX0
SETB IT0 ;外部中断初始化
SETB TR0
MOV SCON, #00H ;使串口工作于工作方式0:同步移位寄存器方式。
WAIT:SJMP $
ORG 0003H ;外部中断0入口地址
LJMP CONT1
ORG 0200H
CONT1: MOV R3, TL0 ;暂存计数值,用于显示
LCALL DISPLAY
LJMP CONT1
DISPLAY: MOV A, R3 ;显示子程序,通过查表法得到字符的字形码ANL A, #0FH
LOOKUP: MOV DPTR, #TAB
MOVC A, @A+DPTR
MOV SBUF, A ;将低4位数字的字形码送至串口
MOV R7, #0FH
H55S: DJNZ R7, H55S ;用于延时
MOV A, R3 ;下面开始显示高4位
SW AP A
ANL A, #0FH
MOVC A, @A+DPTR
MOV SBUF,A ;将高4位数字的字形码送至串口
LCALL DELAY
RETI
DELAY: MOV R6, #0FFh
DELY2: MOV R7, #0FFh
DELY1: DJNZ R7, DELY1
DJNZ R6, DELY2
RET
TAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
END。