【单片机】滑稽AT89C52表情实现

零、原因

在群里看到了这样一个表情:



这是用51做的,刚好开发板上有8个小灯,想实现一下。

一、代码

新建工程,写入如下代码:

#include<reg52.h>

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4; void delay400ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=19;c>0;c--)
for(b=20;b>0;b--)
for(a=130;a>0;a--);
} void main()
{
unsigned char cnt = 0,n,i;
ADDR0 = 0;
ADDR1 = 1;
ADDR2 = 1;
ADDR3 = 1;
ENLED = 0; while(1)
{
switch(cnt)
{
case 0:
{/*第一部分,灯从左至右依次点亮*/
n = 0xFF;
while(1)
{
P0 = n; delay400ms(); if(n == 0x00)break; n = n>>1;
}
cnt++;
} case 1:
{/*第二部分,灯从右至左依次熄灭*/
n = 0xFF;
while(1)
{
P0 = ~n; delay400ms(); if(n == 0x00)break; n = n<<1;
}
cnt++;
} case 2:
{/*第三部分,灯从左至右依次点亮且熄灭上一个*/
n = 0x80;
while(1)
{
P0 = ~n; delay400ms(); if(n == 0x01)break; n = n>>1;
}
cnt++;
} case 3:
{/*第四部分,灯从右至左依次点亮且熄灭上一个*/
n = 0x01;
while(1)
{
P0 = ~n; delay400ms(); if(n == 0x80)break; n = n<<1;
}
cnt++;
} case 4:
{/*第五部分,灯同时点亮后又同时熄灭10次*/
n = 0x00;
for(i = 0; i<20 ;i++)
{
P0 = ~n;
delay400ms();
n = ~n;
}
cnt++;
} case 5:
{/*第六部分,前后四个灯为一组两组灯交替点亮8次*/
n = 0xF0;
for(i = 0; i<16 ;i++)
{
P0 = n;
delay400ms();
n = ~n;
}
cnt++;
} case 6:
{/*第七部分,第3,7,1,4,6个灯依次点亮且熄灭上一个灯3次*/
for(i = 0; i<3 ;i++)
{
n = 0x20;
P0 = ~n;
delay400ms();
P0 = 0xFF;
delay400ms();
n = 0x02;
P0 = ~n;
delay400ms();
P0 = 0xFF;
delay400ms();
n = 0x80;
P0 = ~n;
delay400ms();
P0 = 0xFF;
delay400ms();
n = 0x10;
P0 = ~n;
delay400ms();
P0 = 0xFF;
delay400ms();
n = 0x04;
P0 = ~n;
delay400ms();
P0 = 0xFF;
delay400ms();
}
cnt++;
} /*大家还可以再加更多组合,记得cnt++*/ default : cnt = 0;break;
/*组合结束,重新开始*/
}
} }

保存,下载到单片机里:



成功实现效果~

二、总结

兴趣很重要,单片机很好玩,哈哈

