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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5041|回復: 5
收起左側

DS1302和液晶1602中顯示時鐘,為什么不走,顯示是時間也是錯誤的

[復制鏈接]
ID:244748 發表于 2017-11-21 17:33 | 顯示全部樓層 |閱讀模式
# include <reg52.h>
# define uchar unsigned char
# define uint unsigned int


sbit lcden = P3^4;
sbit rs = P3^5;
sbit wr = P3^6;

sbit rst = P1^0;
sbit io = P1^1;
sbit sclk  = P1^2;

uchar code dage[] = "2017-11-17   FRI";
uchar code dage1[] = "     :   :  ";


uchar miao, fen, shi, i;
/*  ***  函數聲明 ****/
void display();
void write_sfm(uchar, uchar);
void Send_595(uchar);
void delay(uint);
void write_com(uchar);
void write_date(uchar);
void write_byte(uchar);
void init_lcd();
void set_ds1302();
uchar read_ds1302(uchar);
uchar read_byte();


void main()
{
        init_lcd();
        set_ds1302();
        while(1)
        {
                display();
        }
}

void delay(uint z)
{
        uint x, y;
        for(x=z; x>0; x--)
           for(y=110; y>0; y--);
}
/****** 往1602液晶 寫入指令 ****/

void write_com(uchar com)
{
        rs = 0;
        P0 = com;
        delay(5);
        lcden = 1;
        delay(5);
        lcden = 0;
}
/*****  1602液晶 初始化  ******/
void init_lcd()
{
        /*Send_595(0xff);
        Send_595(0x00);
        P_HC595_RCLK = 0;
        P_HC595_RCLK = 1;*/
       
        wr = 0;
        lcden = 0;
       
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
       
        for(i=0; i<16; i++)
        {
        write_date(dage[i]);
        delay(5);
        }

        write_com(0x80+0x40);
       
        for(i=0; i<13; i++)
        {
                write_date(dage1[i]);
                delay(5);
        }
}
/*  *****往1602液晶寫入數據 ****** */
void write_date(uchar date)
{
        rs = 1;
        P0 = date;
        delay(5);
        lcden = 1;
        delay(5);
        lcden = 0;
}

       

/****** DS1302 中寫入一個字節 ***/
void write_byte(uchar date)
{
        uchar i, temp;
        temp = date;
        for(i=0; i<8; i++)
        {
                if((temp&0x01) == 1)
                        io = 1;
                else
                        io = 0;
                sclk = 1;
                sclk = 0;
                temp >>= 1;
        }
}
/*****′ ***/
uchar read_byte()
{
        uchar i, temp;
        for(i=0; i<8; i++)
        {
                temp>>=1;
                if(io == 1)
                        temp|=0x80;
                 sclk = 1;
                 sclk = 0;       
        }
        return temp;
}
       
/***** Ö¸¶¨Î»ÖÃD′ ****/
void write_ds1302(uchar addr, uchar date)
{
        rst = 0;
        sclk = 0;
        rst = 1;
       
        write_byte(addr);
        write_byte(date);
       
        sclk = 1;
        rst = 0;
}
/****** Ö¸¶¨Î»Ööá ***/
uchar read_ds1302(uchar addr)
{
        uchar date;
        rst = 0;
        sclk = 0;
        rst = 1;
        write_byte(addr);
        date = read_byte();
        sclk = 1;
        rst = 0;
       
  return date;
}
/******  3õê¼»ˉDS1302  *****/
void set_ds1302()
{
        write_ds1302(0x8e, 0x00);
       
        write_ds1302(0x80, 0x00);
        write_ds1302(0x82, 0x00);
        write_ds1302(0x84, 0x00);
       
        write_ds1302(0x8e, 0x80);       
}
/****** ê±£¬·Ö£¬Ãë £¬·Öàë¸ö£¬ ê®Î»  ****/
void write_sfm(uchar addr, uchar date)
{
        uchar shi, ge;
        shi = date/10;
        ge = date%10;
        write_com(0x80+0x40+addr);
        write_date(0x30+shi);
        write_date(0x30+ge);
}

/****** íù1602ÖDÏÔê¾êy¾Y ****/
void display()
{
        uchar d;
        write_ds1302(0x8e, 0x00);
       
        d = read_ds1302(0x81);
        miao = (d/16)*10 + d%16;
  write_sfm(11, miao);       
       
        d = read_ds1302(0x83);
        miao = (d/16)*10 + d%16;
  write_sfm(7, fen);       
       
        d = read_ds1302(0x85);
        miao = (d/16)*10 + d%16;
  write_sfm(3, shi);       
       
        write_ds1302(0x8e, 0x80);
}


IMG_20171121_170928.jpg

JW-51開發板.pdf

99.63 KB, 下載次數: 3

回復

使用道具 舉報

ID:251992 發表于 2017-11-21 18:26 | 顯示全部樓層
最好把DS1302的各個寄存器的功能貼出來就好了,
回復

使用道具 舉報

ID:231984 發表于 2017-11-22 20:57 | 顯示全部樓層
計時的功能都沒有,怎么讓時間加?
回復

使用道具 舉報

ID:111634 發表于 2017-11-22 21:22 | 顯示全部樓層
好像給你介紹過一個正確有效案例,仔細去研讀啊!
回復

使用道具 舉報

ID:244748 發表于 2017-11-26 15:23 | 顯示全部樓層
gaohan130 發表于 2017-11-22 20:57
計時的功能都沒有,怎么讓時間加?

DS1302有自動計時的功能,不用計時器
回復

使用道具 舉報

ID:254058 發表于 2017-11-27 10:53 | 顯示全部樓層
建議去共享區下載一個現成的,吃透的再改,看完看懂這個程序時間足夠吃透一個正確的程序了,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线观看免费视频 | 黄色一级毛片 | 国产精品成人av | 精品久久久久一区二区国产 | 成人小视频在线观看 | 欧美一区二区三区视频在线播放 | 天天天操 | 国产午夜在线 | 国产视频一二三区 | 日韩视频一级 | 伊人久久一区二区 | av在线免费观看网站 | 99精品久久久 | 欧洲一区二区三区 | 在线āv视频 | 国产精品久久久久久久久久妇女 | 精品国产一区二区三区久久 | 国产免费一区二区三区 | 视频一区在线播放 | 91av在线视频观看 | 国产乱码精品1区2区3区 | 啪啪精品 | 久久精品免费观看 | 中文字幕一区二区三区在线视频 | 一级一片在线观看 | 久久人体视频 | 亚洲欧洲在线观看视频 | 麻豆av电影网 | 日韩欧美一区二区三区在线播放 | 欧美性生交大片免费 | 亚洲精品一区二区在线观看 | 最新国产在线 | 欧美午夜精品 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 国产人成精品一区二区三 | 亚洲视频在线观看一区二区三区 | 日本黄色高清视频 | 99精品久久久 | 中文字幕一区二区三区不卡 | 免费观看色 | 国产精品久久久亚洲 |