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);
}

四、仿真实现


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面包板扎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值