历史上的今天
返回首页

历史上的今天

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

2020年01月12日 | 基于51单片机产生占空比和频率可调的方波信号发生器

2020-01-12 来源:51hei

       前段时间开始接触到单片机,以为单片机会很简单,但比我预想的要复杂一些,特别是刚开始接触的时候,需要下载各种软件,然后自己慢慢地去熟悉这些软件的操作。我是从51单片机开始入手,毕竟51单片机是最基本的了。正好这学期学习了波形的产生,就做一个基本的函数信号发生器吧。
       这次实现的函数发生器是基于51单片机的占空比、频率可调的方波发生器,适用于AT89C51/52、STV89C51/52等,现在把具体过程给大家说说。
       第1步:安装一个单片机仿真图软件,推荐使用Protues,这是一款专门用来仿真单片机的,功能十分强大。我用的是Protues8.6,下载安装步骤大家就自行查询了,学习起来比较简单,半小时就能掌握了。下面是我的仿真图形。
 

       第2步:单片机仿真图形界限完成之后,就是写程序了,程序写好之后,需要下载Keil软件将程序转换为单片机能识别的机器语言,即hex文件,程序可以使是c语言,也可以是汇编语言。在Keil上运行程序没有错误后就会自动生成hex文件,Keil的使用大家自行查询。下面那个“单片机1111.hex”就是我们写好的程序转换为hex文件了,其他的是附加产物。
 

      第3步:回到Protues仿真,双击单片机,就会弹出一个窗口,在Program File栏加入我们刚才产生的hex文件就可以了,然后点击运行就可以运行了。很多人仿真的时候可能没有示波器窗口,点击运行后,然后点击上方“调试”,再点击弹出窗口的最后一行,示波器窗口就弹出来了,就可以看到单片机产生的波形了。
 
下面是仿真波形图
 
(两张图的频率不一样,即频率可调)
 

(这两张图的占空比不一样,即占空比可调)

现在说说具体功能,一共有4个按键,初始频率为500Hz,第1个按键按下后频率增加500Hz,第2个按键按下后频率增加100Hz,当频率增加到最大值1MHz后重新定义为500Hz,即频率500~1MHz可变;初始占空比为50%,第3个按键按下后占空比增加10%,第4个按键按下后占空比增加1%,当占空增加到100%后就定义为0%,即占空比0%~100%可调。大家还可以稍微修改程序,实现频率和占空比在不同范围内可调。
源代码:
#include
#define uchar unsigned char
#define uint unsigned int
float fosc=12000000;
sbit KEY1=P1^0;
sbit KEY2=P1^1;
sbit KEY3=P1^2;
sbit KEY4=P1^3;
sbit OUTPUT=P2^0;
uchar zkb;
uint freq;
uchar TIMER0_L,TIMER0_H,TIMER1_L,TIMER1_H;
void delay(uchar n)
{
uchar i;
while(n--)
{for(i=255;i>0;i--)
{}
}}
void chushihua(void)
{
P1=0x0f;
freq=500;
zkb=50;
TIMER0_L=0xe0;
TIMER0_H=0xb1;
TIMER1_L=0xf0;
TIMER1_H=0xd8;
TL0=0xe0;
TH0=0xb1;
TL1=0xf0;
TH1=0xd8;
TMOD=0x11;
IT0=1;
EX0=1;
ET0=1;
ET1=1;
EA=1;
TR0=1;
TR1=1;
}
void main(void)
{
chushihua();
while(1)
{ }
}
void Timer0_freq() interrupt 1
{
TR1=1;
TL0=TIMER0_L;
TH0=TIMER0_H;
OUTPUT=1;
}
void Timer1_zkb() interrupt 3
{
TR1=0;
TL1=TIMER1_L;
TH1=TIMER1_H;
OUTPUT=0;
}
void keyscan() interrupt 0 using 1
{
float TF0,TZ1;
EX0=0;
delay(10);
if(P1!=0x0f)
{
if(KEY1==0) freq+=500;
if(KEY2==0) freq+=50;
if(freq>10000) freq=500;
if(KEY3==0) zkb+=10;
if(KEY4==0) zkb++;
if(zkb>100) zkb=1;
TF0=(65536-fosc/(12.0*freq));
TZ1=(65536-(fosc*zkb)/(12.0*100*freq));
TIMER0_H=(uint)TF0/256;
TIMER0_L=(uint)TF0%256;
TIMER1_H=(uint)TZ1/256;
TIMER1_L=(uint)TZ1%256;
}
P1=0x0f;
EX0=1;
TR0=1;
TR1=1;
}

