1、原理图说明: KEY1至KEY6为矩阵键盘,分别对应秒、分、时的加减,DIGILED1和DIGI2为四位数码管,SWRET为复位键,DIG1至DIG8分别控制一位数字的显示。USB为输入端,U2提供工作电压,U1为单片机STC89C52芯片。VCC外接电源,GND接地,SWITCH1为跳帽连接处。元器件清单如下表所示:电子时钟元件清单表 原件名称数量焊接位置电源部分USB座1USBUSB线双排针(2)CONN1跳帽2104电容0.1uF6C2,5,6,7,8,9,11LED灯D1电阻2KR2最小系统部分40针座U1STC89C52晶振12MHzY1电容20pFC3,C4复位键SW_RST电阻1
2、0KR1蜂鸣器LS1+三极管90159Q1Q9电阻330R3键盘显示、通信部分16针座U2MAX232单排针(5)UART按键4KEY1KEY4单排针(3)SWITCH14位LEDDIGILED1,2电阻4.7K8R14R21R6R13 3、电子时钟的软件设计本次课程设计程序用C语言编写源程序:/*-电子时钟-*/#include #define uchar unsigned char#define uint unsigned int#define BIT(x) (1 0; x-) for(y=110; y y- );/*函数名:keyscan()功能描述:矩阵键盘扫描(线反转法)入口参数:无
3、返回值:key为0-15键码,返回88为错误码。*/void keyscan() /矩阵键盘扫描函数uchar x,y;P3=0xf0; if (P3!=0xf0) delayms(10); x=P3&0xf0; P3=0x0f; y=P3&0x0f; key=x|y; while(P3!=0x0f); switch (key) case 0xbe: key=5;HOUR+; break; case 0x7e: key=1;SEC+; case 0xbd: key=6;if(HOUR0)HOUR-; case 0x7d: key=2;if(SEC0)SEC-; case 0x7b: key=3
4、;MIN+; case 0x77: key=4;if(MIN0)MIN-; default: key=88; void display(void) uchar i; for(i=0;i8;i+) dig=dig&BIT(i); /dig |= BIT(i); |= 逻辑或 switch (i) case 0: seg=tabSEC%10; break; case 1: seg=tabSEC/10; case 2: seg= tab10; case 3: seg=tabMIN%10; case 4: seg=tabMIN/10; case 5: case 6: seg= tabHOUR%10;
5、case 7: seg= tabHOUR/10; default: delayms(3); / dig&=BIT(i); dig |= BIT(i);void init() /初始化函数 ,做初始化工作的 dig=0xFF; /位选 seg=0x00; / 段选 TMOD |= 0X01;/定时器0方式1 IE |= 0X82;/EA=1,T0=1 TH0=(65536-50000)/256; /THO=60 TL0=(65536-50000)%256; /TL0=00 TCON |=0X10;/定时器控制寄存器TR0=1void main () init ();/初始化子程序 while (
6、1) keyscan(); if (SEC=60) SEC = 0; MIN+; if (MIN=60) MIN=0; HOUR+; if (HOUR=24) HOUR=0; display ();void T0_time() interrupt 1 num+; if (num=20) num=0; SEC +; if (MIN=60) MIN=0; HOUR+; if (HOUR=24) HOUR=0; 电子时钟程序流程图 :四、课程设计总结 这次单片机课程设计使我对电子信息技术应用有了更加深刻的认识。跟之前的理论设计,软件仿真不同,这次课程设计要求作出能实现具体功能的实物。课程设计过程中,我们遇到了不少问题,在老师与同学的帮助下,最终达到了想要的结果。 通过这次课程设计,我了解了单片机的更多功能,只要程序得当,能用它实现很多实用功能,能让一些工作变得更加简单。同时,我也深刻体会到深入实践的重要性,理论要发挥价值,必须掌握将它转化成实际应用的途径与方法。五、指导教师评语 成绩 指导教师签名
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1