1、是否调时? 调时程序是否图三 定时器流程图 本次设计是基于STC52单片机,用16*16点阵屏作为显示器显示时间,并附带闹钟,滚动字幕显示功能的多功能时钟,具有很强的实用性和装饰性,新颖时尚。本系统采用STC52单片机为系统的控制核心,系统主要包括控制模块,LED点阵模块,驱动模块,报警模块。四、各部分电路设计1、控制模块:以STC52单片机为控制核心,加上晶振振荡电路和复位电路组成的最小系统,如图四所示: 图四2、LED点阵模块 采用四个8*8的LED单色高亮红光点阵模块组成16*16的点阵屏,单点电气属性:VOL:1.8-2.6V,AMP:5-15MA。扫描方式为动态扫描。图五电路图如图六
2、所示:图六3、驱动模块行线驱动:采用两个74LS573锁存器分别连接点阵块的行线,作为点阵块的电流驱动,控制端口为P0和P1。列线驱动:采用两各74LS138三线八线译码器组合成四线十六线译码器作为点阵屏的列选控制,接点阵屏的列线,ABCD分别对应的控制端口为P2.0、P2.1、P2.2、P2.3。电路如图七所示: 图七4、按键及蜂鸣器 一共有设有五个按键:模式、设定、增加、减少、确定,分别对应的端口为P3.3、P3.5、P3.1、P3.2、 P3.4。 蜂鸣器用三极管作为驱动,控制端口为P3.6. 电路如图八所示: 图八5、电源 因电路所需电流较大,同时考虑到单片机的工作电压,本系统选用4节
3、5号电池作为电源供电。5、整体电路图 仿真图如下:6、程序设计/*程序名称:LED16*16点阵显示时间简要说明:P1口接上行线,P0口接下行线,P2口接扫描线*/#include #define uchar unsigned char#define uint unsigned int#define hang1 P1 /上行线#define hang2 P0 /下行线#define lie P2 /列线#define light 200 /显示亮度sbit k1=P35;sbit k2=P30;sbit k3=P31;sbit k4=P34;sbit kr=P32;sbit spk=P36;u
4、char disbuf216;uchar LED;uchar hour=12,minute=00,second;uchar set=0;uchar change=0;uchar code shuzi6= 0x3E,0x7F,0x49,0x45,0x7F,0x3E,/0 0x00,0x42,0x7F,0x7F,0x40,0x00,/1 0x46,0x63,0x71,0x59,0x4F,0x46,/2 0x22,0x63,0x49,0x49,0x7F,0x36,/3 0x38,0x3C,0x22,0x7F,0x7F,0x20,/4 0x27,0x67,0x45,0x45,0x7D,0x39,/5
5、0x38,0x7C,0x4E,0x4B,0x79,0x30,/6 0x01,0x01,0x79,0x7D,0x07,0x03,/7 0x36,0x7F,0x49,0x49,0x7F,0x36,/8 0x06,0x4F,0x69,0x39,0x1F,0x0E,/9 ;uchar code seg= 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,/*可变延时*/void delay(void) unsigned char i;for(i=0;ilight;i+);void delay
6、ms(uint x) uchar i; while(x-) for(i=0;120;/*蜂鸣器*/void beep() uchar i,j=70;200;i+) while(-j);spk=spk; delayms(300);spk=0;/*装载显示数据至缓冲区*/void load_time(void) unsigned char i;6; if(set=1&change=0) disbuf0i=disbuf0i+7=0; elsedisbuf0i=shuzihour/10i; disbuf0i+7=shuzihour%10i;change=1) disbuf1i+3=disbuf1i+1
7、0=0; elsedisbuf1i+3=shuziminute/10i; disbuf1i+10=shuziminute%10i; if(LED)disbuf014=disbuf015=0x6c; else disbuf014=disbuf015=0x00;/*扫描显示数据缓冲区的内容*/void display(void) for (i=0;16; lie=segi; hang1=disbuf0i; hang2=disbuf1i; delay(); hang1=0x00; hang2=0x00; /*设置时间*/void changetime() if(k1=0) delayms(100);
8、 beep(); set=1; change=!change;change=1&k2=0) beep(); if(+hour=24)hour=0;k3=0) if(-hour=0xff)hour=23;change=0& if(+minute=60)minute=0; if(-minute=0xff)minute=59;k4=0)set=0; /*主程序*/void main (void) TMOD=0x01;/定时器0 10ms in 12M crystal 用于计时 /定时器1 /中断显示汉字 TH0=0xd8; TL0=0xf0; IE=0x82; TR0=1;while(1) load
9、_time(); display(); changetime();/*定时中断0(计时)*/void time0(void) interrupt 1 using 1 static unsigned char count;/定义内部静态变量/重新赋值 count+; switch (count) /case 0: /case 20: /case 40: /case 60: /case 80: case 50:LED=!LED; /半秒 LED闪烁 break; default:break;if (count=100) count=0; second+;/秒加1 if(second=60) sec
10、ond=0; minute+; /分加1 if(minute=60) minute=0; hour+; /时加1 if(hour=24) hour=0;7、设计总结1、设计过程中遇到的问题及解决方法 由于初次进行单片机电路设计,对单片机及相关的硬件设备不够了解,造成连接电路时发生引脚接错现象。通过仔细了解相关的知识要点和与同学交流解决了该问题。在焊接电路板时碰到的不小心短路情况,也因多次练习终于成功。2、设计体会 我通过完成这次的单片机课程设计,让我对单片机的理论有了深入的了解,更好的了解单片机这门课程对我的设计有着至关重要的作用。同时在具体的制作设计过程中我发现理论知识与实际的应用存在着不小
11、的差距。在完成这篇论文后,我学会了很多知识,特别是对单片机课程产生了浓厚的兴趣。3、对设计的建议 通过本次课程设计,我发现我们在学习课本知识的时候,更应该时常动手做实验,巩固和运用学过的知识,理论结合实际地学习。八、参考文献 1 梅丽凤,单片机原理及接口技术,清华大学出版社,2004 2 扬恢先,黄辉,单片机原理及应用,人民邮电出版社,2006 3 张毅刚,单片机原理及应用,高等教育出版社,2003 4 张连华,单片机应用系统设计方法,科学之友, 2010, 5 楼然苗,51 系列单片机设计实例,北京航空航天出版社, 成绩评定一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。二、评分评分项目设计报告评分答辩评分平时表现评分合 计 (100分)任务完成情 况(20分)课程设计报告质量(40分)表达情况(10分)回答问题工作态度与纪律独立工作能力得分班级 姓名 学号成绩: 分(折合等级 )指导教师签字 年 月 日课程设计成绩评定
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1