51单片机应用开发(进阶)---IO操作(心形灯为例)
实现目标
1、加强对单片机的IO操作;
2、以项目式锻炼学者分析问题解决问题的能力。
一、心形灯
心形灯是一种具有心形图案的灯具,它起源于20世纪60年代的美国,最初主要用于商业广告和装饰。随着LED技术的普及,心形灯逐渐成为一种流行的装饰灯具,广泛应用于家庭、商业和公共场所的装饰。
二、原理图设计
三、程序设计
#include <REGX52.H>
unsigned char dat[8] = {0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//顺向流水
unsigned char dat1[8] = {0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//反向关
unsigned char dat2[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//跑马灯
void Delay200ms();//@11.0592MHz
void main()
{
unsigned char i = 0;
// 上电闪烁1次
P0 = 0X00;
P1 = 0X00;
P2 = 0X00;
P3 = 0X00;
Delay200ms();
Delay200ms();
P0 = 0XFF;
P1 = 0XFF;
P2 = 0XFF;
P3 = 0XFF;
Delay200ms();
Delay200ms();
while(1)
{
for(i = 0; i < 8;i++)
{
P0 = dat[i];
Delay200ms();
}
for(i = 0; i < 8;i++)
{
P1 = dat[i];
Delay200ms();
}
for(i = 0; i < 8;i++)
{
P2 = dat[i];
Delay200ms();
}
for(i = 0; i < 8;i++)
{
P3 = dat[i];
Delay200ms();
}
P0 = 0XFF;
P1 = 0XFF;
P2 = 0XFF;
P3 = 0XFF;
Delay200ms();
}
}
void Delay200ms()//@11.0592MHz
{
unsigned char i, j, k;
i = 2;
j = 103;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
四、仿真实现
总结
原文地址:https://blog.csdn.net/luojuan198780/article/details/142997018
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!