历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2018年01月07日 | AT89C2051简易正弦波\三角波\方波发生器

2018-01-07 来源:eefocus

/***************************************************************** 
                 简易正弦波\三角波\方波发生器 
                 使用keil C51,12MHz晶振,AT89C2051 

******************************************************************/ 
#include "reg51.h" 
#define uchar unsigned char 
#define uint  unsigned int 
#define key  P3            //键盘口 
#define dataout P1        //正弦波等数据输出口 
// 
/*************************正弦波数据表*****************************/ 
uchar code sin_tab[256]= 
      {0x80,0x83,0x85,0x88,0x8A,0x8D,0x8F,0x92, 
       0x94,0x97,0x99,0x9B,0x9E,0xA0,0xA3,0xA5, 
       0xA7,0xAA,0xAC,0xAE,0xB1,0xB3,0xB5,0xB7, 
       0xB9,0xBB,0xBD,0xBF,0xC1,0xC3,0xC5,0xC7, 
       0xC9,0xCB,0xCC,0xCE,0xD0,0xD1,0xD3,0xD4, 
       0xD6,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD,0xDE, 
       0xDF,0xE0,0xE1,0xE2,0xE3,0xE3,0xE4,0xE4, 
       0xE5,0xE5,0xE6,0xE6,0xE7,0xE7,0xE7,0xE7, 
       0xE7,0xE7,0xE7,0xE7,0xE6,0xE6,0xE5,0xE5, 
       0xE4,0xE4,0xE3,0xE3,0xE2,0xE1,0xE0,0xDF, 
       0xDE,0xDD,0xDC,0xDB,0xDA,0xD8,0xD7,0xD6, 
       0xD4,0xD3,0xD1,0xD0,0xCE,0xCC,0xCB,0xC9, 
       0xC7,0xC5,0xC3,0xC1,0xBF,0xBD,0xBB,0xB9, 
       0xB7,0xB5,0xB3,0xB1,0xAE,0xAC,0xAA,0xA7, 
       0xA5,0xA3,0xA0,0x9E,0x9B,0x99,0x97,0x94, 
       0x92,0x8F,0x8D,0x8A,0x88,0x85,0x83,0x80, 
       0x7D,0x7B,0x78,0x76,0x73,0x71,0x6E,0x6C, 
       0x69,0x67,0x65,0x62,0x60,0x5D,0x5B,0x59, 
       0x56,0x54,0x52,0x4F,0x4D,0x4B,0x49,0x47, 
       0x45,0x43,0x41,0x3F,0x3D,0x3B,0x39,0x37, 
       0x35,0x34,0x32,0x30,0x2F,0x2D,0x2C,0x2A, 
       0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21, 
       0x20,0x1F,0x1E,0x1D,0x1D,0x1C,0x1C,0x1B, 
       0x1B,0x1A,0x1A,0x1A,0x19,0x19,0x19,0x19, 
       0x19,0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B, 
       0x1B,0x1C,0x1C,0x1D,0x1D,0x1E,0x1F,0x20, 
       0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29, 
       0x2A,0x2C,0x2D,0x2F,0x30,0x32,0x34,0x35, 
       0x37,0x39,0x3B,0x3D,0x3F,0x41,0x43,0x45, 
       0x47,0x49,0x4B,0x4D,0x4F,0x52,0x54,0x56, 
       0x59,0x5B,0x5D,0x60,0x62,0x65,0x67,0x69, 
       0x6C,0x6E,0x71,0x73,0x76,0x78,0x7B,0x7D}; 
