单片机实验设计脉冲计数实验

合集下载

【报告】单片机定时器计数器实验报告

【报告】单片机定时器计数器实验报告

【关键字】报告单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的1. 学习单片机内部定时/计数器的使用和编程方法;2. 进一步掌握中断处理程序的编程方法。

㈡实验器材1. 2. 3. 4. 5.G6W仿真器一台MCS—51实验板一台PC机一台电源一台信号发生器一台㈢实验内容及要求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 AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H;T0的中断入口地址;设置T1做定时器,T0做计数器,都于方式1工作;装入中断次数;装入计数值低8位;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断SETB EA ;允许CPU中断SJMP $;等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0MOV P1.7,C ;保护现场;装入计数值低8位;装入计数值高8位,50ms;允许T1中断;未到1s,继续计时;1s到重新开始;显示计数器T0的值;读计数器当前值;将计数值转为十进制;显示部分,将A中保存的十位赋给L0~L3 将B中保存的各位转移到A中;将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器T0清零MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。

单片机实验-外部中断、计数器定时器

单片机实验-外部中断、计数器定时器

1)用单次脉冲申请中断INT0,在中断处理程序中对输出信号进行反转。

ORG 0000HLJMP STARTORG 0003HLJMP INT0START:CLR P1.0MOV TCON, #01HMOV IE, #81HLJMP $INT0:PUSH PSWCPL P1.0POP PSWRETIEND结果:按一下单脉冲小灯亮,再按一下,小灯灭接线:INT0接单脉冲P1.0接个小灯2)用单次脉冲申请中断INT1,在中断处理程序中实现8个小灯左移点亮1次。

ORG 0000HLJMP STARTORG 0013HLJMP INT1START:MOV TCON,#04HMOV IE,#84HCLR PX1MOV A,#01HSJMP $INT1:MOV R1,#8LOOP:MOV P1,ALCALL DELAYRL ADJNZ R1,LOOPRETIDELAY:MOV R6,#200DELAY1:MOV R7,#125DELAY2:DJNZ R7,DELAY2DJNZ R6,DELAY1RETEND结果:按一下单脉冲,8个小灯左移点亮一次接线:INT1接单脉冲P1口接8个小灯3)将8051计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行单脉冲计数,并将其数值按二进制在P1口驱动LED灯上显示出来。

ORG 0000HSTART:MOV TMOD,#05HMOV TH0,#0MOV TL0,#0SETB TR0LOOP:MOV P1,TL0LJMP LOOPEND结果:P1口与四个小灯相连,按单脉冲的次数在四个小灯上显示接线:(P3.4)T0接单脉冲P1.0到P1.4接4个小灯4)用CPU内部定时器T0中断方式计时,实现每1秒钟输出状态发生一次反转。

ORG 0000HLJMP STARTORG 000BHLJMP INTSTART: MOV TMOD,#01HMOV B,#0AH;即10,设循环次数10次。

完整版脉冲计数器设计

完整版脉冲计数器设计

脉冲计数设计与分析摘要我们知道,555电路在应用和工作方式上一般可归纳为3类。

每类工作方式又有很多个不同的电路。

在实际应用中,除了单一品种的电路外,还可组合出很多不同电路,如:多个单稳、多个双稳、单稳和无稳,双稳和无稳的组合等。

这样一来,电路变的更加复杂。

为了便于我们分析和识别电路,更好的理解555电路,这里我们这里按555电路的结构特点进行分类和归纳,把555电路分为3大类、8种、共18个单元电路。

每个电路除画出它的标准图型,指出他们的结构特点或识别方法外,还给出了计算公式和他们的用途。

555时基电路是一种将模拟功能与逻辑功能巧妙地结合在同一硅片上的组合集成电路。

该电路可以在最基本的典型应用方式的基础上,根据实际需要,经过参数配置和电路的重新组合,与外接少量的阻容元件就能构成不同的电路,因而555电路在波形的产生与变换、测量与控制、家用电器、电子玩具等许多领域中都得到了广泛应用关键字:NE555 计数译码显示目录第一章脉冲计数器简介 (3)1.1脉冲计数器绪论 ......................................... 错误!未定义书签。

1.2脉冲计数器主要内容 ................................. 错误!未定义书签。

第二章脉冲计数器设计与分析 .. (4)2.1方案与论证 (4)2.2总体框图及模块设计 (5)2.3总体电路设计 (9)2.4系统测试,抗干扰及注意细节 (9)第三章脉冲计数器设计结果分析论证 (10)3.1硬件调试 (10)3.2结果分析得出结论 (11)附录: .......................... 错误!未定义书签。

