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

標題: DS1302+LCD1602顯示日期、星期、時間Proteus仿真+單片機程序 [打印本頁]

作者: 陳潤源home    時間: 2019-5-20 16:16
標題: DS1302+LCD1602顯示日期、星期、時間Proteus仿真+單片機程序
本帖最后由 陳潤源home 于 2019-5-20 19:42 編輯

說明:開機顯示當前計算機時間(若下載到開發板上請手動調節時間)
       第1次按下MODE鍵,如果此時按下 S+ /S-,則秒的值 +1/ -1,按下yes保存設定值
       第2次按下MODE鍵,如果此時按下 S+ /S-,則分的值 +1/ -1,按下yes保存設定值
       第3次按下MODE鍵,如果此時按下 S+ /S-,則時的值 +1/ -1,按下yes保存設定值
       第4次按下MODE鍵,如果此時按下 S+ /S-,則天的值 +1/ -1,按下yes保存設定值
       第5次按下MODE鍵,如果此時按下 S+ /S-,則月的值 +1/ -1,按下yes保存設定值
       第6次按下MODE鍵,如果此時按下 S+ /S-,則周的值 +1/ -1,按下yes保存設定值
       第7次按下MODE鍵,如果此時按下 S+ /S-,則年的值 +1/ -1,按下yes保存設定值
       第8次按下MODE鍵,開始正常計時。


本程序已通過“清翔電子”開發板完美驗證,請壇友放心下載。用其他開發板的童鞋請自行修改端口。




