很多同学一直私信我,问能否分享单片机视频课程的代码,当然是可以分享的啊。天下代码一大抄,其实这些代码网上基本上都是可以找到的,关键是要学会使用,知其然也要知其所以然。其实最好的学习的方法,应该是自己手动的撸代码,就如10000小时定律一样,要遵循10000条代码定律。撸代码的主要目的,我认为一个是熟悉C语言的语法,一个是理解软件控制硬件的原理,只有手感和逻辑能力得到了一定的训练,才能够为开发时的业务逻辑处理代码的编写提供基础。由于是对初学者的教学,代码并没有太多的优化,代码规范也不够,大家感兴趣的全做参考吧。以下代码对应的视频为:数码管动态显示之switch case语句实现动态刷新及多参数分时显示,https://www.ixigua.com/6827090528962609677。 /************ main.c **********************/
#include <reg51.h>
#include 'delay.h'
#include 'display.h'
unsigned char wnd;
unsigned char parm1 = 44;
unsigned char parm2 = 55;
unsigned char parm3 = 66;
unsigned char parm4 = 77;
void dis_Service();
void main()
{
unsigned int i;
for(i = 0;i<5000;i++)
{
Display();
}
while(1)
{
dis_Service();
}
}
void dis_Service()
{
unsigned int i;
switch(wnd)
{
case 0:
LEDBuf[0] = 0;
LEDBuf[1] = 22;
LEDBuf[2] = parm1/10;
LEDBuf[3] = parm1%10;
for(i = 0;i<5000;i++)
{
Display();
}
wnd++;
break;
case 1:
LEDBuf[0] = 1;
LEDBuf[1] = 22;
LEDBuf[2] = parm2/10;
LEDBuf[3] = parm2%10;
for(i = 0;i<5000;i++)
{
Display();
}
wnd++;
break;
case 2:
LEDBuf[0] = 2;
LEDBuf[1] = 22;
LEDBuf[2] = parm3/10;
LEDBuf[3] = parm3%10;
for(i = 0;i<5000;i++)
{
Display();
}
wnd++;
break;
case 3:
LEDBuf[0] = 3;
LEDBuf[1] = 22;
LEDBuf[2] = parm4/10;
LEDBuf[3] = parm4%10;
for(i = 0;i<5000;i++)
{
Display();
}
wnd = 0;
break;
default:break;
}
}
//display.h
#ifndef __DISPLAY_H__
#define __DISPLAY_H__
#include <reg51.h>
#include 'delay.h'
//IO的声明
#define GPIO_DIG P0 //段码 IO
#define GPIO_PLACE P2 //位选 IO
#define N 4 //数码管个数
unsigned char code leddata[];
extern unsigned char LEDBuf[];
void Display();
#endif
//delay.h
#ifndef __DELAY_H__
#define __DELAY_H__
void DelayXms(unsigned int xms);
#endif 程序执行后对应的显示效果如下: 上电初始显示: 初始显示 下面的为4个参数的分时显示: 参数0显示 参数1显示 参数2显示 参数3显示 代码仅供参考。 |
|