单片机计数器实验报告

合集下载

单片机计数器实验报告

单片机计数器实验报告

计数器实验报告㈠实验目的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。

我们可以通过开发板上的数码管显示当前的计数值。

实验分析:单片机计数器是通过定时器模块实现的。

定时器是单片机中的一个重要模块,它可以根据设定的时间间隔来触发中断或执行特定的操作。

在本实验中,我们使用了定时器模块来实现计数功能。

通过编写程序,我们可以设定定时器的工作模式和时间间隔。

在每个时间间隔结束时,定时器会触发中断,程序会执行中断服务程序,从而实现计数器的自动递增。

同时,我们还可以通过程序控制数码管的显示,将计数值实时显示出来。

实验总结:通过本次实验,我们学习了单片机计数器的原理和应用,并成功实现了一个简单的计数功能。

单片机计数器在各个领域都有广泛的应用,例如工业自动化、仪器仪表、电子游戏等。

单片机实验报告

单片机实验报告
unsigned int second;
unsigned int count;
void display(unsigned int d);
void delay(unsigned int n);
main()
{
second=0;
count=0;
TMOD=0x61; //T0定时器方式1 T1计数器方式2
TH1=255; TL1=255; //T2计数初值计一次即中断
}
else
{TR1=0;TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;} //满一分钟停止TR1
}
void time1(void)interrupt 3 using 2
{
second++;
}
void int_1() interrupt 0 using 3 //0号中断(外中断0),使用3号寄存器组
{
display(second);
}
}
void time0(void) interrupt 1 using 1
{
count++; //中断一次计一次数
if(count<1200)
{
TH0=(65536-50000)/256; //T1计数初值(65535-50000)/fosc/12 50ms
TL0=(65536-50000)%256;
outdata[2]=10; //不显示
outdata[3]=d/10000; //取最高位
outdata[4]=d/1000%10; //取次高位
outdata[5]=d/100%10; //取次次高位
outdata[6]=ቤተ መጻሕፍቲ ባይዱ/10%10; //取次低位

定时器计数器实验报告

定时器计数器实验报告

定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。

在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。

计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。

在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。

实验目的: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开发板连接到电脑,并下载程序到开发板中。

定时器计数器应用实验报告

定时器计数器应用实验报告

实验名称:定时器/计数器应用实验日期:见自己实验数据得分:同组人:不填指导教师:姓名一、实验目的1.掌握51单片机定时器/计数器的基本结构、工作原理和工作方式。

2.掌握定时器/计数器T0、T1工作在定时器和计数器两种状态下的编程方法。

3.学习和掌握定时器/计数器工作在定时器和计数器两种状态下,分别采用中断和查询方式控制的编程方法。

4.熟练掌握利用软件扩展定时器/计数器量程的原理和编程技巧。

二、实验设备PC机一台,单片机实验系统一套三、实验内容设定时器/计数器工作于定时方式,定时时间为100ms,每当100ms到申请中断。

每10秒种将A的内容循环左移一次,送P1口显示。

四、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1。

它们有两种工作状态,可以工作在定时方式和计数方式;定时是对内部的机器周期进行加法计数,计数是对外部输入的计数脉冲进行加法计数,T0的外部计数脉冲从P3.4引脚输入,T1的外部计数脉冲从P3.5引脚输入;计数满产生溢出,硬件使定时器/计数器T0、T1的中断请求标志TF0、TF1置位;如果定时器/计数器允许中断,则可以采用中断方式进行溢出处理,而如果定时器/计数器不允许中断,则可以采用查询方式进行溢出处理。

若定时器/计数器T0工作在定时状态,在实验系统的晶振频率f OSC=12MH Z时,T0工作在方式1,16位最大计数量程,最长的定时时间是65mS多,要想实现10S定时,必须对T0进行量程扩展。

实验中采用R7进行软件扩展,即R7对T0定时50mS进行计数,计数200次就是定时10S。

每10S对累加器A进行一次左移,然后送P1口显示。

实验电路连接图如图1所示。

图1 定时器/计数器应用实验接线图根据此实验原理编写的实验源程序清单见附页。

五、实验步骤1.在E盘下为工程建立文件夹姓名3;2.新建工程项目文件姓名3.uv2,保存在文件夹姓名3中,并为工程选择目标器件为AT公司的AT89S51;3.编辑源程序,建立源文件姓名3.ASM,保存在文件夹姓名3中;4.将源文件姓名3.ASM添加到工程项目组中;5.设置调试环境,选择调试模式为Proteus软件仿真;6.运行程序,根据设计的数据记录表格进行实验,观察发光管显示的状态,并记录实验现象;7.实验数据经过实验指导教师检查正确后,实验结束。

51单片机定时器计数器汇编实验报告

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计数器 秒表报告

单片机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下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。

单片机c语言程序设计---单片机实验报告

单片机c语言程序设计---单片机实验报告

单片机c语言程序设计---单片机实验报告实验目的:1.掌握单片机的中断的原理、中断的设置,掌握中断的处理及应用2.掌握单片机的定时器/计数器的工作原理和工作方式,学会使用定时器/计数器实验内容:一.定时器/计数器应用程序设计实验1.计数功能:用定时器1方式2计数,每计数满100次,将P1.0取反。

(在仿真时,为方便观察现象,将TL1和TH1赋初值为0xfd,每按下按键一次计数器加1,这样3次就能看到仿真结果。

)分析:外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。

方式2有自动重装初值的功能,初始化后不必再置初值。

将T1设为定时方式2,GATE=0,C/T=1,M1M0=10,T0不使用,可为任意方式,只要不使其进入方式3即可,一般取0。

TMOD=60H。

定时器初值为X=82-100=156=9CH,TH1=TL1=9CH。

程序:#include<REGX51.H>void main(){P1_0=0;TMOD=0x60;TH1=0xFD;TL1=0xFD;ET1=1;EA=1;TR1=1;while(1){}}void timer1_Routine()interrupt3{P1_0=~P1_0;}实验2.中断定时使用定时器定时,每隔10s使与P0、P1、P2和P3端口连接的发光二极管闪烁10次,设P0、P1、P2和P3端口低电平灯亮,反之灯灭。

分析:中断源T0入口地址000BH;当T0溢出时,TF0为1发出中断申请,条件满足CPU响应,进入中断处理程序。

主程序中要进行中断设置和定时器初始化,中断服务程序中安排灯闪烁;TL0的初值为0xB0,TH0的初值为0x3C,执行200次,则完成10s定时。

实验要求:完成计数实验和中断计数实验。

具体包括绘制仿真电路图、编写c源程序、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,对仿真结果进行总结。

程序:#include<REGX51.H>#include"Delay.h"int i;int j=0;void main(){ P1=0; P2=0;P3=0; P0=0; TMOD=0x01;TH0=0x3C;TL0=0xB0;ET0=1;EA=1;TR0=1;while(1) {}}void timer0_Routine()interrupt1 {TH0=0x3C;TL0=0xB0;j++;if(j>=150){ j=0; for(i=0;i<20;i++){P1=~P1;P2=~P2;P3=~P3;P0=~P0;Delay(200); } }}实验分析:心得体会:。

单片机实验报告(相当不错,有具体实验结果分析哦)

单片机实验报告(相当不错,有具体实验结果分析哦)

学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:实验一 I/O 口输入、输出实验地点:基础实验大楼A311一、实验目的掌握单片机P1口、P3口的使用方法。

二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。

以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。

三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。

因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。

若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区)。

2学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:五、实验步骤1)系统各跳线器处在初始设置状态。

