找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1800|回复: 0
打印 上一主题 下一主题
收起左侧

三角波,锯齿波,方波,正弦波

[复制链接]
跳转到指定楼层
楼主
ID:277014 发表于 2018-1-29 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define DAC0832 P2          //½«DAC0832¶¨òåÎaP2¿ú;
#define ALL 65536           //½«ALL¶¨òåÎa65536;
#define Fosc 12000000       //ÆμÂêÎa12M
uchar TH_0,TL_0,flag1,flag=0;
uint  FREQ=100,n; //Æeê¼ÆμÂêé趨Îa100HZ
float temp;
uchar code sz[]={     
      0,0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,        2,        2,        2,
      2,    3,  3,  4,  4,  4,  5,  5,  6,  6,  7,        7,        8,        8,        9,        9,
      10,   10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21,
      22,   23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36,        37,
      38,   39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 51, 52, 54, 55, 56,
      57,   59, 60, 61, 63, 64, 66, 67, 68, 70, 71, 73, 74, 75, 77, 78,
      80,   81, 83, 84, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101,102,
      104,  106,    107,    109,    110,    112,    113,    115,    116,    118,    120,        121,        123,        124,        126,        128,
      129,  131,    132,    134,    135,    137,    139,    140,    142,    143,    145,    146,        148,    149,        151,        153,
      154,  156,    157,    159,    160,    162,    163,    165,    166,    168,    169,        171,        172,        174,        175,        177,
      178,  180,    181,    182,    184,    185,    187,    188,    189,    191,    192,        194,        195,        196,        198,        199,
      200,  201,    203,    204,    205,    206,    208,    209,    210,    211,    213,        214,        215,        216,        217,        218,       
      219,  220,    221,    223,    224,    225,    226,    227,    228,    229,    230,        230,        231,        232,        233,        234,       
      235,  236,    237,    237,    238,    239,    240,    240,    241,    242,    243,        243,        244,        245,        245,        246,       
      246,  247,    247,    248,    248,    249,    249,    250,    250,    251,    251,    251,        252,        252,        253,        253,       
      253,  253,    254,    254,    254,    254,    254,    255,    255,    255,    255,    255,        255,        255,        255,        255
      };
/***********¶Ë¿úéèÖÃ***************/
sbit cs=P3^6;
sbit change=P3^2;

/***********Ñóê±oˉêy:Ñóê±1ms*********/
void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
/***********3õê¼»ˉoˉêy***********/
void init()
{
    TMOD=0X01;   //é趨1¤×÷Ä£ê½ 1
    temp=ALL-Fosc/12.0/256/FREQ; //¶¨ê±Æ÷3õÖμ¼ÆËã ALL=65536   Fosc=12M ÆμÂê FREQ=100
    TH_0=(uint)temp/256;
    TL_0=(uint)temp%256;
    EA=1;     //¿a×üÖD¶Ï
    EX0=1;    //¿aía2¿ÖD¶Ï
    IT0=1;    //é趨ϽμÑØóDD§1¤×÷·½ê½
    ET0=1;    //é趨¶¨ê±Æ÷1¤×÷Ôú¶¨ê±·½ê½
    TR0=1;    //¿a¶¨ê±Æ÷ÖD¶Ï
}

/************ÇD»»2¨DÎoˉêy********************/
void qiehuan(void)
{
   if(change==0)
   {flag++;    if(flag==4) {flag=0;n=0;}}
    TH_0=(uint)temp/256;
    TL_0=(uint)temp%256;
}  
/***********èy½Ç2¨·¢éúoˉêy**********************/
void sanjiaobo(void)
{
    for(n=0;n<255;n++)
    {cs=0;P2=n;cs=1;}
    for(n=255;n>0;--n)
    {cs=0;P2=n;cs=1;}
}
/************·½2¨·¢éúoˉêy*********************/
void fangbo(void)
{
    cs=0;P2=0XFF;cs=1;
    for(n=0;n<255;n++);
    cs=0;P2=0X00;cs=1;
    for(n=255;n>0;n--);
}
/************¾a3Y2¨·¢éúoˉêy**********************/
void juchibo(void)
{
    cs=0;P2=n++;cs=1;       
}
/*************ÕyÏò2¨·¢éúoˉêy********************/
void zhengxianbo(void)
{
    for(n=0;n<255;n++)
    {cs=0;P2=sz[n];cs=1;}
    for(n=255;n>0;n--)
    {cs=0;P2=sz[n];cs=1;}
}
/*************ía2¿ÖD¶Ï·tÎñoˉêy**********************/
void ext0() interrupt 0
{
    qiehuan(); //òyóÃÆμÂê¸Ä±äoˉêy  ÇD»»
}
/**************¶¨ê±Æ÷ÖD¶Ïoˉêy***************/
void timer0() interrupt 1
{
    TH0=TH_0;TL0=TL_0;  //ÖØDÂ×°3õÖμ
    TR0=0;
    switch(flag)
    {
        case 0: {sanjiaobo();TR0=1;break;}  
        case 1: {fangbo();TR0=1;break;}
        case 2: {juchibo();TR0=1;break;}
        case 3: {zhengxianbo();TR0=1;break;}
        default: ;
    }
}

/**************Ö÷oˉêy********************/
void main()
{
    init();
    while(1);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表