历史上的今天
返回首页

历史上的今天

今天是:2024年11月27日(星期三)

正在发生

2020年11月27日 | 单片机DAC0832+LM324波形发生器程序设计

2020-11-27 来源:51hei


单片机源程序如下:

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit RS=P3^0;

sbit RW=P3^1;

sbit EN=P3^3;

sbit K1=P2^0;

sbit K2=P2^1;

sbit K3=P2^2;

sbit K4=P2^3;

sbit K5=P2^4;

uchar WaveChoice=1;

uchar ys=30;

uchar i,a=0;

uchar sqar_num=128;

uint freq;

uchar code Sin[]={"Sine      "};

uchar code Squ[]={"Square    "} ;

uchar code Tri[]={"Triangle  "};

uchar code Saw[]={"Sawtooth  "} ;

uchar code No[]={"No Signal out "};

uchar code Wave[]={"Wave :"};

uchar code Fre[]={"Freq :"};

uchar code tosin[256]=

{0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,

0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,

0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,

0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,

0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,

0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,

0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,

0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,

0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,

0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,

0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,

0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,

0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,

0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,

0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 };

void DelayMS(uchar ms)

{

        uchar i;

        while(ms--) for(i=0;i<120;i++);

}

void Delay1(uint y)

{

        uint i;

        for(i=y;i>0;i--);

}

uchar Busy_Check()

{

        uchar LCD_Status;

        RS=0;  //        寄存器选择

        RW=1; //读状态寄存器

        EN=1;  // 开始读

        DelayMS(1);

        LCD_Status=P1;

        EN=0;

        return  LCD_Status;


}

void Write_LCD_Command(uchar cmd)

{

           while((Busy_Check()&0x80)==0x80);   //忙等待

           RS=0;  //选择命令寄存器

           RW=0;  //写

           EN=0;

           P1=cmd;EN=1;DelayMS(1);EN=0;

}

void Write_LCD_Data(uchar dat)

{

         while((Busy_Check()&0x80)==0x80);   //忙等待       

          RS=1;  RW=0; EN=0; P1=dat;EN=1;DelayMS(1);EN=0;       

}

void Init_LCD()

{               

        Write_LCD_Command(0x38);

        DelayMS(1);

        Write_LCD_Command(0x01); //清屏

        DelayMS(1);

        Write_LCD_Command(0x06); //字符进入模式:屏幕不动,字符后移

        DelayMS(1);

        Write_LCD_Command(0x0C); //显示开、关光标

        DelayMS(1);

}

void Write_freq(uint k)

{

        uchar qian,bai,shi,ge;

        qian=k/1000;

        bai=k/100%10;

        shi=k/10%10;

        ge=k%10;

        Write_LCD_Command(0x86+0x40);

        Write_LCD_Data(0x30+qian);

        Write_LCD_Data(0x30+bai);

        Write_LCD_Data(0x30+shi);

        Write_LCD_Data(0x30+ge);

        Write_LCD_Data(0x48);

        Write_LCD_Data(0x5a);

}

  void Xianshi_f()                  

{

  if(WaveChoice==1)

  {

     freq=(10000000/(50000+2860*ys));

         Write_freq(freq);

  }

  if(WaveChoice==2)

  {

     freq=(10000000/(50000+2300*ys));

         Write_freq(freq);

  }

   if(WaveChoice==3)

  {

     freq=(10000000/(14000+2300*ys));

         Write_freq(freq);

  }

    if(WaveChoice==4)

  {

     freq=(10000000/(15000+2300*ys));

         Write_freq(freq);

  }

}

void Write_wave(uchar  t )