用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。

2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。

六、实验参考程序本实验参考程序:;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。

单片机实验报告

单片机实验报告

目录一、实验一 (1)二、实验二 (7)三、实验三 (11)四、实验四 (15)实验一定时/计数器验证实验一、实验目的熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合软件的方式定时;二、实验设备及器件IBMPC机一台PROTEUS硬件仿真软件KeilC51;三、实验内容用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时秒计数加1;秒计数到60时,自动从0开始;四、实验要求要求采用Proteus软件实现上述实验;五、实验步骤1.打开ProteusISIS编辑环境,按照表1-1所列的元件清单添加元件;元件全部添加后,在ProteusISIS的编辑区域中按图1-1所示的原理图连接硬件电路;图1-1电路原理图2.根据参考程序绘出流程图,并辅以适当的说明;流程图如图1-2所示:图1-2程序流程图3.打开KeilμVision4,新建Keil项目,选择AT89C51单片机作为CPU,将参考程序导入到“SourceGroup1”中;在“OptionsforTarget”对话窗口中,选中“Output”选项卡中的“CreateHEXFile”选项和“Debug”选项卡中的“Use:ProteusVSMSimulator”选项;编译汇编源程序,改正程序中的错误;4.在ProteusISIS中,选中AT89C51并单击鼠标左键,打开“EditComponent”对话窗口,设置单片机晶振频率为12MHz,在此窗口中的“ProgramFile”栏中,选择先前用Keil生成的.HEX文件;在ProteusISIS的菜单栏中选择“File”→“SaveDesign”选项,保存设计,在ProteusISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“UseRemoteDebugMonitor”选项,以支持与Keil的联合调试;5.在Keil的菜单栏中选择“Debug”→“Start/StopDebugSession“选项,或者直接单击工具栏中的“Debug”→“Start/StopDebugSession”图标,进入程序调试环境;按“F5”键,顺序运行程序;调出“ProteusISIS”界面可以看到7段数码管显示从0~59s的计数值,每个数值显示1s,如图1-3所示;图1-3程序运行结果六、实验程序SECOND EQU 30HCOUNT EQU 31HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV SECOND,00HMOV COUNT,00HMOV DPTR,TABLECLR AMOV P0,AMOV P2,AMOV TMOD,00HMOV TH0,65536-50000/256MOV TL0,65536-50000MOD256SETB TR0SETB ET0SETB EAMOVIE,82HLJMP $INT_T0:MOV TH0,65536-50000/256MOV TL0,65536-50000MOD256INC COUNTMOV A,COUNTCJNE A,20,I2MOV COUNT,00HINC SECONDMOV A,SECONDCJNE A,60,I1MOV SECOND,00HI1: MOV A,SECONDMOV B,10HDIV ABMOVC A,A+DPTRMOV P0,AMOV A,BMOVC A,A+DPTRMOV P2,AI2: RETITABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHEND七、思考题1.罗列一下Proteus软件的能带给我们的好处,指出一点最能帮助你的地方;使用Proteus软件能使我们方便的搭建电路,同时在没有元器件的情况下进行便于仿真,方便我们在将程序写入单片机前确认运行是否正确,同时可在采购器件之前即可开始开发产品,而不必等到器件采购完后搭建电路才进行程序调试;2.用Proteus界面中的播放键运行仿真与KeilμVision4的环境中联调运行它们两者的区别在什么地方3.用Proteus界面中的播放键运行仿真仅可以观察运行结果,即程序运行在硬件表面上的表现;而联调的时候可以再Keil软件里查看各寄存器和存储器的状况,即硬件的内部情况;4.Keil软件软件仿真与Proteus的仿真对比;使用Proteus仿真可从硬件的角度观察仿真结果,使仿真结果更加形象直观,使我们可从硬件运行状态清楚的判断运行结果是否正确;而在Keil环境中则是从程序的角度通过观察程序中数据的变化来观察仿真结果,需要对程序运行结果充分了解;八、实验总结及相关问题通过本次实验了解了Ptoteus软件的使用方法,以及在掌握了Keil的使用方法下,学会了Proteus与Keil软件联调的方法;在用Proteus中由于忽略了要在总线处放置网络标号导致联调失败,最后通过观察发现数码管引脚电平无变化发现此问题,放置网络标号后运行仿真时数码管引脚电平发生变化可是数码管却没有变亮,经过多次检查接线,未发现接线错误后,觉得可能是软件本身错误,故将总线及数码管周围硬件线路重新绘制一遍后再次运行仿真及可得到图1-3的结果;实验二单片机I/O口控制实验一、实验目的利用单片机的P1口作IO口,使同学学会利用P1口作为输入和输出口;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮;2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭P1.7接按键,按下时LED亮,不按时LED灭;四、实验要求学会使用单片机的P1口作IO口,如果有时间同学也可以利用P3口作IO口来做该实验;五、实验步骤1.用导线把A2区的J61接口与D1区的J52接口相连;原理如图2-1所示;图2-1实验二原理图2.先编写一个延时程序;延时程序见程序1子程序DELAY;3.将LED轮流亮的程序编写完整并使用TKStudyICE调试运行;LED轮流亮程序见程序1;调试运行结果:D1区LED轮流亮;4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连;5.编写P1.7控制LED的程序,并调试运行;按下K1看是否全亮;P1.7控制LED的程序见程序2;调试运行结果:按下P1.7后D1区LED全灭;6.A2区J61接口的P1.7与D1区的J54的SW1相连;然后再使用TKStudyICE运行程序,查看结果;P1.7控制LED的程序见程序2;调试运行结果:按下P1.7后D1区LED全亮;六、实验参考程序程序1:ORG 0000HLJMP MAINORG 0100HMAIN: MOV A,0FFHCLR CMAINLOOP:CALL DELAYRLC AMOV P1,ASJMP MAINLOOPDELAY: MOV R7,0LOOP: MOV R6,0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOPRETEND程序2:ORG 000HLJMP MAINORG 0100HMAIN: JB P1.7,SETLEDCLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP MAINSETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETB P1.4SETB P1.5SETB P1.6SJMP MAINEND七、实验思考题1.请同学思考一下,想出几个实现以上功能的编程方法;程序1可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位后输出至P1口;程序2可在判断P1.7高低电平后根据判断结果直接将80H或7F直接送P1口而不必逐位进行位操作;2.请同学再思考一下,第二个程序中如果使用KEY1作为外部中断控制LED的亮和灭时,程序应如何修改;此时将KEY1接/INT0口,在主程序中开启外部中断设置外部中断触发方式,通过中断服务子程序控制LED亮灭;程序如下所示:ORG 000HLJMP MAINORG 0003H ;中断服务程序LJMP SETLEDMAIN: MOV SP,40HSETB ET0 ;开外部中断CLR IT0 ;设置为电平触发SETB EACLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP CLRLEDSETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETB P1.4SETB P1.5SETB P1.6RETIEND八、实验总结及相关问题通过本次实验掌握了使用TKStudyICE进行硬件仿真调试的方法,在设置仿真器驱动程序声明时对C:\Keil目录下的Tools.ini文件添加描述时,由于添加的路径错误导致无法进行硬件仿真调试,修改为正确路径后方可在DEBUG窗口中的Use选项中找到对应的选项;使用TKStudyICE进行硬件仿真调试相比本学期的电子系统设计中用到的调试方法更快捷,使用更方便;与此同时,通过本次实验对单片机的I/O控制有了更深入的了接,同时加深入对单片机I/O编程的理解;实验三串转并I/O口实验一、实验目的熟悉并掌握串转并的I/O口扩展方法;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.写程序,通过单片机的P1口控制74HC164的串行输入端口,实现串并转换;2.验证串并转换数据的正确性;四、实验要求熟悉串并转换芯片的工作原理,学会使用串并转换芯片扩展单片机的I/O口资源;表3-174HC164真值表五、实验步骤1.短接C5区JP10接口,将C5区J43接口与A2区J61接口的P10~P13对应相连CLK对P10等等;如图3-1所示;图3-1实验三原理图2.运行编写好的软件程序,完成一次串并转换;实验程序见实验参考程序;2.使用C2区的逻辑笔或D1区的J52接口LED指示灯测试并行输出数据Q0~Q7数据的正确性;调试运行结果:通过观察LED的亮灭情况可判断完成一次串并转换,且转换结果正确无误;六、实验参考程序CLK EQU P1.0DINA EQUP1.1DINB EQU P1.2CLR164 EQUP1.3ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,60HNOPCLR CLKSETB DINBCLR CLR164SETB CLR164MOV A,0FFHMOV R4,08HSLCHG: RLC AMOV DINA,CSETB CLKNOPCLR CLKNOPDJNZ R4,SLCHGSJMP$END七、实验思考题参考图3-2电路图,尝试编写软件程序,实现8位LED流水灯的控制;图3.2实验原理图可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位;程序如下所示:CLK EQU P1.0DINA EQUP1.1DINB EQU P1.2CLR164 EQUP1.3ORG 0000HLJMP MAINORG 000BH ;定时器0中断服务程序LJMP SLCHGMAIN: MOV SP,60HNOPCLR CLKSETB DINBCLR CLR164SETB CLR164MOV A,0FFHMOV TMOD,01H ;定时器0工作方式1MOV TH0,18H ;送2ms时间常数MOV TL0,0FCHSETB TR0 ;开中断SETB ET0SETB EASJMP $SLCHG: MOV TH0,18HMOV TL0,0FCHRLC AMOV DINA,CSETB CLKNOPCLR CLKRETIEND八、实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验对串并转化程序的编写有了一定了解,通过编写流水灯程序加深了对单片机串并口的了解;实验四继电器控制实验一、实验目的加深理解继电器的工作原理和特点,掌握利用单片机的IO口控制继电器的一般方法;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.利用D1区的拨动开关和LED,学习继电器的工作原理和特点;2.编写一段程序,用P1.0口控制继电器,继电器控制LED的亮和灭,COM与CLOSE连通时,一盏LED亮;不连通时该LED灭;COM与OPEN连通时,另一盏LED亮,不通时该LED灭;四、实验要求学会继电器的使用和利用单片机的IO口控制继电器的方法;五、实验步骤图4-1继电器驱动控制电路图1.用短路帽短接JP7,使用导线把D1区J54接口的SW1与C7区J9接口的KJ任意一根针相连接;2.使用导线把D1区J52接口的LED1、LED2与C7区J103接口的OPEN1,CLOSE1分别相连,另外C7区J103接口的COM1接地GND;3.接好线后,同学可以拨动D1区的SW1拨动开关,观察现象拨到1时LED2亮,拨到0时LED1亮,并得出结论;运行结果:拨到1时LED2亮,拨到0时LED1亮,说明每拨动一次开关改变一次继电器的状态;4.然后把C7区J9接口的KJ改接到A2区的J61接口的P10;再编写一个程序程序参考实验二,使P1.0口延时一段时间后改变电平值,来控制继电器的开关;实验程序见实验参考程序;调试运行结果:两个LED交替变亮,继电器状态不断改变;六、实验参考程序ORG 0000HLJMP MAINORG 0100HMAIN: MOV R7,0LOOP: MOV R6,0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOPCPL P1.0SJMP MAINEND七、实验思考题1.请同学思考一下,改由OPEN2、COM2、CLOSE2时本实验如何进行;同使用OPEN1、COM1和CLOSE1时连接方法类似,把D1区J52接口的LED1、LED2与C7区J103接口的OPEN2,CLOSE2分别相连,另外C7区J103接口的COM2接地GND即可;2.请同学再思考一下,继电器的用途,并举例说明;继电器是一种电控制,是当输入量激励量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器;它具有又称输入回路和被控制系统又称输出回路之间的互动关系;通常应用于自动化的控制中,它实际上是用小电流去控制大电流运作的一种“自动开关”;故在电路中起着自动调节、安全保护、转换电路等作用;按照其工作原理可有以下应用:电磁继电器固体继电器温度继电器舌簧继电器时间继电器高频继电器极化继电器其他类型的继电器八、实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验了解了继电器的控制方法;对继电器这一器件有了一定了解;。

