基于51单片机的多功能电子钟的设计(7)

2018-11-21 22:26

}

}

pos = x + y;

LCD12864_WriteCmd(pos);

Key.c(键盘控制)

#include\#include

void delay7(uint z) {

uint i, j;

for(i = z; i > 0; i--) for(j = 100; j > 0; j--); }

uchar KeyData(void) {

uchar dat1,dat2,num;

P2 = 0xf0; delay7(1);

if((P2&0xf0)!=0xf0) {

delay7(1); if((P2&0xf0)!=0xf0) {

dat1=P2; P2=0x0f; delay7(1); dat2=P2; num=dat1|dat2; } }

switch(num) { case 0xee: return 1; break; case 0xde: return 2; break; case 0xbe: return 3; break;

case 0x7e: return 4; break; case 0xed: return 5; break; case 0xdd: return 6; break; case 0xbd: return 7; break;

31

case 0x7d: return 8; break; case 0xeb: return 9; break; case 0xdb: return 10; break; case 0xbb: return 11; break; case 0x7b: return 12; break; case 0xe7: return 13; break; case 0xd7: return 14; break; case 0xb7: return 15; break; case 0x77: return 16; break; default: return 0; break; } }

ringclock.c(闹钟响铃)

#include\#include \#include\#include\

uchar CLK[7]= {0x01, 0, 0x12,0,0, 0,0}; uchar ii;

void ClockInit(void) { Ds1302ReadTime(); for(ii=3;ii<7;ii++) {

CLK[ii]=TIME[ii]; } }

uchar n=0;

uchar code music_tab[] = {

0x1c,0x30,0x19,0x30,0x18,0x40,0x19,0x30,0x18,0x30,0x13,0x30,0x19,0x80, 0x26,0x30,0x26,0x30,0x1c,0x40,0x20,0x30,0x1c,0x30,0x18,0x30,0x20,0x60, 0x26,0x30,0x26,0x30,0x24,0x40,0x26,0x30,0x24,0x30,0x18,0x40,0x26,0x60, 0x18,0x20,0x18,0x20,0x18,0x20,0x19,0x40,0x24,0x30,0x24,0x30,0x19,0x30, 0x19,0x60,0x1c,0x30,0x19,0x30,0x18,0x40,0x19,0x30,0x18,0x30,0x13,0x30, 0x19,0x60,0x26,0x30,0x26,0x30,0x1c,0x40,0x20,0x30,0x1c,0x30,0x18,0x30, 0x20,0x80,0x26,0x30,0x24,0x30,0x24,0x30,0x18,0x30,0x19,0x20,0x19,0x30, 0x18,0x30,0x15,0x20,0x15,0x20,0x13,0x20,0x18,0x40,0x18,0x30,0x19,0x30, 0x1c,0x20,0x1c,0x20,0x19,0x30,0x20,0x30,0x1c,0x60,0x18,0x30,0x15,0x30, 0x13,0x40,0x15,0x30,0x13,0x30,0x10,0x30,0x15,0x60,0x20,0x30,0x20,0x30, 0x18,0x30,0x19,0x30,0x18,0x30,0x13,0x30,0x13,0x60,0x1c,0x20,0x19,0x20,

32

0x18,0x30,0x19,0x30,0x15,0x20,0x15,0x20,0x18,0x40,0x20,0x30,0x20,0x30, 0x12,0x30,0x13,0x30,0x15,0x30,0x18,0x30,0x13,0xc0,0x13,0x80,0x13,0x30, 0x0e,0x80,0x10,0x30,0x10,0x30,0x13,0x20,0x15,0x20,0x18,0x40,0x18,0x30, 0x15,0x30,0x18,0x20,0x15,0x20,0x15,0x30,0x10,0x30,0x13,0x60,0x13,0x30, 0x0e,0x60,0x10,0x60,0x13,0x20,0x15,0x20,0x18,0x40,0x18,0x30,0x15,0x30, 0x15,0x20,0x18,0x20,0x15,0x30,0x19,0x30,0x1c,0x60,0x1c,0x30,0x19,0x30, 0x1c,0xc0,0x00 };

void int1() interrupt 1 { TH0=0xd8; TL0=0xef; n--; }

void delay1 (unsigned char m) {

unsigned i=3*m; while(--i); }

void delayms1(unsigned char a) {

while(--a); }

void ring()

{ unsigned char p,m; unsigned char i=0; TMOD&=0x0f; TMOD|=0x01;

TH0=0xd8;TL0=0xef; IE=0x82; EX1=1; IT1=1; PX1=1; IRIN=1; po=0; while(1)

{ Ds1302ReadTime(); LcdDisplay(); a: p=music_tab[i];

if(p==0x00&&po==0) { i=0; break;}

33

else if(p==0xff&&po==0)

{ i=i+1;delayms1(100),TR0=0; goto a; } else {m=music_tab[i++], n=music_tab[i++]; if (po==1) {Beep=1;break; } }

TR0=1; while(n!=0) Beep=~Beep,delay1(m); TR0=0; } }

void ReadIr() interrupt 2 {

po=1; Beep=1; }

menu.c(菜单)

#include #include\

void displaylcd(unsigned char *CharCod);

void delay8(uint z) {

uint i, j;

for(i = z; i > 0; i--) for(j = 100; j > 0; j--); }

uchar menu() {

uchar x;

uchar code CharCode2[]=\多功能电子时钟 \

uchar code CharCode3[]=\功能选择: 1 运行时钟 钟\

uchar code CharCode4[]=\运行时钟开始\

34

2 设置闹 uchar code CharCode5[]=\设置闹钟开始\

displaylcd(CharCode2); delay8(3000);

displaylcd(CharCode3); while(1) {

x=KeyData(); if(x==15||x==16) break; }

switch(x) { case 15: displaylcd(CharCode4); delay8(3000); return 0; break; case 16: displaylcd(CharCode5); delay8(3000); return 1; break; } }

void displaylcd(unsigned char *CharCod) {

unsigned char i=0; LCD12864_Init();

LCD12864_SetWindow(0, 0); while(CharCod[i]!='\\0') { LCD12864_WriteData(CharCod[i]); i++; if(i==16) { LCD12864_SetWindow(1,0); } if(i==32) { LCD12864_SetWindow(2,0); }

35


基于51单片机的多功能电子钟的设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:辽宁省预防接种异常反应补偿办法(试行)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: