提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 引言
  • 一、LED架构模型的输入处理
    • 1.1 输入模型的理论
    • 1.2 输入模型的实例
  • 二、LED架构模型的过程处理
    • 2.1 过程处理模型
    • 2.2 过程处理实例
  • 三、 LED架构模型的输出处理
    • 3.1 输出模型的理论
    • 3.2 输出模型的实例
  • 四、LED架构模型总结

引言

单片机LED架构的编程方法和研究:目前在单片机的编程过程中,对于一些特殊情况的事件需要用对应的LED显示出来。比如大街上的红绿灯指挥着人们的交通出行、所以对于一个好的项目代码,模块化思想是必不可少。本次讨论的就是LED架构的模块化,让用户编写代码的时候提供理论基础。

一、LED架构模型的输入处理

1.1 输入模型的理论

LED的作用一般都是指示作用,当某一个事件来的时候出现对应的状态,这里在单片机的编程思想中涉及到了2个概念,事件触发型和状态机。这里不详细介绍这2种编程思想的概念。这里我简单的把它事件个状态封装在一个结构体里面,然后有N个事件,就定义N个结构体数组。

1.2 输入模型的实例

typedef void (*Doled_t)();
typedef struct
{
uint8_t event;
Doled_t ledshow;
} LED_Table_t;
enum event
{
RED_LED = 0,
GREEN_LED = 1,
BLUE_LED = 2,
MAX_LED_EVENT
}event;
LED_Table_t s_LED_Table[MAX_LED_EVENT];
uint8_t s_Event = 0xff;
uint8_t LED_SetStatus(enum event index, uint8_t status)
{
uint8_t ret = 0;
if(index<MAX_LED_EVENT)
{
if(s_LED_Table[index].event != status)
{
s_LED_Table[index].event = status;
ret = 1;
}
else
{
ret = 0;
}

}
else
{
ret =2;
}
return ret;
}

二、LED架构模型的过程处理

2.1 过程处理模型

在第1.1中我们已经实现了触发事件的函数,当别的模块调用该函数的时候,在LED主任务中会不断的查询事件表,当事件表置位的时候,就去执行事件所对应的函数。

2.2 过程处理实例

void LED_MainFunction()
{

uint8_t index = 0;
for(index= 0;index < MAX_LED_EVENT;index++)
{
if( s_LED_Table[index].event = 1)
{
s_LED_Table[index].ledshow();
s_Event = index;
break;
}

}

if(index == MAX_LED_EVENT)
{s_Event = 0xff;
}

}

三、 LED架构模型的输出处理

3.1 输出模型的理论

当外部模块需要知道当前LED在执行哪个事件的时候,我们需要提供出正在执行的事件。

3.2 输出模型的实例

uint8_t LED_GetEvent()
{
return s_Event;
}

四、LED架构模型总结

上面已经构建了LED架构模型,只是提供一种编程方法,大家遇到LED显示的问题完全可以按照上面的方法来编程。结构体的成员可以用来拓展,比如LED的显示等级,LED的状态等。里面的指示函数具体的实现按照具体情况,这里只提供一种方法,这种架构模型还适用于语言模块,比如蜂鸣器。还有数码管模块等。

单片机编程实战1-LED架构篇相关推荐

  1. Java多线程编程实战指南+设计模式篇pdf

    下载地址:网盘下载 随着CPU 多核时代的到来,多线程编程在充分利用计算资源.提高软件服务质量方面扮演了越来越重要的角色.而 解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案.然 ...

  2. 我是怎么提高单片机编程能力的?

    我对编程的兴趣源于黑客- 没想到最后竟然走了单片机开发的路线,或许是现实不允许我有梦想. 黑客的成长过于漫长,而我当务之急是找份工作糊口. 我并不是计算机专业,临近毕业对编程也一窍不通. 第一次自学的 ...

  3. 单片机stm32LED流水灯C语言,STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二)...

    STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二) 2019-04-26 13:21:48 19点赞 73收藏 19评论 写在前面的话:本篇是承接上一篇文章,属于小白向. 没看过的朋友点 ...

  4. 嵌入式单片机编程入门心得——思维篇

    写在最前面:纯属个人见解,如果您不同意,那您对!如果对你有帮助,恭喜你. 程序是什么?程序就是你的想法的体现,就是思维.怎么写程序,就是你想怎么完成某件事情. 程序就是思维,所以和人的想法息息相关,接 ...

  5. java多线程编程_Java多线程编程实战指南+设计模式篇.pdf

    Java多线程编程实战指南+设计模式篇.pdf 对Java架构技术感兴趣的工程师朋友们可以关注我,转发此文后私信我"Java"获取更多Java编程PDF资料(附送视频精讲) 关注我 ...

  6. Linux shell 脚本编程-实战篇(二)

    继: Linux shell 脚本编程-实战篇(一) 2. 创建与数据库.Web及电子邮件相关的脚本 2.1 MySQL 数据库 2.1.1 MySQL 数据库安装 到 http://repo.mys ...

  7. 视频教程-反勒索编程实战篇-病毒木马

    反勒索编程实战篇 05年在安天从事病毒分析,06年设计反木马引擎,07年进入毒霸参与主动防御的安全策略制订及相应驱动代码编写.09年在福州网龙负责反木马反外挂.15年在卫士通负责终端安全应急相应,恶意 ...

  8. [原创].NET 分布式架构开发实战五 Framework改进篇

    原文:[原创].NET 分布式架构开发实战五 Framework改进篇 .NET 分布式架构开发实战五 Framework改进篇 前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变.之前的文章 ...

  9. Java-GUI编程实战之管理系统 Day1【项目开发流程、软件三层架构、项目需求、项目结构分析】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

最新文章

  1. 在Python中查找和替换文本,玩转Python正则
  2. libxml2_ZC积累
  3. python 设计 实践_Python程序设计实践教程
  4. python教学视频p_python接口自动化28requestshtml爬虫框架
  5. 在Teams Hackathon上介绍LuckyDraw
  6. 阿里云服务器 window server tomcat启动 并且关闭window防火墙 配置8080端口开放还是没用
  7. python 变量类型list_Python基础变量类型——List浅析-阿里云开发者社区
  8. LeetCode 10 Regular Expression Matching(字符串匹配)
  9. live2d_一款电脑桌面跨平台开源免费live2D桌面宠物精灵
  10. c语言程序设计武汉大学PDF,武汉大学C语言程序设计第5讲(2012级).ppt
  11. 深信服短信认证云信通短信配置说明
  12. 易语言制作的QQ聊天中常用的GIF图片【带源码下载】
  13. 开机出现 A disk read error occurred Press 时怎么办
  14. Word里如何打出带有上下横杠的大写字母i
  15. 目标网站https://music.163.com/discover/toplist
  16. 微信消息收发与微信内部emoji表情转义
  17. 大数据应用型产品设计方法及行业案例介绍(附110页PPT)
  18. 思维训练每日一题——过桥问题
  19. 汇编实验:屏幕窗口程序
  20. 解决MPx 无法在windows下运行

热门文章

  1. PTA L1-005 考试座位号(详解)
  2. 我本微末凡尘,却也心向天空_慕课手记
  3. 优惠券发券状态一致性问题
  4. ES6-ES11学习笔记
  5. Spring 循环依赖(5.2.x)
  6. 说说百度与google的搜索结果
  7. 视频监控软件开发的需求管理
  8. 开源的电子书阅读器项目
  9. 酷狗音乐获取hush值方法
  10. java版gbc模拟器怎么用_GBC模拟器GNUBOY的使用方法