附件還內附DS1302資料+標準程序,需要的小伙伴請下載

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機源程序如下:
  1. //說明:開機顯示當前PC時間
  2. //     第1次按下MODE鍵,如果此時按下 S+ /S-,則秒的值 +1/ -1,按下yes保存設定值
  3. //     第2次按下MODE鍵,如果此時按下 S+ /S-,則分的值 +1/ -1,按下yes保存設定值
  4. //     第3次按下MODE鍵,如果此時按下 S+ /S-,則時的值 +1/ -1,按下yes保存設定值
  5. //     第4次按下MODE鍵,如果此時按下 S+ /S-,則天的值 +1/ -1,按下yes保存設定值
  6. //     第5次按下MODE鍵,如果此時按下 S+ /S-,則月的值 +1/ -1,按下yes保存設定值
  7. //     第6次按下MODE鍵,如果此時按下 S+ /S-,則周的值 +1/ -1,按下yes保存設定值
  8. //     第7次按下MODE鍵,如果此時按下 S+ /S-,則年的值 +1/ -1,按下yes保存設定值
  9. //     第8次按下MODE鍵,開始正常計時。
  10. //      
  11. //------------------------------------------------------------------------

  12. #include <reg51.h>                            //調用含有51專用寄存器的頭文件
  13. #define uchar unsigned char            //用uchar代替unsigned char
  14. #define uint unsigned int                //用uint代替unsigned int

  15. #define yh 0x80       //LCD第一行的初始位置,因為LCD1602字符地址首位D7恒定為1(100000000=80)
  16. #define er 0x80+0x40 //LCD第二行初始位置(因為第二行第一個字符位置地址是0x40)

  17. char a,sec,min,hour,day,mouth,week,year,temp,n;                 //定義變量

  18. sbit rw=P3^6;                 //液晶讀寫端
  19. sbit rs=P3^5;                 //液晶指令/數據輸入控制
  20. sbit en=P3^4;                 //液晶使能端

  21. sbit sda=P1^1;             //數據線
  22. sbit clk=P1^0;             //時鐘線
  23. sbit rst=P1^2;             //使能

  24. sbit mode=P3^0;      //設置鍵
  25. sbit s1  =P3^1;      //加鍵
  26. sbit s2  =P3^2;      //減鍵
  27. sbit yes =P3^3;             //調整確認鍵

  28. sbit ACC0=ACC^0;         //累加器A低位
  29. sbit ACC7=ACC^7;         //累加器A高位

  30. uchar code tab1[]={"20  -  -   "};    //年顯示的固定字符
  31. uchar code tab2[]={"  :  :  "};       //時間顯示的固定字符

  32. /***********************延時子程序********************/
  33. void delay(uint xms)
  34. {
  35.         uint x,y;
  36.         for(x=xms;x>0;x--)
  37.          for(y=110;y>0;y--);
  38. }

  39. /****************液晶寫入指令函數*******************/
  40. void write_1602com(uchar com)
  41. {
  42.         rs=0;                //數據/指令選擇置為指令
  43.         rw=0;                //讀寫選擇置為寫
  44.         P0=com;              //送入數據
  45.         delay(1);
  46.         en=1;                //拉高使能端,為制造有效的下降沿做準備
  47.         delay(1);
  48.         en=0;                //en由高變低,產生下降沿,液晶執行命令
  49. }

  50. /********************液晶寫入數據函數***************/
  51. void write_1602dat(uchar dat)
  52. {
  53.         rs=1;               //數據/指令選擇置為數據
  54.         rw=0;               //讀寫選擇置為寫
  55.         P0=dat;             //送入數據
  56.         delay(1);
  57.         en=1;               //en置高電平,為制造下降沿做準備
  58.         delay(1);
  59.         en=0;               //en由高變低,產生下降沿,液晶執行命令
  60. }

  61. /**************液晶初始化函數**********************/
  62. void lcd_init()
  63. {
  64.         write_1602com(0x38);         //設置液晶工作模式,
  65.         write_1602com(0x0c);         //開顯示不顯示光標
  66.         write_1602com(0x06);         //整屏不移動,光標自動右移
  67.         write_1602com(0x01);         //清顯示

  68.         write_1602com(yh+1);         //日歷顯示固定符號從第一行第1個位置之后開始顯示
  69.         for(a=0;a<14;a++)
  70.         {
  71.         write_1602dat(tab1[a]);      //向液晶屏寫日歷顯示的固定符號部分
  72.         }
  73.         write_1602com(er+2);         //時間顯示固定符號寫入位置,從第2個位置后開始顯示
  74.         for(a=0;a<8;a++)
  75.         {
  76.         write_1602dat(tab2[a]);      //寫顯示時間固定符號,兩個冒號
  77.         }

  78. }

  79. /***************寫數據********************/
  80. void write_byte(uchar dat)
  81. {
  82.         ACC=dat;
  83.         rst=1;
  84.         for(a=8;a>0;a--)
  85.         {
  86.          sda=ACC0;
  87.          clk=0;
  88.          clk=1;
  89.          ACC=ACC>>1;
  90.         }
  91. }

  92. /******************讀數據********************/
  93. uchar read_byte()
  94. {
  95.         rst=1;
  96.         for(a=8;a>0;a--)
  97.         {
  98.          ACC7=sda;
  99.          clk=1;
  100.          clk=0;
  101.          ACC=ACC>>1;
  102.         }
  103.         return (ACC);
  104. }

  105. /*********向1302芯片寫函數,指定寫入地址,數據*********/
  106. void write_1302(uchar add,uchar dat)
  107. {
  108.         rst=0;
  109.         clk=0;
  110.         rst=1;
  111.         write_byte(add);
  112.         write_byte(dat);
  113.         clk=1;
  114.         rst=0;
  115. }

  116. /*********從1302讀數據函數,指定讀取數據來源地址*******/
  117. uchar read_1302(uchar add)
  118. {
  119.         uchar temp;
  120.         rst=0;
  121.         clk=0;
  122.         rst=1;
  123.         write_byte(add);
  124.         temp=read_byte();
  125.         clk=1;
  126.         rst=0;
  127.         return(temp);
  128. }

  129. /****************BCD碼轉十進制函數,輸入BCD,返回十進制*******/
  130. uchar BCD(uchar m)
  131. {
  132. uchar x;
  133. x=m>>4;
  134. return(x=x*10+(m&=0x0f));
  135. }

  136. /********1302芯片初始化子函********/
  137. void ds1302_init()
  138. {
  139. rst=0;
  140. clk=0;
  141. write_1302(0x8e,0x00); //允許寫,禁止寫保護
  142. delay(50);
復制代碼

所有資料51hei提供下載:
DS1302 1602液晶.rar (600.95 KB, 下載次數: 706)


作者: 陳潤源home    時間: 2019-5-20 19:38
自古一樓是樓主
作者: 158925    時間: 2019-5-23 11:16
為什么壓縮包格式損壞?

作者: 陳潤源home    時間: 2019-6-1 23:14
沒損壞啊,我這下載能打開
作者: 51Y    時間: 2019-6-4 15:59
真好,剛剛好能用到,感謝樓主
作者: lllllllllzzzzzz    時間: 2019-6-5 19:16
感謝樓主!
作者: 匪爺2019    時間: 2019-6-10 19:50
感謝樓主,51黑有你更精彩!!!
作者: yzhbyyy    時間: 2019-6-11 14:53
感謝樓主,51黑有你更精彩!!!
作者: sh0871    時間: 2019-6-12 12:46
謝謝樓主了哈~
作者: sh0871    時間: 2019-6-12 12:49
謝謝樓主了哈~
作者: GYB123123    時間: 2019-6-12 13:27
感謝樓主,51黑有你更精彩,愛你么么噠
作者: wqwqw111    時間: 2019-6-13 08:54
TMOd=0x11,工作模式怎么會是三?
作者: wqwqw111    時間: 2019-6-13 08:57
樓主看來還沒學懂,tmod=0x11,是兩個定時器都工作在方式1,居然備注解釋是工作方式3,我也是醉了
作者: wqwqw111    時間: 2019-6-13 09:15
從你這程序來看,tmod應該是工作模式三,自動重裝,因為沒看到重新設初值,也就是256vs掃描顯示一次
作者: 鶩流后    時間: 2019-6-13 16:28
感謝樓主
作者: tp3333    時間: 2019-6-18 14:44
感謝樓主
作者: 3205440665    時間: 2019-6-18 23:54
漂亮,有你更精彩!!!
作者: 育碧看風景    時間: 2019-6-20 16:05
哈哈哈,這個沒記錯的話是課本上的叭,某些人闊以直接抄了
作者: 陳潤源home    時間: 2019-6-28 11:10
wqwqw111 發表于 2019-6-13 09:15
從你這程序來看,tmod應該是工作模式三,自動重裝,因為沒看到重新設初值,也就是256vs掃描顯示一次

寫錯了
作者: 單片機牛筆    時間: 2019-7-8 16:13
謝謝大佬
作者: yilinghai    時間: 2019-8-8 14:26
有2個問題
第一:星期顯示不對,不能做到實時顯示,比如2019/8/8,顯示卻是星期五;
第二:在調整時間的時候,光標不會閃爍
作者: 越南超級人類    時間: 2019-8-19 19:22
這個程序經測試以通過,謝謝大神,希望大神們多出佳作
作者: 2656210650    時間: 2019-8-21 01:04
學習了,學習了,向大神學習。
作者: NIGICUE    時間: 2019-9-11 16:57
有沒有PCB原理圖啊
作者: ugcamnx    時間: 2019-9-17 09:50
謝謝分享!
作者: mao918    時間: 2019-9-19 10:50
看著心癢癢呀,好想成為大神這樣的。
作者: 納愛斯牙牙樂    時間: 2019-9-21 17:34
真的可以用,謝謝樓主
作者: wzlwzl5273    時間: 2019-10-11 19:22
好難啊,不過還是謝謝樓主
作者: gilliamkee    時間: 2019-10-17 11:26
感謝樓主!
作者: 八月初    時間: 2019-11-8 14:29
正在學習數碼管加LCD1602,謝謝分享
作者: 死也學不會    時間: 2019-11-11 19:39
這個要顯示溫度怎么做,調試了好久都不成功
作者: wyuhan    時間: 2019-11-13 08:08
感謝分享
作者: zhujunbo    時間: 2019-11-20 17:10
感謝分享

作者: 1727782690    時間: 2019-11-22 22:17

感謝分享
作者: GodWorks    時間: 2019-11-23 10:33
感謝分享
作者: 死也學不會    時間: 2019-12-1 14:27
這東西為什么星期數不對,總是多一
作者: xiaolin1    時間: 2019-12-16 12:30
感謝分享,向大佬們學習!
作者: clow    時間: 2019-12-24 18:54
有沒有51單片機和LCD的數字鐘,不要顯示溫度
作者: clow    時間: 2019-12-24 18:55
感謝大佬
作者: clow    時間: 2019-12-24 19:01
為什么我回復不了,大佬幫幫我
作者: 18066702924    時間: 2019-12-25 00:40
感謝大佬
作者: gspt    時間: 2019-12-25 11:29
感謝大佬
作者: 113265    時間: 2019-12-25 13:48
資料很好,收藏了
作者: jiangzn2020    時間: 2020-2-20 00:22

感謝分享
作者: 秋爽    時間: 2020-2-21 21:40
沒有其它功能嗎?
作者: denminshen    時間: 2020-3-13 12:30
下載學習學習,謝謝分享!
作者: wjm926    時間: 2020-3-16 13:20
感謝樓主,51黑有你更精彩
作者: wjm926    時間: 2020-3-16 13:20
感謝大佬
作者: uiwagd    時間: 2020-4-8 06:00
下載看看
作者: 王佳怡    時間: 2020-4-8 15:56
樓主太厲害了!

作者: caiji1hao    時間: 2020-6-18 09:18
謝謝大佬(鞠躬)!
作者: nishinagezhu    時間: 2020-6-18 21:24
看了,感覺作者沒理由的強
作者: qhd11    時間: 2022-2-18 10:18
DS1302 lcd1602程序編寫很標準,可以借用。
作者: hezezeze    時間: 2022-4-13 17:27
大神很棒!學習的榜樣,很實用。贊贊
作者: Megagon    時間: 2022-4-13 21:46
為什么大佬的文件一編譯就不行了,源文件還是很厲害的
作者: 1990808983    時間: 2022-12-10 22:47
謝謝大佬分享,資料很棒喔,正好可以學習學習
作者: 2396980347    時間: 2023-4-20 17:42
感謝樓主,實現實時顯示

作者: ccplus7923    時間: 2023-6-9 09:55
陳潤源home 發表于 2019-5-20 19:38
自古一樓是樓主

里面能實現計時器功能嗎
作者: aide51    時間: 2023-6-18 19:52
這個不錯,剛好拿來學習一下
作者: 有半島鐵盒    時間: 2023-6-19 10:16
很有幫助 對我這種剛學習的剛剛好 謝謝大佬

作者: AaronHe    時間: 2024-3-6 16:59
可以,測試可行!
作者: ljingwei    時間: 2024-4-2 10:57
如果加個定時程序應咋加
作者: yujingpiaomiao    時間: 2025-4-22 11:18
先下載,再向樓主討教
作者: kirito21    時間: 2025-6-3 11:10
發表于 2019-9-11 16:57
有沒有PCB原理圖啊

你這純零基礎呀




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美亚洲另类在线 | 国产69久久精品成人看动漫 | 97日日碰人人模人人澡分享吧 | 亚洲成人av在线播放 | 亚洲日本中文字幕在线 | 欧美视频二区 | 亚洲精品自拍 | 美女亚洲一区 | 在线精品一区二区三区 | 亚洲av毛片| 国产成人久久精品一区二区三区 | 91原创视频| 天天综合永久 | 日本精a在线观看 | 亚洲最大成人综合 | 欧美一区二区三区在线视频 | 国产成人亚洲精品 | 欧美激情综合五月色丁香小说 | 超黄视频网站 | 久久久天天 | 欧美日韩一区二区三区视频 | 精品欧美乱码久久久久久 | 男人av在线播放 | 午夜在线小视频 | av高清 | 精品国产一区二区在线 | 日韩中文字幕在线播放 | 国产精品日韩欧美一区二区三区 | 日韩午夜精品 | 欧美日韩电影一区二区 | 国产高清精品一区二区三区 | 亚洲综合视频 | 欧美伊人| 亚洲综合大片69999 | 久久精品亚洲精品 | 日韩乱码一二三 | 色综合一区二区 | 黄色一级免费看 | 国产精品观看 | 黄色三级在线播放 | 国产日韩欧美另类 |