基于51单片机的光电(激光)计数器实验报告

基于51单片机的光电(激光)计数器实验报告

设计题目:激光计数器小组成员:基本要求:通过阻挡激光照射接收器记一次数激光计数器原理主要是利用51单片机接收集成激光接收模块发出的数字信号,采用中断计数,然后驱动数码管显示原理描述:电路的指导思想是利用激光发射器发射激光,集成激光接收器接收此激光,并将其放大、整流形成高电平信号。

当有人或物挡住激光时,接收器没有接收到激光,接收器将输出低电平。

这个便是外部计数脉冲信号。

这个计数脉冲信号送入A T89C51单片机中进行计数控制,在经过扩展、显示驱动完成最后的显示过程。

原理图设计:主模块包括单片机最小系统和电源滤波按键复位模块USB供电模块激光接收器接入模块数码管显示驱动模块PCB图相关代码:#include "reg52.h"unsigned int led[4]={0,0,0,0};unsigned int num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned int count=0;void delay(unsigned int time){unsigned int i;for(;time>0;time--)for(i=0;i<60;i++);}void Display(){P2=0x08;P0=num[led[0]];delay(10);P2=0x04;P0=num[led[1]];delay(10);P2=0x02;P0=num[led[2]];delay(10);P2=0x01;P0=num[led[3]];delay(10);}void main(){delay(200);P0=0xff;//初始化端口P2=0xff;IT0=1;//初始化外部中断0EX0=1;EA=1;//开总中断while(1){Display();}}void fndIorn(void) interrupt 0 {EX0=0;count++;led[0]=count/1000;led[1]=(count%1000)/100;led[2]=(count%100)/10;led[3]=count%10;EX0=1;}软件清单:Keil 、Altium Designer、STCISP调试过程与结果因为信号的产生于接收均采用的集成模块,硬件方面几乎没有调试过程,一次成功。

