历史上的今天
返回首页

历史上的今天

今天是:2024年09月07日(星期六)

2020年09月07日 | 单片机波形发生器 (正弦、三角、方波、锯齿波)

2020-09-07 来源:51hei

单片机源程序如下:

#include                                           //包含头文件

#include

#define uchar unsigned char                           //宏定义

#define uint unsigned int


sbit s1=P3^5;                                                    //定义按键的接口

sbit s2=P3^6;

sbit s3=P3^7;

sbit s4=P3^4;


sbit led0=P3^0;                                                        //定义四个LED,分别表示不同的波形

sbit led1=P3^1;

sbit led2=P3^2;

sbit led3=P3^3;

                                                                           

sbit lcdrs=P2^7;                                           //液晶控制引脚,还有一个控制脚是RW,因为我们只需要向液晶里写数据系那是就好了,所以,我们直接将RW引脚接地

sbit lcden=P2^6;


char num,boxing,u;                                           //定义全局变量

int pinlv=100,bujin=1,bujin1=1;                   //频率初始值是10Hz,步进值默认是0.1,显示步进值变量

uchar code table[]="0123456789";                //定义显示的数组

uchar code table1[]="Fout=     Wave form:";        //初始化显示字符

unsigned long int m;                                   //定义长整形变量 m

int a,b,h,num1;                                                        //定义全局变量


//自定义字符

uchar code zifu[]={                   //此数组内数据为液晶上显示波形符号的自定义字符

                                                0x0e,0x11,0x11,0x00,0x00,0x00,0x00,0x00,

                                                0x00,0x00,0x00,0x00,0x11,0x11,0x0e,0x00,          //正弦波           0  1


                                                0x00,0x07,0x04,0x04,0x04,0x04,0x1c,0x00,

                                                0x00,0x1c,0x04,0x04,0x04,0x04,0x07,0x00,          //矩形波           2  3


                                                0x00,0x01,0x02,0x04,0x08,0x10,0x00,0x00,

                                                0x00,0x10,0x08,0x04,0x02,0x01,0x00,0x00,          //三角波           4  5


                                                0x00,0x01,0x03,0x05,0x09,0x11,0x00,0x00,            //锯齿波           6

};