// 
/***************************三角波数据表**************************/ 
uchar code thr_tab[256]= 
      {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 
       0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 
       0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 
       0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 
       0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 
       0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 
       0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 
       0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 
       0xBF,0xBE,0xBD,0xBC,0xBB,0xBA,0xB9,0xB8, 
       0xB7,0xB6,0xB5,0xB4,0xB3,0xB2,0xB1,0xB0, 
       0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8, 
       0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0, 
       0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98, 
       0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90, 
       0x8F,0x8E,0x8D,0x8C,0x8B,0x8A,0x89,0x88, 
       0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80, 
       0x7F,0x7E,0x7D,0x7C,0x7B,0x7A,0x79,0x78, 
       0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70, 
       0x6F,0x6E,0x6D,0x6C,0x6B,0x6A,0x69,0x68, 
       0x66,0x66,0x65,0x64,0x63,0x62,0x61,0x60, 
       0x5F,0x5E,0x5D,0x5C,0x5B,0x5A,0x59,0x58, 
       0x55,0x55,0x55,0x54,0x53,0x52,0x51,0x50, 
       0x4F,0x4E,0x4D,0x4C,0x4B,0x4A,0x49,0x48, 
       0x44,0x44,0x45,0x44,0x43,0x42,0x41,0x40, 
       0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 
       0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 
       0x50,0x51,0x52,0x53,0x55,0x55,0x56,0x57, 
       0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 
       0x60,0x61,0x62,0x63,0x66,0x65,0x66,0x67, 
       0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 
       0x70,0x71,0x72,0x73,0x77,0x75,0x76,0x77, 
       0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F}; 
// 
/******************************************************************************/ 
uint  data  THHL=65535;    //T1的16位定时器初值 
uchar data keyword,n=0;    //键值存放,查表指针 
bdata sinthr; 
sbit sin_thr=sinthr^0;  //正弦波\三角波标志(1为正弦波) 
sbit ww=key^7;          // 方波输出口 
// 
/*******************************键扫描子函数***********************************/ 
keysCAN() 

keyword=key&0x07; 
if(keyword!=0x07) 
 { 
 while((key&0x07)!=0x07);//等待键释放 
  switch(keyword) 
   { 
    case 6:{if(THHL>=65235)THHL=65535;else{THHL=THHL+255;}break;}// 
    case 5:{if(THHL<=500)THHL=0;else{THHL=THHL-255;}break;}// 
    case 3:{sin_thr=~sin_thr;break;}// 
    default:{break;}// 
   } 
 } 
 } 
// 
/***************************初始化函数****************************************/ 
clearmen() 

key=0xff,dataout=0x00;THHL=65535;//按键输入状态,波形输出为0 
TH1=THHL/256;TL1=THHL%256;//装定时初值(T1用) 
TMOD=0X11;ET1=1;TR1=1;EA=1;//16 位定时模式,T1中断允许,开定时器,开总中断 

// 
/*********************************主函数***************************************/ 
main() 

clearmen(); 
while(1) 
 { 
  keyscan(); 
  } 

// 
/***********************************T1中断函数**********************************/ 
void time_intt1(void) interrupt 3  

 EA=0;TR1=0;TH1=THHL/256;TL1=THHL%256;TR1=1; 
 if(sin_thr){dataout=sin_tab[n];} 
  else {dataout=thr_tab[n];} 
 if(n>=255){n=0;}else{ n++;} 
 ww=~ww; 
 EA=1; 

// 
//***********************************结束****************************************// 


推荐阅读

史海拾趣

FWBELL公司的发展小趣事
在保证安全的前提下,尽量设定较高的温度阈值以提高充电效率。
爱普特半导体(APTSEMI)公司的发展小趣事

凭借卓越的产品性能和稳定的市场表现,爱普特半导体的市场占有率持续提升。目前,公司在国内非ARM核MCU市场的出货量已经位居第一,市场占有率也遥遥领先。这一成绩的取得,不仅彰显了爱普特在MCU行业的领先地位,也反映了公司在技术创新和市场拓展方面的强大实力。随着公司研发能力的不断提升和市场布局的逐步完善,相信爱普特在未来的市场竞争中将继续保持领先地位。

这些故事只是爱普特半导体发展过程中的一部分,它们共同展现了公司在电子行业中的崛起和成长。作为一家坚持自主创新、构建高端人才队伍、与大型企业战略合作、践行纯国产化发展理念并持续提升市场占有率的企业,爱普特半导体在电子行业的发展道路上正稳步前行。

Embedded Artists公司的发展小趣事

随着嵌入式技术的不断发展,Embedded Artists公司不断投入研发,推出了一系列创新产品。其中,一款基于恩智浦处理器的嵌入式开发板因其高性能、低功耗和易用性,受到了市场的热烈欢迎。这款产品不仅为公司带来了可观的收入,还提高了公司在行业中的知名度。