单片机实验报告

单片机实验报告

实验报告实验课程:单片机原理及应用班级:12自动化2班学号:姓名:*师:**成绩:实验日期:年月日实验名称:实验1——计数显示器一、实验目的:学习Proteus 软件的使用,掌握单片机原理图的绘图方法。

二、实验内容:1、绘制“计数显示器”电路原理图;2、利用提供的hex文件验证此电路的运行效果。

三、实验要求:提交的实验报告中应包括:1、绘图方法简述,要求说明元件与电源的选取、摆放及属性编辑,总线与标签的画法等内容;2、电路原理图;3、仿真运行效果展示,要求就仿真文件加载方法及3~4幅运行截图进行简要说明;4、实验小结,说明遇到的主要问题或实验1体会等。

参考电路原理图如下:元件类别电路符号元件名称Microprocessor ICs “U1”80C51Miscellaneous “X1”/12MHz CRYSTALCapacitors “C1”~“C2”/1nF CAPCapacitors “C3”/22μF CAP-ELECResistors Packs “RP1”/7-100ΩRESPACK-7Resistors “R1”/100ΩRESOptoelectronics “LED1”~“LED2”7SEG-COM-CAT-GRNSwitches & Relays “BUT”BUTTON1、编程思路及C51源程序:2、电路原理图:3、仿真运行效果展示:4、实验小结:熟悉Proteus软件,了解软件的结构组成与功能;学习ISIS模块的使用方法,学会设置图纸、选元件、线画总线、修改属性等基本操作;学会可执行文件加载及程序仿法;理解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制。

