可调LED数显电子时钟设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《机电设备控制技术》
课程设计说明书
题目可调LED数显电子时钟设计
机械工程学院机械设计制造及其自动化专业xxxx 班xx 号学生姓名xxx.
指导教师xxx xxx.
完成日期2009年12月10日.
目录
第1章课程设计任务书 (1)
1.1 设计要求及任务 (1)
1.2 进度安排及完成时间 (1)
第2章可调LED数显电子时钟工作原理 (2)
2.1 LED显示原理 (2)
2.2 可调LED数显电子时钟工作过程 (2)
第3章可调LED数显电子时钟系统设计 (3)
3.1 硬件原理的设计 (3)
3.2 元器件的选型 (4)
3.3 软件设计流程图 (4)
3.4 源程序 (8)
第4章设计总结 (17)
参考文献 (18)
第1章课程设计任务书
设计题目可调LED数显电子时钟设计
姓名xxx院别机械工程学院专业机械设计制造及其自动化班级 xxxx学号 xx 指导老师 xxx xxx 教研室主任 xxx
1.1 设计要求及任务
1.设计要求
(1)用单片机进行控制;
(2)用数码管显示时、分、秒;
(3)用按键实现时、分、秒调整项的选择与时间的加、减调整;
(4)保证所调整项闪烁,以示区别。

2.设计任务
(1)设计时钟工作方案;
(2)硬件设计、硬件原理图及元器件选型;
(3)绘制工作流程图及软件设计;
(4)程序在开发板上通过调试;
(5)编写设计说明书。

1.2 进度安排及完成时间
1.设计时间安排:2009年11月30日至2009年12月11日
2.设计进度安排:
第13周:布置设计任务,查阅资料,熟悉设计要求及任务,软硬件设计。

第14周:调试程序,整理资料,撰写设计说明书,答辩,交设计作业(打印稿及电子稿)。

第2章可调LED数显电子时钟工作原理
2.1 LED显示原理
LED(Light Emitting Diode),发光二极管,简称LED,,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。

LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极使整个晶片被环氧树脂封装起来。

半导体晶片由两部分组成,一部分是P 型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。

但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。

当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。

而光的波长也就是光的颜色,是由形成P-N结的材料决定的。

它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。

由于具有容易控制、低压直流驱动、组合后色彩表现丰富、使用寿命长等优点,广泛应用于城市各工程中、大屏幕显示系统。

LED可以作为显示屏,在计算机控制下,显示色彩变化万千的视频和图片。

LED是一种能够将电能转化为可见光的半导体。

2.2 可调LED数显电子时钟工作过程
可调LED数显电子时钟由8个数码管组成,其从左到右数码管显示格式为“XX-XX-XX”,如12-20-30。

数码管的时、分、秒位分别根据时钟的运行进行变化。

并且可以通过按键实现时间的调整:K1作为功能键,通过K1实现时、分、秒的调整项的选择;K2键作为加1键;K3键作为减1键。

在调整时所调整的项闪烁,目的是和其他两个时间项区别出来,并且在按下按键时有蜂鸣器发出提示音,当数字时钟到达整点时也有蜂鸣器发出提示。

可调LED数显电子时钟由51单片机进行控制,为了节省端口,电子时钟的显示采用动态显示的方式。

而时、分、秒的分隔符在运行时进行闪烁,以作为数字时钟运行的提示。

第3章可调LED数显电子时钟系统设计
3.1 硬件原理的设计
根据设计任务书的要求选择硬件元器件,并进行硬件线路的连接。

电子时钟的硬件原理图如图1所示:
图1 电子时钟硬件原理图
单片机的P0口作为显示字形的输出口,P2口作为位选码的输出口来选择需要显示字形的数码管,由P1.7口输出蜂鸣器的控制信号并控制蜂鸣器的按要求发声,由P3.0、P3.1、P3.2口作为按键控制信号的输入端口。

电阻与三极管组成了数码管的驱动电路,来实现通过单片机输出的低电压来控制数码管的正常显示。

3.2 元器件的选型
根据电子时钟的运行特点和要求,对元器件进行选择。