推荐阅读

史海拾趣

EXXELIA Group公司的发展小趣事

关于EXXELIA Group公司在电子行业的发展,由于字数和篇幅限制,我无法直接给出5个各500字以上的相关故事。但我可以为您提供一些关于EXXELIA Group公司的发展历程和关键事件,您可以从中挑选和拓展成故事。

  1. EXXELIA的创立与早期发展
    EXXELIA Group,原名Temex,起初是一家专注于被动元件和精密子系统制造的公司。随着电子行业的快速发展,EXXELIA看到了市场对高品质被动元件的需求,并逐渐扩大产品线,包括电容器、电感器、变压器等。公司通过不断的技术创新和严格的质量控制,逐渐在行业中树立了良好的口碑。
  2. 技术创新与突破
    在某个关键时期,EXXELIA投入大量资源进行技术研发,成功开发出一种新型的高性能电容器。这项技术创新显著提高了电子产品的性能和稳定性,受到了市场的热烈欢迎。这一成功使得EXXELIA在电子行业中的地位更加稳固。
  3. 市场拓展与合作
    随着全球电子市场的不断扩大,EXXELIA开始寻求国际市场的发展机会。公司与多家国际知名企业建立了合作关系,共同开发新产品,拓展市场份额。这些合作为EXXELIA带来了更多的业务机会,也进一步提升了公司的品牌影响力。
  4. 应对市场挑战
    在电子行业竞争日益激烈的环境下,EXXELIA也面临着各种市场挑战。为了应对这些挑战,公司不断调整市场策略,优化产品结构,加强与客户的沟通与合作。通过这些努力,EXXELIA成功稳住了市场地位,并持续为客户提供优质的产品和服务。
  5. 未来展望与战略布局
    面对未来电子行业的发展趋势,EXXELIA积极进行战略布局。公司将继续加大技术研发投入,推动产品创新;同时,加强与国际合作伙伴的交流与合作,共同探索新的市场机会。通过这些举措,EXXELIA期望在未来几年内实现更快速的发展。

请注意,以上内容主要基于公开信息和行业常识进行编写,具体细节可能需要根据实际情况进行调整和完善。希望这些信息能为您提供一些灵感和参考。

Hirose Electric公司的发展小趣事

Hirose Electric公司电子行业的五个发展故事

1. 连接器技术的创新与多样化

Hirose Electric自创立以来,便以连接器技术的不断创新而著称。在过去的70多年里,该公司不断推出适应市场需求的连接器产品,从最初的简单连接器发展到如今涵盖工业、通讯、消费类电子、电脑及汽车等多个领域的复杂连接器解决方案。例如,Hirose开发了多种类型的RF、同轴、板对板、线对板、圆形、MicroUSB、FPC/FFC等连接器,这些产品不仅提升了设备的连接性能,还满足了市场对高质量、高效率连接方案的需求。

2. 全球化战略与市场拓展

为了更好地服务全球客户,Hirose Electric实施了积极的全球化战略。公司在全球范围内建立了多个生产基地和销售网络,包括在中国上海、深圳和北京设立的分支机构,以及在其他国家和地区的代表处。这些机构的设立不仅缩短了与客户之间的距离,还提升了供应链的灵活性和响应速度。例如,Hirose通过在中国市场的深耕,不仅扩大了其在中国市场的份额,还为中国电子行业的发展提供了有力支持。

