程序员的知识教程库

网站首页 > 教程分享 正文

自学单片机09:神奇的switch语句,实现多信息分时显示

henian88 2025-03-25 13:26:06 教程分享 11 ℃ 0 评论

学习单片机又把C语言的一些知识点温习一下

switch:switch (表达式)----->表达式中只能是整形和字符型

extern :全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用

static:局部静态变量,延长了局部变量的生命周期,直到程序运行结束以后才释放。

全局静态变量:作用域是声明此变量所在的文件,其他的文件即使用 extern 声明也 不能使用。

目标:4个数据11,22,33,44 需要显示在一个4位共阴极数码管上

简单的功能掌握住,难的也就不难了,量变到质变的过程,各种简单的功能组合到一起便能实现复杂的功能

main.c


#include "DisplayService.h"

void main()
{
	u16 temp;
	for(temp=0;temp<100;temp++)
	{
		Display();//显示开机画面一段时间
	}
	
	while(1)
	{
		DisplayService();//分时循环显示4组数据
	}
}

DisplayService.c

#include "DisplayService.h"

u8 parm1 = 11; //需要显示的数据
u8 parm2 = 22;
u8 parm3 = 33;
u8 parm4 = 44;

void DisplayService()
	{
		static u8 windowNum = 0; //窗口变量
		u16 temp;
		switch(windowNum)
		{
			case 0:
				LEDBuf[0] = 1; //第一个数码管显示1
				LEDBuf[1] = 22;//第二个数码显示“-”
				LEDBuf[2] = parm1/10;//第三个数码管显示数据十位
				LEDBuf[3] = parm1%10;//第四个数码管显示数据个位
				for(temp=0;temp<200;temp++)//显示数据parm1一些时间
				{
					Display();
				}
				windowNum++;
				break;
			case 1:
				LEDBuf[0] = 2;//第一个数码管显示3
				LEDBuf[1] = 22;//第二个数码显示“-”
				LEDBuf[2] = parm2/10;
				LEDBuf[3] = parm2%10;
				for(temp=0;temp<200;temp++)
				{
					Display();
				}
				windowNum++;
				break;
			case 2:
				LEDBuf[0] = 3;
				LEDBuf[1] = 22;
				LEDBuf[2] = parm3/10;
				LEDBuf[3] = parm3%10;
				for(temp=0;temp<200;temp++)
				{
					Display();
				}
				windowNum++;
				break;
			case 3:
				LEDBuf[0] = 4;
				LEDBuf[1] = 22;
				LEDBuf[2] = parm4/10;
				LEDBuf[3] = parm4%10;
				for(temp=0;temp<200;temp++)
				{
					Display();
				}
				windowNum = 0;//窗口变量置零,下次显示第一个数据
				break;
			default: 
				break;
		}
			
		
	}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表