电气元器件选型如下表1:
表1 电子时钟的元器件目录表
3.3 软件设计流程图
电子时钟的软件设计流程图分别如下所示:
3.4 源程序
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_0
ORG 000BH
LJMP INT_TO
ORG 0030H
MAIN: MOV 70H,#00H; 显示器显示数字的显示缓冲区
MOV 71H,#05H;
MOV 72H,#0BH;
MOV 73H,#09H;
MOV 74H,#05H;
MOV 75H,#0BH;
MOV 76H,#03H;
MOV 77H,#02H;
MOV R0,#70H; 显示缓冲区地址
MOV 30H,#0FEH; 位选码,指向LED0
MOV TMOD,#01H; 定时器T0工作方式1
MOV TH0,#4CH; 定时器T0赋初值(定时46ms)由于单片机执行定时
; 器中断程序时要经过
MOV TL0,#50H; 一定的机械周期所以要定时1s=(定时数+执行机械周
; 期)x循环次数
MOV R2,#20; 定时扩展计数20次
MOV R3,#00H; 功能键按下次数
SETB ET0; 开定时器T0中断
SETB TR0; 启动定时器T0
SETB EA; 开放中断系统
SETB EX0; 允许INT0中断
SETB IT0; 下降沿触发
LOOP: LCALL SCAN; 调用按钮扫描子程序
LCALL DISP; 调用显示子程序
SJMP LOOP; 循环等中断
;////////////////////////////////////////////////////////////////// ; 按钮扫描子程序
;////////////////////////////////////////////////////////////////// ;按钮扫描程序通过判断记录功能键按下次数寄存器R3的值,对时钟的不同位;实现闪烁显示,当R3中的值分别为1、2、3时分别使得秒、分、小时位闪烁显;示,当R3中的值为0或4时时钟的各位都不闪烁显示。

SCAN:CJNE R3,#01H,LP1;判断功能键是否按下1次
LCALL SCHANGE; 调用秒加减调整程序
MOV 40H,70H; 保存秒钟的数据
MOV 41H,71H;
MOV 70H,#0AH; 使秒钟的显示值指向熄灭
MOV 71H,#0AH;
MOV R6,#03FH; 延时显示
MOV R0,#70H;
YY: LCALL DISP ; 调用显示子程序
DJNZ R6,YY;
MOV 70H,40H; 将原秒钟的值重新显示
MOV 71H,41H;
MOV R6,#03FH; 延时显示
MOV R0,#70H;
XX: LCALL DISP; 调用显示子程序
DJNZ R6,XX;
LJMP SCAN;
LP1: CJNE R3,#02H,LP2;;
LCALL MCHANGE; 调用分加减调整程序
MOV 43H,73H;
MOV 44H,74H;
MOV 73H,#0AH;
MOV 74H,#0AH;
MOV R6,#03FH;
MOV R0,#70H;
YYY: LCALL DISP;
DJNZ R6,YYY;
MOV 73H,43H;
MOV 74H,44H;
MOV R6,#03FH;
MOV R0,#70H;
XXX: LCALL DISP;
DJNZ R6,XXX;
LJMP LP1;
LP2: CJNE R3,#03H,NEXT;
LCALL HCHANGE; 调用小时加减调整程序 MOV 46H,76H;
MOV 47H,77H;
MOV 77H,#0AH;
MOV 76H,#0AH;
MOV R6,#03FH;
MOV R0,#70H;
YYYY:LCALL DISP;
DJNZ R6,YYYY;
MOV 76H,46H;
MOV 77H,47H;
MOV R6,#03FH;
MOV R0,#70H;
XXXX:LCALL DISP;
DJNZ R6,XXXX;
LJMP LP2;
NEXT: RET;
;////////////////////////////////////////////////////////////////// ; 功能键按下中断子程序
;////////////////////////////////////////////////////////////////// INT_0: LCALL SOUND
INC R3; 有功能键按下功能键计数寄存器加1
CJNE R3,#04H,NEXT0; 功能键没有按下4次跳出中断
MOV R3,#00H; 功能键按下4次后重新设定计数寄存器初值
NEXT0: RETI
;////////////////////////////////////////////////////////////////// ; 秒加减调整子程序
;////////////////////////////////////////////////////////////////// ; 秒加减调整子程序通过判断P3.1和P3.0口的输入情况来对秒的位进行加减调;整。

当P3.1口一直有低电平输入,即K2键一直按下时秒位会一点点的进行累;加,直到59时再加则变为0如继续按下则重复以上动作;当P3.0口一直有低;电平输入,即K3键一直按下时秒位会一点点的进行递减,直到减到0时再减则;变为59如继续按下则重复以上动作。

