单片机入门汇编程序 程序11-2:利用Timer延时生成100Hz方波的程序
- 格式:doc
- 大小:35.00 KB
- 文档页数:1
单片机方波脉冲计数控制设计方案一、设计题目用8031单片机控制可测方波1~100Hz,并显示每分钟计数的脉冲。
二、设计容与要求设计方波脉冲控制显示系统,用51单片机控制输出方波输出,频率围为1~100Hz,并用数码管显示每分钟计数的脉冲数和当前频率,用两个按键分别控制频率的增减,同时用一个复位键,可以快速回到起始状态。
三、设计目的和意义1、通过方波脉冲控制系统的设计,将单片机原理课上所学的知识融会贯通、加深理解。
培养独立设计、制作和调试单片机应用系统的能力,熟悉单片机应用系统的软硬件调试方法和系统的设计开发过程,为今后的工作实践活动夯实基础。
2、通过方波脉冲计数控制系统的设计,掌握51系列单片机的部定时/计数器的功能和使用方法;掌握单片机外部中断的应用和程序的编程方法;掌握数码管的使用和编程方法。
通过设计方案分析、选择和设计,设计并搭制硬件电路,编写控制程序等一系列工作,掌握单片机应用的基本方法,更重要的是学会一种科学的解决问题的逻辑思维,和完成任务的方法。
3、培养一个解决困难问题的积极心态,为今后在工作上奠定坚实的基础。
四、设计任务分析设计题目要求用单片机控制可测方波脉冲1~100Hz,并显示每分钟计数的脉冲数。
由要求可知道,任务包括方波的产生和方波脉冲数的显示两个部分。
方波由单片机部定时器来产生,通过改变其定时初值来改变方波的频率,在硬件电路中可利用按键来控制频率的增减。
方波的波形利用示波器来观察。
由此,可有几个方案来实现题目的要求。
方案一:51单片机最小系统,外接上一个数码管显示电路用以显示每分钟的脉冲数。
数码管的断码选择端直接与单片机的P0口连接,位码选择端与P2口连接。
利用改变定时初值的方式来改变方波频率。
这个方案的优点是硬件电路简单,节省元器件,程序编写容易。
但是缺点也明显,只用一个数码管,无法显示当前的脉冲频率,而且无法用硬件实现频率的+1,-1的变化。
虽然实现了题目的基本功能,但是功能简单有限,也就达不到课程设计的目的了。
目录一、设计目的 (1)二、设计要求 (1)三、设计方案 (1)四、设计内容 (2)五、方波 (2)(一)方波的简介 (2)(二)起源与应用 (2)六、硬件介绍(8031) (3)(一)内部结构及引脚图 (4)(二)存储器空间以及存储器 (5)(三)定时/计数器 (7)(四)中断系统 (10)(五)并行I/O端口(P0、P1、P2、P3) (11)(六)串行I/O端口 (12)七、软件设计 (12)(一)主程序模块 (12)(二)计数/定时器模块 (14)(三)硬件接线图 (15)(四)程序 (16)八、设计总结 (17)九、参考文献 (18)一、设计目的通过课程设计使学生更进一步掌握单片机原理及应用课程的有关知识,提高应用单片机解决问题的能力,加深对单片机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用单片机解决问题的步骤及方法。
为以后学生结合专业从事单片机应用奠定基础。
二、设计要求(1)方波的周期为2秒。
(2)用指示灯显示输出方波信号。
说明:不能用软件延时。
三、设计方案(1)通过单片机内部的计数器/定时器,采用软件编程来产生方波,这种方法的硬件线路较简单,系统的功能一般与软件设计相关。
(2)本次设计产生方波电路,选择MCS-51系列中的8031单片机,由于是用指示灯显示输出方波信号,一个LED显示灯即可满足设计要求。
四、设计内容(1)这里采用应用广泛的MCS-51系列中的8031单片机作为产生方波的控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。
首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒时,再配合给定的脉冲信号,最后通过LED指示灯把输出方波的信号显示出来,达到读取波形的目的。
(2)本设计电路在硬件上接线简单,8031的P1.0外接T1,P1.7外接指示灯即可。
五、方波(一)方波的简介方波是一种非正弦曲线的波形,通常会于电子和讯号处理时出现。
80C51单片机的时钟频率为12MHz,利用定时器T1和P1.0输出矩形脉冲。
波形只画出了2段:一段为100us 另一段为50us。
要完全的、完整的、详细的编写此程序的过程!谢谢------------------------最佳答案:用一个定时器定时50us,也可以达到题目要求。
在我的空间里面有类似的问题和解答。
ORG 0000HSJMP STARTORG 001BH ;T1中断入口.SJMP T1_INTSTART:MOV TMOD, #20H ;设置T1定时方式2MOV TH1, #206 ;自动重新装入方式.MOV TL1, #206 ;定时时间MOV IE, #10001000B ;开放总中断和T1中断.SETB TR1 ;启动T1MOV R2, #3 ;周期是3×50usSJMP $ ;等着吧.T1_INT:SETB P1.0 ;输出高.DJNZ R2, T1_END ;R2-1CLR P1.0 ;减到0,就输出低电平.MOV R2, #3T1_END:RETI ;中断返回.------------------------已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式在P2.3输出频率为10Hz的方波。
写出定时设计过程及完整代码问题补充:用汇编的麻烦写一下------------------------最佳答案:ORG 0000HSJMP STARTORG 001BH ;T1中断入口.SJMP T1_INTSTART:MOV TMOD, #10H ;设置T1定时方式1MOV TH1, #(65536-50000) / 256 ;送入初始值. MOV TL1, #(65536-50000) MOD 256 ;定时MOV IE, #10001000B ;开放总中断和T1中断.SETB TR1 ;启动T1SJMP $ ;等着吧.T1_INT:MOV TH1, #(65536-50000) / 256 ;重新送入初始值.MOV TL1, #(65536-50000) MOD 256 ;定时CPL P2.3 ;输出方波.RETI ;中断返回.------------------------===========================================单片机编程选用T0操作模式1用于定时,由P1.7输出周期为5ms方波的控制程序,设晶振fosc=6MHz。
桂林电子科技大学单片机最小应用系统设计报告指导老师:吴兆华学生:学号:桂林电子科技大学机电工程系目录一、实验课题及要求 (2)二、实验目的 (2)三、系统硬件电路 (2)3.1硬件电路说明 (3)3.3最小系统控制部分 (6)3.3.1晶振电路 (6)3.3.2复位电路 (7)四、软件设计 (10)4.1程序流程图 (10)4.2程序源代码 (11)五、设计总结 (14)六、参考文献 (14)一、实验课题及要求用8031单片机控制可测方波1~100Hz,并显示每分钟计数的脉冲二、实验目的1、加深外部中断指令的基本使用方法;2、熟悉外部中断处理程序的编程方法;3、进一步熟悉8051内部定时/计数器的初始化、使用方法及编程方法;4、进一步掌握8051中断处理程序的编程方法和应用;5、掌握I/O接口的基本方法;6、学会使用并熟练掌握电路绘制软件Protel99SE(或DXP)。
三、系统硬件电路整个设计主要包括单片机基本的晶振电路,按键复位电路,设计中需要的LED管,开关、按键等。
具体的电路图如下图1所示3.1硬件电路说明本次硬件系统包括单片机最小系统、外部中断电路、LED显示电路三部分在下面介绍中对每一部分都有详细的说明。
3.2 AT89C51单片机简介AT89S51单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL 公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
图2 AT89S51引脚图AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
51单片机汇编延时程序算法详解
51 单片机汇编延时程序算法详解
将以12MHZ 晶振为例,详细讲解MCS-51 单片机中汇编程序延时的精确算法。
指令周期、机器周期与时钟周期
指令周期:CPU 执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的,指令不同,所需的机器周期也不同。
时钟周期:也称为振荡周期,一个时钟周期=晶振的倒数。
MCS-51 单片机的一个机器周期=6 个状态周期=12 个时钟周期。
MCS-51 单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机器周期,即12 个时钟周期,所以一条单周期指令被执行所占时间为12*(1/12000000)=1μs
程序分析
例1 50ms 延时子程序:
DEL:MOV R7,#200 ①
DEL1:MOV R6,#125 ②
DEL2:DJNZ R6,DEL2 ③
DJNZ R7,DEL1 ④
RET ⑤
精确延时时间为:1+(1*200)+(2*125*200)+(2*200)+2
=(2*125+3)*200+3 ⑥
=50603μs
≈50ms。
内容:通过定时产生1mS方波------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit OUT=P1^2; //定义OUT输出端口/*------------------------------------------------定时器初始化子程序------------------------------------------------*/void Init_Timer0(void){TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响//TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出//TL0=0x00;EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开}/*------------------------------------------------主程序------------------------------------------------*/main(){Init_Timer0();while(1);}/*------------------------------------------------定时器中断子程序------------------------------------------------*/void Timer0_isr(void) interrupt 1 using 1{TH0=(65536-500)/256; //重新赋值12M晶振计算,指令周期1uS,TL0=(65536-500)*256; //1mS方波半个周期500uS,即定时500次//溢出然后输出端取反OUT=~OUT; //用示波器可看到方波输出}。
汇编语言单片机输出两个方波 -回复
要在单片机上输出两个方波,可以通过控制IO口的电平来实现。
以下是使用汇编语言在单片机上输出两个方波的示例代码:
```assembly
ORG 0x0000 ; 代码起始地址
MOV P0, #0x00 ; 将P0口初始为低电平
MOV P1, #0x00 ; 将P1口初始为低电平
Loop:
MOV P0, #0xFF ; 将P0口置为高电平
MOV P1, #0x00 ; 将P1口置为低电平
ACALL Delay ; 延时
MOV P0, #0x00 ; 将P0口置为低电平
MOV P1, #0xFF ; 将P1口置为高电平
ACALL Delay ; 延时
SJMP Loop ; 无限循环
Delay:
MOV R1, #0xFF ; 设置延时时间
DelayLoop:
DJNZ R1, DelayLoop ; 延时循环
RET ; 返回主程序
```
该代码中使用了P0口和P1口分别输出两个方波。
通过不间
断地在P0口和P1口切换高低电平状态,就可以实现两个方
波的输出。
在代码中还使用了一个延时函数`Delay`,用于控
制方波的频率。
需要根据具体的单片机型号和开发环境进行适当的调整和修改。
另外,延时函数的具体实现方式也可能因单片机型号而有所差异。
100hz方波产生电路
要产生100Hz的方波信号,可以使用以下电路:
1. 可编程计数器/分频器:使用可编程计数器或分频器芯片(如CD4017或CD4040)可以将输入频率分频为所需的频率。
例如,如果使用一个10kHz的时钟信号,将其分频100倍就可以得到100Hz的方波信号。
2. 比较器和反馈电路:使用一个比较器(如LM311)和反馈电路可以将一个三角波信号转换为方波信号。
生成一个三角波信号(例如使用集成的波形发生器芯片,如XR2206),然后将其与一个参考电压进行比较,在比较器的输出上产生方波信号。
3. 555定时器:使用555定时器芯片可以产生频率可调的方波信号。
通过选择适当的电阻和电容值,可以调节555定时器的输出频率为100Hz。
这些是一些常见的电路,用于产生100Hz的方波信号。
具体选择哪种电路取决于应用需求、可用元件和设计要求。
在实际应用中,还需要注意电路的稳定性、精度和信号质量等因素。