实验名称:实验2——LED指示灯循环控制一、实验目的熟悉μVision3编译软件、掌握C51编程与调试方法。

二、实验内容1、按照教材P243的图A.34,绘制实验二电路原理图;2、编写C51程序,实现8个LED灯依次点亮的功能:P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms;3、观察仿真结果,完成实验报告。

51单片机定时器计数器汇编实验

51单片机定时器计数器汇编实验

实验三、定时器/计数器实验报告一、实验内容1、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.7接到示波器显示该方波波形;用T1作计数器对从P3.6输出的方波进行计数,计数结果通过P1口输出到发光二极管显示。

(计算机仿真)2、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.6输出的方波接到P3.5口通过T1作计数器对该方波进行计数,计数值由LED显示,用存储示波器显示P3.7输出的方波。

(实验台验证)3、设计一个60秒计时器,秒计时结果用两位LED数码管显示。

(计算机仿真)二、实验仿真图(1)脉冲计数实验程序ORG 0000HBEGIN:MOV TMOD,#51H MOV TL0,#0F0HMOV TH0,#0DBHMOV TH1,#00HMOV TL1,#00HMOV P1,#00HMOV P0,#00HMOV P2,#00HMOV R3,#00HMOV R4,#00HSETB TR0SETB TR1S1: MOV R1,#33HMOV A,R4MOV R5,TL1ADD A,R5MOV P1,AMOV R2,TL1CJNE R2,#10,S2MOV TH1,#00HMOV TL1,#00HINC R3MOV A,R3MOV DPTR,#TAB1MOVC A,@A+DPTRMOV P2,AMOV P0,#3FHMOV A,R3MOV B,#0AHMUL ABMOV R4,AMOV P1,R4AJMP NEXTS2: MOV R1,#33HMOV DPTR,#TAB1MOV A,TL1MOVC A,@A+DPTRMOV P0,AAJMP NEXT LOOP: JBC TF0,NEXT AJMP LOOPNEXT: MOV TL0,#0F0HMOV TH0,#0DBHDJNZ R1,LOOPCPL P3.6CPL P3.7AJMP S1TAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;(SW3,SW4为:00) END(2)60秒定时器实验程序ORG 0000HBEGIN:MOV TMOD,#51HTL0,#0F0HMOVMOVTH0,#0DBHTH1,#00HMOVTL1,#00HMOVR3,#00HMOVP0,#00HMOVP2,#00HMOVSETBTR0TR1SETBS1: MOV R1,#33HR2,TL1MOVR2,#10,S2CJNETH1,#00HMOVTL1,#00HMOVR3INCR3,#06H,S4CJNER3,#00HMOVS4: MOV A,R3DPTR,#TAB1MOVA,@A+DPTRMOVCP2,AMOVMOVP0,#3FHNEXTAJMPS2: MOV R1,#33HDPTR,#TAB1MOVA,TL1MOVA,@A+DPTRMOVCMOVP0,ANEXTAJMPLOOP: JBC TF0,NEXTLOOPAJMPNEXT: MOV TL0,#0F0HTH0,#0DBHMOVR1,LOOPDJNZP3.6CPLCPLP3.7S1AJMPTAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END。