参考文献: .. (12)第一章脉冲计数器简介1.1发展趋势由555时基电路构成常见的最基本的典型应用电路有:单稳态触发电路、双稳态触发电路、无稳态电路,而用这3种方式中的1种或多种组合起来可以组成各种实用的电子电路,如定时器、分频器、脉冲信号发生器、元件参数和电路检测电路、玩具游戏机电路、音响告警电路、电源交换电路、频率变换电路、自动控制电路等第二章脉冲计数器设计与分析2.1方案与论证方案一:用MAX0832产生脉冲信号,经过计数、译码、显示,此方案性价比高,硬件电路较为简单。

单片机及其接口技术实验报告

单片机及其接口技术实验报告

单片机及接口技术实验报告实验一数据传送程序一、实验目的1、掌握汇编语言设计和调试方法。

2、掌握DVCC实验系统的操作步骤。

二、实验内容1、编程实现,把7000H~70FFH单元的内容清零。

2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,传送个数为0FFFH个。

三、DVCC实验系统操作说明1、接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset键。

2、运行DVCC软件。

(程序DVCC598H实验系统DVCC实验系统)3、单击工具栏上“新建”或“打开”按钮,编写源程序。

单击“编译”按钮,使其形成可执行文件。

4、单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。

联机成功,屏幕上出现:.反汇编窗口、寄存器标示位窗口。

5、在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。

6、单击工具栏上“运行”或“单步”按钮,运行实验程序。

7、单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。

鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。

8、运行完毕,先按实验箱上的复位按钮Reset键,再按PCDBG键,并且点击屏幕上OK,即可退出运行状态。

四、实验程序代码1、把7000H~70FFH单元的内容清零。

程序代码:ORG 0000HAJMP STARTORG 70HSTART: MOV P2, #70H ;送地址高8位到P2端口MOV R0, #00H ;R0=00H,表地址低8位CLR A ;将累加器A清0LOOP: MOVX @R0, A ;将A送入以R0内容为地址的外部RAM.INC R0 ;R0+1-->R0CJNE R0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOPAJMP $ ;暂停END2、编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告实验名称:频率计 指导教师:徐建军 学生信息:鄢立夏(电气 0903,09271061) 闫琛 (电气 0904,09271121)一、 实验题目 6 位数码管显示频率,测量频率的范围为 50HZ—50KHZ 用外 部中断或计数器,可使用 555 波形发生器。

二、 实验电路频率测量电路鄢立本电路图根据实验板的绘制。

三、 实验原理 本实验中采用了测频的方法,使用了 T0、T1 定时计数器,其中 通过控制 T1 作为定时器设定 1S 延时,T1 作为计数器接受脉冲输入。

1S 延时到,关闭 T0、T1 读取 TH0、TL0 并将此两个 8 位数据转化为 6 位十进制数存储进 30H-35H 的位寻址空间内, 然后调用数码管显示函 数,显示 30H-35H 中的数值。

然后对 T0、T1 做下一次计数的初始化 设置,并清零 TH0、TL0。

再进入下一次测频阶段,如此循环,即可夏实现动态测量输入信号的频率并在数码管上进行显示。

四、 程序控制流程图START 关闭T0、T1 停止计数单片机读取 TH0、TL0T0->十六位计数器 初始化 T1->十六位20ms定 时初始化初始化数据存储空 间初始化数据处理 函数开启T0、T1, 开始计数 数据处理完毕并送至 30H~35H?N YP3.4管脚脉冲NT1,50次中断, 定时1秒到?数码管显示 30H~35H内容N显示完 毕?频 率 计 控 制 流 程 图Y设计:鄢立夏、闫琛五、 实测代码 由于我们采用了自己焊接的 51 单片机最小系统为新片烧写程序,然后将新 片安放至实验板上进行调试的,编写软件为 Keil,所以一下包括注释等某些格式 可能和伟福软件有些不同。

望谅解。

