2022.11.14--11.20周报

   本周主要学习了单片机点阵键盘部分  可以通过代码实现显示图形,和图形动态移动及一些简单图形形成的动画。

点阵知识和数码管有一定的关联,可以合理运用其之间的联系。

最后简单实现哭笑脸的代码如下:

#include
#include"Delay.h"
#include"MatrixLED.h"

unsigned char code Animation[]={
  0x3c,0x42,0xa9,0x85,0x85,0xa9,0x42,0x3c,
	0x3c,0x42,0xa1,0x85,0x85,0xa1,0x42,0x3c,
	0x3c,0x42,0xa5,0x89,0x89,0xa5,0x42,0x3c,

};


void main()
{
	unsigned char i,Offset=0,Count=0;
	MatrixLED_Init();
	while(1)
	{
		for(i=0;i<8;i++)	
		{
			MatrixLED_ShowColumn(i,Animation[i+Offset]);
		}
		Count++;			
		if(Count>20)
		{
			Count=0;
			Offset+=8;		
			if(Offset>16)
			{
				Offset=0;
			}
		}
	}
}

注释:其中有部分代码进行了编程化处理,有需要可以私我。

同时,又在平常通过代码实现了简单的两位数的加减乘除运算。

51单片机计算器代码如下:

#include
#include"delay.h"
#include"LCD1602.h"
#include"MatrixKey.h"



	unsigned int i=1;
	//unsigned int num1;
	
	unsigned int a[10];
unsigned char KeyNumber1;

int jisuan(unsigned int a[])
{
	unsigned int num;
	unsigned char i,j;
		i=a[1]*10+a[2];
		j=a[4]*10+a[5];
	switch(a[3])
	{
				case 11 : num=i+j;break;
				case 12 : num=i-j;break;
				case 13 : num=i*j;break;
				case 14 : num=i/j;break;
	}
	return num;
}

void main()
{
	LCD_Init();
   
	while(1)
	{
		KeyNumber1=MatrixKey();
		if(KeyNumber1)
		{
			switch(KeyNumber1)
			{
				case 1 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=1; break;
				case 2 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=2;break;
				case 3 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=3;break;
				case 4 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=4;break;
				case 5 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=5;break;
				case 6 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=6;break;
				case 7 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=7;break;
				case 8 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=8;break;
				case 9 : LCD_ShowNum(1,i,KeyNumber1,1);a[i]=9;break;
				case 10 : LCD_ShowNum(1,i,KeyNumber1-10,1);break;
				case 11 : LCD_ShowChar(1,i,'+');a[i]=11;break;
				case 12 : LCD_ShowChar(1,i,'-');a[i]=12;break;
				case 13 : LCD_ShowChar(1,i,'*');a[i]=13;break;
				case 14 : LCD_ShowChar(1,i,'/');a[i]=14;break;
				case 15 : LCD_ShowChar(1,i,'='); LCD_ShowNum(1,i+1,jisuan(a),4); break;	
			}
			i+=1;
		
		}
	
	}
}

这个是个简陋计算器,只能进行一次运算,因为没有设置归零键,感兴趣的朋友可以设置好和我分享,同时这也进行了编程模块化处理,需要私信我。

大致说明一下 其中矩阵键盘1-9就代表其数字,10代表0,11代表‘+’,12代表‘-’,13代表‘*’,14代表‘/’,15代表‘=’。

本周大致学习内容,还有零零碎碎不细说。

你可能感兴趣的:(51单片机)