日历时钟单片机课程设计

上传人:2127513****773577... 文档编号:61834295 上传时间:2022-03-12 格式:DOC 页数:25 大小:90.50KB
收藏 版权申诉 举报 下载
日历时钟单片机课程设计_第1页
第1页 / 共25页
日历时钟单片机课程设计_第2页
第2页 / 共25页
日历时钟单片机课程设计_第3页
第3页 / 共25页
资源描述:

《日历时钟单片机课程设计》由会员分享,可在线阅读,更多相关《日历时钟单片机课程设计(25页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上单片机课程设计 日历时钟与键盘显示程序设计姓名:管曌学号:班级:J通信0801指导老师:熊书明日历时钟与键盘显示程序设计一、 设计目的(1) 能在LED显示器上实现正常的时分秒计时(2)能通过键盘输入当前时间,并从该时间开始计时(3)有校时、校分功能(4)有报时功能,通过指示灯表示(5)有闹时功能,闹时时间可以设定,通过指示灯表示二、设计内容该课程设计是利用MCS-51单片机内部的定时计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。三、MCS-51单片机系统简介 单片

2、机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、IO接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。 在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和IO接口,使单片机应用系统能够运行。 在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,

3、而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。单片机应用系统中键盘一般用的比较多的是矩阵键盘,显示器用的比较多的是LED数码管还LCD显示器。四、设计方案通过键盘输入,设置当前时间存入S-3530A,然后从S-3530A读取实时时间并显示在七段码LED显示上,键盘和LED显示通过键盘专用芯片HD7279A进行控制,7279A也是I2C总线接口的芯片,系统中采用并行口线模拟I2C实现 C8051F020

4、和HD7279A的通信,用硬件实现S-3530A和HD7279A的连接。 用定时计数器T0,工作于定时,采用方式1,对系统时钟进行定时计数,初值设为23时59分50秒。定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位-分十位、分个位-秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理,1是时加一,2是时减一,3是

5、分加一,4是分减一,5是秒清零,D是闹钟时间的设定,E是进行校时,F是暂停键。 五、系统软件设计流程:1.主程序流程如图所示:开始初始化显示初始时间调用显示子程序进入功能程序按下键否?否是2.时间设定程序流程如图所示:开始初始化读出数据放入RAM中调用显示子程序显示时间扫描按键进行时间设置读出数据并保存返回主菜单3.闹铃设定流程图如图所示:开始初始化选择闹铃读出数据放入RAM中显示闹铃扫描按键进行闹铃设置读出数据并保存返回主菜单六、程序#include c8051f020.h #include #include test7279.hunsigned char Count1ms,set,set1

6、,set2;/int count;static int time3=23,59,50;/current timestatic char disptime6=2,3,5,9,5,0;/显示时间int dertime3=00,00,01; int nowtime3=00,01,00;/闹钟时间void Delay1us(unsigned char us)while (us) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /占用一个指令周期 -us;void SYSCLK_Init (void) int i; OSCXCN = 0x67; for (i=0

7、; i 8; TL0 = -SYSCLK/1000; TR0 = 1; IE|= 0x2; char GetKeyValue(void)char KeyValue;if (CPT1CN&0x40) return -1;/无键按下 Send7279Byte(0x15);/发读键盘指令 0001 0101KeyValue=Receive7279Byte();NOSELECT7279; /置CS高电平 return KeyValue; void WaitKeyOff(void)while (!(CPT1CN&0x40);void inputnum(void) /i=5开始,输入数字显示 dispti

8、me5-i i=5-0 char j,KeyValue,i;i=5;while(1)KeyValue=GetKeyValue();WaitKeyOff();if(KeyValue%16)=0) & (KeyValue%16)=9) /i=5 4 3 2 1 0 disptime5-i=KeyValue;if(disptime0=1) | (disptime0=2) & (disptime14) & (disptime26) & (disptime46) ) Send7279Byte(0xC8+i); Send7279Byte(KeyValue); NOSELECT7279; i-; if(i0

9、) break; for (j=0;j3;j+) /int-char dertimej=disptime2*j*10+disptime2*j+1; if(set1) set1=!set1;/ 设置时间if(set2) set2=!set2;/ 设置时间void FlashLED(unsigned char No)char i;Send7279Byte(0x88);/发闪烁指令 i=0x1;while (No)i=i1;No-;Send7279Byte(i); /1闪烁NOSELECT7279; /置CS高电平 void main(void)char j,KeyValue; WDTCN = 0x

