1、电子表湖南工程学院课 程 设 计课程名称 单片机原理与应用 课题名称 电子表 专 业 班 级 学 号 姓 名 指导教师 周向红、李晓秀、王迎旭、汪超2013年 6 月 21日湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 电子表 专业班级 自动化1003班 学生姓名 学 号 指导老师 周向红、李晓秀、王迎旭、汪超 审 批 任务书下达日期 2013 年 6 月 21 日任务完成日期 2013年 6 月 25 日设计内容与设计要求设计内容:本课题要求以单片机为核心设计一个多功能电子表,具有电子时钟、时钟设置和跑表功能。做时钟时在6位LED 显示器上显示时、分、秒,做跑表时
2、显示范围000.0秒999.9秒,并具有时钟启动、时钟停止、跑表启动、跑表复位、时钟调整功能键。要求焊接好开发板,在开发板上进行调试。设计要求:1)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要元器件选择;4)开发板焊接及测试5)系统软件设计及调试;6)系统联调及操作说明7)写说明书主 要 设 计 条 件1、 MCS-51单片机实验操作台1台;2、 PC机及单片机调试软件,仿真软件proteus;3、 开发板1块; 4、 制作工具1套;5、系统设计所需的元器件。说 明 书 格 式封面课程设计任务书目录第1章、概述第2章、系统总体方案设计第3章 硬件设计第4章 开发板焊接及其测试第5章
3、 软件设计与说明(包括流程图)第6章 调试步骤、结果、使用说明第7章 设计总结第8章 参考文献附录:系统电路原理图(用PROTEL99制作)、系统程序清单。电气与信息工程系课程设计评分表进 度 安 排设计时间分为二周第一周星期一、上午:布置课题任务,课题介绍及讲课。下午:借阅有关资料,总体方案讨论。星期二、分班级焊接开发板星期三、确定总体方案,学习与设计相关内容。星期四、各部分方案设计,各部分设计。星期五、设计及上机调试。星期六、设计并调试第二周星期一:设计及上机调试。星期二:调试,中期检查。星期三:调试、写说明书。星期四-星期五上午:写说明书、完成电子版并打印成稿。星期五下午:答辩。目录第1
4、章 概述 1第2章 系统总体方案设计 2第3章 硬件设计 33.1 系统框图 33.2 时钟电路 43.3 按键电路 43.4 外部显示电路 6第4章 开发板焊接及测试 7第5章 软件设计与说明 85.1 流程图 85.2 程序设计 10第6 章 调试步骤、结果、使用说明 116.1 调试步骤及结果 116.2 使用说明 12第7章 设计总结 13附录 141.总电路图 142.程序清单 153.参考文献 20第1章 概述单片机是最典型的嵌入式计算机系统,可广泛地嵌入到工业控制单元、智能仪器仪表、家用电器、机器人、汽车电子系统及通信等产品中。我国目前最常用的单片机有Intel公司的MCS-51
5、系列、MCS-96系列;Philips公司的87、80系列;Atmel公司的89系列、AVR系列。本课程设计将采用Atmel公司的AT89c52单片机。Atmel公司所生产的AT89系列单片机是基于Intel公司的MCS-51系列而研制的。Atmel公司把自身先进Flash存储技术和80c31核心相结合,从而生产出Flash单片机AT89C51系列,内含大容量的Flash存储器。它与PC通信和下载程序都十分方便。所以,在产品开发及生产便携式商品、手提式仪器等方面有着十分广泛的应用,也是目前取代传统的MCS-51系列单片机的主流单片机之一。AT89C52单片机是一个低电压,高性能CMOS 8位单
6、片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多高性低比的系统控制应用领域。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开
7、发成本。用AT89C52单片机设计的电子时钟,可实现多功能和高精度的特点。第2章 系统总体方案设计方案一:采用数字逻辑电路 由555构成多谐振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,在经分频器输出标准秒脉冲,由两个74LS90级联构成两个60进制计数器和一个24进制计数器,满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数器的输出经译码器送显示器。这种方案是由纯硬件电路实现了设计,优点是省略了软件部分的设计,但是这种方案因为是纯硬件实现的,成本较高,误差较大,不灵活,因此在本次设计中不予以采用。方案二:采用时钟芯片针对计算机系统对实时时
8、钟功能的普遍需求,各大芯片生产厂家陆续推出了一系列的实时时钟集成电路,如DS1302、DS12887等。这些实时时钟芯片虽然具备年、月、日、时、分、秒计时功能和多点定时功能,且计时数据的更新每秒自动进行一次,不需程序干预。但必然会增加硬件电路的复杂性和成本,对于简单的电子表设计不经济,不予采用。 方案三:采用单片机软件控制利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。配合软件监控实现运行,停止,调时,调分,调秒。该方案节省硬件成本,软件设计做够灵活,且能够使人在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,能够准确走时并实现多功能。因此,本课题采用该
9、方案。第3章 硬件设计3.1 系统框图3.2 时钟电路51单片机内部有一个用于构成震荡器的高增益反向放大器,引脚X1和X2分别是反向放大器的输入端和输出端,通常,经由片外晶体振荡器或陶瓷谐振器与两个匹配电容一起构成了一个自激震荡电路,为单片机提供时钟电源。各元件的取值如图所示。3.3 按键电路本课题将使用4个功能按键S2、S3、S4、S5,各按键的功能分别为:S2时间加调整按钮;跑秒复位按钮S3时间调整位选中按钮S4显示界面切换按钮S5跑秒启动和暂停按钮3.4 复位按键电路S6为RC上电复位按钮,在单片机RST端变为高电平的第二个机器周期执行内部复位,以后每个周期重复一次,直至RST端出现低电
10、平。3.4 外部显示电路采用6个共阴数码显示管LED1LED6,用两个锁存器U1、U2(74HC573)分别锁存位选信号和段选信号,c的下降沿锁存信号。第4章 开发板焊接及测试进行电路板的焊接前,先检查各个元件是否都没有损坏,确认所有元件都为完好元件后便进行电路板的焊接工作。焊接注意事项: 1 应根据焊接对象合理选择不同类型的电烙铁。 2 电烙铁插头最好使用三极插头。要使外壳妥善接地。 3 使用前,应认真检查电源插头、电源线有无损坏。并检查烙铁头是否松动。 4 铁使用中,不能用力敲击。要防止跌落。烙铁头上焊锡过多时,可用布擦掉。不可乱甩,以防烫伤他人。在使用过程中要经常挂锡。 5 使用过程中,
11、烙铁不能到处乱放。不焊时,应放在烙铁架上。注意电源线不可搭在烙铁头上,以防烫坏绝缘层而发生事故。 6 使用结束后,应及时切断电源,拔下电源插头。冷却后,再将电烙铁收回工具箱。焊接完成后需进行测试,将开发板测试程序烧录到单片机中,启动开关,若焊接没有问题,测试程序的各功能将都能实现.第5章 软件设计与说明5.1 流程图5.2 程序设计在程序设计上,主程序void main()对各个子程序进行调用;void delay()为延时子程序用于按键去抖动延时;void key1scan()、void key2scan()、void key3scan()、void key30scan()、void key
12、4scan()为按键扫描子程序。两个定时器T0和T1分别为时钟功能和跑秒功能提供时间基准,其中断子程序如下:void clock() interrupt 1 /定时器0中断,定时1/20秒 TL0=(65536-50000)%256; TH0=(65536-50000)/256; a+; void miao_clock() interrupt 3 /定时器1中断,定时0.001秒 TL1=(65536-10000)%256; TH1=(65536-10000)/256; S_+; 第6 章 调试步骤、结果、使用说明6.1 调试步骤及结果启动电源开关,系统初始化并进入时钟模式,开始走时,下图为0
13、0时03分06秒时的情形:按下S3进入时间调整模式,下图是对时间分的个位调整界面:按动按键S4,切换到跑秒模式,初始化如下图:按键S5启动跑秒功能:6.2 使用说明启动电源开关,开启电子表功能,各按键的的功能参见 3.3节。第7章 设计总结经过多次调试和改进,实现了电子表和跑秒的功能,完成任务要求。在这次课程设计中,深深感觉到思路的重要性。开始由于没有一个清晰的思路,想到一步做一步,等到后面步序多了,引起了思绪的混乱,程序越来越不好编写,甚至都要重新开始编写。 在这次的程序设计中遇到了两个难点。第一个是时间调整位的闪烁功能。本来没想过要加闪烁功能的,但时间调整没有闪烁功能的话,往往不知道要调节
14、的是时间的哪一位,往往会引起误操作,影响体验度。第二个是时间的调整,这里可以用两个调整按键分别实现加、减调时,但该电子表的功能比较简单,最终只用了一个按键,进行时间“加”调整,空出一个按键可以扩展其他功能。在跑秒中加入暂停功能,可对同一事件多次间歇计时,使跑秒的功能更完善。 程序设计是一个耐心的活,必须静下心来,何况还在这么炎热的季节。这次课程设计除了对我在技能上的提升外,另一个收获就是锻炼了自己的耐心,受益匪浅。附录1.总电路图2.程序清单#include#define uint unsigned int#define uchar unsigned charsbit wei=P27;sbit
15、 duan=P26;sbit key1=P36; /页面切换 b=1跑秒,否则时钟sbit key2=P37; /启动、停止 s5sbit key3=P34; /S2,跑秒复位按钮,给S_清零;加调时按钮sbit key4=P35; /时间设定按钮uchar a=0,c=0,d=0,S_=0,s=0,M_=0,m=0,H_=0,h=0,b=0; /a,定时1s,计数20次;c,定时器1,计数,smh秒分时void delay(uint t) /延时子程序 while(-t);void display(s1,s2,m1,m2,h1,h2) /显示子程序 uchar tab1=0x3f,0x06,
16、0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x80; /led显示0-9,点 if(b=0&d!=1)|(b!=0)|(b=0&d=1&a=10) wei=1;P0=0xfe;wei=0;P0=0xff; duan=1;P0=0x00;duan=0; delay(100); if(b=0&d!=2)|(b!=0)|(b=0&d=2&a=10) wei=1;P0=0xfd;wei=0;P0=0xff; duan=1;P0=0;duan=0; /xiaoshi 显示 delay(100); if(b=0&d!=3)|(b!=0)|(b=0&d=3&a=10)
17、 wei=1;P0=0xfb;wei=0; P0=0xff; duan=1;P0=0;duan=0; delay(100); if(b=0&d!=4)|(b!=0)|(b=0&d=4&a=10) wei=1;P0=0xf7;wei=0; P0=0xff; duan=1;P0=0;duan=0; /分钟显示 delay(100); wei=1;P0=0xef;wei=0;P0=0xff; duan=1;P0=tab1s2;duan=0; delay(100); wei=1;P0=0xdf;wei=0; P0=0xff; duan=1;P0=tab1s1;duan=0; /miao显示 delay
18、(100);void key1scan() /key1扫描,界面切换 if(key1=0) delay(30); if(key1=0) b=b; while(!key1);void key2scan() /key2扫描,跑秒启动、暂停 if(key2=0) delay(30); if(key2=0) c=c; while(!key2);void key30scan() /tiaoshi if(key3=0) delay(30); if(key3=0) switch(d) case 0: break; case 1: h+=10;break; case 2: h+;break; case 3:
19、m+=10;break; case 4: m+;break; while(!key3) if(d=3|d=4) s=0;void key3scan() /key3扫描,跑秒复位 if(key3=0) delay(30); if(key3=0) c=0; while(!key3) S_=M_=H_=0;void key4scan() /key4,d(0.1.2.3.4) if(key4=0) delay(30); if(key4=0) d+; if(d4) d=0; while(!key4);void main() uchar h2,h1,m2,m1,s2,s1; /六个数码管,对应时分秒,两位
20、 uchar H11,H22,M11,M22,S11,S22; TMOD=0x11; TL0=(65536-50000)%256; TH0=(65536-50000)/256; /定时器0,方式1,定时1s(需计数20次,a) TL1=(65536-10000)%256; TH1= (65536-10000)/256; /定时器1,方式1,定时100ms EA=1; ET0=1; ET1=1; EA=1; TR0=1; while(1) TR1=c; if(a=20) s+;a=0; /计数满20,即1秒 if(s=60) m+;s=0; /满60秒,1分钟 if(m=60) h+;m=0;
21、/满60分,1小时 if(h23|h=23&s=59&m=59) h=0; /24小时 s1=s%10;s2=s/10; m1=m%10;m2=m/10; h1=h%10;h2=h/10; if(S_=100) M_+;S_=0; /计数满100,即1秒 if(M_=100) H_+;M_=0; /满60秒,1分钟 if(H_=9&M_=99&S_=99) H_=0; /满60分,1小时 S11=S_%10;S22=S_/10; M11=10;M22=M_%10; H11=M_/10;H22=H_; key1scan(); if(b=0) display(s1,s2,m1,m2,h1,h2);
22、 key4scan(); key30scan(); if(b!=0) d=0; /复位调时功能 display(S11,S22,M11,M22,H11,H22); key2scan(); key3scan(); void clock() interrupt 1 /定时器0中断,定时1/20秒 TL0=(65536-50000)%256; TH0=(65536-50000)/256; a+; void miao_clock() interrupt 3 /定时器1中断,定时0.001秒 TL1=(65536-10000)%256; TH1=(65536-10000)/256; S_+; 3.参考文
23、献1、 王迎旭编.单片机原理与应用M.机械工业出版社.2、 楼然苗编.51系列单片机设计实例M.北京航空航天大学出版社.3、 黄勤编.计算机硬件技术基础实验教程M.重庆大学出版社4、刘乐善编.微型计算机接口技术及应用M.华中科技大学出版社.5、陈光东编.单片微型计算机原理及接口技术M.华中科技大学出版社.6、周向红 编51系列单片机应用与实践教程M.北航出版社电气信息学院课程设计评分表项 目评 价优良中及格差设计方案合理性与创造性(10%)开发板焊接及其调试完成情况*(10%)硬件设计或软件编程完成情况(20%)硬件测试或软件调试结果*(10%)设计说明书质量(20%)答辩情况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综 合 评 分 指导教师签名:_ 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容;此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1