zoukankan      html  css  js  c++  java
  • 一个经典的控制Led的单片机程序

    这本来是我在大三时期做的一个题目,属于课外习题。题目是这样的,在单片机课程中,有一个实验是控制数码管显示一个时钟。程序逻辑非常简单,可以用如下的伪码表示。
    while(true)
    {
        累加ms时间并进位;
        if(ScanKeys(&code))
            ProcessKey(code);         //处理按键
         Display() ;                            //刷新数码管显示
    }

    上面的逻辑是凭借记忆,并且实际上是使用8051汇编语言编写,控制6个Led7段式数码管。把显示码输出到某个port或者某个外设去控制数码管显示。其中时分秒存储在存储单元。按特定键可以调节时钟的时分秒的数值。

    这部分的代码在书上已经有了。老师的课外题目是这样的,他说可以尝试去做调节时间时,相应数据位闪烁。以及屏保能功能。最终我是我们专业唯一做出这个程序的(当然也是因为很少有人尝试去做该题),我做的动态屏保效果(灵感来自霓虹灯的闪烁)还出乎了老师的预料。记得当时我很快就画出了详细流程图,在此基础上很快写出了主要函数代码。然后由于两周才能有上机机会,经过漫长焦急而激动的等待。直到我在电脑上输入完所有写好的代码,简单调试后成功运行并看到预期的最终效果。

    我在草稿纸上绘制了整洁清晰的流程图,并引入了一个状态变量放在内部寄存器,通过这个变量,我记录当前程序所处的状态,是闪烁,屏保,还是正常显示。然后根据相应状态以及特定的时间,在Display函数中输出不同的显示控制码。

    多年以后,我查看自己做过的Led控件,忽然萌生把那个单片机程序重新实现在winform的想法,以为难度不大,但是由于状态较烦琐,还是花了一点时间去调试。

    效果截图:


    源码下载地址:(vs2005)
    https://files.cnblogs.com/hoodlum1980/LedTest_02(vs8).rar




  • 相关阅读:
    JavaWeb03-4.0.0版本的pom.xml
    Git学习(上)
    JavaWeb02-如何创建一个基础的Maven项目
    JavaWeb01-maven环境搭建
    HTML5学习
    RSA和AES加密解密过程
    mysql安装失败,最后一步无响应
    powerDesign16通过PLSql中导出的建表语句,建立E-R图
    PLSQL developer+instantclient_11_2实现远程连接Oracle数据库
    分享黄维仁博士关于亲密关系的佳言
  • 原文地址:https://www.cnblogs.com/hoodlum1980/p/897550.html
Copyright © 2011-2022 走看看