c51--LED

点亮一个LED灯

1、首先看开发板原理图上引脚定义,发现是共阳极连接方式(所有灯的阳极连一起),所以给引脚低电平灯就能亮。
在这里插入图片描述
2、然后打开keil创建新项目,输入项目名字,选择你的单片机型号,我们用的是STC89C52,keil不支持国产的芯片,没有这选项,我们可以选择AT89C52,与STC89C52是一样的,然后出现的是否复制启动文件,随便选。
在这里插入图片描述
3、建好项目之后右击源文件添加新文件
在这里插入图片描述
4、选择c文件,名字给main(自动添加后缀)
在这里插入图片描述
5、然后在main文件写代码:

#include <REGX52.H>//右击添加头文件

void main()
{//下面用十六进制传数据,系统无法识别二进制
	P2 = 0xFE;//1111 1110
	while(1)
	{
		;
	}
}

LED闪烁

1、建项目
2、打开stc-isp生成延时函数,选择好系统频率,指令集和延时
在这里插入图片描述
3、把点灯函数在while中亮灭

#include <REGX52.H>//右击添加头文件

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	P2 = 0xFE;//1111 1110
	while(1)
	{
		P2 = 0xFE;Delay500ms();//亮
		P2 = 0xFF;Delay500ms();//灭
	}
}

LED流水灯

直接上代码:

#include <REGX52.H>
void Delay(unsigned int xms)		//改进延时函数,能给个参数延时相应时间
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}


char i=0;
void main()
{
	char a;
	a = 0x01;//0000 0001;
	while(1)
	{
		
		if(i>7)i%=8;
		P2 = ~(a<<i);//移位符号,表示a左移i位,末尾补零,取反是低电平点亮
		i++;
		Delay(500);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要连接一个4位共阳数码管到C51单片机上,并且连接对应的引脚。然后,编写C语言程序来控制数码管显示字符“C51--4--”。 以下是一份简单的程序示例: ```c #include <reg51.h> // 导入C51单片机的寄存器定义 // 定义数码管的引脚 sbit LED_A = P2^2; sbit LED_B = P2^3; sbit LED_C = P2^4; sbit LED_D = P2^5; sbit LED_E = P2^6; sbit LED_F = P2^0; sbit LED_G = P2^1; sbit LED_DP = P2^7; void delay(unsigned int x) // 延时函数,用于控制数码管的显示时间 { unsigned int i, j; for (i = x; i > 0; i--) for (j = 110; j > 0; j--); } void main() { while (1) // 循环显示字符 { LED_A = 1; LED_B = 1; LED_C = 1; LED_D = 0; LED_E = 0; LED_F = 1; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 1; LED_C = 1; LED_D = 1; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 0; LED_C = 1; LED_D = 1; LED_E = 1; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 1; LED_B = 0; LED_C = 1; LED_D = 0; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 1; LED_B = 0; LED_C = 1; LED_D = 0; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 0; LED_C = 1; LED_D = 1; LED_E = 1; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 1; LED_C = 1; LED_D = 1; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 } } ``` 需要注意的是,该程序只显示了字符“C51--4--”,如果需要显示其他字符,需要修改相应的引脚控制代码。同时,需要根据具体的硬件连接情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值