10、de;WDTCN = 0xad; /关看门狗SYSCLK_Init (); /初始化时钟Timer0_Init();/初始化定时器PORT_Init (); /初始化IO口SPI0_Init (); /初始化SPI0CPT1CN|=0x80;/使能比较器1REF0CN = 0x03; /使能片内参考电压DAC0CN |= 0x80;/使能DAC0DAC0H=0;DAC0L=0;EA=1;/开中断Delay1us(25000);/等待25ms复位时间 Send7279Byte(0xA4);/发复位指令 NOSELECT7279; DispLED(disptime,0); /显示初始时间while

11、(1) KeyValue=GetKeyValue(); WaitKeyOff(); if(KeyValue%16)=0x0f) set=!set; if(set) /起停* if(KeyValue%16)=0x0e)set1=!set1;/ 设置时间if(KeyValue%16)=0x0d)set2=!set2;/ 设置闹钟if(set1)/设置时间* DispLED(-,0);inputnum();for (j=0;j3;j+) /int-char timej=dertimej; if(set2)/ 设置闹钟* DispLED(-,0);inputnum();for (j=0;j10) &

12、(time0=nowtime0)FlashLED(8);if (time2=60) /分time2=0;time1=time1+1;if (time1=60) / 时 time1=0;time0=time0+1;if(time1=00) & (time2=00) FlashLED(8);if (time0=24) time0=0; if (set!=1) for (i=0;i3;i+) /int-char disptime2*i=timei/10; disptime2*i+1=timei%10; DispLED(disptime,0); /显示时间* test7279.h#include c8

13、051f020.h #include sbitHD7279_DAT=P17;sbitHD7279_CLK=P16;#define NOSELECT7279 P5 |= 0x80/SPICS4(P57)=1#define SELECT7279 P5 &= (0x80) /SPICS4(P57)=0;#define Set7279DAT HD7279_DAT=1#define Clr7279DAT HD7279_DAT=0#define Set7279CLK HD7279_CLK=1#define Clr7279CLK HD7279_CLK=0/ HD7279测试/演示程序 /I/O口初始化 vo

14、id Delay1ms(unsigned char T);void Delay1s(unsigned char T);void Delay1us(unsigned char T);void Send7279Byte(unsigned char ch)char i;SELECT7279; /置CS低电平 Delay1us(50);/延时50for (i=0;i8;i+)if (ch&0x80)/输出7位到HD7279A的DATA端 1000 0000Set7279DAT;elseClr7279DAT;Set7279CLK;/置CLK高电平 ch=ch1;/待发数据左移 Delay1us(8);/

15、延时8Clr7279CLK;/置CLK低电平 Delay1us(8);/延时50Clr7279DAT;/发送完毕,DATA端置低,返回 unsigned char Receive7279Byte(void)unsigned char i,ch;ch=0;Set7279DAT;/DATA端置为高电平,输入状态Delay1us(50);/延时50for (i=0;i8;i+)Set7279CLK;/置CLK高电平Delay1us(8);/延时8ch=ch1;/接收数据左移1位if (HD7279_DAT)ch+=1;/接收1位数据Clr7279CLK;/置CLK低电平Delay1us(8);/延时

16、8Clr7279DAT;/接收完毕,DATA端重新置成低电平(输出状态)return ch;void BlankLED(unsigned char ch)Send7279Byte(0x98);/发消隐指令 Send7279Byte(ch); /1-显示 0-消隐NOSELECT7279; /置CS高电平 unsigned char code BdSeg=0x7e,0x30,0x6d,0x79, / 0 1 2 3 0x33,0x5b,0x5f,0x70, / 4 5 6 7 0x7f,0x7b,0x77,0x1f, / 8 9 a b 0x4e,0x3d,0x4f,0x47, / c d e

