首页 > 其他分享 >51单片机

51单片机

时间:2025-01-06 21:58:07浏览次数:3  
标签:P0 uchar 51 unsigned delay 单片机 include minute

最近在接受51单片机培训,并且要完成一个课设。基于老师今天讲的定时器和前天讲的数码管的知识,迸发出灵感设计了一个计时器,开机即从0s开始计时,一直到60h,此时 h min s 三个时间都归零并重新计时(设置什么样的归零时间看自己需求),由于我只是对于c代码的使用较熟练一些,这里就不写硬件以及原理知识,日后神功大成再来补充。

废话不多说,放代码!

(注意:这里使用的是多模块编程哦。)

main.c
#include <reg51.h>
#include <intrins.h>
#include "mydelay.h"
#include "variable.h"  // 包含全局变量的头文件
#define uchar unsigned char
#define uint unsigned int
	
uchar i = 0;
uchar hour = 0;
uchar minute = 0;
uchar second = 0;


void display();


void main()
{
    
    //定时器0的中断允许位
    ET0 = 1;
    EA = 1;
    
    TMOD = 0x01;
    TH0 = (65535 - 50000) / 256;
    TL0 = (65536 - 50000) % 256;
    //打开定时器
    TR0 = 1;
    
    while(1)
    {
        //数码管的显示
        display();
    }
    
} 
mydelay.c

#include "mydelay.h"
void delay(unsigned int ms)
{
	//circulation   for
	unsigned int i,j;
	for(i = ms;i>0;i--)
	{
		for(j = 110;j>0;j--);
	}
}
mydelay.h

#ifndef _mydelay_h_
#define _mydelay_h_
void delay(unsigned int ms);
	
#endif
timer0.c

#include <reg51.h>
#include "variable.h"  // 包含全局变量的头文件
#define uchar unsigned char

//当计时50ms收到定时器中断的信号后,会执行下面的函数
void Timer0() interrupt 1
{
    //定时器中断的处理代码
    i++;
    if(i == 20)
    {
        //经过了1s
        i = 0;
        second++;
		}
        if(second==60)
        {
            second = 0;
					   minute++;
				}
					     if(minute == 60)
                 {
                    minute = 0;
                     hour++;
								 }
									     if(hour == 60)
                         {
												  second =0;
												   minute=0;
												    hour=0;
												 }
                
        
							
    //每次计时完都需要重新装载初值
    TH0 = (65535 - 50000) / 256;
    TL0 = (65536 - 50000) % 256;
}
display.c

#include <reg51.h>
#define uchar unsigned char
#include "mydelay.h"
#include "variable.h"  // 包含全局变量的头文件

uchar code tab[11] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//0 1,2,3,4,5,6,7,8,9 

//功能:使用数码管显示当前的时间

void display()
{
//second
    P2 = 0xe3;   //最右侧数码管亮 
    P0 = tab[second%10];
    delay(1);
    //消影
    P0 = 0x00;
    delay(1);
    
    P2 = 0xe7;
    P0 = tab[second/10];
    delay(1);
    //消影
    P0 = 0x00;
    delay(1);
//-
	P2 = 0xeb;
	P0 = 0x40;
	delay(1);
	 //消影
    P0 = 0x00;
    delay(1);
//minute
	P2 = 0xef;
	P0 = tab[minute%10];
	delay(1);
	 //消影
    P0 = 0x00;
    delay(1);
		
		P2 = 0xf3;
		P0 = tab[minute/10];
		delay(1);
		 //消影
    P0 = 0x00;
    delay(1);
		
//-
		P2 = 0xf7;
		P0 = 0x40;
			delay(1);
		 //消影
    P0 = 0x00;
    delay(1);
		
//hour
		P2 = 0xfb;
		P0 = tab[hour%10];
			delay(1);
		 //消影
    P0 = 0x00;
    delay(1);
		
		P2 = 0xff;//最左侧数码管
		P0 = tab[hour/10];
			delay(1);
		 //消影
    P0 = 0x00;
    delay(1);
}
variable.h