Org 0000H Sjmp Main; Org 000BH; Sjmp Timer0_Serv; 判断 100Khz 时溢出时使用 Org 001BH Sjmp Timer1_Serv; Main: Lcall Sys_Init; LCALL Start; Sys_Loop: Ajmp Sys_Loop; while(1);//开始函数 Start: Setb TR0; Setb TR1; Setb ET1; Setb ET0 Setb EA; Ret; //系统初始化函数 Sys_Init: Lcall Timer_Init; //设置定时时间 50*20ms=1s MOV 20H,#50; //保存 T0 的计数值 Mov 21H,#0; Mov 22h,#0; Mov 23H,#0;//100Khz 位 //设置六位数据存储空间; MOV 31H,#0; MOV 32H,#0; MOV 33H,#0; MOV 34H,#0; MOV 35H,#0; MOV 36H,#0; Ret; //定时器/计数器 0、1 初始化函数,T0 作为计数器,T1 作为定时器 Timer_Init: Mov TMOD,#15H; Mov TH0,#00H; Mov TL0,#00H; Mov TH1,#0ECH;定时 10ms Mov TL1,#078H; Ret; //T0 中断服务函数 Timer0_Serv: INC 23H; 十万位处理; Reti; //T1 中断服务函数 Timer1_Serv: MOV R1,#31H;数据起始位 MOV R2,#6; MOV R4,#0FEH; Single_Spark:;单个数码管亮,循环起来MOV A,R4; MOV P0,A; RL A; MOV R4,A; MOV A,@R1; MOV DPTR,#Led_Data; MOVC A,@A+DPTR; MOV P2,A; INC R1; LCALL Delay; DJNZ R2,Single_Spark; //判断 1S 定时是否已到 Djnz 20H,Timer_Go_On; Clr TR0; Clr TR1; Mov 21H,TL0; Mov 22H,TH0; Mov 20H,#100; LCALL Frequence_Show; Mov TH0,#00H; Mov TL0,#00H; Timer_Go_On: Mov TH1,#0B1H;定时 10ms Mov TL1,#0DFH; SETB TR0; SETB TR1; EXIT: Reti; Frequence_Show: MOV R0,#31H MOV R1,#06H ;对上次的内容清零 Clear_Data: MOV @R0,#0 INC R0 DJNZ R1,Clear_Data; //计数器处理函数,封装. Data_Handle: MOV A,23H; MOV B,#0AH; DIV AB; MOV 24H,A ;存储第一位商 MOV A,B;MOV 30H,22H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 25H,A MOV A,B; SWAP A; ANL 22H,#0FH; ADD A,22H; MOV B,#0AH; DIV AB; MOV 26H,A MOV A,B; MOV 30H,21H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 27H,A; MOV A,B; SWAP A; ANL 21H,#0FH; ADD A,21H; MOV B,#0AH; DIV AB; MOV 28H,A; MOV 31H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 24H,A MOV A,B; SWAP A; ADD A,26H;;存储第二位商;存储第三位商;存储第四位商;存储第五位商 ;存储十进制数个位;存储第一位商MOV B,#0AH; DIV AB; MOV 25H,A; MOV A,B; SWAP A; ADD A,27H; MOV B,#0AH ; DIV AB ; MOV 26H,A; MOV A,B; SWAP A; ADD A,28H; MOV B,#0AH; DIV AB; MOV 27H,A; MOV 32H,B; MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB ; MOV 24H,A ; MOV A,B ; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB ; MOV 25H,A; MOV A,B; SWAP A ; ADD A,27H; MOV B,#0AH; DIV AB; MOV 26H,A; MOV 33H,B; MOV A,24H; SWAP A; ADD A,25H;;存储第二位商;存储第三位商;存储第四位商 ;存储十进制数十位;存储第一位商;存储第二位商;存储第三位商 ;存储十进制数百位MOV B,#0AH; DIV AB; MOV 24H,A ; MOV A,B; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB; MOV 25H,A MOV 34H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 35H,B; MOV 36H,A;;存储第一位商;存储第二位商 ;存储十进制数千位;存储十进制数万位 ;存储十进制数十万位MOV R0,#6; MOV R1,#31H; MOV R2,#0EFH MOV DPTR,#Led_Data;RET; Delay: MOV 40H,#0F0H; Delay_Loop: NOP; DJNZ 40H,Delay_Loop; RET; Led_Data: DB 3FH,06H,5BH,4FH,66H,6DH,0FDH,07H,0FFH,0EFH; END六、 实验问题总结及解决方法 1、 在调试数码管显示子程序时,数码管显示太暗。

第3次《单片机原理与应用》-定时计数器

第3次《单片机原理与应用》-定时计数器

定时器初始化编程:
使用定时器工作之前,先写入控制寄存器, 确定好定时器工作方式。 初始化编程格式:
MOV TMOD,# 方式字 MOV THx,#XH MOV TLx,#XL (SETB EA ) (SETB ETx) SETB TRx ;选择方式 ;装入Tx时间常数 ;开Tx中断 ;启动Tx定时器
TMOD,#01H ;设置T0为方式1定时
ACALL PT0M0
HERE: AJMP HERE
;调用初始化子程序PT0M0
;原地循环,等待中断
22
PT0M0: MOV
TL0,#0CH
;T0初始化,装初值的低8位
MOV
TH0,#0FEH
;装初值的高8位
;允许T0中断 ;总中断允许 ;启动T0 ;中断子程序,T0重装初值 ;P1.0的状态取反
本例,主程序用一条转至自身的短跳转指令来代替。
21
参考程序如下:
ORG 0000H ;程序入口 ;转主程序 ;T0中断入口 ;转T0中断处理程序IT0P ;主程序入口 ;设堆栈指针
RESET: AJMP MAIN ORG 000BH
AJMP IT0P ORG MAIN: MOV MOV 0100H SP,#60H
2)中断方式:初始化后执行其它任务,中断服务程序处理溢出。 ORG 0000H LJMP MAIN ORG 000BH(001BH) ;Tx中断入口 LJMP PTS MAIN: … ;初始化后执行其他程序 PTS: … ;溢出中断服务程序 MOV THx,#XH ;重装时间常数 MOV TLx,#XL RETI
即T0每隔1ms产生一次中断,CPU响应中断后,在中断服务 子程序中对P1.0取反。为此要做如下几步工作。

