本人初学单片机,要求做一个DA转换实现锯齿、三角、方波、梯形波的输出,通过串口控制波形的选择和频率的设定,下面是我写的一个程序,波形没有出来,也不知道怎么写通过串口选择波形的程序。求各位高手帮帮忙!
#include<reg51.h>
#include<stdio.h>
unsigned int b;
sbit En_clk=P3^6;
sbit P2_7=P2^7;
void juchi();
void sanjiao();
void fangbo();
void tixing();
void delay(unsigned int ms);
unsigned char i;
void delay(unsigned int ms)
{ unsigned int t;
while(ms--)
{
for(t=0;t<112;t++);//112
}
}
void main(void)
{ TMOD=0x01;
TR0=1;
EA=1;TR0=1;ET0=1; EX0=1;IT0=0;
// while(1)
// {
// b=SBUF;
// switch(b)
// {
// case 1:juchi();
// break;
// case 2:sanjiao();
// break;
// case 3:fangbo();
// break;
// case 4:tixing();
// break;
// }
// }
}
void juchi() //锯齿波.
{
unsigned char i;
P2_7=1;
while(1)
{
for(i=0;i<255;i++)
P0=i;
}
}
void sanjiao() //三角波
{
unsigned char i;
P2_7=1;
while(1)
{
for(i=0;i<255;i++)
P0=i;
for(i=255;i>0;i--)
P0=i;
}
}
void fangbo() //方波
{ P2_7=1;
while(1)
{
P0=0x00;
delay(10);
P0=0xFF;
delay(10);
}
}
void tixing()//梯形波
{
unsigned char i;
P2_7=1;
while(1)
{
for(i=0;i<255;i++)
P0=i;
if(i==254) delay(10);
for(i=255;i>0;i--)
P0=i;
if(i==1) delay(10);
}
} |