单片机课设 - 电子时钟 (仿真,仿真代码,实验板代码)

这篇具有很好参考价值的文章主要介绍了单片机课设 - 电子时钟 (仿真,仿真代码,实验板代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Proteus 实现:

1. 主要器件
C51单片机、8位LED数码管(共阴极)…

2. 仿真图如下:

单片机课设 - 电子时钟 (仿真,仿真代码,实验板代码)
3. 主要特点
1. 24进制显示
2. 最下方三个按钮分别控制时、分、秒


proteus 实现代码:

#include <reg51.h>
#include <intrins.h>
void Delayms(unsigned int xms){
  unsigned char i,j;
  while(xms--){
    i=2;
    j=239;
  do{
    while(--j);
 }
  while(--i);
 }
}

char led_mod[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

unsigned char net = 0;//按键 
unsigned char count = 0; 
unsigned char time[] = {23, 58, 50};//默认数值 
unsigned char timp = 0xc0;

sbit tt = P3^2;
sbit mm = P3^3;
sbit ss = P3^4;

void disp(){//数码管显示 
 P2 = 0x7f;
    P0 = led_mod[time[2] % 10];
    Delayms(3);
 
    P2 = _cror_(P2, 1);
    P0 = led_mod[time[2] / 10];
    Delayms(3);
 
    P2 = P2 = _cror_(P2, 1);
    P0 = timp;
    Delayms(3);
 
    P2 = _cror_(P2, 1);
    P0 = led_mod[time[1] % 10];
    Delayms(3);
 
    P2 = _cror_(P2, 1);
    P0 = led_mod[time[1] / 10];
    Delayms(3);
 
    P2 = P2 = _cror_(P2, 1);
    P0 = timp;
    Delayms(3);
 
    P2 = _cror_(P2, 1);
    P0 = led_mod[time[0] % 10];
    Delayms(3);
 
    P2 = _cror_(P2, 1);
    P0 = led_mod[time[0] / 10];
    Delayms(3);
}

timer1() interrupt 3{//中断方式1 
 TH1 = 0x3C;
 TL1 = 0xB0;
 count = count + 1;
 if(count == 20){
  count = 0; 
        time[2] = time[2] + 1;
  if(time[2] >= 60){
   time[2] = 0;
   time[1] = time[1] + 1;
   if(time[1] >= 60){
    time[1] = 0;
    time[0] = time[0] + 1;
    if(time[0] >= 24){
     time[0] = 0;
    }
   }
  } 
 }
}

void key(){//按键 
   net = net + 1;
   if(net == 6){
  net = 0;
     if(tt == 0){
      time[0] = time[0] + 1;
      if(time[0] >= 24){
       time[0] = 0;
   }
  Delayms(10);
  }
   
  if(mm == 0){
  time[1] = time[1] + 1;
  if(time[1] >= 60){
     time[1] = 0;
  }
   Delayms(10);
  }
   
  if(ss == 0){
  time[2] = 0; 
  Delayms(10);
  }
   
  tt = 1;
  mm = 1;
  ss = 1;
   }
}

int main(){//主函数 
    TMOD = 0x10;
 TH1 = 0x3C;
 TL1 = 0xB0;
 EA = 1;
 ET1 = 1;
 TR1 = 1;
 while(1){
  disp();//显示 
  if(tt == 0 || mm == 0 || ss == 0){
    Delayms(10);
    key();
     }
 }
}

上述代码包含的主要内容:
1. T1定时方式1,用到T1中断函数
2. 每50ms溢出一次,一共20次为 1s 记一次数
3. 按键知识,消抖动...
4. 移位知识,_crol_() 左移,_cror_() 右移

上述知识点都是课本知识,理解之后,看懂上述代码完全没有问题。

实验板 实现代码:

#include <reg51.h>
#include <intrins.h>
void Delayms(unsigned int xms){
  unsigned char i,j;
  while(xms--){
    i=2;
    j=239;
  do{
    while(--j);
 }
  while(--i);
 }
}

char led_mod[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

unsigned char net = 0;//按键 
unsigned char count = 0; 
unsigned char time[] = {23, 58, 50};//默认数值 
unsigned char timp = 0xc0;

sbit tt = P2^2;
sbit mm = P2^3;
sbit ss = P2^4;

void disp(){//数码管显示 
	tt = 0;
	mm = 0;
	ss = 0;
    P0 = led_mod[time[2] % 10];
    Delayms(3);
 
    tt = 1;
	mm = 0;
	ss = 0;
    P0 = led_mod[time[2] / 10];
    Delayms(3);
 
    tt = 0;
	mm = 1;
	ss = 0;
    P0 = timp;
    Delayms(3);
 
    tt = 1;
	mm = 1;
	ss = 0;
    P0 = led_mod[time[1] % 10];
    Delayms(3);
 
    tt = 0;
	mm = 0;
	ss = 1;
    P0 = led_mod[time[1] / 10];
    Delayms(3);
 
    tt = 1;
	mm = 0;
	ss = 1;
    P0 = timp;
    Delayms(3);
 
    
    tt = 0;
	mm = 1;
	ss = 1;
    P0 = led_mod[time[0] % 10];
    Delayms(3);
 
    
    tt = 1;
	mm = 1;
	ss = 1;
    P0 = led_mod[time[0] / 10];
    Delayms(3);
}

timer1() interrupt 3{//中断方式1 
	TH1 = 0x3C;
	TL1 = 0xB0;
	count = count + 1;
	if(count == 20){
		count = 0; 
        time[2] = time[2] + 1;
		if(time[2] >= 60){
			time[2] = 0;
			time[1] = time[1] + 1;
			if(time[1] >= 60){
				time[1] = 0;
				time[0] = time[0] + 1;
				if(time[0] >= 24){
					time[0] = 0;
				}
			}
		} 
	}
}
 

int main(){//主函数 
    TMOD = 0x10;
	TH1 = 0x3C;
	TL1 = 0xB0;
	EA = 1;
	ET1 = 1;
	TR1 = 1;
	while(1){
		disp();//显示 
	}
}

为了切合实验板,对仿真代码做了一些调整。因为嫌麻烦,所以删去了按键功能,本代码在实验板上只能显示时间,不能利用按键改时间。初始值为23:58:50文章来源地址https://www.toymoban.com/news/detail-503702.html

到了这里,关于单片机课设 - 电子时钟 (仿真,仿真代码,实验板代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机课程设计--电子密码锁(源代码+proteus仿真)

    目录 器件选择 电路图  代码  1、LCD显示功能 1)LCD端口 2)字模的定义 3)提示符的显示 4)输入密码/重置密码时密码行的显示 2、总控制 1)主函数 2)key函数---判断用户想要进行的操作 3)display函数功能---接收用户输入数据并调用相应函数进行操作 4)判断密码正误 5)重置

    2024年02月09日
    浏览(48)
  • 基于单片机的电子时钟

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87453487 源码获取 本次设计由于前期我们已经完成了单片机最小系统的制作,为了节省时间,故利用已有资源,选择用单片机最小系统来实现数字钟的制作。采用的是以单片机芯片为核心,辅以必

    2024年02月04日
    浏览(42)
  • 基于单片机的电子时钟设计

    收藏和点赞,您的关注是我创作的动力   电子时钟具有长远的发展历史,它的出现使得人们对时间的概念有了进一步的认知和了解,可以说意义十分的重大。在时代的推动,以及市场的需求下,电子时钟的功能以及性能都有着质的突破,而且应用的范围也越来越广,到处都

    2024年02月04日
    浏览(51)
  • 51单片机电子时钟(C语言)

     全部硬件电路分为四大部分: 控制模块51单片机; 显示模块LCD1602,由P0口控制; 计时模块DS1302,由P1口控制; 输入按键,由P3口控制。         实际设计硬件电路时应考虑到51单片机的电源、复位电路以及外接晶振,时钟芯片DS1302的备用电源等。 从1302的寄存器中读取数据

    2024年02月07日
    浏览(45)
  • 基于单片机的6位电子时钟

    点击链接获取Keil源码与Project Backups仿真图 https://download.csdn.net/download/qq_64505944/87413394 源码获取 近年来随着科技的飞速发展,人们对单片机技术的应用正在不断加深。单品微型计算机简称单片机,是典型的嵌入式微控制器,又称单片微控制器,它不是完成某个逻辑功能的芯片,

    2024年02月07日
    浏览(41)
  • 51单片机数字电子钟设计(数电课设,含时间显示、校准、整点报时、闹钟功能)

    51单片机数字电子钟设计(数电课设,含时间显示、校准、整点报时、闹钟功能) 首先展示硬件设计部分,此处采用proteus仿真演示。其中液晶屏上面一行显示的是实际时间,下面一行显示的是设定闹钟时间。通过调节单刀双掷开关来改变正在调整的时间是实际时间还是闹钟时

    2024年02月11日
    浏览(56)
  • 使用51单片机和DS1302时钟芯片做一个简易的电子时钟

    今天给大家推荐一个51单片机小实验,带你使用51单片机做一款简易的电子时钟,其中计时模块采用DS1302硬件模块,显示采用LCD显示屏,具体怎么实现开来一起看看吧! DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟和31字节静态 RAM,通过简单的串行接口与

    2024年02月11日
    浏览(49)
  • C51单片机的电子时钟(数码管显示)

    普中科技51单片机开发板STC89C52 查看这两个原理图,我们可以发现控制这8个数码管由P22、P23、P24这三个控制,就相当于三个二进制数来控制数码管,三个二进制数(000-111)总共有8个,每一个二进制代表控制一个数码管。而控制数码管的发光二极管P0-P7控制,例如要想数码管显

    2024年02月11日
    浏览(51)
  • 基于51单片机、DS1302时钟模块的电子闹钟设计

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:以下是本篇文章正文内容,下面案例可供参考 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作

    2024年02月02日
    浏览(70)
  • 基于AT89C51单片机的电子时钟设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87695258?spm=1001.2014.3001.5503 源码获取 主要内容: 1.设计出电子数字钟的电路,并用protus进行仿真画出对应的电路图 2.设计出电子数字钟的源程序,并用Keil进行编辑生成HEX文件 3.在protus中进行测试。

    2024年02月09日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包