uchar code sin[64]={           //此数组内的数据为,da输出对应电压值对应的数字量,0是0V,255是5V

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 juxing[64]={                //一个周期是采样64个点, 所以数组内是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 sanjiao[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

};                                                //三角波取码

uchar code juchi[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

};                                          //锯齿波取码


void delay(uint xms)         //延时函数

{

        int a,b;

        for(a=xms;a>0;a--)

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

}

void write_com(uchar com)                //写命令函数

{

        lcdrs=0;

        P0=com;        

        delay(1);

        lcden=1;

        delay(1);                                                                           

        lcden=0;

}


void write_date(uchar date)                //写数据函数

{

        lcdrs=1;

        P0=date;

        delay(1);

        lcden=1;

        delay(1);

        lcden=0;

}


//自定义字符集

void Lcd_ram()      

{

        uint i,j,k=0,temp=0x40;

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

        {

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

           {

            write_com(temp+j);

            write_date(zifu[k]);

            k++;

           }

           temp=temp+8;

        }

}


void init_lcd()                                        //初始化函数

{

        uchar i;                                                                  

        lcden=0;                                        //默认开始状态为关使能端,见时序图  

        Lcd_ram();

        write_com(0x0f);

        write_com(0x38);                        //显示模式设置,默认为0x38,不用变。

        write_com(0x01);                        //显示清屏,将上次的内容清除,默认为0x01.

        write_com(0x0c);                        //显示功能设置0x0f为开显示,显示光标,光标闪烁;0x0c为开显示,不显光标,光标不闪

        write_com(0x06);                        //设置光标状态默认0x06,为读一个字符光标加1.

        write_com(0x80);                        //设置初始化数据指针,是在读指令的操作里进行的

        for(i=10;i<20;i++)                           //显示初始化

        {

                write_date(table1[i]);                   //显示第一行字符

        }

        write_com(0x80+0x40);                           //选择第二行

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

        {

                write_date(table1[i]);                   //显示第二行字符

        }

        write_com(0x80+10);                                   //选择第一行第十个位置

推荐阅读

史海拾趣

赛微(Cellwise)公司的发展小趣事

作为高端集成电路晶圆代工生产商,赛微在晶圆代工技术方面取得了重要突破。公司不断引进先进的生产设备和工艺技术,加强研发投入和人才培养,成功打造了一系列具有国际竞争力的晶圆代工生产线。同时,公司还积极拓展新的应用领域和市场,为客户提供更加全面、优质的服务。

Elpaq公司的发展小趣事
风华邦科(FH-BK)公司的发展小趣事

广东粤翔航空服务有限公司(假设为FlyWin集团下的子公司)于2019年在珠海市金湾区成立,专注于航空咨询服务和航空器材租赁买卖。在成立初期,公司面临着航空服务市场的高度竞争和严格的行业监管。然而,凭借对市场的敏锐洞察和精准定位,粤翔航空通过提供专业的航空咨询和高效的器材租赁服务,逐渐在行业内站稳脚跟。公司不仅为多家航空公司提供了一站式的咨询服务,还成功促成了多笔航空器材的租赁交易,为公司后续的发展奠定了坚实基础。

意瑞(COSEMITECH)公司的发展小趣事

在保持核心技术优势的同时,意瑞半导体还不断扩大其产品线,涉足更多的领域,如物联网等。公司致力于提供从芯片设计到系统集成的一揽子解决方案,以满足不同客户的需求。此外,公司还积极申请专利和集成电路布图设计专有权,累计申请近20项专利发明和39项集成电路布图设计专有权,进一步巩固了其在行业中的技术领先地位。

CHONGQING PINGYANG ELECTRONICS CO.,LTD.公司的发展小趣事

2005年,重庆平洋电子有限公司迎来了一个重要的合作机会。经过严格的筛选和谈判,公司与海尔集团达成了先期采购协议,成为海尔集团在重庆市唯一一家免第三方认证的企业。这一合作不仅为公司带来了稳定的订单和收益,还进一步提升了公司的品牌影响力和市场竞争力。

锋鸣电子(Fengming)公司的发展小趣事

福斯特集团(FIRST SEMI)作为另一家以“FIRST”为品牌的企业,在半导体芯片领域也取得了显著成绩。该集团成立于2010年,总部位于中国深圳,是一家集半导体芯片研发、方案设计、封装制造、测试编带、产品销售为一体的国家级高新技术企业。公司产品广泛应用于无人机、机器人、笔记本电脑、液晶电视等多个领域。通过在全球设立代理销售公司,福斯特集团的销售网络覆盖全球多个国家和地区,服务合作客户超过3000家。

问答坊 | AI 解惑

视频服务器常用重要附属功能

关键字:视频服务器     面对琳琅满目的基于MPEG-4/H.264等多种压缩算法的视频服务器,该如何选择呢?这里我们主要是根据功能需求来选择合适的产品。     首先,要明白需要视频服务器来完成什么样的事情,这个很重要, ...…

查看全部问答>

第一次写驱动程序,无法读写硬件,请高手指点!

我把周立功的实验教材上的流接口驱动程序的例子进行了修改,加入了写硬件的部分,但是驱动程序无法读写硬件,请高手帮我分析一下。 测试程序中只用到了写函数,,目的是往硬件里写数据,从串口打印的信息显示数据正确,但是硬件里没反应。 #inclu ...…

查看全部问答>

wince5.0定制的奇怪问题

之前的PB编译生成系统正常。昨天不知道为啥。重新编译一个之前的工程就报错。 build.err的内容如下: E:\\WINCE500\\build.log(1) : error SYSGEN0000: error(s) in sysgen phase build.log的最后的内容如下: Windows CE Version (Release) ( ...…

查看全部问答>

请教关于DSP的几个问题!

其实我也非常不愿意在这里发作业帖,没办法,学校在武汉,我现一直在北京公司 实习,上学期在学校又选了一门DSP的课,布置了几道考试题作业,明天就要交了, 按学校的规定如果不过可能毕业会有问题,没办法只好向eeworld的各位兄弟求救了, 请大 ...…

查看全部问答>

最近用CC430做的一个控制器总死机,没有思路,请各位出点建议

最近用CC430做的一个控制器总死机,没有思路,请各位出点建议…

查看全部问答>

【设计工具】赛灵思ROM使用中文教程

潘徐君编写的使用教程,适合赛灵思FPGA/CPLD用户,介绍了赛灵思ROM的使用技巧,有实战价值。   …

查看全部问答>

有没有放大十万倍的电路将100纳安的电流放大,用三极管做

  有没有放大十万倍的电路将100纳安的电流放大,用三极管做…

查看全部问答>

enet-io 看不懂啊

哪位朋友看懂了LM3S8962中的enet-io 例程,能比较详细的解释一下么,看的晕啊…

查看全部问答>

直流功率输出板

(潮光光耦网整理编辑)2012-07-13 1.产品简介 可以驱动8路直流功率输出(控制直流电机、电磁阀、继电器等直流设备)、6路LED指示灯输出、6路开关量输入。 客户可通过简单的控制命令控制功率输出口、LED端口开闭,闪烁,监控开关量状态变化。 ...…

查看全部问答>

关于CAN通讯中断

本程序基于LM3S5K31 #include \"config.h\"#include \"can_deal.h\"#include \"serial_com.h\"/**/tCANMsgObject g_MsgObjectRx;                          ...…

查看全部问答>