单片机60秒计时器实验报告

单片机60秒计时器实验报告

单片机60秒计时器实验报告1. 引言在现代电子技术中,单片机是一种非常重要的设备,它具有小巧、功能强大、可靠性高等优点。

本实验旨在使用单片机设计一个60秒计时器,通过实验来熟悉单片机的使用和编程,同时加深对计时器原理的理解。

2. 实验目的1.学习单片机的基本使用方法;2.掌握计时器的工作原理;3.通过实验设计一个60秒计时器。

3. 实验器材和软件3.1 实验器材•单片机开发板•电脑•USB数据线3.2 实验软件•Keil C 编译器4. 实验步骤4.1 硬件连接将单片机开发板通过USB数据线连接到电脑上。

4.2 软件配置1.打开Keil C 编译器;2.新建一个工程;3.选择合适的单片机型号;4.配置编译器和调试器。

4.3 编写代码在Keil C 编译器中编写代码,实现60秒计时器的功能。

以下是代码示例:#include <reg51.h>// 定义延时函数void delay(unsigned int ms){unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 1141; j++);}void main(){unsigned int i;while (1){for (i = 0; i < 60; i++){// 计时器开始计时P1 = i;delay(1000);}// 计时器停止计时P1 = 0;}}4.4 烧录程序将编写好的代码烧录到单片机开发板中。

4.5 运行实验将单片机开发板上电,观察数码管的显示,验证60秒计时器的功能是否正常。

5. 实验结果与分析经过实验,我们成功实现了一个60秒计时器。

在实验过程中,我们观察到数码管的显示按照秒数递增,当计时达到60秒时重新归零。

这说明我们的计时器工作正常。

6. 实验总结通过本次实验,我们学习了单片机的基本使用方法,并掌握了计时器的工作原理。

