这是画的线路板,原理很简单,看板子就能看明白原理图
这是加工回来的线路板
焊接完成的样子,请忽略焊接水平,哈哈
焊接电池,通电测试
温度是利用DS3231M内部传感器测量的,
值得说明的是加入电量显示,大家都知道15W204没有AD
无法测量电压,我是利用比较器测量(P5.5接100K和0.1u电容,定制板时忘记考虑了)RC充放电与内部基准
电压1.252V比较,加上定时器计算出的电量。
还是很实用的。
左键+键(P3.2),右键功能键(P3.3),
左键有3个功能:
1,平时屏幕是不显示的(节省电能),按下按键,屏幕显示5秒后重新进入待机。
2,常按不送手4秒,启动手电筒功能(P5.4经过PNP三极管输出接LED灯)任意键短按一下LED灭。
3,启动屏幕后,按功能键切换不同项目,再按左键加数字。
LED BIT P5_4 ;手电筒输出端(H关,L开)
K0_1 BIT P3.2 ;+键(兼启动显示,和开手电筒)
K0_2 BIT P3.3 ;功能键
sda BIT p3.1 ;SDA数据信号
scl BIT p3.0 ;SCL时钟信号
address equ 59h ;256字节地址数
SECOND EQU 30H
MINUTE EQU 31H
HOUR EQU 32H
WEEK EQU 33H
DAY EQU 34H
MONTH EQU 35H
YEARL EQU 36H
DIZHI_X EQU 5AH ;列地址
DIZHI_Y EQU 5BH ;页地址(B0-B7)
SSDDADA EQU 5CH ;一字节暂存地址
ORG 00H
LJMP MAIN
ORG 03H
LJMP INT_0 ;中断0
ORG 0BH
LJMP T0_0 ;定时器0
ORG 100H
;===================主程序===================================
MAIN:
CLR A
MOV P0M1,A ;设置准双向口 =00--->准双向口, 01--->推挽输出
MOV P0M0,A ; =10--->高阻输入, 11--->开漏输出
MOV P1M1,A ;
MOV P1M0,A
MOV P2M1,A ;设置准双向口
MOV P2M0,A
MOV P3M1,A ;设置准双向口
MOV P3M0,A ;
MOV P5M1,#00000000B ;设置P5.5口高阻输入
MOV P5M0,#00000000B
MOV SP, #70H;修改堆栈指针
MOV IE,#10000011B ;允许总中断,允许外中断0和定时器0
MOV TCON,#00000001B ;下降沿中断0
MOV TMOD,#00000001B ;定时器0=模式1,定时模式
MOV AUXR,#00000010B ;定时器0/2都工作12分频模式
MOV TL0,#low(65536-20000) ;12M晶振,20ms
MOV TH0,#HIGH(65536-20000);每20ms扫描一次按键程序6
MOV TL2,#0H ;设置定时初值
MOV TH2,#0H ;设置定时初值
MOV SP,#60H
SETB TR0 ;启动定时器0
LCALL RESET ;初始化OLED0.91
LCALL QPCX ;清屏程序
LCALL shezhi_3231
mov 50h,#15 ;亮的秒数,然后进入掉电节能
JMP STT
SAT: ;调整时间状态下的屏显程序
LCALL ZHUAN_T
LCALL DISP_A
MOV 40H,#16
MOV 41H,#16
MOV 42H,#16
MOV 43H,#16
MOV 44H,#16
MOV 45H,#16 ;
MOV 46H,#16
MOV 47H,#16
MOV 48H,#16
MOV 49H,#16
MOV 4AH,#16
MOV 4BH,#49
MOV 4CH,#50
MOV 4DH,#51
MOV 4EH,#52
MOV 4FH,#16
LCALL DISP_B
STT:
MOV A,R1
JNZ SAT ;时间调整状态不掉电、不读时间、加速刷新
lcall read_3231 ;读时间程序
LCALL ZHUAN_0 ;数据转换
lcall DISP_A ;第1排时间温度显示程序
LCALL ZHUAN_1 ;数据转换
lcall DISP_B ;第2排星期日期电量显示程序
LCALL DELAY1S
LCALL DIANLIANG ;电量读取程序
djnz 50h,STT
MOV R7,#0AEH ;关闭OLED内部升压,节能
LCALL COMMAND
CLR TR0 ;关闭定时器0(防止中断唤醒进入功能+键)
MOV PCON,#02H ;掉电模式
MOV 50H,#10 ;亮的秒数,然后进入掉电节能
MOV R7,#0AFH ;打开显示
LCALL COMMAND
SETB TR0 ;启动定时器0
MOV R1,#0 ;强制恢复正常显示
JMP STT
附上主程序和接线方式,下面是烧写文件
(15W204振荡频率选择6M)
全部程序51hei下载地址:
OLED时钟.rar
(3.31 KB, 下载次数: 68)
|