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
相关推荐
ss27310 分钟前
AI全栈实战 | 3.3-01 Python OOP:__init__ 真的是构造函数吗,元类怎么让 Django Model 变魔法
开发语言·python·django
weixin_307779135 小时前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
一水鉴天8 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能
Frank_refuel8 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
Wang's Blog9 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_9620715710 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
\光辉岁月/11 小时前
5.java-数组
java·开发语言
Java后端的Ai之路11 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
谢亮_vipxieliang11 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
时间的拾荒人11 小时前
Qt 多线程详解:从 QThread 到实战
开发语言·qt·面试