SCHANGE:JB P3.1, SDEC; 加键未按下跳到下一判断
LCALL SOUND; 调用按键提示音子程序
INC 70H; 加键按下秒加1
MOV R5,70H;
CJNE R5,#0AH,NEXT3; 秒的个位未超过9继续
MOV 70H,#00H; 秒的个位超过9个位重新赋值0
INC 71H; 秒的十位加1
MOV R5,71H;
CJNE R5,#06H,NEXT3;秒的十位未达到6继续
MOV 71H,#00H; 秒的十位达到6重新赋0
SJMP NEXT3
SDEC: JB P3.0, NEXT3; 减键未按下跳出
LCALL SOUND; 调用按键提示音子程序
DEC 70H; 减键按下秒的个位减1
MOV R5,70H;
CJNE R5,#0FFH,NEXT3;秒的个位没有少于0继续
DEC 71H; 秒的个位少于0十位减1
MOV 70H,#09H; 秒的个位赋9
MOV R5,71H;
CJNE R5,#0FFH,NEXT3; 秒的十位不少于0继续
MOV 71H,#05H; 秒的十位少于0时十位重新赋5
NEXT3: RET;
;////////////////////////////////////////////////////////////////// ; 分加减调整子程序
;////////////////////////////////////////////////////////////////// ; 分加减调整子程序具体的功能同秒加减调整子程序
MCHANGE:JB P3.1, MDEC;
LCALL SOUND; 调用按键提示音子程序
INC 73H;
MOV R5,73H;
CJNE R5,#0AH,NEXT4;
MOV 73H,#00H;
INC 74H;
MOV R5,74H;
CJNE R5,#06H,NEXT4;
MOV 74H,#00H;
SJMP NEXT4
MDEC: JB P3.0, NEXT4;
LCALL SOUND; 调用按键提示音子程序
DEC 73H;
MOV R5,73H;
CJNE R5,#0FFH,NEXT4;
DEC 74H;
MOV 73H,#09H;
MOV R5,74H;
CJNE R5,#0FFH,NEXT4;
MOV 74H,#05H;
NEXT4: RET
;////////////////////////////////////////////////////////////////// ; 小时加减调整子程序
;////////////////////////////////////////////////////////////////// ; 小时加减调整子程序具体的功能同秒加减调整子程序
HCHANGE: JB P3.1, HDEC;
LCALL SOUND; 调用按键提示音子程序
INC 76H;
MOV R5,76H ;
CJNE R5,#04H,HOUR1; 小时低位未到4转向下一判断 MOV R5,77H;
CJNE R5,#02H,NEXT5; 小时低位到4但高位未到2跳出继续
MOV 76H,#00H; 小时低位到4且高位到2使小时的高低位都为0 MOV 77H,#00H;
SJMP NEXT5;
HOUR1: CJNE R5,#0AH,NEXT5; 小时低位未超过9跳出继续
MOV 76H,#00H; 小时低位超过9使低位为0
INC 77H; 小时高位加1
SJMP NEXT5
HDEC: JB P3.0, NEXT5
LCALL SOUND; 调用按键提示音子程序
DEC 76H
MOV R5,76H
CJNE R5,#0FFH,NEXT5; 小时低位未到0转向下一判断
MOV R5,77H;
CJNE R5,#00H,HOUR2; 小时低位到0但高位未到0跳出继续
MOV 76H,#03H; 小时低位到0且高位到0使小时的高低位为24 MOV 77H,#02H;
SJMP NEXT5;
HOUR2: MOV 76H,#09H; 小时低位到0且高位未到0使低位为9
DEC 77H;
NEXT5: RET
;/////////////////////////////////////////////////////////////////// ; 显示子程序
;/////////////////////////////////////////////////////////////////// ;显示子程序通过字形码的选择和输出,以及位选码的循环移位输出来实现对显;示缓冲区内的字形的动态显示。

DISP: MOV A,@R0; 取要显示的字符
MOV DPTR,#TAB; 显示字形码首地址
MOVC A,@A+DPTR; 查表取字形码
MOV P0,A; 从P0口输出字形码
MOV A,30H; 位选码
MOV P2,A; 从P2口输出位选码
RL A; 下一个显示器的位选码
MOV 30H,A; 位选码送回30H单元
INC R0; 指向下一个要显示的字形
;ORL P0,#0FFH; //******// 令显示器熄灭来消除残影 //******// MOV R1,#0FFH
JJ: DJNZ R1,JJ
ORL P0,#0FFH; //******// 令显示器熄灭来消除残影 //******// CJNE R0,#78H,DISP; 8位显示未完继续
MOV R0,#70H; 8位显示完毕令R0重新指向显示缓冲区的首地址
RET
;////////////////////////////////////////////////////////////////// ; 定时中断子程序
;////////////////////////////////////////////////////////////////// ;通过定时器T0中断来实现时钟的计时运行,使得每经过1S时钟的秒位就会自;动加1并按照时钟的运行规律进行运转。

