历史上的今天
返回首页

历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2021年08月25日 | 51单片机-定时器&数码管扫描显示

2021-08-25 来源:eefocus

1.定时器中断实现间隔切换


在第六章第4讲的测试代码中提到过数码管微闪烁问题,这是由于三八译码器的IO端口切换的间隔时间不均匀导致,这部分的问题宋老师已经在《手把手教你学51单片机》文档6.4.2节有详细解释,并在6.5.2节里解决了这个问题。数码管扫描函数我们使用定时器0强制实现间隔1ms切换三八译码器的IO输出,这样保证了每个数码管被点亮的时间都是均匀的。我们在主函数里不停地执行数码管显示函数。这里是测试代码,用定时器1实现add间隔50ms自增1,数码管显示add的值。


#include  

#include //详见第六章第8讲

#include

  

u32 add=9999;

  

void main()

{   

    LED_Init();          //初始化LED硬件模块

    EA = 1;              //闭合总中断开关

    TIM0_Init(1000,33);  //定时1ms,因为中断函数占用时间多一点,所以微调的值跨度比较大

    TIM1_Init(50000,10); //定时50ms,10是微调使定时更精确

     

    while(1)

    {   

        ShowNumber(add);

    }   

}

  

void TIM0_IRQHandler() interrupt 1

{

    TH0 = T0RH; //重新加载重载值

    TL0 = T0RL;

    SEG_Scan(); //间隔1ms执行三八译码器的不同IO输出低电平

}

  

void TIM1_IRQHandler() interrupt 3

{

    TH1 = T1RH; //重新加载重载值

    TL1 = T1RL;

    add++; 

}


2.PWM简单入门


PWM概念在《手把手教你学51单片机》文档10.2节有很好的解释,这里笔者就不费笔墨讲解了,我们简单入门PWM来让8盏小灯实现较暗地点亮。P0端口输出如下

8.14.png?imageView2/2/w/550

代码实现如下


#include  

#include //详见第六章第8讲

#include

 

u8 pwm=0;

void main()

{   

    LED_Init();            //初始化LED硬件模块

    EA = 1;                //闭合总中断开关

    TIM0_Init(1000,10);    //定时1ms,10是微调使定时更精确

     

    while(1)

    {   

        if(pwm<=8)P0=0xFF; //pwm在0~8之间都会执行“P0=0xFF;”,也就是占空比为90%,小灯显示较暗

        else P0=0x00; 

    }   

}

  

void TIM0_IRQHandler() interrupt 1

    TH0 = T0RH;       //重新加载重载值

    TL0 = T0RL;

   

    pwm++;

    if(pwm>=10)pwm=0; //pwm在0~9之间间隔1ms变化

}


3.浅谈例程代码


在宋老师的lesson10_2例程代码中的“void ConfigPWM(unsigned int fr, unsigned char dc)”函数里大家阅读起来可能有点吃力,这里笔者解析一下。


我们先再次复习一下知识,定时器每加1经过的时间是(12/11059200)秒,如果计数到11059200(多次溢出),时间也就过去了12秒。时间过去了1秒的时候计数值就是(11059200/12)。


“ConfigPWM(100, 10);”意味着tmp的数值周期是(1/100)秒,也就是频率为100Hz。这个周期里高电平定时持续的时间为“(1/100)*0.1”秒,低电平定时持续的时间为“(1/100)*0.9”秒。所以占空比为10%。


主函数里的延时就是让这个PWM波形持续一段时间,然后又到下一个占空比为40%的PWM波形持续一段时间。4个阶段的占空比不同,也就表现为小灯的显示亮度不同。


这里笔者做个效果图给大家理解吧

8.15.png?imageView2/2/w/550

推荐阅读

史海拾趣

EREM公司的发展小趣事

近年来,随着科技的快速发展和电子行业的变革,EREM公司也面临着巨大的挑战。为了应对这些变革,EREM积极调整战略方向,加大研发投入,推出了一系列符合市场需求的新产品。同时,EREM还注重人才培养和团队建设,打造了一支高效、专业的团队,为公司的发展提供了有力保障。

Discera公司的发展小趣事

在成功进入军用市场后,Discera公司开始将目光投向更广阔的商用市场。他们积极与各大电子厂商合作,推广自己的CMOS MEMS谐振器产品。随着技术的不断普及和成本的降低,越来越多的商用电子产品开始采用Discera的谐振器产品,公司的市场份额也逐步扩大。

Free2Move公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,Discera公司始终保持着对技术创新的追求。他们不断投入研发资源,推动产品的升级和换代。同时,Discera还积极探索新的应用领域和市场机会,为公司的未来发展描绘出更加广阔的蓝图。

