C语言:51单片机实现数码管依次循环显示【1~F】课堂练习

在51单片机上实现数码管依次循环显示【1~F】的功能,可以通过以下步骤完成。假设使用的是共阴极数码管,并且数码管的段选和位选分别连接到单片机的P0口和P2口。

硬件连接

  • 数码管的段选(a, b, c, d, e, f, g, dp)连接到P0口。
  • 数码管的位选(选择哪个数码管显示)连接到P2口。

以下编程都是基于C语言的模块化编程实现的,1秒钟依次循环显示【1~F】课堂练习

步骤:

1,首先先定义一个用于存储段码的数组

2,然后定义一个用于控制灯变动的位码

3,初始化定时中断函数

4,定义定时中断服务函数为1秒

具体代码如下:

main.c

cpp 复制代码
#include <REGX52.H>
#include <timer.h>
unsigned int count = 0;

unsigned char NixieTable[]={ 
 
0x3f,0x06,0x5b,0x4f,
 
0x66,0x6d,0x7d,0x07,
 
0x7f,0x6f,0x77,0x7c,
 
0x39,0x5e,0x79,0x71, 0x00};  //首先先用数组定义一个段码
 
 
void seg_dis(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];
}
 

	
void main()
{
	Time0_Init();
    while(1){
			
		}
   
	
}
unsigned int number = 1;
unsigned int i = 0;



//Ö´ÐÐÖжϵÄÖжϳÌÐò
void Timer0_ISR() interrupt 1
{
	 TL0 = 0xCD;		//ÖØÐ¼ÓÔØ³õÖµ	
	 TH0 = 0xD4;	
 
	if(++count == 100){
		seg_dis(number,i);
		i+=1;
		count = 0;
		if(i == 16){  //ÀÛ¼Ó1ÂÖºóÍùÓÒÒÆ¶¯Ò>>Î>>
			number+=1;
			i = 0;
	}
}
	if(number == 8){
			number = 0;
			
	}

}

tiemr.c (初始化定时器)

cpp 复制代码
#include <REGX51.H>
void Time0_Init()
{   



	TMOD &= 0xF0;			
	TMOD |= 0x01;			
	TL0 = 0xCD;			
	TH0 = 0xD4;				
	TF0 = 0;				
	TR0 = 1;				


	  //Æô¶¯ÖÐ¶Ï  
	 EA = 1 ;  //×Ü¿ª¹Ø
	 ET0 = 1;
	

	

}
	

timer.h

cpp 复制代码
#ifndef _TIMER_H_
#define _TIMER_H_


void Time0_Init();

#endif
相关推荐
Pocker_Spades_A11 分钟前
Python快速入门专业版(五十):Python异常处理:try-except语句(捕获单一与多个异常)
开发语言·python
hsjkdhs36 分钟前
C++之友元函数与前向引用
开发语言·c++
ajassi20001 小时前
开源 C# 快速开发(十二)进程监控
开发语言·开源·c#
库库8391 小时前
Java微服务知识点详细总结
java·开发语言·微服务
txwtech1 小时前
第4篇 vs2019+QT调用SDK连接海康相机显示图片
开发语言·数码相机·qt
王嘉俊9252 小时前
Flask 入门:轻量级 Python Web 框架的快速上手
开发语言·前端·后端·python·flask·入门
迎風吹頭髮2 小时前
UNIX下C语言编程与实践8-UNIX 静态库原理与创建:ar 命令的使用与静态库调用全流程
服务器·c语言·unix
做运维的阿瑞2 小时前
Python 面向对象编程深度指南
开发语言·数据结构·后端·python
木木子99992 小时前
Python的typing模块:类型提示 (Type Hinting)
开发语言·windows·python
她说人狗殊途2 小时前
Spring IoC容器加载过程 vs Bean生命周期对应关系图
java·开发语言·rpc