#ifndef _variable_H
#define _vaariable_H
#define uchar unsigned char
	
extern uchar i; // 记录定时中断触发的次数
extern uchar hour;
extern uchar minute;
extern uchar second;

#endif 

标签:P0,uchar,51,unsigned,delay,单片机,include,minute
From: https://blog.csdn.net/z1614243296/article/details/144973161

相关文章

  • STM32 单片机 练习项目 LED灯闪烁&LED流水灯&蜂鸣器 未完待续
    个人学习笔记文件路径:程序源码\STM32Project-DAP&DAPmini\1-1接线图                        3-1LED闪烁图片新建项目新建项目文件选择F103C8芯片关闭弹出窗口拷贝资料在项目内新建3个文件夹Start、Library、UserStart文件拷贝从......
  • springboot毕业论文管理系统-计算机毕业设计源码95511
    摘要随着高等教育的发展和毕业论文在学术界的重要性日益凸显,毕业论文管理系统成为大学教育管理中不可或缺的一部分。本文设计并实现了一套高效的毕业论文管理系统。系统分为管理员、导师和学生三类用户,各自具有不同的权限和功能。管理员负责后台管理、用户管理和选题审核;导师......
  • ssm游泳馆管理系统851a0--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着人们健康意识的提高,游泳馆作为重要的健身和娱乐场所,其管理效率和用户体验成为关注的焦点。当前,虽然有一些管理系统应用于各类商业......
  • 1651. Hopper 公司查询 III - 力扣(LeetCode)
    1651.Hopper公司查询III-力扣(LeetCode)目标输入表:AcceptedRidesride_iduser_idrequested_at6752019/12/91542020/2/910632020/3/419392020/4/63412020/6/313522020/6/227692020/7/1617702020/8/2520812020/11/25572020/11/92422020/12/911682021/1/1115322021/1/1712......
  • 基于51单片机的直流调速系统设计 
     摘要  在如今的电子产品中,不论是通讯设备还是家用电器、电子玩具等等,直流电机都得到了相关的应用,目前的直流电机已经由数字化走向实用化,即使能够满足功能需求,但可靠性和准准确定得不到保障,所以对于直流电机的调速控制是一个关键性的技术。本文主要研究利用51单片机控......
  • springboot儿童疫苗预约系统-计算机毕业设计源码58516
    摘  要随着人们对健康的重视和疫苗接种意识的提高,疫苗预约系统成为一种重要的健康管理工具。本研究旨在基于SpringBoot框架开发儿童疫苗预约系统,包括首页、网站公告、疫苗资讯和儿童疫苗预约模块,旨在为家长和监护人提供方便快捷的儿童疫苗预约服务,促进儿童健康管理和疫......
  • 高校单片机毕业设计选题大全(源码+原理图+PCB+洞洞板+开题报告+任务书等)
    1.基于单片机智能空气加湿器设计与实现2.基于单片机汽车疲劳驾驶监测设计与实现3.基于C51单片机矿井矿工作业安全监测设计4.基于C51单片机智能坐垫座椅设计与实现5.基于STM32单片机智慧图书馆系统设计与实现6.基于STM32单片机云平台居家老人健康监测系统设计7.基于STM......
  • 基于AT89C51的数字时钟课程设计
    摘要:单片微型计算机简称单片机,又称为微控制器,是将CPU、RAM、ROM、定时/计数器、I/O接口电路集成到一块电路芯片上构成的微型计算机。本次设计的系统由单片机系统、数码管显示系统、键盘、蜂鸣器等组成,通过按键来控制单片机实现数字时钟的时、分、秒显示,12、24制转换,设定时间、闹......
  • springboot551三国之家网站设计(论文+源码)_kaic
     三国之家网站的设计与实现摘要近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定三国之家网站的总体功能模块。然后,详细设计系统的主要功能模块,通过数据库设计过程将相......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设健康饮食推荐系统。本设计主要实现集人性化、高效率、便捷等优点于一身的健康饮......