17、f 0x00,0x01; /*; b6; -; b1| b0 |b5; - small; b2| b3 |b4; - .b7*/void DispLED(char *DispBuf,char ShowDot)/ShowDot 显示小数点位 char i,ch;ShowDot-;for (i=0;i=a) & (ch=A) & (ch=F) ch-=A;ch+=0xa;Send7279Byte(0x90+5-i);/不译码if (ch= )Send7279Byte(0x00); elseif (ch=-) Send7279Byte(0x01); else if (ShowDot=i)Send72

18、79Byte(0x80|BdSegch&0x0f); elseSend7279Byte(BdSegch&0x0f); NOSELECT7279; /置CS高电平 C8051F020.h#ifndef _C8051F020_#define _C8051F020_#defineSYSCLK/ 系统时钟取自外部晶体 /*-;Copyright (C) 2001 CYGNAL INTEGRATED PRODUCTS, INC.; All rights reserved.; FILE NAME : C8051F020.H ; TARGET MCUs: C8051F020, F021, F022, F02

19、3 ; DESCRIPTION: Register/bit definitions for the C8051F02x product family. ; REVISION 1.0 ;-*/* BYTE Registers */sfr P0 = 0x80;/* PORT 0 */sfr SP = 0x81;/* STACK POINTER */sfr DPL = 0x82;/* DATA POINTER - LOW BYTE */sfr DPH = 0x83;/* DATA POINTER - HIGH BYTE */sfr P4 = 0x84; /* PORT 4 */sfr P5 = 0x

20、85; /* PORT 5 */sfr P6 = 0x86; /* PORT 6 */sfr PCON = 0x87;/* POWER CONTROL */sfr TCON = 0x88;/* TIMER CONTROL */sfr TMOD = 0x89;/* TIMER MODE */sfr TL0 = 0x8A;/* TIMER 0 - LOW BYTE */sfr TL1 = 0x8B;/* TIMER 1 - LOW BYTE */sfr TH0 = 0x8C;/* TIMER 0 - HIGH BYTE */sfr TH1 = 0x8D;/* TIMER 1 - HIGH BYTE

21、 */sfr CKCON = 0x8E;/* CLOCK CONTROL */sfr PSCTL = 0x8F;/* PROGRAM STORE R/W CONTROL */sfr P1 = 0x90;/* PORT 1 */sfr TMR3CN = 0x91;/* TIMER 3 CONTROL */sfr TMR3RLL = 0x92;/* TIMER 3 RELOAD REGISTER - LOW BYTE */sfr TMR3RLH = 0x93;/* TIMER 3 RELOAD REGISTER - HIGH BYTE */sfr TMR3L = 0x94;/* TIMER 3 -

22、 LOW BYTE */sfr TMR3H = 0x95;/* TIMER 3 - HIGH BYTE */sfr P7 = 0x96; /* PORT 7 */sfr SCON0 = 0x98;/* SERIAL PORT 0 CONTROL */sfr SBUF0 = 0x99;/* SERIAL PORT 0 BUFFER */sfr SPI0CFG = 0x9A;/* SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION */sfr SPI0DAT = 0x9B;/* SERIAL PERIPHERAL INTERFACE 0 DATA */sfr A

23、DC1 = 0x9C; /* ADC 1 DATA */sfr SPI0CKR = 0x9D;/* SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL */sfr CPT0CN = 0x9E;/* COMPARATOR 0 CONTROL */sfr CPT1CN = 0x9F;/* COMPARATOR 1 CONTROL */sfr P2 = 0xA0;/* PORT 2 */sfr EMI0TC = 0xA1; /* EMIF TIMING CONTROL */sfr EMI0CF = 0xA3; /* EXTERNAL MEMORY INT

24、ERFACE (EMIF) CONFIGURATION */sfr P0MDOUT = 0xA4;/* PORT 0 OUTPUT MODE CONFIGURATION */sfr P1MDOUT = 0xA5;/* PORT 1 OUTPUT MODE CONFIGURATION */sfr P2MDOUT = 0xA6;/* PORT 2 OUTPUT MODE CONFIGURATION */sfr P3MDOUT = 0xA7;/* PORT 3 OUTPUT MODE CONFIGURATION */sfr IE = 0xA8;/* INTERRUPT ENABLE */sfr SA

