目录

  • 一、任务要求
  • 二、实现方法
  • 三、参考代码

一、任务要求

在CT107D单片机上,
1.系统上电初始化后,关闭蜂鸣器和继电器等无关设备,并向上位机发送字符串:“Welcome to Born_toward system!”,回车换行;
2.上位机通过串口发送单字节命令可以控制下位机的8个LED灯开关;
3.上位机通过串口发送单字节命令可以读取下位机运行信息。

二、实现方法

对于串口通信,在之前已经讲过了,在此不作特别说明。控制灯光可以用单字节命令来控制,则需要建立一个能够识别command并且让LED灯做出相应反应的函数——Working(),看代码块可以更加容易理解。

三、参考代码

#include "reg52.h"sfr AUXR = 0x8e;void Select_HC573(unsigned char channel)
{switch(channel){case 4:P2 = (P2 & 0x1f) | 0x80;break;case 5:P2 = (P2 & 0x1f) | 0xa0;break;case 6:P2 = (P2 & 0x1f) | 0xc0;break;case 7:P2 = (P2 & 0x1f) | 0xe0;break;case 0:P2 = (P2 & 0x1f) | 0x00;break; }
}void Initial_System()
{Select_HC573(5);P0 = 0x00;Select_HC573(4);P0 = 0xff;
}void Initial_UART()
{TMOD = 0x20;TH1 = 0xfd;TL1 = 0xfd;TR1 = 1;SCON = 0x50;AUXR = 0x00;ES = 1;EA = 1;
}unsigned char command = 0x00;
void Service_UART() interrupt 4
{if(RI == 1){command = SBUF;RI = 0;}
}void Send_Byte(unsigned char dat)
{SBUF = dat;while(TI == 0);TI = 0;
}void Send_String(unsigned char *str)
{while(*str != '\0'){Send_Byte(*str++);}
}void Working()
{if(command != 0x00){switch(command & 0xf0){case 0xa0:P0 = (P0 | 0x0f) & (~command | 0xf0); //保留P0高四位,改变低四位,command保留低四位。command = 0x00;break;case 0xb0:P0 = (P0 | 0x0f) & ((~command << 4)| 0x0f); //同上,只不过是左移四位,即保留P0高四位,改变低四位,command保留高四位。command = 0x00;break;case 0xc0:Send_String("The System is running!\r\n");command = 0x00;break;}}
}void main()
{Initial_System();Initial_UART();Send_String("Welcome to China!\r\n");while(1){Working();}
}

学习来源于:https://www.bilibili.com/video/BV1Bt41187hw?p=3

学习笔记——利用串口通信控制LED指示灯开关相关推荐

  1. 51单片机学习笔记(串口通信 LED点阵屏 DS1302)

    四.串口通信 1.基本概念 通信中最重要的两个方面: 信息表示和解析方法: 信息的传输方法. 通信双方事先需要约定好信息的表示方法和解析方法,做到一致,否则信息不能有效传递. 信号的传输方法是指经过编 ...

  2. KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记3——串口Stdio实现

    KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记3--串口Stdio实现 一.介绍 任务目标 二.工程创建 三.软件设计 第一步,BSP构建 1, 添加前面的pll_config文件 2 ...

  3. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  4. 嵌入式学习笔记——寄存器实现控制LED小灯

    文章目录 前言 GPIO通用输出模式 初始化LED小灯的GPIO 原理图 初始化代码 初始化的效果 功能函数封装 直接分开宏定义两个 使用条件运算符 封装函数实现简单的功能 KEIL MDK一些技巧 ...

  5. stm32学习笔记----双串口同时打开时的printf()问题

    stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...

  6. Qt5学习笔记之串口助手四:增加16进制/ASCII切换、周期发送

    目录 1. 概述 2. 16进制/ASCII发送 2.1 功能实现 2.2 界面修改 3. 接收框显示发送内容 3.1 以16进制/ASCII显示 3.1.1 界面修改 3.1.2 功能实现 3.2 ...

  7. sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

    sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之 ...

  8. 【STM32F10x串口通信控制LED输出模式以及亮灭】

    STM32F10x串口通信控制LED不同模式以及亮灭 非常简单!具体功能如下: 默认状态:key0->绿灯翻转 key1->红灯翻转 串口输入1:key0->红灯翻转 key1-&g ...

  9. FPGA学习笔记_UART串口协议_串口接收端设计

    FPGA学习笔记 1. UART串口协议以及串口接收端设计 1 原理图 2 Verilog 代码 3 Modelsim仿真 4. FPGA板级验证 1.1 串口协议接收端设计 目标:FPGA接收其他设 ...

  10. 51单片机学习笔记-6串口通信

    6 串口通信 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库 ...

最新文章

  1. 客户流失预警模型-GBDT模型
  2. 在python中使用sort_Python中的sort()方法使用基础教程
  3. 浅谈android hook技术
  4. linux 批量下载图片,Python + Excel 实现图片批量下载
  5. Meta http-equiv 大全
  6. 康力电梯开门不关门 服务器显示开门键动作,康力电梯现场调试后常见问题及排除...
  7. vdcode C语言不能弹出运行窗口_C语言编程常见问题分析,以及错误解决办法!
  8. 抓取 虾米_Apple Music 新玩法——Workflow获取虾米评论以及导入虾米精选集
  9. 面试官:有了 for 循环,为什么还要 forEach ??
  10. Django中ORM对数据库的增删改查操作
  11. 应用java编写 按键小脚本_一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码) | 学步园...
  12. LabWindows/CVI与Matlab混合编程的一种实现方法
  13. 数学常用符号、表达式的英文读法小结
  14. CentOS离线 + 在线安装telnet(rpm包安装)
  15. 最新推出SAP ECC EHP7最新版本IDES带演示数据,带开发ACCESS KEY。
  16. 2022跨年烟花代码
  17. 移动端前端的适配和rem,vm其他的一些的复习
  18. (20200921Solved)UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xca in position 0: invalid cont
  19. Gram矩阵及其实际含义
  20. Web网页如何实现QQ好友,QQ空间,微博分享

热门文章

  1. 聊聊两个状态管理库 Redux Recoil
  2. 在win7下面安装ubuntu 16.04.4双系统
  3. Jquery Validate 设置不显示验证信息
  4. c语言中常用英语词汇,C语言常见英语词汇
  5. 物理内存管理-ucore操作系统的PADDR宏
  6. easyUI入门教程
  7. 如何从Mixamo下载人物模型的动画
  8. 青岛科技大学和青岛大学计算机专业,青岛科技大学和青岛大学哪个好呢?优势的专业分别是什么?...
  9. codewars体验
  10. Phalcon框架的入门使用,Phalcon框架学习,编写简单的视图输出及数据库写入!