基于单片机毕业论文

基于单片机毕业论文

基于单片机毕业论文单片机是一种非常重要的微处理器,被广泛用于许多领域,如智能家居、汽车行业、医疗健康等。

在微处理器技术和应用方面,单片机已经成为一个重要的研究领域。

本文拟以双模脉冲计数器为例,论述我的毕业设计。

一. 研究背景随着计算机技术的发展,许多国家的工业生产在应用微处理器的控制技术。

在单片机的应用中,计数器广泛应用于信号处理、频率测量、速度测量、位置控制、编码器等方面。

为了满足计数精度和灵敏度的要求,本设计选择双模脉冲计数器。

二. 总体设计1. 系统功能双模脉冲计数器是一种多功能计数器,可以用来读取脉冲信号,并将计数结果在数码管上显示出来。

在实际应用中,双模脉冲计数器可用于工业自动化控制、物理实验、仪表测试等方面。

2. 系统框图系统框图如下所示:3. 系统硬件基础本设计使用51单片机(AT89S52)为核心,并利用I/O 口完成输入/输出任务。

同时,利用计数器的时钟输入调制来驱动数码管。

4. 系统软件设计程序采用C和汇编混合编程。

使用C语言实现按键扫描、计数脉冲数、显示计数结果等功能,使用汇编语言实现驱动显示模块任务。

5. 电路板设计本设计采用双面板,设计尺寸为100mm*80mm。

其中,一个面板主要用于系统模块的连接,另一个面板用于LCD、按键、LED灯、蜂鸣器、数码管等模块的连接。

三. 实验结果本设计的实验结果表明,双模脉冲计数器可以实现计数精度高、反应迅速、功能多样等特点,达到了设计预期结果。

四. 结论本设计结合了计算机控制技术和模拟电路技术,实现了双模脉冲计数器的功能。

同时,通过大量的实验和数据分析,证明了双模脉冲计数器具有良好的计数精度和反应速度。

未来实际应用中,双模脉冲计数器可以用于工业自动化控制、物理实验、仪表测试等方面。

总之,本设计结合了计算机控制技术和模拟电路技术,成功实现了双模脉冲计数器,对于提高计数精度、反应速度等具有重要的意义。

同时,本设计也展示了单片机技术在实际应用中的巨大优势和潜力。

单片机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口控制实验实验四信号灯控制实验五脉冲计数实验实验六并口扩展芯片8255控制交通灯实验七点阵LED显示实验实验八AD转换实验实验九电脑时钟(定时器,中断综合实验)实验十步进电机控制实验实验十一LCD液晶显示屏实验实验一顺序结构程序设计一、实验目的掌握汇编语言设计和调试方法。

二、实验内容1.拼字程序:把2000H的内容拆开,高位送2001H低位,低位送2002H 低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。

2.拼字程序:把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节。

3. 求和程序:将30H和31H单元中存放的2个一字节BCD码组合成一个2位的BCD 码存入32H单元,31H单元中的数为低4位。

三、实验步骤用连续或单步方式运行程序,检查2000—2002H中内容变化情况。

四、思考如何用断点方式调试本程序。

实验二数据传送程序一)实验目的:1)掌握单片机汇编语言程序设计和调试方法2)掌握单片机内部RAM,外部RAM,ROM中数据操作方法二)实验内容及步骤:1)再将内部RAM50H单元开始的十个数传到40H为始址的内部RAM中2)再将内部RAM 50H单元开始的十个数送到1000H为始址的外部RAM中3)再将ROM的2000H单元开始的十个数传送到以70H为始址的内部RAM中实验三简单I/O口控制实验一、实验目的(1)学习P1口的使用方法;(2)学习延时子程序的编写。

二、实验预备知识(1)P1口对准双向口,每一位都可独立地定义为输出线或输入线。

