【单片机】滑稽AT89C52表情实现
【单片机】滑稽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表情实现的更多相关文章
- nodejs之mock与跨域代理的三两事
emmm...好久没写博客了,都忘了该怎么开始. 那就先说下mockjs.因为一些原因,导致后台接口没有数据,那么我们就开始自己造数据,使用的是比较流行mockjs,根据文档就能简单的配置,然后开始愉 ...
- Warm_up(HCTF_2018)
Warm up 考察知识点: 文件包含漏洞 代码审计 解题步骤 首先我们进来看到了一个滑稽的表情,没啥别的东西,先看看源码 源码中发现有注释 source.php 我们访问source.php,得到代 ...
- [每日电路图] 1、基于AT89C52单片机最小系统接口电路【转】
come from:http://www.21ic.com/dianlu/basis/interface/2015-04-21/621607.htm AT89C52是美国Atmel ...
- 【转载】芯片级拆解51、AVR、MSP430、凌阳61、PIC,5种单片机,多张显微照片
先秀一张解剖照,放大裁剪,小米1S微距拍摄,800万像素摄像头很给力!今天等待被拆的是5个单片机芯片:(1)凌阳16位单片机SPCE061A ,这是我接触的第一个单片机,最高主频49MHz,32KB的 ...
- Keil uVision4 创建51单片机工程
Keil uVision4 创建51单片机工程 版权声明:未经授权,严禁转载! 在学习51单片机的过程当中,我们需要使用 Keil uVision4 来创建一个项目,今天就来图示一下创建的流程. 首先 ...
- 如何快速入门单片机C语言
一.为什么要学单片机技术? 传统的电子产品升级改造成智能化的电子产品需要用到单片机技术.也就是说传统的电子产品如电视机.电子表.计算器.数码相机.手机.MP3.遥控器.洗衣机等产品智能化.微型化,需要 ...
- 单片机小白学步系列(十三) 点亮第一个LED——好的開始,成功的一半
前面介绍了非常多概念知识.做了非常多准备工作,从这一节開始,我们正式開始单片机的学习.我们将使用单片机完毕一项非常easy的工作:点亮一个发光二极管(即LED:Light-Emitting Diode ...
- 【零基础】彻底搞懂51单片机各种型号(ATMEL系列)
零.前言 初学者开始学习51单片机时往往先是一愣,说好51单片机啊,咋个型号是AT89C52,这个S52又是咋回事?上学的时候大都懵懵懂懂就这么用着,但始终没整明白,所以今天我们就彻底搞明白这些“51 ...
- 【零基础】入门51单片机图文教程(Proteus+Keil)
参考资料: https://www.jianshu.com/p/88dfc09e7403 https://blog.csdn.net/feit2417/article/details/80890218 ...
- AVR单片机教程——示波器
本文隶属于AVR单片机教程系列. 在用DAC做了一个稍大的项目之后,我们来拿ADC开开刀.在本讲中,我们将了解0.96寸OLED屏,移植著名的U8g2库到我们的开发板上,学习在屏幕上画直线的算法, ...
随机推荐
- 2020年最新版区块链面试题2-copy
1. 问:你认为区块链技术中的区块意味着什么? 区块链由所有金融交易的信息组成.一个块只不过是一个记录列表.当这些列表相互结合时,它们被称为区块链.例如,一个组织有100个分类账簿,其中的组合被称为区 ...
- SpringCloud(1)---入门篇
SpringCloud理解篇 一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一 ...
- java设计模式---总则
设计模式总则 一.概述 1.什么是设计模式 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 解释下: 分类编目:就是说可以找到一些特征去划分这些设计模式,从而进行分类. ...
- 变量-python
变量-python 1. 变量的定义 变量是存储数据的地方,在程序运行时,变量的值可以改变.变量的定义格式如下: 变量名 = 数据 例如: a = 10 b = "hello" c ...
- 00.嵌入式笔记——初识make工具和Makefile文件
1. make工具和Makefile文件 make是解决大工程编译的工具,描述哪些文件需要编译.哪些需要重新编译的文件就叫做 Makefile,Makefile 就跟脚本文件一样,Makefile 里 ...
- 基于Java语言的开源能管平台才是最适合国内的能源管理平台
在"双碳"战略背景下,能源管理已成为政府.企业实现可持续发展的必经之路.面对市场上各类能源管理平台,为何基于Java语言的开源解决方案才是最佳选择?本文将为您揭晓答案,并向您推荐我 ...
- 二次剩余和 Cipolla 算法
首先是素数模同余方程的相关理论. 下设 $p\in $ 是质数,\(f(x)=\sum_{i=0}^n a_ix^i\),\(x\in \Z_p,p\not\mid a_n\). 引理 1 如果 \( ...
- Iceberg的Copy on Write和Merge On Read介绍
一.默认的Copy on Write Copy no Write模式指的是在进行更新数据时,先将数据拷贝出来进行相应的更新,再替换掉原先的数据 二.Merge On Read读取时合并 在v2版本才支 ...
- 流程控制之if选择结构
if单选择结构 if (布尔表达式){ //如果布尔表达式为ture将执行的语句 } 实例: package com.yeyue.struct; import java.util.Sc ...
- datawhale-leetcode打卡:第026~037题
反转链表(leetcode 206) 这个题目我就比较流氓了,干脆新建链表翻转过来算了.但是完蛋,超出内存限制,那我就只能两两换了.这里比较大的技巧就是可以用一个空节点进行置换. # Definiti ...