历史上的今天
返回首页

历史上的今天

今天是:2024年11月07日(星期四)

正在发生

2019年11月07日 | 单片机波形发生器源码

2019-11-07 来源:51hei

程序源码

#include

#include

#include

#define  uchar  unsigned  char

#define  uint  unsigned   int

unsigned long Result,i;

sbit SDA=P1^1;    //PCF8591 接口

sbit SCL=P1^0;

unsigned int a=0;            //波形采样点值

unsigned int b=0;

unsigned  int c=0;

unsigned  int bx_chang=0;

unsigned  int n=40;  //频率计算值

unsigned char TH;

unsigned char TL;

unsigned int mode=0; //0为调节幅度 1为调节频率

unsigned int fd=6;         //幅度初值  3.0V

unsigned int  x;         //采样点的间隔

unsigned int u;                 //lcd刷屏变量

//*************

sbit CS =P3^5;                  //LCD接口

sbit SID=P3^6;

sbit SCLK=P3^7;

sbit PSB=P1^5;

//*************

sbit p20=P2^0; //波形调节

sbit p21=P2^1; //增加        频率、幅度

sbit p22=P2^2; //减少        频率、幅度

sbit p32=P3^2; //频率幅度选择

                                                                  //sin波形数组

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,0xDF,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 delay(unsigned int z)                                //延迟函数

{   unsigned int x,y;   

     for(x=z;x>0;x--)  

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

}

//***************************************************LCD显示函数组

void SendByte(unsigned char Dbyte)                                     //LCD字节传送