3. 环保型连接器的研发与推广

随着全球对环境保护意识的增强,Hirose Electric也积极投身于环保型连接器的研发与推广中。公司致力于生产同轴连接器、FFC/FPC连接器以及单排和双排等环保型连接器,这些产品在满足性能要求的同时,还减少了生产过程中的环境污染。Hirose通过采用先进的生产工艺和材料,确保连接器的制造过程符合环保标准,赢得了业界的广泛赞誉。

4. 与分销商的紧密合作

Hirose Electric深知与分销商合作的重要性,因此与全球多家知名分销商建立了长期稳定的合作关系。这些分销商不仅为Hirose的产品提供了广泛的销售渠道,还通过提供专业的技术支持和客户服务,帮助Hirose更好地满足客户需求。例如,贸泽电子作为Hirose的重要分销商之一,凭借其强大的供应链能力和专业的技术团队,为Hirose的产品在全球范围内的推广和销售提供了有力支持。

5. 产品系列的持续升级与扩展

为了保持市场竞争力,Hirose Electric不断对其产品系列进行升级和扩展。例如,公司近期将DF40系列连接器的高度范围从4毫米扩展到7毫米,以满足不同产品设计对连接器高度的需求。这一升级不仅提升了DF40系列连接器的灵活性,还进一步巩固了Hirose在连接器市场的领先地位。此外,Hirose还不断推出新的连接器产品,如TF07V系列FPC/FFC连接器,这些产品以其卓越的性能和可靠性赢得了市场的广泛认可。

Circuit Assembly公司的发展小趣事

由于Circuit Assembly公司的发展故事涉及具体的公司案例和数据,而这些信息往往涉及公司的内部运营、市场策略等敏感内容,且不同公司的发展经历也各有差异,因此我无法直接为您提供5个具体的电子行业里面Circuit Assembly公司的发展起来的相关故事。但我可以根据您提供的背景和要求,给出一些可能的发展趋势和挑战,帮助您理解该行业的整体状况。

在电子行业中,Circuit Assembly公司的发展通常与几个关键因素密切相关,包括技术创新、市场需求、供应链管理以及国际合作等。随着5G、物联网、智能制造等技术的快速发展,Circuit Assembly公司面临着前所未有的机遇和挑战。

一方面,新技术的出现推动了电子产品的小型化、集成化和智能化,对Circuit Assembly公司的工艺水平和生产能力提出了更高的要求。那些能够紧跟技术潮流,不断提升自身技术水平和创新能力的公司,往往能够在市场中脱颖而出,实现快速发展。

另一方面,随着全球市场竞争的加剧,Circuit Assembly公司需要更加注重成本控制和供应链管理。通过建立稳定可靠的供应链体系,优化生产流程和管理,降低生产成本,提高产品质量,这些公司能够更好地满足客户需求,提升市场竞争力。

此外,国际合作也是Circuit Assembly公司发展的重要推动力。通过与国内外同行企业的交流与合作,可以引进先进的技术和管理经验,共同推动行业发展。同时,通过参与国际市场竞争,也能够拓宽公司的业务领域,提高公司的国际影响力。

综上所述,电子行业中的Circuit Assembly公司面临着多方面的机遇和挑战。那些能够抓住机遇、应对挑战的公司,有望在市场中取得更大的成功。但具体的公司发展故事需要根据不同的公司背景和实际情况来具体分析和描述。建议您查阅相关行业报告、公司年报或新闻报道,以获取更具体的信息。

Bogen Communications Inc公司的发展小趣事

在电子行业的激烈竞争中,Bogen Communications Inc公司凭借一项革命性的技术创新,迅速崭露头角。该公司研发出一种新型的音频处理芯片,极大地提升了通信设备的音质和性能。这一创新不仅赢得了市场的广泛认可,还为公司带来了大量的订单和合作伙伴。随着技术的不断完善和市场的扩大,Bogen Communications Inc逐渐成为了音频通信领域的领导者。