【单片机】滑稽AT89C52表情实现的更多相关文章

  1. nodejs之mock与跨域代理的三两事

    emmm...好久没写博客了,都忘了该怎么开始. 那就先说下mockjs.因为一些原因,导致后台接口没有数据,那么我们就开始自己造数据,使用的是比较流行mockjs,根据文档就能简单的配置,然后开始愉 ...

  2. Warm_up(HCTF_2018)

    Warm up 考察知识点: 文件包含漏洞 代码审计 解题步骤 首先我们进来看到了一个滑稽的表情,没啥别的东西,先看看源码 源码中发现有注释 source.php 我们访问source.php,得到代 ...

  3. [每日电路图] 1、基于AT89C52单片机最小系统接口电路【转】

              come from:http://www.21ic.com/dianlu/basis/interface/2015-04-21/621607.htm AT89C52是美国Atmel ...

  4. 【转载】芯片级拆解51、AVR、MSP430、凌阳61、PIC,5种单片机,多张显微照片

    先秀一张解剖照,放大裁剪,小米1S微距拍摄,800万像素摄像头很给力!今天等待被拆的是5个单片机芯片:(1)凌阳16位单片机SPCE061A ,这是我接触的第一个单片机,最高主频49MHz,32KB的 ...

  5. Keil uVision4 创建51单片机工程

    Keil uVision4 创建51单片机工程 版权声明:未经授权,严禁转载! 在学习51单片机的过程当中,我们需要使用 Keil uVision4 来创建一个项目,今天就来图示一下创建的流程. 首先 ...

  6. 如何快速入门单片机C语言

    一.为什么要学单片机技术? 传统的电子产品升级改造成智能化的电子产品需要用到单片机技术.也就是说传统的电子产品如电视机.电子表.计算器.数码相机.手机.MP3.遥控器.洗衣机等产品智能化.微型化,需要 ...

  7. 单片机小白学步系列(十三) 点亮第一个LED——好的開始,成功的一半

    前面介绍了非常多概念知识.做了非常多准备工作,从这一节開始,我们正式開始单片机的学习.我们将使用单片机完毕一项非常easy的工作:点亮一个发光二极管(即LED:Light-Emitting Diode ...

  8. 【零基础】彻底搞懂51单片机各种型号(ATMEL系列)

    零.前言 初学者开始学习51单片机时往往先是一愣,说好51单片机啊,咋个型号是AT89C52,这个S52又是咋回事?上学的时候大都懵懵懂懂就这么用着,但始终没整明白,所以今天我们就彻底搞明白这些“51 ...

  9. 【零基础】入门51单片机图文教程(Proteus+Keil)

    参考资料: https://www.jianshu.com/p/88dfc09e7403 https://blog.csdn.net/feit2417/article/details/80890218 ...

  10. AVR单片机教程——示波器

    本文隶属于AVR单片机教程系列.   在用DAC做了一个稍大的项目之后,我们来拿ADC开开刀.在本讲中,我们将了解0.96寸OLED屏,移植著名的U8g2库到我们的开发板上,学习在屏幕上画直线的算法, ...

随机推荐

  1. 2020年最新版区块链面试题2-copy

    1. 问:你认为区块链技术中的区块意味着什么? 区块链由所有金融交易的信息组成.一个块只不过是一个记录列表.当这些列表相互结合时,它们被称为区块链.例如,一个组织有100个分类账簿,其中的组合被称为区 ...

  2. SpringCloud(1)---入门篇

    SpringCloud理解篇 一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一 ...

  3. java设计模式---总则

    设计模式总则 一.概述 1.什么是设计模式 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 解释下: 分类编目:就是说可以找到一些特征去划分这些设计模式,从而进行分类. ...

  4. 变量-python

    变量-python 1. 变量的定义 变量是存储数据的地方,在程序运行时,变量的值可以改变.变量的定义格式如下: 变量名 = 数据 例如: a = 10 b = "hello" c ...

  5. 00.嵌入式笔记——初识make工具和Makefile文件

    1. make工具和Makefile文件 make是解决大工程编译的工具,描述哪些文件需要编译.哪些需要重新编译的文件就叫做 Makefile,Makefile 就跟脚本文件一样,Makefile 里 ...

  6. 基于Java语言的开源能管平台才是最适合国内的能源管理平台

    在"双碳"战略背景下,能源管理已成为政府.企业实现可持续发展的必经之路.面对市场上各类能源管理平台,为何基于Java语言的开源解决方案才是最佳选择?本文将为您揭晓答案,并向您推荐我 ...

  7. 二次剩余和 Cipolla 算法

    首先是素数模同余方程的相关理论. 下设 $p\in $ 是质数,\(f(x)=\sum_{i=0}^n a_ix^i\),\(x\in \Z_p,p\not\mid a_n\). 引理 1 如果 \( ...

  8. Iceberg的Copy on Write和Merge On Read介绍

    一.默认的Copy on Write Copy no Write模式指的是在进行更新数据时,先将数据拷贝出来进行相应的更新,再替换掉原先的数据 二.Merge On Read读取时合并 在v2版本才支 ...

  9. 流程控制之if选择结构

    if单选择结构  if (布尔表达式){     //如果布尔表达式为ture将执行的语句 } 实例:  package com.yeyue.struct; ​ import java.util.Sc ...

  10. datawhale-leetcode打卡:第026~037题

    反转链表(leetcode 206) 这个题目我就比较流氓了,干脆新建链表翻转过来算了.但是完蛋,超出内存限制,那我就只能两两换了.这里比较大的技巧就是可以用一个空节点进行置换. # Definiti ...