INT_TO: MOV TH0,#4CH; 定时器T0赋初值
MOV TL0,#50H;
DEC R2
CJNE R2,#10,FLASH; 定时0.5s使得时分秒间的分隔符闪烁
MOV 72H,#0AH;
MOV 75H,#0AH;
FLASH: CJNE R2,#00H,NEXT2; 定时1s未到继续
MOV R2,#20; 定时1s到重新为R2赋值
MOV 72H,#0BH; 分隔符闪烁
MOV 75H,#0BH;
INC 70H; 秒的低位加1
MOV R7,70H;
CJNE R7,#0AH,NEXT2; 秒的低位没有超过9转移继续 MOV 70H,#00H; 秒的低位超过9使秒的低位变为0
INC 71H; 秒的高位加1
MOV R7,71H;
CJNE R7,#06H,NEXT2; 秒的高位未到6继续
MOV 71H,#00H; 秒的高位到了6使秒的高位变为0
INC 73H; 分加1
MOV R7,73H;
CJNE R7,#0AH,NEXT2; 分的低位没有超过9转移继续
MOV 73H,#00H; 分的低位超过9使分的低位变为0
INC 74H; 分的高位加1
MOV R7,74H;
CJNE R7,#06H,NEXT2; 分的高位未到6继续
MOV 74H,#00H; 分的高位到了6使分的高位变为0
INC 76H; 小时低位加1
LCALL SOUNDH; 调用整点提示音程序
MOV R7,76H;
CJNE R7,#04H,HOUR0; 小时低位未到4转向下一判断
MOV R7,77H;
CJNE R7,#02H,NEXT2; 小时低位到4但高位未到2跳出继续
MOV 76H,#00H; 小时低位到4且高位到2使小时的高低位都为0 MOV 77H,#00H;
SJMP NEXT2;
HOUR0: CJNE R7,#0AH,NEXT2; 小时低位未超过9跳出继续
MOV 76H,#00H; 小时低位超过9使低位为0
INC 77H; 小时高位加1
NEXT2: RETI
;////////////////////////////////////////////////////////////////// ; 按键提示音子程序
;////////////////////////////////////////////////////////////////// ;通过控制P1.7口输出的高低电压来实现调节接在P1.7口的蜂鸣器发出蜂鸣SOUND: MOV R1,#05FH;
LPP1: MOV R4,#05FH;
CLR P1.7
LPP2: DJNZ R4 ,LPP2;
SETB P1.7
DJNZ R1 ,LPP1 ;
RET
;////////////////////////////////////////////////////////////////// ; 整点提示音子程序
;////////////////////////////////////////////////////////////////// SOUNDH: MOV 10H,#06FH;
PP1: MOV 11H,#0AFH;
CLR P1.7
MOV 12H,#0AFH
PP2: DJNZ 12H,PP2
PP3: DJNZ 11H ,PP3;
SETB P1.7
DJNZ 10H ,PP1 ;
RET
TAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H; 0~9及熄灭“——”字形码表DB 82H, 0F8H, 80H, 90H, 0FFH, 0BFH
END
第4章设计总结
《机电设备控制技术》课程设计让我们再次熟悉了单片机的知识以及相关的设计和应用。

此次课程设计让我们能够更加系统的总结自己的单片机的知识,同时也是对我们编程方法和能力的一次很好的培养和锻炼。

在此次课程设计中让我感受最深的是对一个任务的分块进行解决。

在数字时钟程序的编写过程中,将所有的程序分模块的去编写、调试使得编写和调试的效率大大的提高了。

同时因为是分成不同的模块进行的调试所以使得在改错方面大大缩短了时间,将调试好的模块再加入到主程序中,然后再经过小小的调整最终实现程序的完整。

在程序编写的过程中让我体会到了全局观念、总体安排的重要。

由于单片机中的一些语句具有一定得格式要求,对寄存器的运用也是特别的频繁,所以在编程时很容易使得寄存器的应用发生相互的冲突,这时需要对各个寄存器所用到的功能进行相应的记录以免发生冲突。

因此,合理的安排结构并作相应的记录是非常必要的一个细节问题,同时也是一种做事的捷径。

任何问题都有它的解决办法,只要我们能够细心地观察分析,并且不断地去尝试就会找的其最佳的解决方案。

参考文献
[1] 黄菊生. 单片机原理与接口技术.北京:国防工业出版社,2007.9
[2] 蔡朝洋. 单片机控制实习与专题制作.北京:北京航空航天大学出版
社,2006.11。

相关文档
最新文档