25、DDR0 = 0xA9; /* SERIAL PORT 0 SLAVE ADDRESS */sfr ADC1CN = 0xAA; /* ADC 1 CONTROL */sfr ADC1CF = 0xAB; /* ADC 1 ANALOG MUX CONFIGURATION */sfr AMX1SL = 0xAC; /* ADC 1 ANALOG MUX CHANNEL SELECT */sfr P3IF = 0xAD; /* PORT 3 EXTERNAL INTERRUPT FLAGS */sfr SADEN1 = 0xAE; /* SERIAL PORT 1 SLAVE ADDRESS M

26、ASK */sfr EMI0CN = 0xAF; /* EXTERNAL MEMORY INTERFACE CONTROL */sfr P3 = 0xB0;/* PORT 3 */sfr OSCXCN = 0xB1;/* EXTERNAL OSCILLATOR CONTROL */sfr OSCICN = 0xB2;/* INTERNAL OSCILLATOR CONTROL */sfr P74OUT = 0xB5; /* PORTS 4 - 7 OUTPUT MODE */sfr FLSCL = 0xB6;/* FLASH MEMORY TIMING PRESCALER */sfr FLAC

27、L = 0xB7;/* FLASH ACESS LIMIT */sfr IP = 0xB8;/* INTERRUPT PRIORITY */sfr SADEN0 = 0xB9; /* SERIAL PORT 0 SLAVE ADDRESS MASK */sfr AMX0CF = 0xBA;/* ADC 0 MUX CONFIGURATION */sfr AMX0SL = 0xBB;/* ADC 0 MUX CHANNEL SELECTION */sfr ADC0CF = 0xBC;/* ADC 0 CONFIGURATION */sfr P1MDIN = 0xBD; /* PORT 1 INP

28、UT MODE */sfr ADC0L = 0xBE;/* ADC 0 DATA - LOW BYTE */sfr ADC0H = 0xBF;/* ADC 0 DATA - HIGH BYTE */sfr SMB0CN = 0xC0;/* SMBUS 0 CONTROL */sfr SMB0STA = 0xC1;/* SMBUS 0 STATUS */sfr SMB0DAT = 0xC2;/* SMBUS 0 DATA */sfr SMB0ADR = 0xC3;/* SMBUS 0 SLAVE ADDRESS */sfr ADC0GTL = 0xC4;/* ADC 0 GREATER-THAN

29、 REGISTER - LOW BYTE */sfr ADC0GTH = 0xC5;/* ADC 0 GREATER-THAN REGISTER - HIGH BYTE */sfr ADC0LTL = 0xC6;/* ADC 0 LESS-THAN REGISTER - LOW BYTE */sfr ADC0LTH = 0xC7;/* ADC 0 LESS-THAN REGISTER - HIGH BYTE */sfr T2CON = 0xC8;/* TIMER 2 CONTROL */sfr T4CON = 0xC9; /* TIMER 4 CONTROL */sfr RCAP2L = 0x

30、CA;/* TIMER 2 CAPTURE REGISTER - LOW BYTE */sfr RCAP2H = 0xCB;/* TIMER 2 CAPTURE REGISTER - HIGH BYTE */sfr TL2 = 0xCC;/* TIMER 2 - LOW BYTE */sfr TH2 = 0xCD;/* TIMER 2 - HIGH BYTE */sfr SMB0CR = 0xCF;/* SMBUS 0 CLOCK RATE */sfr PSW = 0xD0;/* PROGRAM STATUS WORD */sfr REF0CN = 0xD1;/* VOLTAGE REFERE

31、NCE 0 CONTROL */sfr DAC0L = 0xD2;/* DAC 0 REGISTER - LOW BYTE */sfr DAC0H = 0xD3;/* DAC 0 REGISTER - HIGH BYTE */sfr DAC0CN = 0xD4;/* DAC 0 CONTROL */sfr DAC1L = 0xD5;/* DAC 1 REGISTER - LOW BYTE */sfr DAC1H = 0xD6;/* DAC 1 REGISTER - HIGH BYTE */sfr DAC1CN = 0xD7;/* DAC 1 CONTROL */sfr PCA0CN = 0xD

