基于单片机的秒,分,时可调时钟的设计

发布者:精灵宠儿最新更新时间:2012-09-04 来源: 51hei关键字:单片机  可调时钟 手机看文章 扫描二维码
随时随地手机看文章
今天主要做我喜欢的单片机,哦,顺便简单介绍下我学的专业吧! 呵呵!我所学专业名字叫“自动化”怎么样,听上去还可以吧!其实当是报志愿的时候也不知具体是学什么的。经过两三年的摸索才大致知道了我应该重点学什么,怎么学,将来参加后能干什么。说实话还真难摸索啊!两年多才明白了一二,也许这就是当初高中时没好好学上二流大学的惩罚吧!不过还好了现在很喜欢这个专业,怎么介绍这个自动化呢,感觉挺高科技的,其实也没什么,大家在现实生活中都能看到,社会上的很多作业流程都是尽可能的实现自动控制,一个按钮按下从最初的原材料就能得到想要的产品。我们所学就是怎样让它实现,其中的各个环节是怎样起作用的,最后将各个环节数字化实现用以计算机为核心控制并显示的一些整套系统,不过一整套系统不可能一个人都学会全部搞定的,能搞通期中一个环节就可以算是高手了!~呵呵

这个学期接触到了单片机,算是个微处理机,是把计算机的部分功能集成化了的。在生活中随处可见:想厨房用的电磁炉内就集成了单片机的控制,客厅挂的数字万年历也是用单片机实现的!经过了解后,我对此产生了极大的兴趣。下面简单展示一个我做的基于单片机的实验,望在这方面有研究的一起分享学习哈!
点击浏览下一页

这个是用Proteus做的硬件设计,对单片机有兴趣大概都用过吧!另外还有软件程序,如果把这个硬件比作人的外观和手脚(是的还可以控制步进电机伺服系统再用电机去控制一些操作的话就更像机器人了)。那么软件程序就好比是人的大脑。下面我也把自己编的程序展示一下吧!望高手指点:是用C语言编的