EUCHNER公司的发展小趣事

EUCHNER公司的历史可追溯到1940年,由艾米·安士能先生创立的工程事务所。艾米·安士能先生是一位热衷于机械运动和系统工程领域的创新者。在1952年,他成功发明了世界上第一个组合行程开关,这一创新技术为公司的未来发展奠定了坚实的基础。1953年,EUCHNER公司正式成立,开始专注于机电控制产品的研究与开发。

创世(CS)公司的发展小趣事

创世公司(CS)的创立源于对未来技术趋势的敏锐洞察。在5G、人工智能、物联网等行业还未广泛崛起的初期,创世公司就预见到这些技术将引领未来电子行业的发展。基于这种战略眼光,创世公司决定专注于SD NAND存储产品的研发和生产。这一决策不仅为公司的后续发展奠定了坚实的基础,也展示了创始团队对未来技术趋势的坚定信心。

AF International公司的发展小趣事

随着国内市场的逐渐饱和,AF International开始寻求海外市场的拓展。公司派遣专业的销售团队前往欧美、东南亚等地区,与当地企业建立合作关系,推广自己的产品。同时,AF International还积极参与国际电子展会,展示公司的最新技术和产品,吸引了众多国际客户的关注。通过不断的努力,AF International成功打开了海外市场,实现了国际化发展的目标。

问答坊 | AI 解惑

怎么评价一个载波恢复系统

一般工程上会用哪些指标去衡量一个载波恢复系统呢 主要包括一个pll 和 dco…

查看全部问答>

s3c6410 wifi驱动提供

s3c6410 wince6.0 wifi驱动提供 需要的请联系我 qingfeng12g#163.com…

查看全部问答>

Wince程序显示网页的问题,IWebBrowser2?

最近想做一个Wince下的程序,能在程序中显示网页。 由于wince不支持htmlview类,所以使用了IWebBrowser2来实现 参考http://www.vckbase.com/document/viewdoc/?id=1145做了一个, 但是程序窗口本身不能显示网页,是另外打开了IE来显示网页。 大 ...…

查看全部问答>

WinCE6.0 R2下获取SD Card ID的问题

OS Image中已经添加了sdbus和自己的SDHC的驱动、SDMemory,注册表中也添加了相关的设置,现在的情况是:使用类似“DSK1:”这样的名字CreateFile获得的句柄可以通过DeviceIoControl 获得到相应的SD Card的ID,而使用“\\\\Storage Card\\\\VOL:”来C ...…

查看全部问答>

[NMD原码问题]“回车”的消息响应,不才望赐教

在nmd中回车的功能是进入下一级页面。但并不是靠VK_RETURN消息实现的,代码中有句注释如下 // NOTE: VK_RETURN is actualy handled by LBN_DBLCLK in the WMCommand handler 但我搜遍整个nmd目录未发现那里有将回车消息转换了,难道是在nmd目录外 ...…

查看全部问答>

i/o接口问题

I/O接口与I/O控制器的区别? 通常说的串口编程,与串口设备的驱动有什么不同。 为什么通常都说对串口编程,而不是对具体的串口设备编程?(因为串口通用的原因吗?)…

查看全部问答>

想找些STM32无刷有感直流电机控制器的资料

想找些STM32无刷有感直流电机控制器的资料。 请大家帮助。 给个方案也好。…

查看全部问答>

CC2530在烧写程序时,提示说Flash被锁住

CC2530在烧写程序时,提示说Flash被锁住,这说明是芯片被使用过吗? 我是直接买的芯片焊接上去的。…

查看全部问答>

在altium designer中能不能挖一个凹槽?

在altium designer中能不能挖一个凹槽?如何挖?…

查看全部问答>

TMS320F28335 SPI串口扩展(1扩4)

我需要通过read_reg()读取VK3224(扩展芯片)寄存器的值,但是在接收中断处理时,接收FIFO中会有好几个数据,导致读取出来的是错误数据,unsigned char send(unsigned char data1,unsigned char data2) { unsigned int temp1, i; unsigned char t ...…

查看全部问答>