单片机课程设计数字时钟_第1页
单片机课程设计数字时钟_第2页
单片机课程设计数字时钟_第3页
单片机课程设计数字时钟_第4页
单片机课程设计数字时钟_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单片机课程设计,数字时钟 学校:中原工学院信息商务学院 专业:机械设计制造及其自动化 班级:机自102 名:彪1、 设计要求1、 显示学号及制作日期。2、 可以调整时间,时分秒。3、 可以定时2、 配件 51或52单片机一个,各种电容若干个,各种电阻若干个,六个共阳极led灯,一个12MHZ晶振,一个32.768kHz晶振,一个ds1302时钟芯片,一个排阻,一个喇叭,五个按钮,导线若干个。3、 数字电路模拟图5、单片机程序#include <reg52.h> #include <stdio.h> #define uchar unsigned char #define

2、 uint unsigned intbit ta,ni,wo,nao,hu,ding,cha; uint a,j,k,dingshi,dingfen; uchar z,x,c,v,b,n,shi,fen,miao,w,r,y,dat,ds1,ds2,df1,df2,huancun,Th0,Tl0;uchar code tab=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;sbit shi1=P10;sbit shi2=P11;sbit fen1=P12;sbit fen2=P13;sbit miao1=P14;sbit miao2=P15;

3、sbit RST=P20;sbit SCLK=P21;sbit IO= P22;sbit jiashi=P23;sbit jiafen=P24;sbit jiamiao=P25;sbit kai=P26;sbit xiang=P27; void delay1 () ; void shuru(uchar q); void xuehao1 (uchar z,uchar x,uchar c,uchar v,uchar b,uchar n); void write_byte(uchar dat);/写一个字节 uchar read_byte();/读一个字节 void write_1302(uchar

4、 add,uchar dat);/向1302芯片写函数,指定写入地址,数据 uchar read_1302(uchar add);/从1302读数据函数,指定读取数据来源地址 void ds1302_init() ;/1302芯片初始化子函数(2012-06-18,12:00:00,week7) uchar readset1302(uchar Cmd); void xianshimiao(uchar w); void xianshifen(uchar r) ; void xianshishi(uchar y); void tiaozhengshi(); void tiaozhengfen();

5、 void tiaozhengmiao(); void PlayKey(void); void delay_1ms(uchar i); void dingshikaiguan(void); void chanao(void); void tiaozhengshijian(void); void kaishi(uchar z,uchar x,uchar c,uchar v,uchar b,uchar n); uchar code KeyCode=0xFF,0xFF,0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0

6、x0B,/低音 0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05,/中音 0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02,/高音 ; void int2_int() interrupt 0 hu=1;ding=0;cha=0; time0() interrupt 1 /定时器0中断 TH0=Th0; TL0=Tl0; xiang=xiang; void main () P1=0; xiang=1; ding=0;

7、cha=0; kaishi(2,0,1,0,0,6) ; kaishi(0,2,4,2,1,4) ; kaishi(1,3,0,6,1,6) ;ds1302_init() ; EA=1; EX0=1; IT0=1; TMOD=0X01; TR0=0; ET0=1; while(1) miao=read_1302(0x81);xianshimiao(miao);fen=read_1302(0x83);xianshifen(fen) ;shi= read_1302(0x85);xianshishi(shi); chanao(); dingshikaiguan();if(ding=1) PlayKe

8、y(); xiang=1;tiaozhengshijian(); void xianshimiao(uchar w) uchar e; e=w/16; P0=tabe; miao1=1; delay1 ();miao1=0; e=w%16; P0=tabe; miao2=1; delay1 ();miao2=0 ; void xianshifen(uchar r) uchar t; t=r/16; P0=tabt; fen1=1; delay1 (); fen1=0; t=r%16; P0=tabt; fen2=1; delay1 (); fen2=0; void xianshishi(uch

9、ar y) uchar u; u=y/16; P0=tabu; shi1=1; delay1 (); shi1=0; u=y%16; P0=tabu; shi2=1; delay1 (); shi2=0; void shuru(uchar q) P0=tabq ; void delay1 () for(k=0;k<120;k+) ; void delaynus(uchar n) uchar i; for(i=0;i<n;i+) ; void xuehao1 (uchar z,uchar x,uchar c,uchar v,uchar b,uchar n) for(a=0;a<

10、1;a+) shuru(z); shi1=1 ; delay1 (); shi1=0; shuru(x); shi2=1; delay1 () ; shi2=0; shuru(c); fen1=1; delay1 () ; fen1=0; shuru(v); fen2=1; delay1 () ; fen2=0; shuru(b); miao1=1; delay1 (); miao1=0; shuru(n); miao2=1; delay1 () ; miao2=0; void write_byte(uchar dat) uchar p; SCLK=0; /拉低SCLK,为脉冲上升沿写入数据做