以上五个故事概要基于Discera公司的发展历程和公开信息构建,旨在展示公司在电子行业中的成长和进步。请注意,这些故事并非真实事件,仅供参考。

Electronic Transistors Corp公司的发展小趣事

在技术创新的基础上,ETC公司开始积极拓展市场。公司通过优化产品线,满足不同客户的需求,逐渐打开了国际市场的大门。同时,ETC还加大了品牌宣传力度,通过参加国际电子展会、发布技术白皮书等方式,提升品牌知名度和影响力。这些举措使ETC在全球范围内的市场份额不断扩大,品牌影响力也日益增强。

BULGIN公司的发展小趣事

在1939年至1945年的二战期间,BULGIN的产能被英国政府全面征用。为了满足战时需求,BULGIN公司开发出能够适应全世界各地区苛刻使用环境的产品。在这段时间里,公司为英国政府制造了超过1千万只零部件,并在密封技术领域积累了宝贵的经验,这些经验一直延续至今。

Cellergy公司的发展小趣事

随着公司实力的不断增强,Cellergy公司开始将目光投向全球市场。公司先后在多个国家和地区设立了分公司或办事处,以便更好地服务当地客户。同时,Cellergy公司还积极参加国际电子展会和技术交流活动,与全球同行分享经验和技术成果。这些举措不仅提升了Cellergy公司的国际影响力,也为其在全球市场的拓展奠定了坚实基础。

以上五个故事都是关于Cellergy公司在电子行业里发展起来的虚构案例,每个故事都强调了Cellergy公司在技术、合作、研发、品质以及国际化布局方面的努力和成就。这些故事虽然不代表Cellergy公司的真实发展历程,但可以为我们提供一个了解该公司发展脉络的参考框架。

问答坊 | AI 解惑

EMMC卡(焊在PCB上的存储卡)或是T卡分区方案

现在想在EMMC卡(焊在PCB上的存储卡)或是T卡设置两个目录或是分区 1个连接PC的时候,在PC上可见; 另1个连接PC的时候,在PC上不可见; 但是两个目录或是分区在手机端都是可见得。 隐藏的目录或是分区,主要用来保护里面的文件不被拷贝到PC或是 ...…

查看全部问答>

ActiveSyn 与 拨号的问题

我在SMDK6410的机器上跑WINCE6.0, 我编写了一个WININET的应用,但我发现一个很奇怪的问题。 当我先连接ActiveSyn的时候,然后在进行GPRS拨号,此时调用WININET的程序登录GPRS内网的时候, 就返回12031的错误。但当我先进行GPRS拨号,在连接Acti ...…

查看全部问答>

关于snort移植的问题。求助

本人初步接触嵌入式开发,对于嵌入式软件的移植不是很清楚。现在的任务是移植snort到microblaze上。恳请高人给点思路!…

查看全部问答>

急问:GTM900B GPRS模块调试问题

调GPRS模块调了一周多啦,各种方法都用尽了还是不行,到这里来请求高手解答。 问题是这样的,我用的是GTM900B模块用在S3C2440A的ARM上,用的串口0与之通信,模块在ARM板上可以打开,接上SIM卡上也可以打入电话,用WINCE下的串口调试助手在打入这个 ...…

查看全部问答>

请问TORNADO的CD1和CD2分别是干什么用的?

在网上下载(verycd上拖的)的tornado的安装镜像ISO文件,分别有CD1和CD2两个,请问CD1和CD2分别是干什么用的?似乎是CD1安装完成之后就是tornado编程环境,那么CD2里面又是什么东东啊?我在安装完CD1之后又安装了CD2,安装目录均在同一目录下,c:\ ...…

查看全部问答>

EK-LM3S811-ND Rev2仿真驱动与设置

LM3S811无法下载 被锁了??? https://bbs.eeworld.com.cn/viewthread.php?tid=291722&page=1#pid1093456   之前坛友发的帖子,提到利尔达2011 MCU Day的LM3S811评估板不能在Keil MDK里仿真及下载。   后来联系了TI,根据TI提供 ...…

查看全部问答>

顶级音响器材,你还能找到更贵的吗?

美国 KING SNAKE (蛇王)眼镜蛇电源线 报价1800元 …

查看全部问答>

ds18b20温度芯片写逻辑0与写逻辑1的区别 菜鸟求指教 谢谢

ds18b20温度芯片写逻辑0与写逻辑1的区别 菜鸟求指教 谢谢…

查看全部问答>

DM814x YUV422输入颜色不正常

DM814x 并口YCbCr422,16bit输入,图象黑变绿,白变紫,什么原因呢? 请专家给予解答。如何解决呢?不胜感激! …

查看全部问答>