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

控制第一个 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. Bluetooth HCI介绍

    目录 1. HCI功能 2. HCI Packet 1. HCI Command 2. HCI Event 3. HCI Data 3. HCI传输层 HCI, 主机控制接口(Host Control ...

  2. CC2540 USB Dongle 使用说明

    CC2540做的USB Dongle可以烧写不同的固件从而做很多PC端的应用,下面我们来介绍下下载固件的方法和一些典型应用: 下载接口: 3V3引脚连接到CC Debugger的Target Volt ...

  3. linqPad帮助你快速学习LINQ

    linqPad http://www.cnblogs.com/li-peng/p/3441729.html http://www.linqpad.net/ Linqer http://www.sqlt ...

  4. Window上装PHP开发环境 (XAMPP)

    原作者:http://www.cnblogs.com/martin1009/archive/2011/11/11/2245794.html 1. 从www.apachefriends.org 上下载X ...

  5. 查看sqlserver版本及其补丁

    select @@version select serverproperty('productlevel')

  6. JavaScript:通过id来进行元素的取得

    每一个HTML元素都使用id来进行一个标注,随后可以通过document.getElementById(“ID名称”)取得指定的ID元素对象,取得元素对象之后就可以对其进行操作. 但是document ...

  7. ELK-Python(三)

    不具有通用性,留作纪念. [root@GXB-CTRLCENTER python]# cat insert_uv.py #!/usr/bin/env python # -*- coding:utf-8 ...

  8. 使用nmcli创建网络连接

    使用nmcli创建一个新的网络连接时,首先需要清楚几个概念 设备即接口 连接是供设备使用的配置,其由一组设置组成. 同一个设备可能存在多个连接,但是一次只能有一个保持活动状态 在创建新的连接时,参数的 ...

  9. 采用EaglePHP框架解决分布式集群服务器利用MEMCACHE方式共享SESSION数据的问题

    一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网 站,用户系统是统一的,即一套用户名.密码在整个网站的各个模块中都是可以登录 ...

  10. Ubuntu下如何将普通用户提升到root权限

    在ubuntu的系统操作中,我们经常会使用到系统权限的,因为权限不足,导致在一些操作当中非常麻烦.要获取权限,最长使用的方法就是使用sudo指令,但是来回使用还是比较麻烦,有没有直接提升我们的用户权限 ...