做网站是先做后台还是前端,猪八戒网可以做网站吗,能在线做初中题的网站,网页设计师证书报考条件目录
一、开发前准备
二、点亮LED
三、LED闪烁
四、LED流水灯
五、LED流水灯plus 一、开发前准备
开发工具软件 烧录软件 其次还需要一块51单片机学习开发板及原理图 keil创造project文件及开启生成.hex文件 二、点亮LED
看二位进制对照原理图#xff1b; #include #include REGX52.H
void main()
{P10xFE;
}
三、LED闪烁
了解数据类型 在STC-isp中在软件延时计算器中 生成C代码后复制粘贴到keil中
添加头文件延迟函数头文件
includeINTRINS.H 循环向左递位 运行main.c生成.hex文件用烧录文件进行烧录
#include REGX52.H
sbit p1_1P1^0;
unsigned int a;
void main()
{while(1){a50000;p1_10;while(a--);a50000;p1_11;while(a--);}
} 四、LED流水灯
调用延迟函数返回参数 初始化temp变量为0xfe这表示P1端口的高7位是高电平最低位是低电平。如果P1端口连接了8个LED灯这意味着除了最右边的LED灯外其余的LED灯都是关闭状态。 在主循环中使用_crol_内建函数将temp的值循环左移一位。这个操作会将temp最低位的值移动到最高位其余位向左移动。因此每次调用_crol_后temp的值都会改变使得下一个LED灯被点亮。 调用delay函数来实现延时。这个延时确保LED灯的点亮和熄灭足够慢从而形成流水灯的动态效果。 更新P1端口的值将temp的当前值输出到P1端口这样LED灯的状态就会根据temp的值改变。 重复步骤2到4形成一个连续的流水灯效果。
//Á÷Ë®µÆ
#include REGX52.H
#include intrins.h
#define uint unsigned int
#define uchar unsigned char
uchar temp; //8λÎÞ·ûºÅ×Ö·ûÐÍ
void delay(uint z)//ÑÓʱº¯Êý£»µ÷ÓòÎÊý£»ºÁÃ룻
{uint x,y;for(x100;x0;x--)for(yz;y0;y--);
}void main()
{temp 0xfe;P1temp;while(1){temp_crol_(temp,1);delay(600);P1temp;}
}
五、LED流水灯plus 用生成1ms的函数来实现流水灯这样就不需要一个一个换数了和上面类似
#include REGX52.H
#include intrins.hvoid Delay1ms(unsigned int xms) //12.000MHz
{unsigned char i, j;while(xms){i 2;j 239;do{while (--j);} while (--i);xms--;}
}void main()
{while(1){P10xfe;//1111 1110Delay1ms(100);P10xfd;Delay1ms(100);P10xfb;Delay1ms(100);P10xf7;Delay1ms(100);P10xff;Delay1ms(100);P10xef;Delay1ms(100);P10xdf;Delay1ms(100);P10xbf;Delay1ms(100);P10x7f;Delay1ms(100);//0111 1111}}
这代码用于8051微控制器的C语言程序实现了一个简单的LED流水灯效果。
1. #include REGX52.H - 包含针对AT89C52一种8051系列微控制器的寄存器定义和特殊功能寄存器SFR的头文件。
2. #include intrins.h - 包含一些内建函数的头文件比如_nop_()空操作用于延时。
3. void Delay1ms(unsigned int xms) - 定义了一个名为Delay1ms的函数它接受一个无符号整型参数xms表示需要延时的毫秒数。
4. unsigned char i, j; - 在Delay1ms函数内部声明了两个无符号字符变量i和j用于实现延时。
5. while(xms) - 一个循环当xms不为0时继续执行。
6. i 2; - 将i初始化为2。
7. j 239; - 将j初始化为239。
8. do { ... } while (--i); - 一个do...while循环内部是一个while循环执行j次每次j递减直到0然后i递减。这个循环用于实现微秒级的延时。
9. while (--j); - 内部的while循环直到j递减到0。
10. xms--; - 每次外层循环结束时xms递减1。
11. void main() - 主函数的开始。
12. while(1) - 一个无限循环使得程序持续运行。
13. P10xfe; - 将P1端口的值设置为0xfe二进制11111110如果P1端口连接了LED灯这将点亮除了最右边的LED之外的所有LED。
14. Delay1ms(100); - 调用Delay1ms函数延时100毫秒。
15. 接下来的几行代码重复上述步骤但是每次将P1端口的值设置为下一个二进制数实现LED灯逐个点亮的效果。
16. P10xff; - 将P1端口的值设置为0xff二进制11111111所有LED灯都熄灭。
17. 最后几行代码是将LED灯从最左边开始逐个点亮直到所有LED灯都亮起。
整个程序通过改变P1端口的输出值控制连接到P1端口的LED灯依次点亮和熄灭从而形成一种流水灯的效果。Delay1ms函数用于控制每次LED灯状态改变之间的延时使得流水灯效果更加明显。这个延时函数是基于8051微控制器在12MHz时钟频率下的实现实际延时效果可能需要根据具体的时钟频率进行调整。