栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C51单片机数码(显示时分秒)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C51单片机数码(显示时分秒)

前言:

✌ 作者简介:CC++Edge淇,大家可以叫我--斯淇。(CSDN优质博主建议加这一条!)
 个人主页:CC++Edge淇主页
 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
 如果感觉博主的文章还不错的话,还请不吝关注、点赞、收藏三连支持一下博主哦
 人生格言:这世界形形色色,做好自己才是真!-——从入门到现在不容易~
每日推荐歌曲:如愿.
————————————————

目录

扩展实验1:

 定时器显示建议使用:(烧录软件中的定时计时为(60))

 代码分享(建议使用模块化编程):

延迟函数模块化!

定时中断器模块化!

 视频效果:

时间效果会有一定的误差(我会再次改进)!!!

扩展实验1:

任务说明:视觉上8个LED数码管同时显示“17-32-55“,从00-00-00,每秒钟加1次数!

动态数码管(普中开发板图)!!

 74HC138译码器!

 定时器显示建议使用:(烧录软件中的定时计时为(60))

 最终效果:(会有一定的偏差可能是程序不完善) 

 代码分享(建议使用模块化编程):
#include 
#include 
#include "delay.h"
#include "intrrupt.h"
typedef unsigned char time;

time code date[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D, 0x7D,0x07,0x7F,0x6F};
time hour=0,minute=0,second=0;//¶¨Òåʱ·ÖÃë³õʼ»¯ÊýÖµ£¡
time count=0;

void display(time hour,time minute,time second){  
    int i;
    for(i=1;i<=8;i++){
        switch(i){
           case 1: P2_4=0;P2_3=0;P2_2=0;P0=date[second%10];break;
           case 2: P2_4=0;P2_3=0;P2_2=1;P0=date[second/10];break;
           case 3: P2_4=0;P2_3=1;P2_2=0;P0=0x40;break; //ѡλ1000ÔòÏÔʾ
           case 4: P2_4=0;P2_3=1;P2_2=1;P0=date[minute%10];break;
           case 5: P2_4=1;P2_3=0;P2_2=0;P0=date[minute/10];break;
           case 6: P2_4=1;P2_3=0;P2_2=1;P0=0x40;break;//ѡλ1000ÔòÏÔʾ
           case 7: P2_4=1;P2_3=1;P2_2=0;P0=date[hour%10];break;
           case 8: P2_4=1;P2_3=1;P2_2=1;P0=date[hour/10];break;
        }
        Delay(1);//ÏûÓ°
        P0=0;        
    }
}
void interrupttimmes()interrupt 1  //¶¨Ê±ÖÐ¶ÏÆ÷£¡
{
  TL0 = 0xB0;		    
	TH0 = 0x3C;	  
    count++;
    if(count==18){  
        count=0;     
        second++;
        if(second==60){  
            second=0;
            minute++;
            if(minute==60){ 
                minute=0;
                hour++;
                if(hour==24)
                    hour=0;               
           }
        }
    }
}
void main(){
    Timer0Init();
    while(1){
        display(hour,minute,second);   
    } 
}

延迟函数模块化!
void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

定时中断器模块化!
#include 
 
 
 void Timer0Init()		//³õʼ»¯ÖÐ¶ÏÆ÷(¿ÉÒÔÔÚÖÐÉÕ¼Èí¼þÖÐÌáÈ¡£©
{
	TMOD &= 0xF0;		
	TMOD |= 0x01;		
	TL0 = 0xB0;		    
	TH0 = 0x3C;		    
	TF0 = 0;		    
	TR0 = 1;		    
  ET0=1;             
	EA=1;                  
}

代码注释格式可能有冲突(导致乱码)

 视频效果:

计时器

时间效果会有一定的误差(我会再次改进)!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/975194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号