(2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。

三、实验内容P1作为输出口,接八只发光二极管,编写程序,使发光二极管左(右)循环点亮。

定时器计数器实验

定时器计数器实验

一、AT89C51实验目的:
1.有两个定时/计数器,本试验中,将T1作为定时器用,定时50ms,T0作为计数器用,被计数的外部输入脉冲信号从单片机的P3.4接入,最大计数值为0ffffh。

单片机将在每50ms内对脉冲计数并送数码管实时显示,并利用T1定时从P3.7口输出周期为200ms占空比50%的方波。

2.用PROTEUS设计、仿真基于AT89C51单片机的脉冲计数与定时。

3.学会使用VSM虚拟示波器和计数/定时器
二、PROTEUS电路设计
本设计的电路原理图如图所示,这个设计都在ISIS平台中进行。

1.从PROTEUS库中选取元器件
①at89c51.bus:单片机
②7SEG-BCD-GRN:七段带译码BCD绿色数码管,
③button:按键
2.虚拟测试仪器
①vsm虚拟计数/定时器
单击工具栏,再在对象选择器中选中COUNTER TIMER(计数/计时器),打开其属性编辑况,单击运行模式下的下拉菜单如图,可以选择计数、频率、计时模式。

当前设置为计数模式。

②vsm虚拟示波器
单击工具栏,再在对象选择器中选中OSCILLOSCOPE,将P3.7与C信道连接。

三、原程序设计、生成目标代码文件
1.流程图
主程序流程
2.程序代码设计
四、proteus仿真
五、思考题
修改程序实现1S内对脉冲计数并送四位数码管实时显示,最大计数值为0ffffh,将COUNTER TIMER 属性设为频率,利用工具栏中的激励源DCLOCK作为脉冲输入源与p3.4口相连。

单片机自动测试设计实验 课程实验报告

单片机自动测试设计实验    课程实验报告

西安电子科技大学单片机自动测试设计实验课程实验报告实验名称输出口实验机电工程学院学院班Array姓名学号同作者实验日期 2020 年月日输出口实验一、实验目的:(1)学习Keil软件的使用(2)学习P1口的使用方法。

(3)学习软件延时函数的编写。

二、实验原理1、Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

2、本实验中延时函数采用指令循环来实现,机器周期(系统晶振12MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。

三、实验仪器1.计算机2.单片机系统和仿真机3.Keil uVision2调试软件四、实验步骤1)设置:关闭实验仪电源,MON51K卡上跳线帽分别短接至MON、片内、FOSC;系统设置(JF)→总线(598),JK→系统,KB6→59(单“51”无此项);2)接线:☞ P1.0~P1.7→L1~L8。

☞实验箱主板CZ1/USB口→电脑串口/USB口。

3)运行:开启实验仪电源,双击“Keil uVision2”图标启动keil软件,选择通信端口、硬件仿真,编程、编译下载、开始调试,全速运行程序后,观察L1…L8流水灯循环。

五、实验内容:1.P1输出口接八只发光二极管,编写程序,使发光二极管循环点亮。

2.实现状态指示灯的驱动3.按照实验要求编写控制程序,进行在线调试,并进一步修改完善,最终完成可按一定0.1S的时间顺序依次点亮发光二极管的控制程序。

(要求写出程序)六、实验结果七、思考题如何修改程序,使发光二极管的移位方向改变;若使发光二极管的延迟时间发生变化,如何修改程序。

八、按要求写出实验报告编写实验报告规范:实验名称、目的、内容、原理、设备及仪表(名称、规格、型号)、实验装置或连接示意图、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。

西安电子科技大学单片机自动测试设计实验课程实验报告实验名称输出口扩展实验机电工程学院学院班Array姓名学号同作者实验日期 2020 年月日一、实验目的:(1)了解教学实验系统的结构(2)学习单片机系统中扩展简单I/O口的方法。

单片机读取脉冲流量计程序

单片机读取脉冲流量计程序

单片机读取脉冲流量计程序1.引言1.1 概述概述部分的内容可以包括以下内容:在工业自动化领域中,脉冲流量计被广泛应用于测量流体的流量。

脉冲流量计通过感知流体流过管道的脉冲信号来计算流量值,具有精度高、反应快和可靠性强等优点。

为了实现对脉冲流量计的读取和监控,可以通过使用单片机来设计和实现相应的程序。

本文以单片机读取脉冲流量计为主题,主要介绍了脉冲流量计的原理以及通过单片机实现对脉冲流量计读取的程序设计。

首先,在第二部分中,我们将详细介绍脉冲流量计的工作原理,包括信号发生器的构造和工作原理,以及脉冲信号的计数和流量值计算方法。

其次,在第三部分中,我们将介绍通过单片机实现对脉冲流量计的读取的程序设计方法,包括硬件电路设计和软件编程。

最后,在结论部分中,我们将总结本文的主要内容,并对程序设计的实现结果进行讨论。

通过本文的阅读,读者可以了解脉冲流量计的原理及其在自动化领域中的应用,以及通过单片机实现对脉冲流量计读取的程序设计方法。

这对于进一步提高流量计的性能和可靠性,以及在实际应用中更好地满足工业生产的需求具有重要的参考价值。

所以,希望通过本文的阅读能够对读者有所帮助。

1.2 文章结构文章结构部分主要介绍了该篇长文的整体结构和各个章节的内容安排。

具体内容如下:本文分为引言、正文和结论三个部分。

引言部分包括概述、文章结构和目的三个小节。

