基于单片机信号发生器设计重点研究问题是什么

如题所述

第1个回答  2016-12-31
  利用单片机做信号发生器,其重点就是单片机的主频啦

  因为主频代表着程序运行的时间,这个时间是完成一次程序的从头到尾单片机内部所需的时间,而运行一次只能输出一种端口状态,那么需要方波输出,则需要单片机运行两次才能真正输出一个方波信号,所以主频才是重中之重。

  另外还有程序的整体步数,就是程序的长度或多少,程序语句越多,运行速度也越慢,输出的信号频率也越低

  例如想做一个1MHz的方波发生器,那么51单片机的最高主频是12MHz,然而真正输出的最高只能达到12分之一,那就是1MHz,勉勉强强算是可以

  如果超过1MHz的波形,51类单片机是达不到效果了,只能选择其它单片机

下面是本人曾经利用单片机做的PMW信号发生器程序,仅供参考
/***************************************************************************/
#include<reg51.h>//频率约为 2.37 KHz
//根据按键来控制输出波形
sbit D=P2^0 ; //端口定义
int h,m,s,f;
/***************************************************************************/
void main(void)
{
TMOD=0x22; EA=1; ET0=1; ET1=1; TR0=1;//定时器初始化

while(1)
{
switch(P0)
{
case 0xfe : h=1; break;
case 0xfd : h=2; break;
case 0xfb : h=3; break;
case 0xf7 : h=4; break;
case 0xef : h=5; break;
case 0xdf : h=6; break;
case 0xbf : h=7; break;
case 0x7f : h=8; break;
default : h=9; break;
}
m=10-h;
}
}
/***************************************************************************/
void int0() interrupt 1 //定时器 0 中断
{
TH0=0xff; s++;

if(s>=h){ TR0=0; TR1=1; D=0; s=0; }//开始时间
}
/***************************************************************************
/void int1() interrupt 3 //定时器 1 中断
{
TH1=0xff; s++;

if(s>=m){ TR1=0; TR0=1; D=1; s=0; }//休止时间
}
/***************************************************************************/
第2个回答  2016-12-28
基于单片机信号发生器设计
让我来帮你 .
相似回答