历史上的今天
返回首页

历史上的今天

今天是:2025年03月05日(星期三)

正在发生

2018年03月05日 | 一个按键控制十级变速跑马灯的试验

2018-03-05 来源:eefocus

在本课中,我们要用一个按键来实现跑马灯的10级调速。这又会涉及到键的去抖的问题。

    本课的试验结果是,每按一次按键,跑马速度就降低一级,共10级。

    这里我们又增加了一个变量speedlever,来保存当前的速度档次。

 

    在按键里的处理中,多了当前档次的延时值的设置。

    请看程序:

    ――――――――――――――――

    #define uchar unsigned char //定义一下方便使用

    #define uint unsigned int

    #define ulong unsigned long

    #include //包括一个52标准内核的头文件

    sbit P10 = P1^0; //头文件中没有定义的IO就要自己来定义了

    sbit P11 = P1^1;

    sbit P12 = P1^2;

    sbit P13 = P1^3;

    sbit K1= P3^2;

    bit ldelay=0; //长定时溢出标记,预置是0

    uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度

    uchar speedlever=0; //保存当前的速度档次

    char code dx516[3] _at_ 0x003b;//这是为了仿真设置的

    //一个按键控制的10级变速跑马灯试验

    void main(void) // 主程序

    {

    uchar code LEDp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入P1的值

    uchar ledi; //用来指示显示顺序

    uint n;

    RCAP2H =0x10; //赋T2的预置值0x1000,溢出30次就是1秒钟

    RCAP2L =0x00;

    TR2=1; //启动定时器

    ET2=1; //打开定时器2中断

    EA=1; //打开总中断

    while(1) //主程序循环

    {

    if(ldelay) //发现有时间溢出标记,进入处理

    {

    ldelay=0; //清除标记

    P1=ledp[ledi]; //读出一个值送到P1口

    ledi++; //指向下一个

    if(ledi==4)

    {

    ledi=0; //到了最后一个灯就换到第一个

    }

    }

    if(!K1) //如果读到K1为0

    {

    for(n=0;n<1000;n++); //等待按键稳定

    while(!K1); //等待按键松开

    for(n=0;n<1000;n++); //等待按键稳定松开

    speedlever++;

    if(speedlever==10)speedlever=0;

    speed=speedlever*3; //档次和延时之间的预算法则,也可以用查表方法,做出不规则的法则

    }

    }

    }

    //定时器2中断

    timer2() interrupt 5

    {

    statIC uchar t;

    TF2=0;

    t++;

    if((t==speed)||(t>30)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速度为1秒

    {

    t=0;

    ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理

    }

    }

    ――――――――――――――――――――――


推荐阅读

史海拾趣

Elite公司的发展小趣事

Elite公司成立于20世纪90年代末,由一群热衷于电子技术的年轻人创立。在初创阶段,Elite面临着资金短缺、市场竞争激烈的挑战。然而,公司凭借其独特的创新理念和过硬的技术实力,成功研发出一款具有高性价比的智能手机,迅速在市场上获得认可。这款产品不仅帮助Elite实现了初步盈利,更为公司后续发展奠定了坚实基础。

Chino-Excel公司的发展小趣事

Chino-Excel公司深知人才是企业发展的核心竞争力。因此,公司注重人才培养和团队建设,为员工提供广阔的成长空间和良好的职业发展平台。公司建立了完善的人才培养和激励机制,吸引和留住了一批批优秀的技术人才和管理人才。这些人才为公司的发展注入了源源不断的动力,推动了公司的持续创新和进步。

这些故事虽然是虚构的,但它们反映了电子行业中许多公司可能经历的一些共同挑战和机遇。这些故事强调了技术创新、全球化战略、品牌建设、环保理念以及人才培养在电子行业公司发展中的重要性。请注意,这些故事仅为示例,并不代表任何实际公司的具体情况。

First Sensor公司的发展小趣事

在发展过程中,Chino-Excel公司注重品牌建设和市场推广。公司投入大量资金进行品牌宣传和推广活动,提升品牌知名度和美誉度。同时,公司积极参加国际电子展会和行业交流活动,与国内外客户建立广泛的联系和合作,为公司的快速发展奠定了坚实基础。

Harris公司的发展小趣事

在过去的四十年中,Hammond将业务重心扩展到了美国和国际市场。通过在全球各地设立办事处和建立分销网络,Hammond成功地将其产品和服务推广到了世界各地。这一战略转型不仅极大地提升了Hammond的品牌影响力,还为其带来了更加广阔的市场空间和增长潜力。

GSN Electronics公司的发展小趣事

二战后,随着全球经济的复苏和电气产品的爆炸性需求,Hammond迎来了前所未有的发展机遇。在1950年代和1960年代,Hammond积极扩展产品线,成为变压器、机架、机柜以及电气和电子行业外壳的领先供应商。同时,公司还进行了多次战略性收购,进一步巩固了其在北美电气OEM市场的地位,成为磁性材料的主要供应商之一。

铨力(ALLPOWER)公司的发展小趣事

在国内市场取得一定成绩后,铨力公司开始将目光转向国际市场。通过参加国际展览、与海外客户建立合作关系等方式,公司逐渐打开了海外市场的大门。同时,铨力还积极寻求与国际知名企业的合作机会,通过技术交流和资源整合,不断提升自身的技术水平和市场竞争力。

问答坊 | AI 解惑

杰赛有线机顶盒产品选择恩智浦入门级方案

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 恩智浦半导体(NXP Semiconductors,由飞利浦创建的独立半导体公司)宣布,杰赛科技已选择恩智浦的入门级STB100 Nexperia系统解决方案,用于其有线机顶盒产品。随着中国已准备好向数字电视转换 ...…

查看全部问答>

是不是只有“原创”可以单独显示在前面,其它的分类呢?

是不是只有“原创”可以单独显示在前面,其它的分类好像不能显示吧 刚才试了下,觉得这样不太好看吧,其它的主题前面空白了这么多,感觉不和谐 其它版块好像是“资料下载”和“问题讨论”,那像竞赛板块的分类既然这么多,那能不能都将分类 ...…

查看全部问答>

wince 应用程序响应S2440板上的按键消息

我想做个应用程序:按下S3C2440板子上的按键后,点亮应用程序中的一个灯?该怎么做呢?谢谢…

查看全部问答>

关于PS2驱动开发的问题

现在在做个项目,需要开发个在WINCE下驱动PS2键盘的程序,现在急需要这方面的例子,不知道各位大大有没有这方面的开发经验,如果有的话请不吝赐教,可以在此回复,也可以给我写邮件:killerlu@sina.com 我QQ:552012884(请在消息框中注明来自eeworld,谢谢)…

查看全部问答>

在axd调试中为什么不能用printf()函数?

如果不用到printf()函数的话程序可以正常运行,加了这个函数后就死掉,内存里的值也不对了。要怎么设置吗?我在网上查了一下,要设置这两个地方, 1.OPTIONS -> CONFIGURE TARGET -> ARMULATE; 2.OPTIONS -> CONFIGRUE PROCESSOR -> SEMIHOSTIN ...…

查看全部问答>

走嵌入式开发能实现机器人开发梦想?

偶是个机器人迷,从小就这样,我现在比较佩服的是日本的asimo, 相信很多人听说过,不过在中国机器人这块不是很成熟,但嵌入式 发展的挺快,而且机器人开发也属于嵌入式的一部分,走嵌入式道路能实现机器人梦想吗?请各位给点建议,谢谢…

查看全部问答>

请问有没有破解版的ST单片机和ARM的开发环境???

                                    如题!!!…

查看全部问答>

带有仿真器的学习开发套件EK-STM32F正式开始销售啦!

带有仿真器的学习开发套件EK-STM32F正式开始销售啦!为配合ST STM32F Cortex-M3的市场推广,万利电子自2007年11月30日至2007年12月31日,特价不限量销售带有仿真器的学习开发套件EK-STM32F,含税价格199元/套。EK-STM系列仿真学习套 ...…

查看全部问答>

编写一个小的驱动,刚入门,求建议

要编一个驱动进行信号源的脉冲计数,打算采用检测上升沿,进行中断计数,不知有没有什么更好的思路,希望高人赐教…

查看全部问答>