由图知道 低电平 亮,高电平 灭

控制第一个 LED1 亮灭程序代码,如下

#include<reg52.h>
#define uchar8 unsigned char
#define uint16 unsigned int
sbit LED1=P1^;
/*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/********* *******************/
void DelayMS(uint16 val)
{
uint16 i,j;
for(i=;i<val;i++)
for(j=;j<;j++); } void main()
{ while()
{
LED1=;
DelayMS();
LED1=;
DelayMS(); } }

__________________________________________________________________________________________________________________________

流水灯程序代码:

#include<reg52.h>
#include<intrins.h>
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1
/*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/********* *******************/
void DelayMS(uint16 val)
{
uint16 i,j;
for( i=;i<val;i++)
for(j=;j<;j++); } void main()
{ int i; while()
{
LED=0xff ; // 这里端口全被设置为 1111 1111 ,相当于 全灭 for(i=;i<;i++)
{ LED=LED<<; // 选择了左移循环
DelayMS(); } } }

1、2亮

1、2、3亮

1、2、3、4亮

。。。。。。

1、2、3。。。。。8 全部亮

________________________________________________________________________________________________________________

跑马灯程序代码:

#include<reg52.h>
#include<intrins.h>
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1
/*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/********* *******************/
void DelayMS(uint16 val)
{
uint16 i,j;
for( i=;i<val;i++)
for(j=;j<;j++); } void main()
{ LED =0xfe; while()
{
LED=_crol_(LED,);
DelayMS(); } }

只有一个LED灯 亮。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

程序目标: 实现LED跑马灯 先从左向右移动,后从右向左移动,循环往复

方案一: 数组的字节操作

#include<reg52.h>
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1
uchar8 code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe} ;  /*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/************************* *******************/
void DelayMs(uint16 val)
{
uint16 i,j;
for( i=;i<val;i++)
for(j=;j<;j++); } void main()
{ int i; while()
{ for(i=;i<;i++)
{ LED=tab[i];
DelayMs(); } } }

方案二: 移位运算符的实现

#include<reg52.h>
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1 /*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/************************* *******************/
void DelayMs(uint16 val)
{
uint16 i,j;
for( i=;i<val;i++)
for(j=;j<;j++); } void main()
{ int i;
uchar8 temp; while()
{ temp=0x01; // 0000 0001
for(i=;i<;i++)
{
LED= ~temp;
DelayMs();
temp=temp<<; } temp=0x80; // 1000 0000
for(i=;i<;i++)
{
LED= ~temp;
DelayMs();
temp=temp>>; } } }

方案三:运用循环左右移函数来实现

#include<reg52.h>
#include<intrins.h>
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1 /*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/************************* *******************/
void DelayMs(uint16 val)
{
uint16 i,j;
for( i=;i<val;i++)
for(j=;j<;j++); } void main()
{ int i;
uchar8 temp; while()
{ temp=0xfe; // 1111 1110
for(i=;i<;i++) // 注意这里i<7 ,不再是 i<8
{
LED= temp;
DelayMs();
temp=_crol_(temp,); // 执行左移函数,将 temp 中的函数循环左移一位 } for(i=;i<;i++)
{
LED= temp;
DelayMs();
temp=_cror_(temp,); // 右移函数 } } }

(二)重拾单片机 第一天 LED灯的更多相关文章

  1. 重拾c++第一天(1):环境配置

    时过多年,c++基本不记得了,故在此记录相关重拾记录. 学习语言第一步当然是环境配置了(笑),由于暂无用c++进行大型项目开发的需求,所以先下载dev进行过渡. 安装过程非常简单,值得注意的是配置时选 ...

  2. 重拾C++第一天_WDS

    1.面向对象编程的三大特点:封装.继承.多态 2.C++中若不指定类中成员的访问权限默认就是private的(class默认是private的,struct默认是public的). 3.C++规范中类 ...

  3. 重拾MVC——第一天:数据库连接与SqlDbHelper

    这个 SqlDbHelper 是我参考网上的和以前用过的 SqlDbHelper 自己写的一个非常简单的东西,主要是记录自己的学习情况 首先在Web.config中配置数据库连接字符串: <co ...

  4. 重拾c++第一天(3):数据处理

    1.short至少16位:int至少与short一样长:long至少32位,且至少与int一样长:long long至少64位,且至少与long一样长 2.sizeof 变量  返回变量长度  或者s ...

  5. 重拾c++第一天(2):基本语法

    1.输出方法: cout<<"输出语句" 2.输出时换行为 cout<<endl or "\n" 3.连续赋值是合法的,从右往左依次赋值 ...

  6. 【蓝桥杯单片机02】LED的基本控制

    [蓝桥杯单片机02]LED的基本控制 广东职业技术学院  欧浩源 在CT107D单片机综合训练平台实现LED的基本控制和其他单片机开发平台不一样,不单单是控制几个LED实现跑马灯这么简单.因为在这个平 ...

  7. 单片机学习(二)开发板LED灯的控制

    目录 开发板上LED灯相关的电路图 点灯 LED闪烁 LED流水灯 其他效果 灯光二进制计数器 进阶版流水灯 开发板上LED灯相关的电路图 这是P2相关7个引脚的电路图,在默认情况下它是直接接着VCC ...

  8. 《STM32CubeMX配置STM32H743XI工程》第一讲《初始化UART,重定义printf函数,点亮一个LED灯》

    1.打开STM32CubeMX软件->新建一个工程(软件自行到ST官网下载安装) 2.输入对应的芯片型号(本次基于野火STM32H743XI Pro 开发板)点击Start Project生成项 ...

  9. 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯

    1      前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...

随机推荐

  1. 利用sqlserver日志恢复数据

    如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解. 我遇 到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web ...

  2. 转NodeJS的npm模块版本号 模式解析

    npm 中的模块版本都需要遵循 semver 2.0 的语义化版本规则. 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的API 修改, 次版本号:当你做了向下兼 ...

  3. angularJS自定义指令模板替换

    <html> <head> <meta charset="utf-8"/> <title></title> </h ...

  4. Android OpenGL ES 开发教程 从入门到精通

    感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...

  5. [LeetCode]题解(python):040-Combination Sum II

    题目来源 https://leetcode.com/problems/combination-sum-ii/ Given a collection of candidate numbers (C) a ...

  6. Mac版 MicrosoftOffice2015 办公软件 破解教程

    来自:http://bbs.feng.com/read-htm-tid-9704285.html 下载链接:http://pan.baidu.com/s/1dD6lBFz  提取密码:xu5n 补丁: ...

  7. Apple Developer Program Roles Overview

    Apple Developer Program Roles Overview There are three roles that can be assigned to Apple Developer ...

  8. iOS: 实现微信支付

    一.介绍: 现在的消费越来越方便,直接带个手机用各种三方的支付平台进行支付就行,例如微信.支付宝.现在正好我所做的项目中用到了微信支付,今天就来整理一下. 二.准备: 1.去微信官方开发者平台注册开发 ...

  9. 建字段_添加数据_生成json.php

    <?php header("Content-Type:text/html;charset=utf8"); class db{ static $localhost = &quo ...

  10. 用仿ActionScript的语法来编写html5——第八篇,图片处理+粒子效果

    用仿ActionScript的语法来编写html5系列开发到现在,应该可以做出一些东西了,下面先来研究下图片的各种效果预览各种效果看下图效果和代码看这里,看不到效果的请下载支持html5的浏览器 ht ...