一个经典的控制Led的单片机程序

简介: 这本来是我在大三时期做的一个题目,属于课外习题。题目是这样的,在单片机课程中,有一个实验是控制数码管显示一个时钟。程序逻辑非常简单,可以用如下的伪码表示。 while(true) {     累加ms时间并进位;     if(ScanKeys(&code))         ProcessKey(code);         //处理按键      Display() ;                            //刷新数码管显示 } 上面的逻辑是凭借记忆,并且实际上是使用8051汇编语言编写,控制6个Led7段式数码管。

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

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

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

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

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

效果截图:


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




目录
相关文章
|
7月前
4-2 51单片机点亮LED
4-2 51单片机点亮LED
67 2
|
4月前
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
133 3
|
4月前
|
人工智能 开发者 芯片
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
使用AI大语言模型编写 单片机程序. 使用的是 OpenAI公司发布的 ChatGPT .在ChatGPT上有别人训练好的 单片机工程师 with Keil uVision 5 - C Code Explainer模型, 可以上传电路图改模型可以通过这个用户所给的电路图进行编程.
361 0
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
|
6月前
技术心得记录:单片机开发过程中使用结构体简化程序
技术心得记录:单片机开发过程中使用结构体简化程序
36 0
|
7月前
基于51单片机的简单交通灯程序
基于51单片机的简单交通灯程序
86 2
【51单片机】Kn独立按键控制【LED亮灭】【LED状态】【LED二进制式显示】【LED不断移位】(4)
【51单片机】Kn独立按键控制【LED亮灭】【LED状态】【LED二进制式显示】【LED不断移位】(4)
|
7月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【单片机】延迟程序&延迟子程序的设计(入门)
【单片机】延迟程序&延迟子程序的设计(入门)
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
|
7月前
|
C语言
独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”
独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”