{

        switch(t)

        {

                case 0:

                                 Write_LCD_Command(0x86);

                                   DelayMS(5);

                                    for (i=0;i                                        {

                                                Write_LCD_Data(No[i]);

                                                DelayMS(5);

                                        }

                                        break;

                case 1:

                                ys=25;

                                Write_LCD_Command(0x86);

                                   DelayMS(5);

                                    for (i=0;i                                        {

                                                Write_LCD_Data(Sin[i]);

                                                DelayMS(5);

                                        }

                                break;

                case 2:

                                ys=30;

                                Write_LCD_Command(0x86);

                                   DelayMS(5);

                                    for (i=0;i                                        {

                                                Write_LCD_Data(Squ[i]);

                                                DelayMS(5);

                                         }

                       

                                break;

                case 3:

                                ys=30;

                                Write_LCD_Command(0x86);

                                   DelayMS(5);

                                    for (i=0;i                                        {

                                                Write_LCD_Data(Tri[i]);

推荐阅读

史海拾趣

Cambridge Electronic Industries Ltd公司的发展小趣事

Cambridge Electronic Industries Ltd(简称CEI)的创立,标志着剑桥地区电子工业的一次重要飞跃。在20世纪中期,随着电子技术的快速发展,CEI的创始人看到了其中的商机,并决定成立一家专注于电子设备和系统研发制造的公司。起初,CEI主要面向当地的小型企业和研究机构,提供定制化的电子解决方案。凭借创始人的技术背景和团队的辛勤努力,CEI逐渐在剑桥地区的电子市场中建立了良好的声誉。

DACHANG公司的发展小趣事

随着公司实力的不断增强,DACHANG公司开始积极拓展国际市场。公司参加了多个国际电子展览会,与国际同行进行了广泛的交流与合作。同时,DACHANG公司还积极寻求与国际知名企业的合作机会,不断提升自己在全球电子产业链中的地位和影响力。

AdaptivEnergy公司的发展小趣事

在追求经济效益的同时,DACHANG公司始终不忘承担社会责任。公司积极参与公益事业,关注环境保护和社会发展。无论是在捐款助学、扶贫济困还是在环保减排方面,DACHANG公司都积极履行自己的社会责任,为社会做出了积极贡献。这种对社会责任的担当和履行,不仅提升了DACHANG公司的品牌形象,也赢得了社会各界的广泛赞誉。

Cotco公司的发展小趣事

为了提升竞争力,Cotco公司高度重视技术创新和产品研发。公司投入大量资金建立了先进的研发中心,吸引了一批顶尖的电子工程师和研发人员。通过不断的技术攻关和市场调研,Cotco成功开发出一系列具有自主知识产权的电子产品,包括高性能的电源适配器、稳定可靠的数据线等。这些产品凭借卓越的性能和合理的价格,迅速在市场上占据了一席之地。

GE Solid State公司的发展小趣事
根据所选元件的特性和需求,设计合理的电路图。电路应包括将光敏元件的输出信号转换为声音信号所需的放大、比较和驱动电路。
Esico-Triton公司的发展小趣事

随着市场的不断变化,Esico-Triton意识到技术创新是企业持续发展的关键。于是,在XXXX年代初,公司投入大量资源进行技术研发。经过不懈的努力,他们成功开发出了一种新型的集成电路,大大提高了电子设备的性能和稳定性。这项技术的突破使得Esico-Triton的产品在市场上更具竞争力,并赢得了众多重要客户的青睐。

问答坊 | AI 解惑

求救:如何将SST 89E564RD (40-c-p1 0438064-AC)变成仿真器

买了块廉价的芯片,想自己做仿真器 里面没有启动程序 想自己DIY一个仿真器 麻烦成功的大虾发一个可以用的    1电路图    2软件    3监控程序 4 其他对SST 89E564RD  用的上 [ 本帖最后由 wanzsxit ...…

查看全部问答>

2009年竞赛学生守则].doc

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 2009年竞赛学生守则].doc  …

查看全部问答>

我要做一个A点阵电子显示屏!~!~大家帮帮忙!~

要求如下: 一、基本功能要求:设计并制作LED电子显示屏和控制器。 1.自制一台简易16行*32列点阵显示的LED电子显示屏; 2.自制显示屏控制器,扩展键盘和相应的接口实现多功能显示控制,显示屏显示数字和字母,亮度可用按键连续调整。 3.显示屏 ...…

查看全部问答>

nrf905通过匹配网络连接50欧姆单端天线问题

现在用nrf905设计开发一个射频智能卡测试平台的无线接口,为增强实验的可靠性,我们在设计了PCB环形差分天线的前提下,通过两个跳线,将芯片的ANT1和ANT2通过匹配网络再连接到SMA天线接口处,以备PCB环形天线不能满足实验要求时,可以经过跳线连接 ...…

查看全部问答>

在eMbedded Visual C++中使用VC++编写的.dll的问题

我最近做个项目,在手机上显示监控图像。在eMbedded Visual C++中使用VC下的Dll出错。 提示如下: error LNK2019: unresolved external symbol __imp__MP4_ClientStopCapture referenced in function \"protected: void __thiscall CKlsDlgDlg::On ...…

查看全部问答>

COTS电源

COTS产品是指一些现有的,容易使用,无需修改的元器件。相对于其它可以根据特殊情况而特定应用的系统而言,COTS系统更能节省成本和时间。 目前的军用开关电源或军用电源模块通常由COTS产品组成,主要包括军用DC-DC电源和军规电源滤波器。 COTS产品 ...…

查看全部问答>

请教c语言读写IO空间

用总线连接方式控制HD44780液晶模块,D15-D8连接到液晶模块的DB7-DB0,A1和A0接到液晶的R/W和RS,RD和WE接到液晶的片选信号E。 哪位能给一个C语言读写IO空间的代码例子?多谢…

查看全部问答>

周公的M0有问题么

周公的M0有问题吧   每次编程序 是直接复制的前一个工程 然后修改代码的   为什么隔一段时间就无法写入程序 然后就要ISP擦除   我不可能给芯片加密的啊   已经出现过3次了  觉得很郁闷…

查看全部问答>

在ADC下面或附近数模一点共地有什么区别

datasheet上是说应该在下面一点共地,但是如果在附近引出来用0欧电阻接可能产生什么问题,还查到有说,用磁珠相连有选频的好处,这个“选频”怎么讲?是指可以把数字区指定频率的噪声滤掉吗?数字区的噪声频率是不是就是单片机的频率啊?谢谢指教 ...…

查看全部问答>

i2c是什么玩意?

在网上看了好多i2c的资料  但感觉还是云里雾里的  不明白怎么用?求大虾指点!…

查看全部问答>