基于8051和Proteus的数字时钟 程序的编写和仿真

发布者:HarmoniousPeace最新更新时间:2016-10-18 来源: eefocus关键字:Proteus  数字时钟 手机看文章 扫描二维码
随时随地手机看文章
本程序功能及特点:通过8051芯片及数码管实现数字时钟,并可以通过如下图中的两个按键对时钟进行调节,其中 “PAUSE”按键的作用是暂停/启动时钟并选择要修改的时间参数“时”,“分”,“秒”,被选择参数例如下图中从左到右依次为“时,分,秒”,当小时被选中并被修改时会有最下面两点的点亮以作为提示,“CHANGE”按键用来对被选中的参数进行修改,只能进行加法修改,超过参数的上限会自动归零,
注:本程序仅供本人日后学习参考使用,不足之处请见谅,
基于8051和Proteus的数字时钟 程序的编写和仿真 - 瀚海浸月 - 瀚海浸月
#include
sbit dualock=P2^0;
sbit weilock=P2^1;
unsigned char code duacode[]={0x3f,0x06,0x5b,0x4f,
                                                         0x66,0x6d,0x7d,0x07,
         0x7f,0x6f,0x77,0x7c,
         0x39,0x5e,0x79,0x71};
unsigned char aa=0,hour=0,mint=0,sec=0,bb=0,*choose;
void display(unsigned char,unsigned char,unsigned char);
void delay();
void init();
void main()
{
    init();
while(1)
{
display(hour,mint,sec);
}
}
 
void init()                                 //初始化
{
EA=1; ET0=1;
EX0=1;IT0=1;
EX1=1;IT1=1;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TR0=1;
}
 
void display(unsigned char hour,unsigned char mint,unsigned char sec)    //显示函数
{
  weilock=1;
  P0=~(1<<0);
  weilock=0;
  dualock=1;
  P0=(bb==1)?duacode[sec%10]|0x80:duacode[sec%10];
  dualock=0;
  delay();
  weilock=1;
  P0=~(1<<1);
  weilock=0;
  dualock=1;
  P0=(bb==1)?duacode[sec/10]|0x80:duacode[sec/10];
  dualock=0;
  delay();
 
  
  weilock=1;
  P0=~(1<<2);
  weilock=0;
  dualock=1;
  P0=(bb==2)?duacode[mint%10]|0x80:duacode[mint%10];
  dualock=0;
  delay();
  weilock=1;
  P0=~(1<<3);
  weilock=0;
  dualock=1;
  P0=(bb==2)?duacode[mint/10]|0x80:duacode[mint/10];
  dualock=0;
   delay();
 
  
  weilock=1;
  P0=~(1<<4);
  weilock=0;
  dualock=1;
  P0=(bb==3)?duacode[hour%10]|0x80:duacode[hour%10];
  dualock=0;
  delay(); 
  weilock=1;
  P0=~(1<<5);
  weilock=0;
  dualock=1;
  P0=(bb==3)?duacode[hour/10]|0x80:duacode[hour/10];
  dualock=0;
  delay();
}
 
void delay()
{
unsigned char i=30;
while(i--);
}
 
void ext0() interrupt 0                                         //外部中断0 选中被修改参数
{
TR0=0; bb++;
switch(bb)
{
case 1: choose=&sec; break;
case 2: choose=&mint;break;
case 3: choose=&hour;break;
case 4: TR0=1;bb=0; break; 
}
 
void timer0() interrupt 1                                   
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
if(++aa==20) {aa=0;sec++;}
if(sec==60) {sec=0;mint++;}
if(mint==60) {mint=0;hour++;}
}
 
void ext1() interrupt 2                           // 外部中断2 对被选中参数进行修改
{
*choose+=1;
if(sec==60) sec=0;
if(mint==60) mint=0;
if(hour==24) hour=0;
}

关键字:Proteus  数字时钟 引用地址:基于8051和Proteus的数字时钟 程序的编写和仿真

上一篇:C8051F340串口通信程序(UART0)
下一篇:VIP售后服务再升级优派PJD7828HDL助力影吧酷“炫”登场

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

