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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4198|回復: 1
打印 上一主題 下一主題
收起左側

[求助]關于數碼管顯示電子鐘

[復制鏈接]
跳轉到指定樓層
樓主
ID:30026 發表于 2011-8-12 21:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

我剛學單片機,做了個用DS1302在數碼管顯示的程序,可是數碼管每個2秒才會加1,求各位幫忙看看


#include<reg52.h>
#include <intrins.h>


/******************端口定義*****************/

sbit io=P1^0;
sbit sclk=P1^1;
sbit ce=P1^2;
sbit dula=P2^0;
sbit wela=P2^1;

 

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


 


/******************延時函數*****************/

void delay(uchar x)
{
 uchar a,b;
 for(a=x;a>0;a--)
  for(b=110;b>0;b--); 
}

 

 

/******************ds1302初始化*****************/

void reset_ds1302()
{
 ce=0;
  _nop_();
 sclk=0;
  _nop_();
 ce=1;
  _nop_();  //延時一個機器周期
}

 

 

 

/******************ds1302寫操作*****************/

void ds1302_write(uchar add,uchar date)
{
 uchar temp,i;
 reset_ds1302();
 temp=add;    //寫地址

 for(i=0;i<8;i++)
 {
  if((temp&0x01)==1)
   io=1;
  else
   io=0;
  sclk=1;
   _nop_();
  temp=temp>>1;
  sclk=0;
   _nop_();
 }
 temp=date;   //寫數據
 for(i=0;i<8;i++)
 {
  if((temp&0x01)==1)
   io=1;
  else
   io=0;
  sclk=1;
   _nop_();
  temp=temp>>1;
  sclk=0;
   _nop_();
 }
 ce=0;
  _nop_();
}

 

 

 

/******************ds1302讀操作*****************/

uchar ds1302_read(uchar add)
{
 uchar temp,i;
 reset_ds1302(); 
 temp=add;   //寫地址
 for(i=0;i<8;i++)
 {
  if((temp&0x01)==1)
   io=1;
  else
   io=0;
  sclk=1;
   _nop_();
  temp=temp>>1;
  sclk=0;
   _nop_();
 }
 temp=0;   //讀數據
 for(i=0;i<8;i++)
 {
  if(io==1)
   temp=temp|0x80;
  else
   temp=temp&0x7f;
  sclk=1;
   _nop_();
  temp=temp>>1;
  sclk=0;
   _nop_();
 }
 return temp;
}

/******************設置初始時間*****************/

void set_time()
{
 ds1302_write(0x8e,0x00);//關閉寫保護
 ds1302_write(0x80,0x00);
 ds1302_write(0x82,0x00);
 ds1302_write(0x84,0x00);
 ds1302_write(0x8e,0x80); //打開寫保護
}

//數碼管顯示
void display(uchar shi,uchar fen,uchar miao)

{
 P0=0xfe;

 wela=1;
 wela=0;
 P0=table[shi/10];
 dula=1;
 dula=0;
 delay(1);

 

 P0=0xfd; 

 wela=1;
 wela=0;
 P0=table[shi%10];
 dula=1;
 dula=0;
 delay(1);


 

 P0=0xfb; 

 wela=1;
 wela=0;
 P0=table[fen/10];
 dula=1;
 dula=0;
 delay(1);

 

 P0=0xf7; 

 wela=1;
 wela=0;
 P0=table[fen%10];
 dula=1;
 dula=0;
 delay(1);

 

 P0=0xef; 

 wela=1;
 wela=0;
 P0=table[miao/10];
 dula=1;
 dula=0;
 delay(1);

 

 P0=0xdf; 

 wela=1;
 wela=0;
 P0=table[miao%10];
 dula=1;
 dula=0;
 delay(1);


}

 

 

 


void main()
{
 uchar shi,fen,miao;
 set_time();
 while(1)
 {
  shi=ds1302_read(0x85);   //讀時的數據
  shi=(shi>>4)*10+(shi&0x0f);//將BCD碼轉換成十進制數
  fen=ds1302_read(0x83);//讀分的數據
  fen=(fen>>4)*10+(fen&0x0f);//將BSD碼轉換成十進制
  miao=ds1302_read(0x81);//讀秒
  miao=(miao>>4)*10+(miao&0x0f);
  display(shi,fen,miao);
 }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:77498 發表于 2017-5-4 15:41 | 只看該作者
有電路圖嗎我想制作個時鐘
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区在线免费观看 | 亚洲顶级毛片 | 亚洲精品乱码久久久久久按摩观 | 欧美日韩在线精品 | 懂色中文一区二区在线播放 | 视频一区在线观看 | 久久久www成人免费精品 | 福利av在线 | 亚洲精品免费视频 | 久久久国产一区二区三区 | 91精品久久久久久久久久 | 日屁网站| 亚洲一区电影 | 日本在线黄色 | 国内精品免费久久久久软件老师 | 久草欧美 | 91欧美精品成人综合在线观看 | 一级做a| 米奇狠狠鲁| 欧美成人h版在线观看 | 成年人网站在线观看视频 | 人妖一区 | 久久99久久99精品免视看婷婷 | 国产区一区二区三区 | 国产一区二区免费 | 在线成人av | 超碰在线人 | 精品视频在线播放 | 午夜精品一区二区三区在线观看 | 国产免费一区二区 | 国产精品久久久久不卡 | 久久国产美女视频 | 国产区一区二区三区 | av大片在线观看 | 国产色在线 | 欧美三级成人理伦 | 精品久久精品 | 99精品免费久久久久久日本 | 日韩av资源站 | 成人精品一区二区 | 在线中文字幕第一页 |