一、 概述
二、 51单片机 ,TM1638芯片+DS1302驱动共阴数码管时钟,最后包括
按键检测程序(是分开的。)
TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集 成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、
空调 、家庭影院等产品的高段位显示屏驱动。
二、 特性说明
? 采用功率CMOS 工艺 ? 显示模式 10 段×8 位 ? 键扫描(8×3bit)
? 辉度调节电路(占空比8 级可调) ? 串行接口(CLK,STB,DIO)
? 振荡方式:RC 振荡(450KHz+5%) ? 内置上电复位电路 ? 采用SOP28封装
三、、 管脚定
义:
电路图数码管:
程序代码:
/*************** TM1638.H头文件 *******************/ #ifndef _TM1638_H #define _TM1638_H
//引脚定义
sbit DIO=P1^0; sbit CLK=P1^1; sbit STB=P1^2;
void TM1638_Write(unsigned char DATA) //写数据函数 { unsigned char i; for(i=0;i<8;i++) { CLK=0; if(DATA&0X01) DIO=1; else DIO=0; DATA>>=1; CLK=1; } }
/*unsigned char TM1638_Read(void) //读数据函数 { unsigned char i; unsigned char temp=0; DIO=1; //设置为输入 for(i=0;i<8;i++) { temp>>=1; CLK=0; if(DIO) temp|=0x80; CLK=1; } return temp; } */
void Write_COM(unsigned char cmd) //发送命令字 { STB=0;
TM1638_Write(cmd); STB=1; }
void Write_DATA(unsigned char add,unsigned char DATA) //指定地址写入数据 { Write_COM(0x44); STB=0; TM1638_Write(0xc0|add); TM1638_Write(DATA); STB=1; }
void init_TM1638(void) { unsigned char i; Write_COM(0x8a);//亮度 Write_COM(0x40); //写 数据命令 STB=0; TM1638_Write(0xc0); //写地址命令 for(i=0;i<16;i++) TM1638_Write(0x00); STB=1; }
#endif
/***************************DS1302.H头文件***************************/
#ifndef DS1302_H #define DS1302_H
#define uchar unsigned char #define uint unsigned int #include\
sbit acc0=ACC^0; //移位时的第0位 sbit acc7=ACC^7; //移位时用的第7位
uchar second,minute,hour,day,month,year,week,count=0; uchar ReadValue,num,time; sbit SCLK=P2^0; sbit DATA=P2^1; sbit RST=P2^2;
void Write1302(uchar dat)