1、郑州航空工业管理学院单片机课程设计论文 11 届 电子信息工程 专业 113084 班级题 目 基于单片机的数字时钟设计 学 号 姓 名 指导教师 王丹 二一 三 年 十二 月 二十七 日一、 电子时钟的基本原理 实验设计是用单片机控制的数字电路实现的数字电子钟,整体的电路设计是由振荡器、分频器、计数器、译码器、LED显示器、校时电路组成。 (1)计数、显示电路 该部分是由两个60进制计数器,一个24进制计数器、译码器、显示器组成。给60进制计数器一个1 Hz的脉冲。观察数码管的显示,看计数器是否正常计时,并且当秒计数器计满60后向分计数器进位。分计数器计满60后向小时计数器进位。(2) 校时
2、电路 按对应按键来调整时分秒,按加一减一键来调整时间。 (3)复位电路 系统上电时提供复位信号,直至系统电源稳定后,撤销复位信 号。二、电子时钟的硬件设计电路原理图如下图所示: 电子时钟原理图原理图说明: KEY1至KEY6为矩阵键盘,分别对应秒、分、时的加减,DIGILED1和DIGI2为四位数码管,SWRET为复位键,DIG1至DIG8分别控制一位数字的显示。USB为输入端,U2提供工作电压,U1为单片机STC89C52芯片。VCC外接电源,GND接地,SWITCH1为跳帽连接处。元器件清单如下表所示:电子时钟元件清单表 原件名称数量焊接位置电源部分USB座1USBUSB线1双排针(2)1
3、CONN1跳帽2104电容0.1uF6C2,5,6,7,8,9,11LED灯1D1电阻2K1R2最小系统部分40针座1U1STC89C521晶振12MHz1Y1电容20pF2C3,C4复位键1SW_RST电阻10K1R1蜂鸣器1LS1+三极管90159Q1Q9电阻3301R3键盘显示、通信部分16针座1U2MAX2321单排针(5)1UART按键4KEY1KEY4单排针(3)1SWITCH1跳帽14位LED2DIGILED1,2电阻4.7K8R14R21电阻3308R6R13 三、 电子时钟的软件设计本次课程设计程序用C语言编写源程序:/*-电子时钟-*/#include #define uc
4、har unsigned char#define uint unsigned int#define BIT(x)(1 0; x-)for(y=110; y0; y- );/*函数名:keyscan()功能描述:矩阵键盘扫描(线反转法)入口参数:无返回值:key为0-15键码,返回88为错误码。*/void keyscan() /矩阵键盘扫描函数uchar x,y;P3=0xf0;if (P3!=0xf0) delayms(10); if (P3!=0xf0) x=P3&0xf0; P3=0x0f; y=P3&0x0f; key=x|y; while(P3!=0x0f); switch (key
5、) case 0xbe: key=5;HOUR+; break; case 0x7e: key=1;SEC+; break; case 0xbd: key=6;if(HOUR0)HOUR-; break; case 0x7d: key=2;if(SEC0)SEC-; break; case 0x7b: key=3;MIN+; break; case 0x77: key=4;if(MIN0)MIN-; break; default: key=88; break; void display(void)uchar i;for(i=0;i8;i+)dig=dig&BIT(i); /dig |= BIT
6、(i); |= 逻辑或 switch (i)case 0: seg=tabSEC%10; break;case 1: seg=tabSEC/10;break;case 2: seg= tab10;break;case 3: seg=tabMIN%10; break;case 4:seg=tabMIN/10;break;case 5: seg= tab10;break;case 6: seg= tabHOUR%10;break;case 7:seg= tabHOUR/10;break;default:break; delayms(3); / dig&=BIT(i); dig |= BIT(i);
7、void init() /初始化函数 ,做初始化工作的dig=0xFF; /位选seg=0x00; / 段选TMOD |= 0X01;/定时器0方式1IE |= 0X82;/EA=1,T0=1TH0=(65536-50000)/256; /THO=60TL0=(65536-50000)%256; /TL0=00TCON |=0X10;/定时器控制寄存器TR0=1void main ()init ();/初始化子程序while (1) keyscan();if (SEC=60)SEC = 0;MIN+;if (MIN=60)MIN=0;HOUR+;if (HOUR=24)HOUR=0;displ
8、ay (); void T0_time() interrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;num+;if (num=20) num=0; SEC +;if (SEC=60)SEC = 0;MIN+;if (MIN=60)MIN=0;HOUR+;if (HOUR=24)HOUR=0; 按键S4按下?调表程序开始初始化程序复位键按下?按键S2按下?加时程序按键S1按下?移动程序按键S3按下减时程序电子时钟程序流程图 : 四、课程设计总结 这次单片机课程设计使我对电子信息技术应用有了更加深刻的认识。跟之前的理论设计,软件仿真不同,这次课程设计要求作出能实现具体功能的实物。课程设计过程中,我们遇到了不少问题,在老师与同学的帮助下,最终达到了想要的结果。 通过这次课程设计,我了解了单片机的更多功能,只要程序得当,能用它实现很多实用功能,能让一些工作变得更加简单。同时,我也深刻体会到深入实践的重要性,理论要发挥价值,必须掌握将它转化成实际应用的途径与方法。五、指导教师评语 成绩 指导教师签名 10