打印
[牛人杂谈]

单片机proteus仿真时钟

[复制链接]
2377|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
energyplants|  楼主 | 2016-6-16 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用proteus仿真实现时钟


时钟程序源码:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit du = P2^6;
sbit we = P2^7;
uchar code wei_i[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 };
uchar code table_d[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X00,0X40};
uchar s,g,num,shi,fen,miao;
void delays(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void init()
{
        P0 = 0;
        du = 0;
        we = 0;
}
void display(uchar wei,uchar duan)
{               
        P0=~wei_i[wei];
        we=1;
        we=0;
        P0=table_d[duan];
        du=1;
        du=0;
        delays(3);
        P0=0xdb;
        we=1;
        we=0;
        P0=0x40;
        du=1;
        du=0;
        delays(3);
}
void T0_time() interrupt 1
{
        TH0 = (65536-50000)/256;
        TL0 = (65536-50000)%256;
        num++;
        if(num==20)
        {
                num = 0;
                miao++;
                if(miao>=60)
                {
                        fen++;
                        miao=0;
                }
                if(fen>=60)
                {
                        fen=0;
                        shi++;
                }
                if(shi>=24)
                        shi=0;
        }
}
void main()
{
        init();
        TMOD = 0x01;
        TH0 = (65536-50000)/256;
        TL0 = (65536-50000)%256;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
        while(1)
        {
                s = miao / 10;
                g = miao % 10;
                display(6,s);
                display(7,g);
                s = fen /10;
                g = fen %10;
                display(3,s);
                display(4,g);
                s = shi / 10;
                g = shi % 10;
                display(0,s);
                display(1,g);
        }
}


沙发
gaoyang9992006| | 2016-6-17 08:59 | 只看该作者
这个是什么版本的,最新版好像是8.3了。

使用特权

评论回复
板凳
wahahaheihei| | 2016-6-29 18:12 | 只看该作者
怎么没有搞个按键调整时间的功能,刚才看了个高手说,键盘最好的方式是定时器中断扫描,你这个应该可以利用另外一个定时器来实现吧。

使用特权

评论回复
地板
zhuotuzi| | 2016-6-29 18:52 | 只看该作者
入门级的内容,很适合初学者,如果分层写效果更好。

使用特权

评论回复
5
zhuomuniao110| | 2016-6-29 20:27 | 只看该作者
那两个驱动用的芯片是什么类型的?

使用特权

评论回复
6
dongnanxibei| | 2016-6-29 21:16 | 只看该作者
刚开始学单片机时候,我也用这个仿真软件做过。

使用特权

评论回复
7
玛尼玛尼哄| | 2016-6-30 18:53 | 只看该作者
在从51移植到其他芯片时候,就可以通过一个带大括号的宏来搞定,比如输出就需要加方向寄存器设置。

使用特权

评论回复
8
734774645| | 2016-6-30 19:32 | 只看该作者
这个太简单了,可以做个DS1302的那种,就是关机了都可以不耽误计时。

使用特权

评论回复
9
598330983| | 2016-6-30 20:06 | 只看该作者
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。DS1302的在实时显示时间中的应用。

使用特权

评论回复
10
598330983| | 2016-6-30 20:07 | 只看该作者
在实时显示时间中的应用。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。

使用特权

评论回复
11
捉虫天师| | 2016-6-30 20:35 | 只看该作者
现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。

使用特权

评论回复
12
Thethree| | 2016-7-2 21:29 | 只看该作者
这个仿真是不是就是用的芯片内部的RTC呢?

使用特权

评论回复
13
玛尼玛尼哄| | 2016-7-3 16:09 | 只看该作者
Thethree 发表于 2016-7-2 21:29
这个仿真是不是就是用的芯片内部的RTC呢?

哥们没仔细看吧,这家伙用的内部定时器,没有用RTC,而且是个51,没有RTC。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

123

帖子

2

粉丝