找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2463|回复: 13
打印 上一主题 下一主题
收起左侧

STC12c5a60s2单片机ds1302+0.96寸oled显示程序 万能板叠起来制作的

  [复制链接]
跳转到指定楼层
楼主
  • 单片机用的是stc12c5a60s2
  • 显示屏用0.96寸的oled
  • 时钟芯片DS1302
  • 用两块4x6cm的万能板叠起来制作的,所以比较迷你型,不过麻雀虽小,五脏俱全,如下图
  • 上层正面
  • 上层背面
  • 下层正面

下层背面

11.电路图如下



12.本来打算用type-c供电的,后面发现显示屏一直不亮,一度怀疑是我程序问题,排除了很多因素,因为稳压我用的是78l05
后面查了78L05数据手册才发现芯片要有1.7v以上压差才能有5V输出,所以我暂时用7V的电池供电,以后再改善一下


单片机源程序如下:
#include <reg51.h>                           
#include "delay.h"
#include "oledfont.h"
#include "bmp.h"
#include "oled.h"
#include "ds1302.h"



#define uchar unsigned char            
#define uint unsigned int        



//主函数
void main()
{
  TMOD=0x11;       //指定定时/计数器的工作方式为3
        TH0=0;           //定时器T0的高四位=0
        TL0=0;           //定时器T0的低四位=0
        EA=1;            //开总中断
        ET0=1;           //允许T0中断
        TR0=1;           //开启中断,启动定时器

        OLED_Init() ;     //液晶屏初始化子函数
        OLED_ColorTurn(0);  //0正常显示,1 反色显示
        OLED_DisplayTurn(0);  //0正常显示 1 屏幕翻转显示
        //welcome0();  //调用欢迎信息1
        ds1302_init();   //DS1302时钟的初始化子函数
        led=1;
        n=0;
  while(1)
{

    key();



}
}

void timer0() interrupt 1  //取得并显示日历和时间
{           

  sec  = BCD(read_1302(0x81));//读取1302的秒数据并转换成十进制数
  min  = BCD(read_1302(0x83));
  hour = BCD(read_1302(0x85));
  day  = BCD(read_1302(0x87));
  mouth= BCD(read_1302(0x89));
  year = BCD(read_1302(0x8d));
  week = BCD(read_1302(0x8b));


  OLED_ShowNum(0,0,20,2,16);//  显示20
        OLED_ShowNum(16,0,year/10,1,16);//  显示年
        OLED_ShowNum(24,0,year%10,1,16);//  
        
        OLED_ShowChar(32,0,'-',16);//

        OLED_ShowNum(40,0,mouth/10,1,16);//  显示月
        OLED_ShowNum(48,0,mouth%10,1,16);//  
        
        
        OLED_ShowChar(56,0,'-',16);//

  OLED_ShowNum(64,0,day/10,1,16);//  显示日
  OLED_ShowNum(72,0,day%10,1,16);//  

        
        
  OLED_ShowNum(0,2,hour/10,1,16);//  显示时
        OLED_ShowNum(8,2,hour%10,1,16);//  
        OLED_ShowString(16,2,":",16);//

        OLED_ShowNum(24,2,min/10,1,16);//  显示分
        OLED_ShowNum(32,2,min%10,1,16);//  
        OLED_ShowString(40,2,":",16);//
        OLED_ShowNum(48,2,sec/10,1,16);// 显示秒
        OLED_ShowNum(56,2,sec%10,1,16);//
        
        
  write_week(0,5,16,week);           //写星期函数



}

Keil代码下载: 源码+图纸.7z (51.52 KB, 下载次数: 103)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:301191 发表于 2022-4-4 14:29 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:262 发表于 2022-4-9 18:27 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

地板
ID:25231 发表于 2022-4-10 02:59 来自手机 | 只看该作者
高人,51hei有你更精彩
回复

使用道具 举报

5#
ID:229641 发表于 2022-4-10 06:39 来自手机 | 只看该作者
上3231吧…
回复

使用道具 举报

6#
ID:25231 发表于 2022-4-11 18:31 来自手机 | 只看该作者
楼主手工不错
回复

使用道具 举报

7#
ID:498382 发表于 2022-5-13 21:27 | 只看该作者
好资料,51黑有你更精彩!
回复

使用道具 举报

8#
ID:156220 发表于 2022-5-17 17:16 | 只看该作者

好资料,51黑有你更精彩! 谢谢 资料分享
回复

使用道具 举报

9#
ID:829010 发表于 2022-5-19 18:51 | 只看该作者
有了type-c,就可以去掉7805了吧
回复

使用道具 举报

10#
ID:1025323 发表于 2022-5-23 11:00 | 只看该作者
好资料,51黑有你更精彩!!
回复

使用道具 举报

11#
ID:1029184 发表于 2022-5-24 10:07 | 只看该作者
好资料,学习了,谢谢
回复

使用道具 举报

12#
ID:966485 发表于 2022-5-25 08:10 | 只看该作者
我一直想学单片机控制OLED汉字显示谢谢分享
回复

使用道具 举报

13#
ID:961300 发表于 2022-5-26 15:16 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

14#
ID:645485 发表于 2022-5-26 23:41 | 只看该作者
感谢楼主分享!同时希望大家可以开源更多自己实验验证过的东西!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表