基于8位数码管的可调时钟时钟课程设计

发布者:RadiantWhisper最新更新时间:2015-07-21 来源: eechina关键字:数码管  可调时钟  课程设计 手机看文章 扫描二维码
随时随地手机看文章
这个东西折腾我快两个月啊~!也是带啦做的不是一直在做是一边学习一边玩弄来的啊~!但是怎么说我也弄出来啊~!心里好满足啊~!因为这个可算是自己的成果。也给谢谢这次课程设计因为就这个设计让我理解很多东西让我感觉进步很多。现在就差自己做PCB板啊~!然后就是全部搞定啊~!哈哈~!

电路很简单 8位共阴数码管 (如果没有买的可以买2个四位数码管) 段选接P2口 位选接p1口,用stc单片机可以直接连接,两个按键接p1.6 和p1.7,实现时间的调整功能.完整程序代码下载地址:http://www.51hei.com/f/dzszkt.rar

这个就是我自己弄的程序小时钟的:

#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};
uchar code kai[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7};
sbit tiao=P1^6;
sbit gai=P1^7;
uchar hour,min,sec,e,set,dada,x,i,j,u,v,w,s,m,n,p,q;
void delay(uchar k)
{
    uchar a,b;
 for(a=0;a  {
  for(b=0;b<100;b++)
  {
   ;
  }
 }
}
void time_cond(void)
{
 if(sec==59)
 {
  sec=0;
  min++;
 }//sec
 if(min==59)
 {
  min=0;
  hour++;
 }//min
 if(hour==23)
 {
  hour=0;
 }//hour
}//time_con
void xianshi(uchar i,j,u,v,w,s)
{
 P2=table[i];
 P1=kai[0];
 delay(5);
 P2=table[j];
 P1=kai[1];
 delay(5);
 P2=table[p];
 P1=kai[2];
 delay(5);
 P2=table[u];
 P1=kai[3];
 delay(5);
 P2=table[v];
 P1=kai[4];
 delay(5);
 P2=table[q];
 P1=kai[5];
 delay(5);
 P2=table[w];
 P1=kai[6];
 delay(5);
 P2=table[s];
 P1=kai[7];
 delay(5);
}
void KEY_tiao(void)
{
 if(gai==0)
 {
  e++;
 }
 if(e>3)
 {
  e=1;
 }
 delay(200);
}//tiaozheng
void display_h(void)
{
 P2=table[i];
 P1=kai[0];
 delay(20);
 P2=table[j];
 P1=kai[1];
 delay(20);
 P2=table[11];
 P1=kai[0];
 delay(20);
 P2=table[11];
 P1=kai[1];
 delay(20);
 i=hour/10; 
 j=hour%10;
}//display_h
void display_m(void)
{
 P2=table[u];
 P1=kai[3];
 delay(20);
 P2=table[v];
 P1=kai[4];
 delay(20);
 P2=table[11];
 P1=kai[3];
 delay(20);
 P2=table[11];
 P1=kai[4];
 delay(20);
 u=min/10;
 v=min%10;  
}//display_m
void tiaozheng(void)
{
  if(gai==0)
  TR0=0;
  KEY_tiao();
  switch(e)
 {
  case 1 :{
    if(tiao==0)
    {
     hour++;
     display_h();
     if(hour>24)
     {
      hour=0;
     }
    }
          }//case 1
   break;
   case 2 :{
    if(tiao==0)
    {
     min++;
     display_m();
     if(min>60)
     {
      min=0;
     }
    }
            }//case 2
   break;
        }//switch
}//tiaozheng[page]
void Timer_init()
{
 ET0=0;
 TCON=0x00;
 TMOD=0x01;//工作方式1
 TH0=0x3c;
 TL0=0xaf;//定时50mS,12mHz
 ET0=1;
}//Timer_init
void Timer_Start()
{
 TR0=1;
}//Timer_Start
void Timer_interrupt(void) interrupt 1 using 0
{
 EA=0;
 dada++;
 if(dada==20)
 {
  dada=0;
  sec++;
 }
 EA=1;
 TH0=0x3c;
 TL0=0xaf;
}//Timer_interrupt
void Int1_interrupt(void) interrupt 2 using 2
{
 TR0=0;
}//Int1_interrputd
void Int0_interrupt(void) interrupt 0 using 1
{
 TR0=1;
}//Int0_interrput
void main(void)
{
 EA=1;
 EX0=1;
 EX1=1;
 Timer_init();
 Timer_Start();
 while(1)
 {
  xianshi(i,j,u,v,w,s);
  time_cond();
  i=hour/10; 
  j=hour%10;
  u=min/10;
  v=min%10;
  w=sec/10;
  s=sec%10;
  p=10;
  q=10;
    tiaozheng();
 }//while
}//main

关键字:数码管  可调时钟  课程设计 引用地址:基于8位数码管的可调时钟时钟课程设计

上一篇:51串口通信程序(带详细注释)
下一篇:LCD12232串行显示C51程序

推荐阅读最新更新时间:2024-03-16 14:25

MSP430F149流水灯闪烁以及数码管的显示
今天下午写了一个流水灯闪烁的实验,总的来说,不难,因为这块板子集合的电路图没有上一块那么复杂,所以总的来说,还是比较顺手,开始的时候,出现流水灯没有流转的现象,原来是没有加入延时函数,后来经过调整,结果很快就出来了 电路示意图: 示例代码: #include msp430x14x.h #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(do
[单片机]
MSP430F149流水灯闪烁以及<font color='red'>数码管</font>的显示
51单片机——八段数码管
在对LED灯的应用有了一定的了解之后,我开始学习了一些关于数码管的应用。 在我的开发板上,有独立共阳管和八位共阴管 。数码管从高位到低位的段码依次是h(dp),g,f,e,d,c,b,a共八位。共阴管是“1”表示亮,“0”表示灭,而共阳管则是相反的。顺便提一句,若是要检测数码管是否完好,可以用数码管“8”来检测。 若是要在数码管上显示0~F,则可以用一套固定的十六进制数表示,可以放在数组中,为{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。这一个数组是用来表示共阴管的亮的,而若是共阳管的时候,需要在前面加上“
[单片机]
按键与数码管汇编例程
/* 程序效果:八个数码管同时显示,按键最后按下的八个数值 */ ORG 0000H LJMP START ORG 0030H START: MOV 30H,#00 //赋初值 MOV 31H,#00 MOV 32H,#00 MOV 33H,#00 MOV 34H,#00 MOV 35H,#00 MOV 36H,#00 MOV 37H,#00 MOV P1,#0FFH //打开最右边的数码管 MOV P2,#00 //给P2口送0值 LOOP: LCALL KEY //不断扫描键盘 LCALL DISPLAY //不断显示值 LJMP LOOP //键盘扫描子程序 KEY: MOV
[单片机]
max7219驱动4个数码管连接图
MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。 2、MAX7219功能介绍 1.多种译码方式和译码位
[电源管理]
51单片机+74hc595锁存器驱动一个静态数码管
实验开发板HC6800 v2.8 (淘宝可以查到) 将JP2 与JP3相连即可,注意排线要反接 代码如下: /* * 标题: 试验数码管上如何显示数字(共阳极) * * * * 连接方法:P2 与P3 用8PIN排线连接 * * * * * / #include reg51.h #include intrins.h void delay(unsigned int i); //函数声名 // 此表为 LED 的字模,0~F un
[单片机]
51单片机+74hc595锁存器驱动一个静态<font color='red'>数码管</font>
4×4键盘及8位数码管显示构成的电子密码锁
1. 实验任务 用 4×4 组成 0 - 9 数字键及确认键。 用 8 位数码管组成显示电路提示信息,当输入密码时,只显示“ 8. ”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用 LED 发光二极管亮一秒钟做为提示,同时发出“叮咚”声;若密码不正确,禁止按键输入 3 秒,同时发出“嘀、嘀”报警声;若在 3 秒之内仍有按键按下,则禁止按键输入 3 秒被重新禁止。 2. 电路原理图 图 4.33.1 3. 系统板上硬件连线 (1). 把“单片机系统”区域中的 P0.0 - P0.7 用
[单片机]
4×4键盘及8位<font color='red'>数码管</font>显示构成的电子密码锁
数码管电子钟C语言程序设计
#include reg52.h #include intrins.h unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code ={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char data dis_buf ; unsigned char data dis_index; unsigned char hour,min,sec; unsign
[单片机]
【STM32】4-数码管
一、数码管介绍 数码管是一种半导体发光器件,其基本单元是发光二极管。数码管也称为LED数码管,是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。 LED数码管根据LED的不同接法可以分为2类:共阴数码管和共阳数码管。 共阴数码管码表 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0 1 2 3 4 5 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 6 7 8 9 A B 0x39, 0x5e, 0x79, 0x71, 0x00, C D E F
[单片机]
【STM32】4-<font color='red'>数码管</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved