找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机基于PCF8591智能信号发生器,只求一个仿真图!

[复制链接]
跳转到指定楼层
楼主
ID:463096 发表于 2019-1-7 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
200黑币
如题,只求一个仿真图就可以!
程序如下:
#include <reg52.h>               
#include "i2c.h"

#define AddWr 0x90   //写数据地址
#define AddRd 0x91   //读数据地址


#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
sbit P1_3=P1^3;
sbit P1_7=P1^7;
sbit P3_4=P3^4;
sbit beep=P2^3;

int a,b,c,d,e,f,frq,range,t,temp;
double range2;

uint zhouqi;

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delay(uint x)
{
        int i,j;                                                //延时xms程序
        for(i=x;i>0;i--)
                for(j=112;j>0;j--);
}


void delay_us(uint time)         //延时xus程序
{
      while(time--);
}

extern bit ack;
bit WriteDAC(unsigned char dat);

uchar code sintab[64]={
135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170,158,
146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128
};

uchar code fangbotab[64]={
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};

uchar code juchitab[64]={
0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,
146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,235,239,243,247,251,255
};


uchar code sanjiaotab[64]={
0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
};



void display(int a,int b,int c,int d,int e,int f)
{
        duan=1;
        P0=table[a];
        duan=0;
        wei=1;
        P0=0xfe;
        wei=0;
        delay(1);        
        duan=1;
        P0=table[b];
        duan=0;
        wei=1;
        P0=0xfd;
        wei=0;
        delay(1);
        duan=1;
        P0=table[c];
        duan=0;
        wei=1;
        P0=0xfb;
        wei=0;
        delay(1);
        duan=1;
        P0=table[d];
        duan=0;
        wei=1;
        P0=0xf7;
        wei=0;
        delay(1);
        duan=1;
        P0=table[e]+0x80;
        duan=0;
        wei=1;
        P0=0xbf;
        wei=0;
        delay(1);
        duan=1;
        P0=table[f];
        duan=0;
        wei=1;
        P0=0x7f;
        wei=0;
        delay(1);
}

void fangbo()
{        
    int i;
        while(1)
        {
                        P1_3=1;
                        delay_us(zhouqi);
                        P1_3=0;
                        delay_us(zhouqi);
                for(i=0;i<64;i++)
                {
                        WriteDAC((fangbotab[i]/5)*range2);
                }
                //        beep=1;

        }
}

void sanjiaobo()
{   
        int i;
        while(1)
        {
                for(i=0;i<64;i++)
                {
                        WriteDAC((sanjiaotab[i]/5)*range2);
                }
        }
}

void juchibo()
{   
        int i;
        while(1)
        {
                for(i=0;i<64;i++)
                {
                        WriteDAC((juchitab[i]/5)*range2);
                }
        }
}


void zhengxianbo()
{   
        int i;
        while(1)
        {
                for(i=0;i<64;i++)
                {
                        WriteDAC((sintab[i]/5)*range2);
                }
        }
}
void rjia1()
{
         range=range+10;
         if(range>=50)
         {
                 range=50;
         }
}
void rjian1()
{
         range=range-10;
         if(range<=0)
         {
                 range=0;
         }
}
void rjia2()
{
         range++;
         if(range>=50)
         {
                 range=50;
         }
}
void rjian2()
{
         range--;
         if(range<=0)
         {
                 range=0;
         }
}
int jianpan()
{
        P3=0x0f;
        if(P3!=0x0f)
        {
                P3=0xfe;
                if(P3!=0xfe)
                {
                        switch(P3)//第一行键盘,切换模式,分别对应1,2,3,4键        
                        {
                                case 0xee:fangbo();break;
                                case 0xde:sanjiaobo();break;
                                case 0xbe:juchibo();break;
                                case 0x7e:zhengxianbo();break;        
                        }
                }
                P3=0xfd;
                if(P3!=0xfd)
                {
                        P3=0xfd;
                        delay(10);
                        if(P3!=0xfd)
                        {
                                switch(P3)//第二行键盘,调频率?
                                {
                                        case 0xed:frq=10;break;
                                        case 0xdd:frq=100;break;
                                        case 0xbd:frq=500;break;
                                        case 0x7d:frq=1000;break;        
                                }
                        }
                }
                P3=0xfb;
                if(P3!=0xfb)
                {
                        P3=0xfb;
                        delay(10);
                        if(P3!=0xfb)
                        {
                                switch(P3)//第三行键盘,调峰峰值        
                                {
                                        case 0xeb:rjia1();break;
                                        case 0xdb:rjian1();break;
                                        case 0xbb:rjia2();break;
                                        case 0x7b:rjian2();break;        
                                }
                        }
                        while(P3!=0xfb);
                }
        }
        return frq;
        return range;
}

void init()
{
        frq=500;
        range=20;
}
void fuzhi()
{
                a=frq/1000;
                b=frq%1000/100;
                c=frq%100/10;
                d=frq%10;
                e=range/10;
……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………


基于PCF8591智能信号发生器.rar

419.64 KB, 下载次数: 14, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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