通过编写代码和烧录程序,我们成功设计了一个60秒计时器。

基于51单片机实验报告(计算器)

基于51单片机实验报告(计算器)

基于51单片机实验报告(计算器)一.计算器模块1.功能介绍利用8051 单片机硬件资源和常用外围电路如LCD1602,七段数码管,时钟(DS1302)温度传感器(18B20)等实现一个能做简单四则运算,并具有时钟显示,温度显示附加功能的计算器。

2.设计方案利用STC89C52为内核的单片机,PC机。

四则运算利用4*4矩阵键盘实现从0—9和运算符号的输入,并将操作过程和结果显示在LCD1602上。

时钟显示和温度显示,可以利用DS1302产生年份,月份,日期,星期,时,分,秒的数据,并将数据送往LCD1602显示,同样可以利用单片机开发板上面集成的DS18B20温度传感器来测试周围环境的温度,将获取的温度通过在LCD1602来显示。

系统设计框图3.具体实现代码计算器四则运算部分主要分为键盘扫描的键值读取,判断运算符号实现乘除优先级计算,LCD1602显示。

键盘扫描常用的有行扫描法,线反转法,此处我们用行扫描法,可以更明了读取键值。

unsigned char temp;key = null;//第一行按键P3 = 0xfe;temp = P3;temp = temp & 0xf0;if (temp != 0xf0){delay(10); //延时软件去抖动temp = P3;temp = temp & 0xf0;if (temp != 0xf0) //确认有键按下{temp = P3;switch (temp){case 0xee:key = 'D'; //读键值break;case 0xde:key = 0;break;case 0xbe:key = '=';break;case 0x7e:key = '/';break;}flag++;}}读完按键值之后我们需要读取运算的数字与运算符号,通过判断键值为数字则通过nun=nun*10+key,计算出数字,判断键值为运算符号则读出数字和键值。

单片机计数器实验报告

单片机计数器实验报告

单片机实验报告(计数器)学院: 物理与机电工程学院专业: 电子科学与技术班级: 2013级2班学号: 201310530231姓名: xxx指导老师: xx1.实验目的:1.学会设置计数器相关参数2.学会使用计数器控制LED的明灭3.学会使用计数中断4.2.试验环境及设备设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:在设置完相关参数后再等待计数中断的出现,当计数中断出现后即马上跳到相应中断服务子程序,执行想要得到的服务3.实验内容内容:用计数器控制LED的明灭步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将试验箱上的的IO1连接输出端子K1,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INPUT下的工程文件IO_INPUT.Uv2编译程序,上电,在程序注释处设置断点,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,按计数按钮,两次后运行程序到断点处,观察窗口的数值与开关的对应关系。

程序:ORG 0000HAJMP MAINORG 000BHLJMP TIMEORG 0030HMAIN:MOV SP,#80HMOV TMOD,#06HMOV TH0,#0FBHMOV TL0,#0FBHSETB ET0SETB EASETB TR0SJMP $TIME:CPL P0,0RETIEND4.实验结果:如上程序运行结果:调试运行时,按五下计数按钮后,LED亮,再按五下后,LED灭。

5.实验结论1、通过本次实验我了解了keil的使用方法,并学会了IO口的使用,延时子程序的编写和使用,及掌握单片机编程器的方法。

通过实验基本上掌握了单片机的输入输出使用方法,在单片机中有四组并行输入输出口,都可以作为一般的输入输出口来用,程序中用MOV指令可以实现输入输出。

单片机设计实验报告简单计算器的设计

单片机设计实验报告简单计算器的设计

目录1.总体方案选择 (2)1.1 实验要求: (2)1.2方案设计 (2)2.硬件原理电路图的设计及分析 (2)2.1主控模块 (2)2.1.1 STC89C52单片机主要特性 (3)2.1.2 STC89C52单片机管脚图 (4)2.1.3 STC89C52单片机的中断系统 (4)2.1.4 STC89C52单片机的定时/计数器 (4)2.2矩阵键盘模块设计: (5)2.2.1矩阵键盘原理介绍 (5)2.2.2矩阵键盘电路设计 (5)2.3 LCD液晶显示器简介 (6)2.3.1液晶模块简介 (6)2.3.2液晶显示部分与89S52的接口 (7)3系统软件设计 (9)3.1系统软件流程图 (9)3.2系统整体原理图 (10)4.系统调试 (11)4.1硬件调试 (11)4.2软件调试 (11)4.3调试结果 (12)5. 心得体会 (13)1.总体方案选择1.1 实验要求:1)通过小键盘实现数据的输入,并在LED数码管上显示2)实现+、-、*、/3)在LED数码管上显示结果4)并有清零,退出功能1.2方案设计本系统以STC89C52单片机为控制核心,对系统进行初始化,主要完成对键盘的响应、液晶显示灯功能的控制,起到总控和协调各模块之间工作的作用。

