51单片机——实验2:数码管显示

本文介绍了通过Keil编程实现两个数码管同时显示0-9并每隔1s切换,以及秒表设计的过程。实验中涉及数码管工作原理、驱动方式、KeilC编程技巧和硬件配合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验任务

  1. 实现两个数码管同时显示0-9,间隔时间为1s;
  2. 实现两个数码管秒表设计。

二、实验目的及原理

1.实验目的:了解数码管的分类、基本构造、显示原理、段码编排规则;掌握数码管的常用驱动方式、动态与静态显示原理;理解Proteus LED 数码管显示电路原理;掌握Keil C语言实现数码管0-9的编程思路。

2、实验原理:数码管由8个发光二极管组成,通过控制这8个灯的亮灭显示不同的数字。

三、实验中使用的仪器与材料

Keil、PZ-ISP、普中科技51单片机、数码管、发光二极管

四、实验方案、步骤及原始记录(数据、图表、计算等)

1.任务一:实现两个数码管同时显示0-9,间隔时间为1s

(1)用keil编写程序,输出hex文件

​​​​​​​

(2)将输出的hex文件烧录到开发板上

2.任务二:实现两个数码管秒表设计

(1)用keil编写程序,输出hex文件

#include<reg52.h>

#define GPIO_DIG P0

void Delay10ms(unsigned int c);  //延时函数声明

//控制数码管显示0-9数字
unsigned char code DIG_CODE[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; 

//主函数
void main(void)
{
   unsigned char i = 7; //个位
	 unsigned char j = 0;
	 unsigned char t = 5; //十位
	 
	 
	 while(1)
	 {
     
		 
		 for(j=0;j<50;j++)  //多次循环,利用“余晖效应”产生两个数码管同时亮的效果
		 {
			 P2=0xe3;  //P2_4,P2_3,P2_2控制哪个数码管亮
	     GPIO_DIG = ~DIG_CODE[i]; //选择亮哪个数字
		   Delay10ms(1); //延时
			 
			 //清屏
			 GPIO_DIG = 0x00;
		 
		   P2=0xe7;
		   GPIO_DIG = ~DIG_CODE[t];
		   Delay10ms(1);
			 
			 //清屏
			 GPIO_DIG = 0x00;
		 
		 }
		 
	   i++;
	   if(i==10) //控制个位0-9的数字循环
	   {
	     i=0;
			 t++; //个位满10向十位进1
			 if(t==6)  //控制十位0-5循环
			 {
				 t=0;
			 }
	   }
	 
	 }
	 
}

//延时函数
void Delay10ms(unsigned int c)
{
    unsigned char a,b;
	  for( ;c>0;c--)
	  {
	    for(b=38;b>0;b--)
	      {
	        for(a=130;a>0;a--);
	      }
	  }
}

(2)将输出的hex文件烧录到开发板上

五、实验结果及分析、实验过程中遇到问题及处理过程说明

1.任务一结果:

2.任务二结果:

3.遇到的问题及处理过程

       在完成任务1时将程序烧录在开发板上,只能实现1个数码管的数字显示,不知该如何选择数码管,从原理图入手却又看不懂,于是结合网上资料和原理图,发现74HC138译码器可用于控制数码管的选择,增补P2=0x..后,又出现两个灯无法同时亮的问题,网上查资料得可利用余晖效应,通过两个数码管不断地短时间内交替亮,使人产生两个数码管同时亮的错觉,反映到编程上即可用循环+延时。

六、实验总结及心得体会

       通过本次实验,我了解了数码管的显示原理,学会了用C语言实现数码管显示0-9的编程思路及数码管的位选。编程时一定要软硬结合,依据原理图编程,会看原理图上的标签,都是一一对应的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值