江协科技课程代码汇集1

2-1 点亮一个LED

#include 

void main()
{
	
	P2=0xFE;//1111 1110
}

 2-2 让LED闪烁(此文章所有代码都是最终实现代码)

#include 
#include 

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

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	
	while(1)
	{
		P2=0xFE;
		Delay500ms();
		P2=0xFF;
		Delay500ms();
	}
}

 2-3 LED流水灯

#include 
#include 

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

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


int main()
{
	while(1)
	{
		P2=0xFE;      //1111 1110
		Delay500ms();
		P2=0xFD;      //1111 1101   
		Delay500ms();
		P2=0xFB;      //1111 1011
		Delay500ms();
		P2=0xF7;      //1111 0111
		Delay500ms();
		P2=0xEF;      //1110 1111
		Delay500ms();
		P2=0xDF;      //1101 1111
		Delay500ms();
		P2=0xBF;      //1011 1111
		Delay500ms();
		P2=0x7F;      //0111 1111
		Delay500ms();
	}
}

2-3 LED流水灯PLUS

#include 
#include 

void Delay1ms(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
  while(xms)               //非0为真,先执行一次即为延时1ms,然后自减到0
	{
		i = 2;
		j = 239;
	do
	{
		while (--j);
	} while (--i);
		xms--;
	}
}


int main()
{
		while(1)
	{
		P2=0xFE;      //1111 1110
		Delay1ms(100);
		P2=0xFD;      //1111 1101   
		Delay1ms(100);
		P2=0xFB;      //1111 1011
		Delay1ms(100);
		P2=0xF7;      //1111 0111
		Delay1ms(100);
		P2=0xEF;      //1110 1111
		Delay1ms(100);
		P2=0xDF;      //1101 1111
		Delay1ms(100);
		P2=0xBF;      //1011 1111
		Delay1ms(100);
		P2=0x7F;      //0111 1111
		Delay1ms(100);
	}
}

3-1 独立按键控制LED亮灭

#include 

int main()
{
	while(1)
	{
		if(P3_1==0)   //K1接在了P31,直接读这个寄存器
		{
			P2_0=0;
		}
		else
		{
			P2_0=1;
		}
	}
}

3-2 独立按键控制LED状态

#include 

void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
	
}

int main()
{
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);            //如果P31是按下状态,那么延时20ms
			while(P3_1==0);       //按下不操作,松手才操作;while(P3_1==0)检测松手,不能不加
			Delay(20);            //松手以后,消除松手抖动
			P2_0=~P2_0;           //可以操作了,然后取反
		}
			
	}
}

3-3 独立按键控制LED显示二进制

int main()
{
	unsigned char LEDNum=0;     // 无符号字符型为0~255的8位二进制数据,表示一个寄存器
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);
			while(P3_1==0);
			Delay(20);
			
			LEDNum=++;
			P2=~LEDNum;
		}
	}
		
}

3-4 独立按键控制LED移位

#include 
void Delay(unsigned int xms);    //另一种声明方式

unsigned char LEDNum;

int main()
{
	P2=~0x01;
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);
			while(P3_1==0);
			Delay(20);
			
			LEDNum++;
			if(LEDNum>=8)
				LEDNum=0;
			P2=~(0x01<

4-1 静态数码管显示

#include 

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 0-9的段码表

void Nixie(unsigned char Location,Number)       // 数码管显示的子函数,两个参数:位置和数字
{
	switch(Location)
	{
		case 1: P2_4=1; P2_3=1; P2_2=1; break;
		case 2: P2_4=1; P2_3=1; P2_2=0; break;
		case 3: P2_4=1; P2_3=0; P2_2=1; break;	
		case 4: P2_4=1; P2_3=0; P2_2=0; break;
		case 5: P2_4=0; P2_3=1; P2_2=1; break;
		case 6: P2_4=0; P2_3=1; P2_2=0; break;
		case 7: P2_4=0; P2_3=0; P2_2=1; break;
		case 8: P2_4=0; P2_3=0; P2_2=0; break;     
	}
	P0=NixieTable[Number];     // P0的值即为要显示的数字
}


int main()
{
	Nixie(2,3);
	while(1)
	{
		
	}
		
}

4-2 动态数码管显示

#include 

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 

void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms--)
	{
      i = 2;
	  j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
	
}


void Nixie(unsigned char Location,Number)      
{
	switch(Location)
	{
		case 1: P2_4=1; P2_3=1; P2_2=1; break;
		case 2: P2_4=1; P2_3=1; P2_2=0; break;
		case 3: P2_4=1; P2_3=0; P2_2=1; break;	
		case 4: P2_4=1; P2_3=0; P2_2=0; break;
		case 5: P2_4=0; P2_3=1; P2_2=1; break;
		case 6: P2_4=0; P2_3=1; P2_2=0; break;
		case 7: P2_4=0; P2_3=0; P2_2=1; break;
		case 8: P2_4=0; P2_3=0; P2_2=0; break;     
	}
	P0=NixieTable[Number];  
	Delay(1);
	P0=0x00;
}


int main()
{
	
	while(1)
	{
		Nixie(1,1);
//		Delay(20);
		Nixie(2,2);
//		Delay(20);
		Nixie(3,3);
//		Delay(20);
	}
}

你可能感兴趣的:(单片机,科技,c语言,单片机,嵌入式硬件)