32、8;/* PCA 0 COUNTER CONTROL */sfr PCA0MD = 0xD9;/* PCA 0 COUNTER MODE */sfr PCA0CPM0 = 0xDA;/* CONTROL REGISTER FOR PCA 0 MODULE 0 */sfr PCA0CPM1 = 0xDB;/* CONTROL REGISTER FOR PCA 0 MODULE 1 */sfr PCA0CPM2 = 0xDC;/* CONTROL REGISTER FOR PCA 0 MODULE 2 */sfr PCA0CPM3 = 0xDD;/* CONTROL REGISTER FOR PC

33、A 0 MODULE 3 */sfr PCA0CPM4 = 0xDE;/* CONTROL REGISTER FOR PCA 0 MODULE 4 */sfr ACC = 0xE0;/* ACCUMULATOR */sfr XBR0 = 0xE1;/* DIGITAL CROSSBAR CONFIGURATION REGISTER 0 */sfr XBR1 = 0xE2;/* DIGITAL CROSSBAR CONFIGURATION REGISTER 1 */sfr XBR2 = 0xE3;/* DIGITAL CROSSBAR CONFIGURATION REGISTER 2 */sfr

34、 RCAP4L = 0xE4; /* TIMER 4 CAPTURE REGISTER - LOW BYTE */sfr RCAP4H = 0xE5; /* TIMER 4 CAPTURE REGISTER - HIGH BYTE */sfr EIE1 = 0xE6;/* EXTERNAL INTERRUPT ENABLE 1 */sfr EIE2 = 0xE7;/* EXTERNAL INTERRUPT ENABLE 2 */sfr ADC0CN = 0xE8;/* ADC 0 CONTROL */sfr PCA0L = 0xE9;/* PCA 0 TIMER - LOW BYTE */sf

35、r PCA0CPL0 = 0xEA; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - LOW BYTE */sfr PCA0CPL1 = 0xEB; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - LOW BYTE */sfr PCA0CPL2 = 0xEC; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - LOW BYTE */sfr PCA0CPL3 = 0xED; /* CAPTURE/COMPARE REGISTER FOR PCA 0

36、MODULE 3 - LOW BYTE */sfr PCA0CPL4 = 0xEE; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 4 - LOW BYTE */sfr RSTSRC = 0xEF; /* RESET SOURCE */sfr B = 0xF0; /* B REGISTER */sfr SCON1 = 0xF1; /* SERIAL PORT 1 CONTROL */sfr SBUF1 = 0xF2; /* SERAIL PORT 1 DATA */sfr SADDR1 = 0xF3; /* SERAIL PORT 1 */ sfr

37、TL4 = 0xF4; /* TIMER 4 DATA - LOW BYTE */sfr TH4 = 0xF5; /* TIMER 4 DATA - HIGH BYTE */sfr EIP1 = 0xF6; /* EXTERNAL INTERRUPT PRIORITY REGISTER 1 */sfr EIP2 = 0xF7; /* EXTERNAL INTERRUPT PRIORITY REGISTER 2 */sfr SPI0CN = 0xF8; /* SERIAL PERIPHERAL INTERFACE 0 CONTROL */sfr PCA0H = 0xF9; /* PCA 0 TI

38、MER - HIGH BYTE */sfr PCA0CPH0 = 0xFA; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 0 - HIGH BYTE */sfr PCA0CPH1 = 0xFB; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 1 - HIGH BYTE */sfr PCA0CPH2 = 0xFC; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 2 - HIGH BYTE */sfr PCA0CPH3 = 0xFD; /* CAPTURE/COMPARE REGISTER FOR PCA 0 MODULE 3 - HIGH BYTE

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!