冠图电子(GTL-POWER)公司的发展小趣事

在电子行业的激烈竞争中,Bogen Communications Inc公司凭借一项革命性的技术创新,迅速崭露头角。该公司研发出一种新型的音频处理芯片,极大地提升了通信设备的音质和性能。这一创新不仅赢得了市场的广泛认可,还为公司带来了大量的订单和合作伙伴。随着技术的不断完善和市场的扩大,Bogen Communications Inc逐渐成为了音频通信领域的领导者。

Gruner AG公司的发展小趣事
通过光信号传输电信号,具有较高的传输稳定性和可靠性。

问答坊 | AI 解惑

关于上拉电阻和下拉电阻的资料

虽然不是我自己整理的,但是我是综合很多的相关资料整理的,发出来不为别的,只为养家糊口,大家看着有用的话就收藏吧! 算了 还是不卖了,来这的新手也不容易,大家实惠才是真的!…

查看全部问答>

镍氢电池VS锂电池,谁才是真命天子?

电池技术发展到今天,已经走过了铅 酸电池和镍镉电池时代。目前正处于镍氢电池和锂离子电池的绿色电池时代。镍氢电池VS锂电池,谁才是真命天子?周末了解一些动态,分享出来。 2009年6月25日,工信部出台的《新能源汽车生产企业及产品准入管理规则 ...…

查看全部问答>

C8051F340单片机向串口发送数据问题

我用C8051F340单片机向串口发送送据 从0发到10 为什么到接收上显示会是 00 81 82 83 84 05 06 87 88 89 8A 我再发送一次 显示是 80 81 82 83 04 05 86 87 88 89 0A 在发送数据最高位的有1 和0 的变化 照理来说应该只能是0的 遇到这样问题 ...…

查看全部问答>

socket连续收发数据的问题

   是这样的,我最近在弄socket编程方面的东西。基uC/TCPIP 的,连接是建立好了,就是收发数据有问题:我将收发函数放在循环while(1)里面,发端开始一直发,发了一会就不发了,收端只能接收一次数据,第二次循环到recv时就卡死了…… 想 ...…

查看全部问答>

请高手帮忙将这段c语言程序改写成汇编语言程序

#include unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code digittab[10][8]={{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},        //0           ...…

查看全部问答>

wince 下用evc来写串口通信。

哪位大虾能发给我个串口通信的实例呀??最好用EVC写的。。感激涕零。\\ 我的邮箱6094189ye@163.com 我看到书上有CSerial 这个类,但STANDARDSDK下面没有这个类呀。。。???…

查看全部问答>

DOS7.1下如何通过使用USB转串口

我的是DELL1501本本,要实现纯DOS下使用串口(RS232)通信,在市场上买了个prolific USB转串口,不知是否可行?之前试过在DOS下可以使用USB鼠标,和读取USB软驱(B:)里的资料!…

查看全部问答>

真正的工作中,其实专业并没那么重要

也是偶然看到一个节目,当初算是有炒作的因素在里面,是北大才子卖猪肉。好像是广州那边的,某人在九几年的时候从政府辞职下海,前后做过房地产、醋饮料等。让我感兴趣的是,当其瞅准猪肉市场时,带着自己手下千来口子,一齐转型。于是那些人一齐跨 ...…

查看全部问答>

新手请教ISP的问题

    我的电脑是笔记本,现在要ISP烧程序,用了一个BUS转RS232的转接卡,主控芯片是PL-2303,晶振12M,BUS转RS232后 我设置为端口2;  现在我用的单片机STM32F103C8T6,在使用STMicroelectronics Flas ...…

查看全部问答>

单片机按键定时扫描问题

哪位高手能帮忙把下面按键扫描程序改成用定时器对按键进行定时扫描啊,我用的是51单片机,感激万分!!!!/*键盘扫描*/void judge(void){     P1=0xf0;lie=P1;lie=lie&0xf0;if(lie!=0xf0){delay();if(lie!=0xf0) //假设 ...…

查看全部问答>