久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3906|回復: 2
收起左側

基于51單片機的萬年歷(實時時鐘) 數碼管顯示版本 需要ds1302

[復制鏈接]
ID:738485 發表于 2020-6-11 19:30 | 顯示全部樓層 |閱讀模式
最近幫朋友做設計,各種找萬年歷的程序,仿真原理圖,想參考,但是發現好多并不能用,改了好久改的,大家可以放心下載,有任何問題,歡迎提問
供大家學習參考,還請大家不要直接原本照抄

單片機源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS1302_SCLK=P1^6;          //1302引腳位變量定義
sbit DS1302_IO=P1^7;
sbit DS1302_RST=P1^5;
sbit ACC_7=ACC^7;           //ACC位變量定義        
sbit ACC_0=ACC^0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar second,minute,hour,week,day,month,year;    //定義年,月,日,星期,時,分,秒計數變量
uchar t1302[]={0x20,0x06,0x11,0x12,0x00,0x00};   //DS1302初值:年,月,日,星期,時,分,秒
void delay (uint x)           //延時函數
{
uint i,j;
for(i=x;i>0;i--);
for(j=0;j<120;j++);
}
void display()
{
P0=0;
P2=0xfe;
P0=table[year/16] ;                                       //顯示年的十位
delay(15);
P2=0xff;
P2=0xfd;
P0=(table[year%16])|0X80;                                 //顯示年的個位  
delay(15);
P2=0xff;
P2=0xfb;   
P0=table[(month/16)]  ;                                   //顯示月的十位
delay(15);
P2=0xff;
P2=0xf7;        
P0=(table[month%16])|0X80;                                //顯示月的個位        
delay(15);
P2=0xff;
P2=0xef;        
P0=table[day/16];                                         //顯示日的十位      
delay(15);  
P2=0xff;
P2=0xdf;        
P0=table[day%16]|0X80;                                    //顯示日的個位        
delay(15);
P2=0xff;
P2=0xbf;
P0=table[hour/16] ;                                       //顯示時的十位
delay(15);
P2=0xff;
P2=0x7f;
P0=(table[hour%16])|0X80;                                 //顯示時的個位  
delay(15);  
P2=0xff;
P3=0xfe;        
P0=table[(minute/16)]  ;                                  //顯示分的十位
delay(15);
P3=0xff;
P3=0xfd;        
P0=(table[minute%16])|0X80;                               //顯示分的個位        
delay(15);
P3=0xff;
P3=0xfb;        
P0=table[second/16];                                      //顯示秒的十位      
delay(15);
P3=0xff;
P3=0xf7;        
P0=table[second%16];                                      //顯示秒的個位        
delay(15);
P3=0xff;
}
void init()
{
TMOD=0x11;                    //指定定時/計數器的工作方式為3
TH0=0;                        //定時器T0的高四位=0
TL0=0;                        //定時器T0的低四位=0
EA=1;                         //系統允許有開放的中斷
ET0=1;                        //允許T0中斷
TR0=1;                        //開啟中斷,啟動定時器
}
void timer0() interrupt 1                   //中斷函數讀取1302數據
{
second=read_ds1302(0x81);          //讀秒寄存器        
minute=read_ds1302(0x83);          //讀分寄存器           
hour=read_ds1302(0x85);           //讀時寄存器      
month=read_ds1302(0x89);          //讀月寄存器         
day=read_ds1302(0x87);           //讀日寄存器         
year=read_ds1302(0x8d);           //讀年寄存器         
}


余下代碼在附件keil工程文件中,附件包含proteus仿真原理圖 電子時鐘數碼管.zip (43.66 KB, 下載次數: 83)
05.png
04.png
03.png

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:738485 發表于 2020-6-11 19:34 | 顯示全部樓層
有一個warning是因為我在主函數中沒有調用1302的初始化函數,因為不想從設定的時間開始走,如有需要可以去掉主函數init_1302()前面的"//"
回復

使用道具 舉報

ID:529213 發表于 2023-5-22 15:09 來自觸屏版 | 顯示全部樓層
請問沒有按鍵,怎么調時間?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合一区二区三区 | 97精品国产97久久久久久免费 | 五月激情网站 | 国产伦理一区 | 一色桃子av | 中文字幕精品三区 | 国产成年妇视频 | 久久成人综合 | 色呦呦国产精品 | 久久久精品国产sm调教网站 | 久久福利网 | 久久精品国产成人av | 中国a一片一级一片 | 成人在线网址 | www.欧美精品| 欧美一区不卡 | 手机看片久久 | 国产xxx| 国产精品成人国产乱一区 | 三上悠亚激情av一区二区三区 | 亚洲精品在线视频观看 | 另类专区亚洲 | 欧美激情视频一区二区三区 | 成人精品一区二区三区 | 黄视频在线播放 | 国产午夜精品久久 | 精品欧美黑人一区二区三区 | 国产91精品看黄网站在线观看 | 亚洲一区二区欧美 | 夜夜操夜夜爽 | 欧美一区二区免费 | 亚洲福利精品 | 色噜噜狠狠一区二区三区果冻 | 一级片免费在线观看 | www.色网 | 九九99久久 | 中文字幕在线观看日本 | 天天综合天天 | 久久久久久九九九九 | 三a毛片 | 日韩欧美不卡 |