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
相关推荐
gugucoding13 分钟前
57. 【Java】日志框架:SLF4J与Logback
java·开发语言·logback
此生决int19 分钟前
深入理解C++系列(15)——AVL树
开发语言·c++
筱璦31 分钟前
PHP+ VUE3机构级股票分仓管理交易系统源码可出
开发语言·php·vue3·量化·股票分仓
爱奥尼欧34 分钟前
10.C++ string 实现详解
java·开发语言·c++
骇客野人44 分钟前
Java分布式任务调度方案(完整落地指南)
java·开发语言·分布式
JacksonMx1 小时前
Spring @Async 坑点 + 改造方案
java·开发语言
你怎么知道我是队长1 小时前
IPv6 地址完全解析:从结构到实战
开发语言·php
小雪崩1 小时前
嵌入式学习 day30:minilog
linux·c语言·学习
Dovis(誓平步青云)1 小时前
牛奶不能减成负数:冰箱库存的筛选、去重与不可变更新
android·java·开发语言
OPEN-F1 小时前
Python进阶教程:算法与数据结构入门
开发语言·python