在概述中,将介绍脉冲流量计的背景和作用。

文章结构部分即本段落,将说明文章的整体结构和各个章节的内容。

目的部分将明确本文的研究目标和意义。

正文部分将包括脉冲流量计简介和单片机读取脉冲流量计的原理两个小节。

脉冲流量计简介将介绍脉冲流量计的基本原理、工作原理和应用领域。

单片机读取脉冲流量计的原理将详细阐述如何使用单片机来获取脉冲流量计的数据,介绍读取流程和相关技术。

结论部分将包括实现脉冲流量计读取的程序设计和结果与讨论两个小节。

实现脉冲流量计读取的程序设计将介绍如何编写程序来实现读取脉冲流量计数据的功能,并讨论设计方案和具体实现过程。

定时器计数器应用实验二

定时器计数器应用实验二

一、实验目的1、掌握定时器/计数器计数功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

三、实验程序流程图和程序清单程序一、ORG 0000HLJMP MAINMAIN: MOV TMOD, #06HMOV TH0, #9CHMOV TL0, #9CHSETB TR0HERE: JNB TF0, HERECPL P1.0CLR TF0LJMP HEREEND程序二、ORG 0000HLJMP MAINORG 000BHLJMP ITPOMAIN: MOV SP, #2FHMOV TMOD, #06HMOV TH0, #38HMOV TL0, #38HMOV IE, #82HSETB TR0 开始计数器初始化开定时器0TF0=1?P1.0取反TF0清零结束Y开始计数器、中断初始化开定时器0等待结束ITPO P1.0取反返回HERE: LJMP HEREITPO: CPL P1.0RETIEND四、实验仿真图五、实验结果图图一(查询、输入为100us输出为20ms)图二(中断、输入为100us输出为40ms)六、实验心得本次实验室利用定时计数器的功能,分别利用查询法和中断法实现,在本次实验中产生的方波的周期为毫秒级别,所以看不出误差,和上一个实验比较,可以看出误差只存在微妙级,当产生较大周期的方波时,误差几乎为0.七、思考题1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。

基于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调试过程与结果因为信号的产生于接收均采用的集成模块,硬件方面几乎没有调试过程,一次成功。

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。

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案课程教案课程名称:单片机技术实验任课教师:王韧所属院部:电气与信息工程学院教学班级:自动化1201~02、电气1201~02教学时间:2022—2022学年第二学期湖南工学院课程基本信息湖南工学院教案用纸实验一数据传送实验一、本次实验主要内容1、Keil软件的使用方法和调试。

2、存储器之间数据传送的方法和循环程序设计。

3、MCS-51系列单片机堆栈的使用。

二、实验目的与要求1、掌握单片机的汇编指令系统及汇编语言程序设计方法。

2、掌握单片机的存储器体系结构。

3、熟悉Keil软件的功能和使用方法。

4、掌握单片机应用程序的调试方法。

三、实验重点难点MOV、MOV某指令的用法特点。

四、实验方法和手段讲授、演示、操作、仿真、提问。

五、作业与习题布置写出实验报告。

P1湖南工学院教案用纸一、实验内容或原理1、实现单片机内部RAM之间,外部RAM之间以及内部RAM与外部RAM之间的数据传送。

2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。

二、设计要求1、编写程序将00H~0FH16个数据分别送到单片机内部RAM30H~3FH单元中。

2、编写程序将片内RAM30H~3FH的内容传送至片内RAM40~4FH单元中。

3、编写程序将片内RAM40H~4FH单元中的内容传送到外部RAM4800H~480FH单元中。

4、编写程序将片外4800H~480FH单元内容送到外部RAM5800H~580FH单元中。

5、编写程序将片外RAM5800H~580FH单元内容传送回片内RAM50H~5FH单元中。

三、实验报告要求1、实验目的和要求。

2、设计要求。

3、实验程序流程框图和程序清单。

4、实验总结。

5、思考题。

四、思考题1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式?2、说明指令MOVA,20H和MOVC,20H中的20H含义有什么不同?传送指令中的助记符MOV,MOV某,MOVC各适用于访问哪个存储器空间?P2湖南工学院教案用纸实验后记:P3湖南工学院教案用纸实验二单片机并行I/O口的应用实验一、本次实验主要内容1、利用单片机并行I/O口控制流水灯。

毕业论文:基于AVR单片机的脉冲计数器的设计

毕业论文:基于AVR单片机的脉冲计数器的设计

