学习目标:
- 点亮一个灯
- 实现八个流水灯的四种点亮方式
学习内容:
- IO口的总线控制方式 单片机对IO口有两种控制方式(1)位控制:单独对每个IO口进行控制 例:led=0;(位定义sbit) (2)对八个IO口同时进行控制 例:P1=0xFE;
- 实现一个灯的点亮
#include<reg52.h> //sfr P1=0X90;//定义p1寄存器地址 sbit led0=P1^0; //led0第一个·发光二极管 sbit led8=P1^7; //led0第八个·发光二极管 void main() { //第一种点亮 //led0=0; //led0给低电平 点亮led //while(1); //while死循环,让程序停在这里 //第二种点亮 while(1) { led0=0;//第1个发光二极管 led7=0;//第8个发光二极管 } }
3.流水灯的点亮第一种方法:(1)简单粗暴法
#include<reg52.h> #include<intrins.h> void main() { unsigned int i;//定义延时程序变量 while(1) { //方法一,简单粗暴 P1=0xFE;//点亮第一个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P2=0xFD;//点亮第2个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P3=0xFB;//点亮第3个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P4=0xF7;//点亮第4个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P5=0xEF;//点亮第5个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P6=0xDF;//点亮第6个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P7=0xBF;//点亮第7个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P8=0x7F;//点亮第8个led i=65535; //初始化延时程序变量值 while(i--);//while延时程序*/ } }
(2)方法二,运用左移简化程序
#include<reg52.h> #include<intrins.h> void main() { unsigned int i;//定义延时程序变量 unsigned char x;//定义左移位数变化 while(1) { //方法二,运用左移简化程序 P1=~(0x01<<x); x++; if(x>=8) { x=0; } i=65535; //初始化延时程序变量值 while(i--);//while延时程序 } }
(3)方法三,利用库函数更简单实现
#include<reg52.h> #include<intrins.h> void main() { unsigned int i;//定义延时程序变量 P1=0XFE; while(1) { //方法三,利用库函数更简单实现 i=65535; //初始化延时程序变量值 while(i--);//while延时程序 P1=_crol_(P1,1); } }
(4)方法四,利用数组灵活操作
#include<reg52.h> #include<intrins.h> unsigned char code LED[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//LED灯点亮数组 void main() { unsigned int i;//定义延时程序变量 unsigned char temp;//定义数组自加变量 temp=0; while(1) { //方法四,利用数组灵活操作 P1=LED[temp++]; if(temp>=8) { temp=0; } i=65535; //初始化延时程序变量值 while(i--);//while延时程序 } }
这是我第一次学习总结后通过以博客的形式将学习的内容呈现出来,可能写的不够完整,后期我将通过学习不断的完善自我,将更好的博客内容呈现给大家