本程序要实现秒,分,时的精确计时,另外P1角也就是单片机的左边还有三个按钮可实现时、分、秒的调时。图上没有显示!下面先贴出一部分代码来由于篇幅有限完整的代码从http://www.51hei.com/ziliao/file/shiz5.rar 下载~[page]
#include 
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,};
unsigned char disbitcode[]={0X00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//经38译码器片选数码管
unsigned char disbuf[8]={0,0,0,0,0,0,0,0};//八次循环逐个片选导通并显示。
sbit OE=P2^6;
sbit LE=P2^7;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;

void delay(unsigned int N)
{
 while(N--);
}
void getbuff()
{
  disbuf[0]=second%10;
  disbuf[1]=second/10;
  disbuf[2]=10;
  disbuf[3]=minite%10;
  disbuf[4]=minite/10;
  disbuf[5]=10;
  disbuf[6]=hour%10;
  disbuf[7]=hour/10;
}
void display()
{
 unsigned char i=0;
 for(i=0;i<8;i++)
   {
   LE=1;
   P3=disbitcode[i];         //经38译码器依次片选
   P0=dispcode[disbuf[i]];   //将相应值送入P0口
   OE=0;
   delay(500);
   } 
}
void key()
{
  
    if(K1==0)
  {
   delay(5000);
   if(K1==0)
    {
     second++;
            if(second==60)
    {
     second=0;
     
    }
  while(K1==0);
    }
   
  }
 if(K2==0)
  {
   delay(5000);
   if(K2==0)
    {
     minite++;
            if(minite==60)
    {
     minite=0;
     
    }
  while(K2==0);
    }
   
  }
 if(K3==0)
  {
   delay(5000);
   if(K3==0)
    {
     hour++;
            if(hour==24)
    {
     hour=0;
    }
  while(K3==0);
    }
  
  }    
  
}
void t0() interrupt 1 using 0
{
  tcnt++;
  if(tcnt==4000)
   {
    tcnt=0;
    second++;
    if(second==60)
      {
       second=0;
       minite++;
       if(minite==60)
          {
            minite=0;
            hour++;
            if(hour==24)
              {hour=0;}
          }
      }
    }
}
void main()
{
 TMOD=0x02;
 TH0=0x06;
 TL0=0x06;
 TR0=1;
 ET0=1;
 EA=1;
 second=0;
 minite=0;
 hour=0;
 tcnt=0;
 
 while(1)
 {
   key();
   getbuff();
   display();
 }
}

经过近两个月的努力探索,还是有一点小小的成就感!确实我也做出点东西!相对现在来说是简单的事了!于是就想着做点复杂的有用的,唉!做起来真难!发现自己想做出产品来还差的远啊,之前所做的都应归为实验阶段的东西,拿不出手的啊!现在开始具体的做东西时发现之前学的东西太虚了,在高手面前甚至根本不能说自己学过更不必说会了!

于是我觉得学东西一定要亲历亲为,不能放过一些关键细节,想想当有人问你你会什么技能的时候!你是否能底气十足的说我是个高手呢!呵呵!在学技术时,一定要自己狠一点,要学的东西弄得越透彻越好!不能对自己有宽容,不能打折扣!

事情往往是麻烦之后才会变的简单!就像武林高手那样无招胜有招!

关键字:单片机  可调时钟 引用地址:基于单片机的秒,分,时可调时钟的设计

上一篇:用DS1302做的可调时钟
下一篇:51mcu模拟ps2键盘发送数据

推荐阅读最新更新时间:2024-03-16 13:07

51单片机 16X16点阵循环滚动显示汉字
一、效果展示 二、所用材料 1.16X16点阵 Proteus并不提供16X16的点阵,只能我们自己通过4个8X8的组装为16X16的点阵。 由此可知8*8变成16*16 列需要这样连接: 行需要这样连接: 再把四个放在一起即可: 2.74hc595 详细介绍见我上一篇文章 https://blog.csdn.net/qq_41639829/article/details/82151706 这里需要用到级联,也不算太难,就相当于原来是输入8个数,这需要输入16个,然后再输出,前八个输入的就被自动挤到级联的下一个595中了! 3.stc89c52 三、原理 1.静态显示 同8位的静态显示一
[单片机]
51<font color='red'>单片机</font> 16X16点阵循环滚动显示汉字
MSP430F单片机设计的超低功耗电子温度计方案
本文设计的超低功耗电子温度计能够通过温度传感器测量和显示被测量点的温度,并可进行扩展控制。该温度计带电子时钟,其检测范围为l0℃~30℃,检测分辨率为1℃,采用LCD液晶显示,整机静态功耗为0.5μA。其系统设计思想对其它类型的超低功耗微型便携式智能化检测仪表的研究和开发,也具有一定的参考价值。 1 元器件选择 本系统的温度传感器可选用热敏电阻。在10~30℃的测量范围内,该器件的阻值随温度变化比较大,电路简单,功耗低,安装尺寸小,同时其价格也很低,但其热敏电阻精度、重复性、可靠性相对稍差,因此,这种传感器对于检测在1℃以下,特别是分辨率要求更高的温度信号不太适用。 显示部分可以采用笔段式LCD液晶显示。特别是黑白笔段式液晶
[单片机]
MSP430F<font color='red'>单片机</font>设计的超低功耗电子温度计方案
用DS1302做的可调时钟
/////////////////////////////////////////////////////////////////// /*名称:单片机读取DS1302时钟芯片,带调整功能 / /* / ///////////////////////////////////////////////////////////////////*/ #include reg52.h #define uchar unsigned char #define uint unsigned int #define xiemiao 0x80 #define xiefen
[单片机]
【51单片机STC89C52】IO口模拟PWM控制SG90舵机
一、PWM PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通 过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的 时间占据整个信号周期的百分比,例如方波的占空比就是50%. 占空比 : 一个周期内,高电平占据时长的百分比 STC89C52没有集成PWM功能,可以通过IO口软件模拟,相对硬件PWM来说精准度略差 二、关于舵机控制原理 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的
[单片机]
【51<font color='red'>单片机</font>STC89C52】IO口模拟PWM控制SG90舵机
以STM8单片机为例,该如何实现Bootloader呢?
这次出差是为了升级程序解决Bug,用户已经将产品封装起来,无法开盖,只能使用CAN总线来更新程序,用Bootloader实现。其实就是通过上位机把.bin/hex文件以CAN通讯的方式发送给单片机并存储在规定的Flash中。这个过程与手机端更新APP类似。 以STM8单片机为例,该如何实现Bootloader呢?今天和大家分享一下。 01 什么是Bootloader Bootloader是一段用于更新自身应用软件并独立运行的代码,常被用于升级产品和修复产品bug。STM8单片机如果要下载hex文件的话需要通过STVP和STLINK来实现,单片机的引脚SWIM就是下载接口。如果产品在用户端被封装好了,无法通过SWIM来下载该
[单片机]
以STM8<font color='red'>单片机</font>为例,该如何实现Bootloader呢?
一种基于单片机和PSD的数制化电源
    摘 要 根据单片机80C196KC和现场可编程系统器件PSD302的特性,设计了一种数制化电源装置,提供了程序框图,并对其进行了谐波分析。它是一种高性能的通用装置,可替代传统的PWM逆变电源。     关键词 电力电子器件 电源 单片机 现场可编程系统器件         随着现代工业的发展和社会进步,人类对电能种类的需求不断增加,如要求电能有多种制式:直流稳压电源、交流工频电源、中高频感应加热电源、高压电解电源等,而且需求的数量也在不断增加。要提供这些制式的电能,就要有许多不同的电源变换装置。此外,为满足各种电气设备对电源的特殊要求,也需要一些装置对电源进行变换和控制。这些装置品种繁多,其原理
[应用]
单片机在绝热材料导热系数测定系统中的应用
1 引言 随着社会的发展,人们环保意识的增强,对建筑材料的要求越来越高,导热系数作为衡量建筑材料保温性能的重要指标一直为人们所重视,因而开发设计出高精度绝热材料导热系数测量仪器十分必要。绝热材料导热系数测量基于一维稳态传热原理,测出试件冷热面的平均温度(TC、TH)和稳态加热功率(P),由下式即可计算出导热系数: =Pd/A(TH-TC),其中d为试件厚度,A为试件对应主加热器部分的横截面积。整个测量系统主要由炉体和温度、功率测控系统两部分组成,炉体按国家标准的要求加工制造,大同小异,而温度、功率测控系统则随着电子技术的发展不断更新。 温度、功率测控系统的特点是要测量和控制多路温度信号,判断到达设定的状态后再进行计算。常见的
[单片机]
<font color='red'>单片机</font>在绝热材料导热系数测定系统中的应用
通过利用C8051F020单片机实现立体声信号相位差电平差测试仪的设计
将LR立体声信号经频谱分析、整形及占空比检测电路进行处理,采用过零鉴相法,通过测矩形波占空比,实现相位差的测试。将LR信号用AD736专用芯片实现AC/DC转换,通过单片机编程,得到LR电平差。 在立体声播音或放音时,如果左右声道信号存在相位差和电平差,对播音或放音质量将会产生一定影响,出现声像漂移、音量减小、噪音增大和失真等故障现象。左右声道相位差电平差越大,音质也越差,严重时还会造成无音故障。 为此文中设计了立体声信号相位差电平差测试仪,只有准确测出相位差电平差,再用补偿电路进行修正,才能保证播音或放音质量,更好地满足人们欣赏到音质优美的广播或音乐的需要。 1 设计方案 如图1所示,是立体声信号相位差电平差测试仪原理方
[单片机]
通过利用C8051F020<font color='red'>单片机</font>实现立体声信号相位差电平差测试仪的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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