目录 (1)摘要 (2)1 绪论 (3)2 方案设计 (5)2.1 方案比较与选择 (5)2.2 设计方案 (6)3 系统硬件设计 (7)3.1 电路设计应用环境简介 (7)3.2 脉冲输入电路 (8)3.2.1 光电耦合器 (8)3.2.2 脉冲输入电路设计 (8)3.3 单片机控制电路 (9)3.3.1 AVR单片机 (9)3.3.2 Atmega16简介 (10)3.3.3 单片机控制电路设计 (12)3.4 JTAG接口 (13)3.4.1 JTAG简介 (13)3.4.2 JTAG接口电路 (14)3.5 485通信电路 (14)3.5.1 MAX1487简介 (14)3.5.2 485通信电路设计 (15)3.6 电源电路 (16)3.6.1 CD4047简介 (16)3.6.2 电源电路设计 (18)4 系统软件设计 (19)4.1 应用环境简介 (19)4.2 主程序设计流程 (20)4.3 程序设计 (21)4.3.1 单片机 (21)4.3.2 串口通信 (21)5 制作与调试 (23)5.1 PCB图绘制 (23)5.2 调试 (24)6 总结 (25)致谢 (26)参考文献 (27)附录 (28)在数字系统中计数器的主要功能是对脉冲的个数进行计数,以实现测量、计数和控制的功能。

脉冲计数器可以实现测量过程的自动化,广泛应用于工业生产和科学实验中。

本文介绍了一种基于单片机的脉冲计数器的设计方法,系统以A VR单片机为控制器实现对输入脉冲的计数功能,编程方法采用JTAG接口实现在线编程,同时还采用485串行通信方式实现了与上位机的通信,将计数上传至上位机显示。

本文提供的设计方案原理简单、功耗低、成本低廉,同时在脉冲输入端增加了光电耦合器进行光电隔离,以达到抗干扰的效果。

关键字:计数器、A VR、JTAG接口、485串行通信在数字系统中计数器的主要功能是对脉冲的个数进行计数,以实现测量、计数和控制的功能。

单片机实验 带程序的

单片机实验  带程序的

五.实验步骤: 1. 连接电源线和串行口数据线; 2. 把P3.1接至P3.0孔,P1.0~P1.7分别接发光二极管 L1~L8孔。 3.打开DICE—5203 K实验开发系统的电源; 4. 启动计算机,打开桌面软件文件夹,选择MS51仿真 开发系统图标双击,进入软件编程界面; 5. 编制程序,调试、运行; 6. 从按键开关输入数字量,观察发光二极管的发光状 态,或从寄存器观察其对应数值。 六.思考题: 修改程序,使串行口工作于方式3或 2(考虑波特率)。
四、实验步骤 (一)定时/计数器T0延时实验 1、连接电源线和串行口数据线; 2、用插针将P1.0孔与发光二极管L1孔相连, P1.1孔与发光二极管L2孔相连; 3、打开DICE—5203 K实验开发系统的电源; 4、启动计算机,打开桌面软件文件夹,选择 MS51仿真开发系统图标双击,进入软件 编程界面; 5、编制程序,调试、运行; 6、观察发光二极管状态。
• void tim0(void) interrupt 1 using 1 • { EA=0; • i++; • j++; • if(i==20) • {P1_0=!P1_0; • i=0;} • if(j==100) • {P1_1=!P1_1; • j=0;} • TH0=(65536-50000)/256; • TL0=(65536-50000)%256; • EA=1; • }
ds-ms(int j) {uchar k; while(j--!=0) for(k=0,k<125,k++);}
void main (void) { uchar i,a; COM8255 =0x80; a =0x01; for(i=0,i<8,i++) {PB8255=a; ds-ms(500); a=a<<1; if(a==0)a=0x01; } }

单片机00-99计数器实验总结

单片机00-99计数器实验总结

单片机00-99计数器实验总结
经过这次单片机00-99计数器实验,我对单片机的使用以及数
字电路的基础知识有了更深入的理解。

以下是我的实验总结:
一、实验原理
1. 十进制计数器:通过编号为0~9的数码管显示数字0~9;
2. 二进制计数器:通过10个LED灯表示二进制数字0~9,实
现0~99的计数;
3. 基础知识:单片机端口的输入输出、计数器的基本原理等。

二、实验过程
1. 搭建电路:根据电路图搭建电路,通过开关完成输入控制,让LED灯一次代表1个二进制数,完成计数器的计数功能;
2. 程序设计:通过C语言完成单片机的程序设计,实现计数
器的功能,将计数器的输出显示在LED灯和数码管上;
3. 调试测试:连接单片机和电脑,通过Keil软件进行程序的
编译、下载和调试测试,保证计数器能够正常工作。

三、实验结果
经过多次测试,00-99计数器实验的结果良好,可以顺利计数,LED灯和数码管能够显示出正确的结果。

四、实验心得
1. 理论知识的重要性:在实验中,掌握了数字电路的基本操作,熟悉了单片机的应用,并理解了计数器的工作原理,这对提高理论知识的理解和使用能力有很大的帮助。

2. 注意电路的接线:在实际搭建电路的过程中,注意各个部分的连接,保证电路的正常运行,避免出现因接线不良等问题而导致的错误结果。

3. 合理的编写程序:在程序的编写过程中,需要考虑到各个部分的功能,保证程序的稳定运行,避免出现因程序逻辑错误而导致的计数显示错误等问题。

总之,通过这次实验,我收获了很多,培养了自己的动手实践能力和编程思维能力,同时也提高了自己的专业知识水平。

MCS-51实验指导书

MCS-51实验指导书

单片机仿真实验系统MCS-51实验指导书南昌大学本实验指导是为适应单片机原理与应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。

完成本实验指导中的实验,可使学生基本掌握MCS-51单片机的结构原理、接口技术、程序设计技巧。

实验指导书中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。

单片机实验注意事项:1:主CPU为8032,需要扩充一片6264作为数据区,连接6264的读写信号到CPU的读写信号,连接CS1到A15;连接数据线,连接地址高低线;2:实验仪上的波段开关必须选择9600波特率,和51系统;3:接线和拔线时必须断电, PC微机必须与本实验系统保持联机状态,即软件界面右上角有编译进度条,确定连机状态才可调试程序;4:通过RS232通信接口,利用上位机实现用户程序的编辑、编译和调试运行。

在软件的设置栏内,点击仿真模式,选择系统、系统;注意:上位机的存盘文件名只能用英文字母和数字组合,长度不能超过8位且存盘路径必须在默认的C 盘DAIS目录下;5:系统接口实验电路为单元电路方式,数据总线以8芯扁平线形式引出,硬件学生连线为电路图上粗实线。

部分机器硬件介绍可参考微机原理实验指导书。

目录软件实验部分:实验一清零程序实验二拆字程序实验三拼字程序实验四数据区传送子程序实验五数据排序实验实验六查找相同数个数实验七无符号双字节快速乘法子程序实验八多分支程序实验九脉冲计数(定时/计数器实验)实验十电脑时钟(定时器、中断综合实验)硬件实验部分:实验一 P1口亮灯实验实验二 P1口转弯灯实验实验三 P3.3口输入,P1口输出实验四工业顺序控制实验五继电器控制实验六 8255控制交通灯实验七 LED16×16点阵显示实验实验八串并转换实验实验九 A/D转换实验实验十 D/A转换实验十一电子音响实验十二步进电机控制实验十三 8032串行口应用实验㈠——双机通信实验十四小直流电机调速实验软件实验部分本节共编了十个软件实验,通过这些实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。

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

实验八脉冲计数实验
一、实验目的:
(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 0000H
LJMP MAIN 指向主程序;
ORG 000BH 定时器/计数器0的入口地址;
LJMP T0C 指向中断服务程序;
ORG 001BH 定时器/计数器1的入口地址;
LJMP T1C 指向中断服务程序;
ORG 0030H
MAIN: MOV R0,#00H 清零;
MOV R1,#00H
MOV P1,#00H
MOV P2,#00H
MOV TMOD,#66H 置计数器0,计数器1为方式2;
MOV TH0,#0FFH 置1次计数初值;
MOV TL0,#0FFH
MOV TH1,#0FBH 置5次计数初值;
MOV TL1,#0FBH
SETB EA 开中断;
SETB ET0
SETB ET1
SETB TR0 启动计数器0;
SETB TR1 启动计数器1;
SJMP $
ORG 0100H
T0C: MOV A,R0 计数器0中断服务程序;
ADD A,#01H
DA A 十进制调整;
MOV R0,A 保存计数器;
MOV P1,A 计数值送显示器;
RETI
ORG 0200H
T1C: MOV A,R1 计数器1中断服务程序;
ADD A,#01H
DA A 十进制调整;
MOV R1,A 保存计数器;
MOV P2,A 计数器送显示器;
RETI
END
六、实验步骤:
(1)建立工程文件,选择单片机型号,生成asm文件,在所生成文件中输入参考程序并调试如下:
如图可以看出程序调试无错误,所以可以将其生成HEX文件。

(2)打开Proteus软件,新建设计文件,根据脉冲计数原理图选择元器件,将元器件用连
线或者总线连接起来如下图:
(3)将生成的HEX文件下载到芯片中单击仿真工具栏“运行”按钮,单片机全速运行程序,如下图所示:
A、每输入一个(5个)脉冲,工作寄存器R0(R1)的内容加1,同时将R0(R1)的内容送到两位LED数码管中显示出来,如下图所示:
七、实验总结:
(1)按动按钮,可以从数码管显示器上看到,每输入一个(5个)脉冲,工作寄存器R0(R1)的内容加1,同时将R0(R1)的内容送到两位LED显示管中显示出来;
(2)通过实验,更加了解定时器/计数器的工作方式与工作原理;
(3)更加掌握Keil与Proteus的配套使用,且掌握电路设计,程序设计与仿真的方法。

相关文档
最新文档