8051单片机的四组I/O端口
1.概述 单片机的I/O端口是输入信号和输出信号的通道。8051单片机有P0、P1、P2、P3四组I/O 端口,每组端口有8个引脚。 2.P0端口 2.1 概述 P0端口有P0.0~P0.7共8个引脚,这些引脚除了可用作输入引脚和输出引脚外,在外接存储器时,还可用作地址/数据总线引脚。P0端口每个引脚的内部电路结构都相同,其内部电路结构如图1所示。 图1 P0端口的内部电路结构图 2.2 P0端口用作输出端口的工作原理 下面讲解单片机需要从P0.x 引脚输出高电平“1”。如图1所示,单片机内部相关电路通过控制线送出“0(低电平)”到与门的一个输入端和电子开关的控制端,控制线上的“0”一方面使与门关闭(即与门的一端为“0”时
[单片机]
<font color='red'>8051</font>单片机的四组I/O端口
Proteus仿真51单片机C语言-单片机向主机发送字符串
简介:单片机向主机发送字符串:单片机按一定的时间间隔向主机发送字符串,发送内容在虚拟终端显示。
[单片机]
<font color='red'>Proteus</font>仿真51单片机C语言-单片机向主机发送字符串
在嵌入FPGA的IP核8051上实现TCP/IP的设计
0 引言 随着芯片规模的越来越大、资源的越来越丰富, 芯片的设计复杂度也大大增加。事实上, 在芯片设计完成后, 有时还需要根据情况改变一些控制, 这在使用过程中会经常遇到。这时候如果再对芯片设计进行改变将是很不可取的, 因为需要设计人员参与这种改变, 这无论是对设计者还是用户都是不能接受的。于是就有必要让这种可以改变的简单控制在芯片设计时就存在, 而且同时还应该使这种改变相对容易, 比较通用, 并且与芯片的其它设计部分尽量不相关。为了满足上述的要求, 在FPGA中嵌入一个比较理想的选择, 而这个即通用又控制简单的IP核最好选择8051微处理器。 在FPGA中植入8051后, 还可在上面实现简单的TCP/IP协议, 以支持远程访
[嵌入式]
8051单片机实战分析(以STC89C52RC为例) | 05 - 静态数码管驱动
1 数码管介绍 数码管是给我们展示数据或者信息的电子器件,它是最原始以及成本比较低。以下是数码管的实物图: 1.1 数码管的段选与位选 以下是数码管的每一段所对应的位置: 从图可以看出来,数码管共有 a、b、c、d、e、f、g、dp 这么 8 个段,而实际上,这 8 个段每一段都是一个 LED 小灯,所以一个数码管就是由 8个 LED 小灯组成的。注意 dp 这个段,它是表示一个小数点!我们看一下数码管内部结构的示意图: 数码管分为共阳和共阴两种: 共阴数码管就是 8 只 LED 小灯的阴极是连接在一起的,阴极是公共端,由阳极来控制单个小灯的亮灭。 同理共阳数码管就是阳极接在一起。 看到这里我们就不难猜出,所谓的
[单片机]
<font color='red'>8051</font>单片机实战分析(以STC89C52RC为例) | 05 - 静态数码管驱动
8051单片机TLC1549数据采集程序源代码
#i nclude stdio.h #i nclude REGX51.H #i nclude iic.h #define uchar unsigned char #define uint unsigned int uint Timer_Pro_Flag=0;//0为显示处理,1为时序采集处理 sbit TEST_CAP_VOL_CRLT=P1^0;//用于控制外部继电器 sbit PWM_Pin=P3^7;//PWM输出 sbit IrDA_in_Pin=P1^0;//红外脉冲输入检测脚 bit PWMFlag=0; uchar OLD_TH0,OLD_TL0; #define MAXCMD_LENGTH 7 #d
[单片机]
基于C8051F121在智能车辆检测器中的设计与应用
1 引言 随着我国交通基础设施建设加速发展的势头,交通量在快速增长,随之而来的便是道路拥堵、大气污染.以及交通事故带来的危害。为缓解道路拥堵、改善出行条件、提高道路安全性.智能交通控制系统作为一种非现场执法手段.可对闯红灯、超速、逆行、违章变道行驶、压黄线等多种违法现象起到迅速的监控、抓拍、远程传输.为迅速的获取违章证据及时处理交通违章,提供行之有效的监测手段.为减少和避免交通事故的发生起到积极作用。因此.在文章中所开发的车辆检测器.其作用是为智能交通控制系统提供足够的信息以便于最优的控制。从智能交通控制系统的应用形式上可以看出智能车辆检测器是交通信息采集的一个重要组成部分。 2 车辆检测器 车辆检测器是高速公路和城市交通道路
[单片机]
基于C<font color='red'>8051</font>F121在智能车辆检测器中的设计与应用
基于STM32控制直流电机加减速正反转proteus仿真设计
本设计: 基于STM32控制直流电机加减速正反转proteus仿真设计(程序+仿真+设计报告+讲解视频) 仿真:proteus8.9 程序编译器:keil 5 编程语言:C语言 编号C0011 功能说明: 本设计由STM32F103、L298N电机驱动电路、按键电路组成。 1.通过按键可以控制电机,正转、反转、加速、减速、停止。 2.档位分4档,并且可以通过按键顺序正转、反转、加速、减速、停止。 3.档位可以代码自定义。 附赠相关论文,根据实物写的,与仿真功能基本一致。也有与仿真一致的设计报告。 仿真图(提供源文件): 源程序(提供源文件): 以下为部分程序: int main(void) { delay_init(
[单片机]
基于STM32控制直流电机加减速正反转<font color='red'>proteus</font>仿真设计
基于8051单片机和SC1128芯片实现病房呼叫系统的设计
传统的病房呼叫系统普遍采用有线式,不仅布线安装繁琐、维护不便、利用率低,而且实时性差。虽然无线式呼叫系统没有布线问题,但它的可靠性差,而且无线电波会干扰其它医疗仪器设备,目前大多数医院不采用无线呼叫系统。 随着电力载波技术的发展,应用低压电力线作为传输媒质,采用扩频、数字编码、单片机控制等技术实现病房呼叫已成为可能。本文运用电力载波技术设计了一种病房呼叫系统。 1 病房呼叫系统的基本要求 临床求助呼叫是传送临床信息的重要手段,病房呼叫系统是病人请求值班医生或护士进行诊断或护理的紧急呼叫工具,可将病人的请求快速传送给值班医生或护士, 并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病室护理水平的必备设备之一。呼叫系
[单片机]
基于<font color='red'>8051</font>单片机和SC1128芯片实现病房呼叫系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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