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
相关推荐
耶啵奶膘1 小时前
uni-app头像叠加显示
开发语言·javascript·uni-app
看海天一色听风起雨落1 小时前
Python学习之装饰器
开发语言·python·学习
Want5951 小时前
C/C++圣诞树①
c语言·开发语言·c++
老赵的博客1 小时前
c++ 杂记
开发语言·c++
jimmy.hua1 小时前
[C++刷怪笼]:set/map--优质且易操作的容器
开发语言·c++
w2sfot2 小时前
Passing Arguments as an Object in JavaScript
开发语言·javascript·ecmascript
郝学胜-神的一滴3 小时前
避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
开发语言·c++·程序人生
搞一搞汽车电子3 小时前
S32K3平台eMIOS 应用说明
开发语言·驱动开发·笔记·单片机·嵌入式硬件·汽车
l1t3 小时前
轻量级XML读写库Mini-XML的编译和使用
xml·c语言·解析器
总有刁民想爱朕ha4 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