资源简介
基于ds1302的可调时钟程序,已通过硬件调试!时钟可调,并带有简单的闹钟功能,通过1602显示,有proteus的仿真!
代码片段和文件信息
#include
#include
#include
#include //DS1302驱动程序
#include //LCD1302驱动程序
//==========================
#define uchar unsigned char
#define uint unsigned int
//==========================
sbit k1=P1^3;
sbit k2=P1^1;
sbit k3=P1^5;
sbit beep=P3^7;
uchar key1;
uchar tab_time[8]={0010001001}; //时间
uchar tab_ymdw[12]={200211001102120}; //年月日星期
uchar tab_num[]=“0123456789:/ “;
uchar tab_week[21]=“MonTeuWedThuFriSatSun“;
uchar tab_ap[]=“AMPM“;
uchar tab_t[]=“T:“tab_d[]=“D:“ alarm_time[]={0157};
//--------------------------
//------- 函数声明 --------
void lcd_disp();
void trans();
void key();
void delay(uint);
void display_set(uchar uchar uchar );
void music();
void display_char1(uchar uchar );
void display_char2(uchar uchar );
//==========================
//------ 主函数 -----------
void main()
{
ds1302_init(); //DS1302初始化
write_command(0x01); //LCD清屏
initial_lcd();
delay(10);//LCD1602初始化
while(1)
{
ds1302();
key();
trans();
if(!key1)
lcd_disp();
if(tab_1302[0]==alarm_time[0]&&tab_1302[1]==alarm_time[1]&&tab_1302[2]==alarm_time[2])
music();
}
}
//=============显示函数============
void display_char2(uchar adruchar dat)
{
write_command(0x80+0x40+adr);
write_data(dat);
}
void display_char1(uchar adruchar dat)
{
write_command(0x80+adr);
write_data(dat);
}
//=============音乐播放===========================
void music()
{ uint ulnp=20;
while(p--)
{
for( ul=0;ul<150;ul++)
{
for( n=0;n<30;n++);
beep=~beep;
}
delay(200);
for(ul=0;ul<150;ul++)
{
for(n=0;n<30;n++);
beep=~beep;
}
delay(800);
}
}
//==================设定显示函数=========================
void display_set(uchar puchar adruchar dat)
{
uchar shigeij;
shi=dat/10;
ge=dat%10;//分离date的十位和个位数
if(p==1&&adr==13)
{write_command( 0xc0+13);
for(i=0;i<3;i++)
{ //星期
j=ge; //星期
write_data(tab_week[(j-1)*3+i]);
}
}
else if(!p)
write_command(0x80+adr);
else
write_command(0xc0+adr);
write_data( 0x30+shi);
write_data( 0x30+ge);
}
//----------------- 数据转换函数 ---------------------------
void trans()
{
tab_time[0]=tab_1302[2]/10; //小时十位
tab_time[1]=tab_1302[2]%10; //小时个位
tab_time[3]=tab_1302[1]/10; //分十位
tab_time[4]=tab_1302[1]%10; //分个位
tab_time[6]=tab_1302[0]/10; //秒十位
tab_time[7]=tab_1302[0]%10; //秒个位
tab_ymdw[2]=tab_1302[6]/10; //年十位
tab_ymdw[3]=tab_1302[6]%10; //年个位
tab_ymdw[5]=tab_1302[4]/10; //月十位
tab_ymdw[6]=tab_1302[4]%10; //月个位
tab_ymdw[8]=tab_1302[3]/10; //日十位
tab_ymdw[9]=tab_1302[3]%10; //日个位
tab_ymdw[11]=tab_1302[5]; //星期
}
void lcd_disp()
{
uchar ij ; //LCD1602写命令函数从第一行开始显
//------------------------
for(i=0;i<2;i++)
displ
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3506 2010-06-09 15:24 可调时钟闹钟\ds1302.h
文件 91553 2010-06-18 06:29 可调时钟闹钟\DS1302可调时钟.DSN
文件 1650 2010-06-18 06:29 可调时钟闹钟\DS1302可调时钟.PWI
文件 91566 2010-06-18 06:27 可调时钟闹钟\Last Loaded DS1302可调时钟.DBK
文件 1665 2010-06-09 15:49 可调时钟闹钟\LCD_1602A.h
文件 25440 2010-06-18 06:28 可调时钟闹钟\可调时钟
文件 10024 2010-06-18 06:28 可调时钟闹钟\可调时钟.c
文件 6342 2010-06-18 06:28 可调时钟闹钟\可调时钟.hex
文件 48 2010-06-18 06:28 可调时钟闹钟\可调时钟.lnp
文件 18599 2010-06-18 06:28 可调时钟闹钟\可调时钟.LST
文件 30262 2010-06-18 06:28 可调时钟闹钟\可调时钟.M51
文件 30568 2010-06-18 06:28 可调时钟闹钟\可调时钟.OBJ
文件 1311 2010-06-18 06:29 可调时钟闹钟\可调时钟.Opt
文件 378 2010-06-18 06:29 可调时钟闹钟\可调时钟.plg
文件 2126 2010-06-09 16:27 可调时钟闹钟\可调时钟.Uv2
....... 1312 2010-06-11 07:06 可调时钟闹钟\可调时钟_Opt.Bak
文件 0 2010-06-09 15:20 可调时钟闹钟\可调时钟_Uv2.Bak
目录 0 2010-06-18 06:29 可调时钟闹钟
----------- --------- ---------- ----- ----
316350 18
相关资源
- GPS卫星定位proteus仿真.rar
- 51单片机多机通信PROTEUS仿真
- 1602+DS1302时钟+DS18B20
- 4*4矩阵键盘+1602显示的proteus仿真
- 单片机双机通讯proteus仿真
- 光耦隔离控制继电器驱动直流电机p
- 多层电梯的 proteus仿真
- AD1674 proteus仿真
- proteus仿真adc0808多通道数据采集
- RS485一对四双向通信Proteus仿真+Keil收发
- proteus仿真元件符号大全
- ADC0809 C51单片机控制 输出到串口显示
- 可LCD显示计算价格的电子秤proteus仿真
- 毕业设计__基于51单片机的公交车自动
- PIC单片机 IIC通信 proteus仿真文件图
- PIC单片机SPI通信 带proteus仿真
- DS18B20 多点温度测量 用proteus仿真 课
- 基于51单片机的ds18b20的proteus仿真
- 51单片机12864液晶屏proteus仿真源代码
- 路灯控制系统完整版+PROTEUS仿真
- 基于51单片机的LED灯控制Proteus仿真
- 数字电子钟proteus仿真
- 直流数控电源Proteus仿真1~10V输出
- 51单片机车轮测速的proteus仿真
- 微机接口经典 8086 Proteus8251_8253_8255_
- 智能频率计的设计与制作(AVR)prot
- 基于89C51的全自动洗衣机控制器Prote
- 基于51单片机和Proteus仿真的波形发生
- 51单片机ADC0832_1602 proteus仿真源程序加
- 51单片机ADC0832电压测量液晶1602显示的
评论
共有 条评论