用单片机和内部定时器来产生矩形波

要求频率为100kHZ,占空比为2:1(高电平时间较长)。设单片机时钟频率为12MHZ,写出相关程序。
谢谢了,我明天中午12点半就要用的,希望能帮我写一下。正确的话一定加倍给分数,一定。

由于你没说用什么单片机,所以我用51的写的(12T),钟频率为12MHZ是不可能完成频率为100kHZ,占空比为2:1(高电平时间较长),因为你的机器周期是1US
是中断里面最少都要花上7US,按你的提意高电平为6.6666....uS,低电平为3.3333.....us,所以无法完成,而且用晶振算出来还有小数,更不能过到了。

下面的程序请用48M的晶振,高电平为约6.US,低电平为约3.US,频率为100kHZ,占空比为约为2:1,用51(12T)单片机是很难达到你要值的。除非的要的频率再低。cpu频率再加高。现在应该明白了吧!

#include<reg52.h>

sbit PWM=P2^0;

void t0_t() interrupt 1
{
if(PWM)
{
PWM=!PWM;
TH0=0XE6;
//TL0=0XF9;
}
else
{
PWM=!PWM;
TH0=0XF4;
//TL0=0XF3;
}
}

void main()
{
TMOD=0X02;
ET0=1;
TR0=1;
EA=1;
PWM=1;
while(1);

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-26
如果用PIC单片机就好多了,自带PWM和分频器,四行程序就够了!
第2个回答  2009-05-26
使用Atmega16-16AI单片机,晶振为12MHz,让单片机工作于FPWM模式,ICR1=120,这样PWM的频率就是100KHz了,然后设定OCR1A=80,这样占空比就是66.6%,即高电平时间是低电平时间的2倍。

所以1L和2L说的都很正确,用51单片机来实现时很困难的,需要换个单片机。
第3个回答  2009-05-26
100kHz的周期是10us,12MHz晶振51的指令周期是1us,所以很紧张,你的单片机不能在干别的了,只能执行如下的程序(假设从P1.0输出脉冲):
lab1: clr P1.0 ;1us
nop ;1us
nop ;1us
setb P1.0 ;1us
nop ;1us
nop ;1us
nop ;1us
nop ;1us
jmp lab1 ;2us

因为只能精确到1us,所以占空比没那么准,大约7:3
第4个回答  2009-05-26
周期为10Us,分3份,51那有那么精确的?

用C51单片机和内部定时器来产生矩形波,要求频率为100HZ,占空比为2:1...
100HZ的矩形波,周期就是10ms,占空比2:1,就是高的部分占10ms的2\/3,低的部分占10ms的1\/3。理解了吗?

1单片机用内部定时方法产生频率100Hz等宽矩形波,假定单片机的晶振频率为...
1单片机用内部定时方法产生频率100Hz等宽矩形波,假定单片机的晶振频率为12MHZ,请编程实现:用定时器定10ms就可以,当定时器中断,则I\/O取反即可。

如何运用单片机原理制作智能信号发生器,要求产生方波、矩形波、三角波...
sbitkey3 = P3^5;\/\/ 波形选择正弦、三角、矩形波,锯齿波 unsignedchar i,j;unsignedint counter,step,flag;typedefunsigned int uint;\/\/定时器0初始化 voidInit_Timer0(void){ TMOD = (TMOD & 0XF0) | 0X01;\/\/设置工作方式和定时初始值 TH0 = 0xff;TL0 = 0x00;TR0 =1; \/\/启动定时...

如何用单片机指令实现一定频率和占空比的矩形方波
产生25khz,占空比为25%的矩形波,即:输出高电平10us,输出低电平30us。时间太短,用定时器定时,并不方便。用 NOP 指令延时,程序如下:LOOP:SETB P1.0 NOP NOP NOP ;………总共8个NOP CLR P1.0 NOP NOP NOP ;………总共26个NOP JMP LOOP END ...

产生矩形波的方法
以下是几种常见的方法:1. 用脉冲发生器:脉冲发生器是一种电子设备,可以产生固定频率和幅度的脉冲信号。通过调节脉冲发生器的参数,可以生成矩形波信号。2. 使用集成电路:一些集成电路(如555定时器)具有内置的多谐振荡器功能,可以用来产生矩形波信号。通过调整电路中的元件值,可以控制输出信号的频率...

已知89C51单片机的fosc=6MHZ,请利用T0和P1.0输出矩形波,矩形波高电平宽...
参考程序如下:include<reg51.h>sbit WAVE = P1^0;void main(){ TMOD &= 0xF0; TMOD |= 0x02; \/\/定时器T0,工作在方式二,自动重载 TH0 = TL0 = 256-25; \/\/6MHz的晶振,一个机器周期2us IE |= 0x82; TR0 = 1; while(1);}void T0_INT() interrupt 1{...

用单片机定时计数器值p1.0端口上产生一个10khz的方波。
CPL P1.0 RETI ORG 0100H MAIN:MOV IE,#82H;允许T0中断 MOV TMOD,#02;T0方式1定时 MOV TH0,#0CEH MOV TL0,#0CEH SETB TR0 SJMP END C语言程序如下:include <reg51.h> sbit P10=P1^0;void main (){ IE=0x82;TMOD=0x2;TH0=0xCE;TL0=0xCE;TR0=1;while(...

555定时器如何输出8000hz矩形波
a、产生方波,百度文库搜“555时基电路”,自己选一个 b、产生三角波,搜“积分电路”,将方波输出接到积分电路输入,积分电路输出就是三角波。自己调节一下RC参数,RC参数过大,三角波的峰值会过小,RC参数过小,三角波会削波。c、三角波经低通滤波器滤波得到的不是标准的正弦波,标准正弦波可通过高...

数字电路中产生周期性矩形波是什么电路
CP脉冲发生电路,也有称为多谐振荡电路。

矩形波一个周期的时间是10ms.如何实现??? 写出程序。。。尽量详细 谢谢...
下面是用51单片机的定时器(晶振12MHz)实现的。是用C语言,如果要用汇编语言,加追问即可。程序中没有用中断,用的是定时器查询方式。include <AT89X55.H> sbit P10=P1^0;void Delay5ms();void main(){ while(1){ Delay5ms();P10=~P10;} } void Delay5ms(){ TMOD=0x01;TH0=(65536-...

相似回答