单片机通过检测键盘读取使用者按下对用功能的按键,然后通过单片机内部运放把运算的结果显示在液晶屏幕上。

图1-1系统结构框图本系统结构如图1-1所示,本设计可分为以下模块:单片机主控模块、键盘模块、功率放大模块、闹铃模块、按键设置模块。

下面对各个模块的设计方案逐一进行论证分析。

2.硬件原理电路图的设计及分析2.1主控模块STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。

STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。

STC89C52单片机的基本组成框图见图2-1。

单片机计数器实验报告

单片机计数器实验报告

单片机计数器实验报告引言计数器是一种常见的电子元器件,用于计数、计时和测量。

在现代电子技术中,单片机计数器已经成为常用的计数器。

本实验将介绍单片机计数器的原理、实现及其应用。

实验原理单片机计数器是基于计数器电路的基础上,将单片机芯片与计数器进行结合而成的新型计数器。

其原理如下图所示:其中,单片机芯片通过外部引脚 P3.4 和 P3.5 连接门电路,门电路将外部高电平脉冲信号转化为单片机计数器所需的时钟信号。

单片机通过 P0.0~P0.3 引脚输出计数器计数所得的二进制数码信号,实现计数器的计数功能。

具体实现方式如下:1.设置计数器初值。

将初值存放在数据寄存器中。

2.运行计数器。

将计数控制信号送入 TCON 寄存器中,启动计数器的计数功能。

3.计数器状态检测。

通过对计数器状态寄存器的读取,实现对计数器计数状态的检测。

4.计数器中断控制。

通过对计数器中断控制寄存器的设置,实现计数器中断功能的控制。

以上步骤结合起来,即可实现单片机计数器的完整功能。

实验步骤本实验采用 STC89C52 单片机,按照以下步骤进行:1.连接硬件。

连接单片机芯片、晶振、电容、电阻、LED 等电子元件,按图示连接并焊接 PCB 板。

2.编写程序。

根据实验原理和硬件连接,编写程序,并进行调试。

3.烧录程序。

将编写好的程序通过编程器烧录到单片机芯片中,实现程序的加载和运行。

4.运行实验。

串口通信方式输入脉冲信号,在 LED 显示屏上显示计数结果,并进行实验数据的记录。

实验结果本实验成功实现了单片机计数器的设计与实现,并验证了计数器的计数功能。

实验结果如下:1.在高频脉冲输入时,显示器显示秒数的计数器数值,精度可控制在毫秒及以上,经过实验结果显示正确。

2.计数器能够实现正向计数和反向计数的功能,通过程序调试和功能实验验证。

3.计数器能同时记录两个计数器数值,实现双计数器计数功能。

实验分析单片机计数器是一种集成度高、运算速度快、精度高、功能强大的计数器。

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

单片机实验报告
(计数器)
学院: 物理与机电工程学院专业: 电子科学与技术班级: 2013级2班
学号: 201310530231
姓名: xxx
指导老师: xx
1.实验目的:
1.学会设置计数器相关参数
2.学会使用计数器控制LED的明灭
3.学会使用计数中断
4.2.试验环境及设备
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:在设置完相关参数后再等待计数中断的出现,当计数中断出现后即马上跳到相应中断服务子程序,执行想要得到的服务3.实验内容
内容:用计数器控制LED的明灭
步骤:
1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将试验箱上的的IO1连接输出端子K1,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INPUT下的工程文件IO_INPUT.Uv2编译程序,上电,在程序注释处设置断点,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,按计数按钮,两次后运行程序到断点
处,观察窗口的数值与开关的对应关系。

程序:
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TIME
ORG 0030H
MAIN:
MOV SP,#80H
MOV TMOD,#06H
MOV TH0,#0FBH
MOV TL0,#0FBH
SETB ET0
SETB EA
SETB TR0
SJMP $
TIME:
CPL P0,0
RETI
END
4.实验结果:
如上程序运行结果:调试运行时,按五下计数按钮后,LED亮,再按五下后,LED灭。

5.实验结论
1、通过本次实验我了解了keil的使用方法,并学会了IO口的使用,延时子程序的编写和使用,及掌握单片机编程器的方法。

通过实验基本上掌握了单片机的输入输出使用方法,在单片机中有四组并行输入输出口,都可以作为一般的输入输出口来用,程序中用MOV指令可以实现输入输出。

通过实验还学会了计数器的使用。

2、通过本实验的学习,基本掌握大部分常用指令的使用方法,对大部分指令有了初步的了解。

3、对于实验程序,可以使用计数器不同的工作方式来做相应的控制。

相关文档
最新文档