{

     unsigned char i;            

         CS=1;

     for(i=0;i<8;i++)

     {        SCLK = 0;           

            if((Dbyte<                SID=1;                        

                else

                SID=0;

                SCLK = 1;

       SCLK = 0;

     }

         CS=0;

}

void Lcd_WriteCmd(unsigned char Cbyte )                   //LCD的数据与指令传送

{

     delay(10);

     SendByte(0xf8);           

     SendByte(0xf0&Cbyte);      

     SendByte(0xf0&(Cbyte<<4));   

}

void Lcd_WriteData(unsigned char Dbyte )

{

     delay(10);

     SendByte(0xfa);               

     SendByte(0xf0&Dbyte);      

     SendByte(0xf0&(Dbyte<<4));   

}                                                                 

void InitLCD()                                    //LCD初始化

{

        Lcd_WriteCmd(0x30);              

        Lcd_WriteCmd(0x06);               

        Lcd_WriteCmd(0x0c);               

        Lcd_WriteCmd(0x04);              

        Lcd_WriteCmd(0x01);                   

        Lcd_WriteCmd(0x02);                          

        Lcd_WriteCmd(0x80);                

}                                                               

void xianshi(unsigned char x,unsigned char y,unsigned char *stri)        //LCD数据传送地址

{                                                               

        if(x==1)      Lcd_WriteCmd(0x80+y-1);               

        else if(x==2) Lcd_WriteCmd(0x90+y-1);

        else if(x==3) Lcd_WriteCmd(0x88+y-1);

        else if(x==4) Lcd_WriteCmd(0x98+y-1);       

while(*stri>0)

        {

                Lcd_WriteData(*stri);

                stri++;

        }       

}

//****************************************************

void delayp()                         //延迟函数

{;;}

void delay_1ms(uint z)  

{  

    uint x,y;  

    for(x=z;x>0;x--)  

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

            ;  

}  

//****************************************I2C协议  

void start()//开始信号  

{  

    SDA=1;  

    delayp();  

    SCL=1;  

    delayp();  

    SDA=0;  

    delayp();  

}  

  

void stop() //停止信号  

{  

    SDA=0;  

    delayp();  

    SCL=1;  

    delayp();  

    SDA=1;  

    delayp();  

}  

  

  

void respons()//应答    相当于一个智能的延时函数  

{  

    uchar i;  

    SCL=1;  

    delayp();  

    while((SDA==1)&&(i<250))  

        i++;  

推荐阅读

史海拾趣

GAPTEC Electronic GmbH & Co. KG公司的发展小趣事

背景:随着全球对环保和可持续发展的重视,Galaxy Microelectronics也开始关注其生产过程中的环保问题。

发展:公司投入巨资建设绿色工厂,采用先进的环保技术和设备,减少生产过程中的能源消耗和废弃物排放。同时,Galaxy Microelectronics还积极推广环保理念,与供应商和客户共同构建绿色供应链。这些举措不仅提升了公司的社会形象,还为其在竞争激烈的市场中赢得了更多客户的青睐。

ABLIC公司的发展小趣事

2020年4月,ABLIC成为MinebeaMitsumi集团的一员。这一合作对于ABLIC来说具有重要意义。MinebeaMitsumi集团作为一家在电子元器件领域具有强大实力的企业,为ABLIC提供了更广阔的发展空间和资源支持。通过融入MinebeaMitsumi集团的“八矛战略”,ABLIC的模拟半导体业务得到了进一步提升,其在集团内部的地位也愈发重要。

Electech Electronics公司的发展小趣事

随着公司业务的不断发展,Electech Electronics开始实施国际化战略,积极开拓海外市场。公司先后在亚洲、欧洲和北美等地设立了分公司和办事处,与当地的企业和渠道商建立了紧密的合作关系。同时,Electech Electronics还积极参加国际电子产品展会,展示公司的最新产品和技术,吸引更多的海外客户。

光磊(GL)公司的发展小趣事

随着科技的不断发展,Electech Electronics意识到仅仅依赖电子元器件的代理和销售已经无法满足市场的需求。于是,公司开始投入研发,专注于电子产品的设计和制造。经过数年的努力,Electech Electronics成功开发出一系列具有竞争力的电子产品,如智能控制模块、高精度传感器等。这些产品的推出不仅拓宽了公司的产品线,也提升了公司的市场竞争力。

Cypress(赛普拉斯)公司的发展小趣事

随着公司业务的不断发展,Cypress开始在全球范围内拓展市场。公司不仅在加州硅谷设立了最早的设计中心,还在美国的其他州以及英格兰、爱尔兰、菲律宾等地设立了设计工厂。此外,Cypress还在菲律宾和印尼设立了组装、检测工厂,形成了全球化的生产网络。这些举措不仅提高了公司的生产效率和产品质量,也进一步巩固了Cypress在全球电子芯片市场的地位。

FILTRAN公司的发展小趣事

Cypress在USB技术领域取得了显著的成就。自1996年开始深耕USB产品以来,Cypress逐渐成为了USB领域内的领先者。公司推出的EZ-PD系列产品是业界第一个支持USB PD 3.0供电规范的解决方案,赢得了市场的广泛认可。此外,Cypress还不断推出新的USB产品和技术,推动了USB技术的不断发展和创新。

问答坊 | AI 解惑

请教Altium Designer 6.9原件库的问题

我在学习Altium Designer 6.9时在原件库这里有的原件有封装图样而又的却没有(如图1;2)。我也尝试在网上找出答案,但没有结果;我又尝试阅读软件自带的help也没能找出答案。谁有好主意能告诉我,我应查些什么资料或是这个问题应怎样解决。谢谢大 ...…

查看全部问答>

windows ce 5.0 购买问题 请求各位大侠了

windows ce 5.0 购买问题 急求 偶想买windows ce 卖方说里面有bsp pb5.0 evc 我想知道我只够买windows ce bsp pb5.0 evc 这些在网上可以免费下载么 请求各位大侠帮帮在下了…

查看全部问答>

編譯時的ERROR

<Linking>  undefined first referenced                              &nb ...…

查看全部问答>

“symbol referencing errors”的解决方法(转)

原文出处 http://www.hellodsp.com/bbs/viewthread.php?tid=16417&highlight=ERROR   经常看到朋友有问到这一个错误,\"error: symbol referencing errors\",下面我们以一个会员朋友遇到的问题为例讲述解决方法,其实非常简单。首先我们 ...…

查看全部问答>

altium 在导入原理图到pcb时提示不匹配

我用的自己画的原理图和pcb库,对应的元件已经关联,但是在导入到pcb时总说有东西不匹配,还提示unknown pin,始终找不到原因…

查看全部问答>

TI 8962中的字库是怎么算出来的,有字模软件吗

static const unsigned char g_pucFont[96][5] ={    { 0x00, 0x00, 0x00, 0x00, 0x00 }, // \" \"    { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // !    { 0x00, 0x07, 0x00, 0x07, 0x00 }, // \" &n ...…

查看全部问答>

从用户态的open到内核驱动实现流程

作者:李强,华清远见嵌入式学院讲师。转载自http://www.embedu.org/Column/Column338.htm问题来源:在讲授Linux初级驱动的时候,我发现困惑很多同学的是不真正理解从应用层到我们自己所写的驱动层的调用过程,所以写此文章来大概描述。首先我们知道 ...…

查看全部问答>

电源开关设计秘笈30例(全30例)pdf下载

电源设计一直是工程师面对的一个难题,随着全球节能环保意识的提升, 设计简捷、高效、轻巧的绿色电源成为工程师的首要任务,为了帮助工程师解决这方面的难题,TI推出了一本电子书叫做《电源开关设计秘笈30例》,对电源开关设计技巧做出了详细的说 ...…

查看全部问答>

关于LPC1768数组溢出问题,请高手帮忙解答一下。

const UART_DCM_TBL tbl[72] = { {1.000,  0,  1}, {1.067,  1, 15}, {1.071,  1, 14}, {1.077,  1, 13}, {1.083,         1, 12}, {1.091,  1, 1 ...…

查看全部问答>

flash 擦除例程中语句疑问,请高手帮忙解决,谢谢!

flash擦除例程如下,其中             /* Wait for erase to complete */为什么if (*pdata & 0x80)就能判断擦除完成?             while (1)    & ...…

查看全部问答>