11、好准备 delaynus(2); /稍微等待,使硬件做好准备 for(p=0;p<8;p+) /连续写8个二进制位数据 IO=dat&0x01; /取出dat的第0位数据写入1302 delaynus(2); /稍微等待,使硬件做好准备 SCLK=1; /上升沿写入数据 delaynus(2); /稍微等待,使硬件做好准备 SCLK=0; /重新拉低SCLK,形成脉冲 dat>>=1; /将dat的各数据位右移1位,准备写入下一个数据位 uchar read_byte(void) uchar i,dat; delaynus(2); /稍微等待,使硬件做好准备 for(

12、i=0;i<8;i+) /连续读8个二进制位数据 dat>>=1; /将dat的各数据位右移1位,因为先读出的是字节的最低位 if(IO=1) /如果读出的数据是1 dat|=0x80; /将1取出,写在dat的最高位 SCLK=1; /将SCLK置于高电平,为下降沿读出 delaynus(2); /稍微等待 SCLK=0; /拉低SCLK,形成脉冲下降沿 delaynus(2); /稍微等待 return dat; /将读出的数据返回 void write_1302(uchar add,uchar dat)/向1302芯片写函数,指定写入地址,数据 RST=0; SCLK=

13、0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0; uchar read_1302(uchar add)/从1302读数据函数,指定读取数据来源地址 uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp); void ds1302_init() /1302芯片初始化子函数(2012-06-18,12:00:00,week7) RST=0; SCLK=0; write_1302(0x8e,0x0

14、0); /允许写,禁止写保护 write_1302(0x80,0x00); /向DS1302内写秒寄存器80H写入初始秒数据00 write_1302(0x82,0x00);/向DS1302内写分寄存器82H写入初始分数据00 write_1302(0x84,0x12);/向DS1302内写小时寄存器84H写入初始小时数据12 write_1302(0x8a,0x07);/向DS1302内写周寄存器8aH写入初始周数据4 write_1302(0x86,0x16);/向DS1302内写日期寄存器86H写入初始日期数据16 write_1302(0x88,0x06);/向DS1302内写月份寄存

15、器88H写入初始月份数据06 write_1302(0x8c,0x13);/向DS1302内写年份寄存器8cH写入初始年份数据13 void tiaozhengshi() shi=(shi+1)/16+(shi+1)%16/10)*16+(shi+1)%16%10; if(shi=0x24) shi=0; write_1302(0x84,shi); void tiaozhengfen() fen=(fen+1)/16+(fen+1)%16/10)*16+(fen+1)%16%10; if(fen=0x60) fen=0; write_1302(0x82,fen); void tiaozheng

16、miao() miao=(miao+1)/16+(miao+1)%16/10)*16+(miao+1)%16%10; if(miao=0x60) miao=0; write_1302(0x80,miao); void PlayKey(void) Th0=KeyCode2*14+2*2; Tl0=KeyCode2*14+2*2+1; TH0=Th0; TL0=Tl0; TR0=1; delay_1ms(20); TR0=0; void delay_1ms(uchar i) /延时 uchar j,k; for(j=0;j<i;j+) for(k=0;k<148;k+) ; void

17、dingshikaiguan(void) if(kai=0) wo=0; ta=0; dingshi=0; dingfen=0; hu=0; ds1=0; ds2=0; df1=0 ; df2=0; while(hu=0) xuehao1 (ds1,ds2,df1,df2,0,0); if(jiashi=1) wo=0;if(jiafen=1) ta=0; if(wo=0) if(jiashi=0) dingshi+;if(dingshi=24) dingshi=0;ds1= dingshi/10;ds2=dingshi%10; wo=1; if(ta=0) if(jiafen=0) ding

18、fen+; if(dingfen=60) dingfen=0; df1=dingfen/10; df2=dingfen%10; ta=1; if(dingfen+dingshi)!=0) cha=1; fen=read_1302(0x83); huancun=(fen+dingfen)/60;dingfen= (fen+dingfen)%60; shi= read_1302(0x85); dingshi=(dingshi+shi+huancun)%24; void chanao(void) if(cha=1)if(dingshi=shi) if(dingfen=fen) ding=1; void tiaozhengshijian(void) if(jiashi=1) wo=0;if(jiafen=1) ta=0;if(jiamiao=1) ni=0; if(wo=0) if(jiashi=0) tiaozhengshi(); wo=1; if(ta=0)if(jiafen=0) tiaozhengfen(); ta=1;if(ni=0)if(jiamiao=0) tiaozhengmiao(); ni=1 ; void kaishi(uchar z,uchar x,uchar c,uchar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论