欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机课程设计数字钟设计.docx

    • 资源ID:6658486       资源大小:325.39KB        全文页数:21页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机课程设计数字钟设计.docx

    1、单片机课程设计数字钟设计微型计算机技术题目名称:多功能数字钟专业 自动化 班级 10级2班 姓名 苑 红 学号 201028168 学校:青岛理工大学自动化学院指导教师:史贺男 2012年12月25日课程设计任务书课程名称:微型计算机技术设计题目:多功能数字钟系统硬件要求:1、配置单片机的外部程序ROM空间,容量为16K(使用27128芯片)。2、使用51单片机内部时钟信号为系统提供计时信号。3、配置LED数码管或液晶显示器显示时间,设置4位操作按键。系统功能要求:1、在LED数码显示器或液晶显示器上显示:时:分:秒。2、按键功能自定义,实现按键调整时间功能。3、具有闹钟功能(选做)。4、具有

    2、秒表功能(选做)。其他要求:1、每位同学独立完成本设计。2、依据题目要求,提出系统设计方案。3、设计系统电路原理图。5、调试系统硬件电路、功能程序。6、编制课程设计报告书并装订成册,报告书内容(按顺序)(1)报告书封面(2)课程设计任务书(3)系统设计方案的提出、分析(4)系统中典型电路的分析(5)系统软件结构框图(6)系统电路原理图(7)源程序(8)课设字数不少于2000字成绩评语前言 :目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用

    3、豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。数字钟以成为人们日常生活中数字电子钟一般由振荡器,分频器,译码器,显示器等部分组成。数字钟的应用非常广泛,应用于人家庭以及车站。码头。剧场,办公室等公共场所,给人们的生活,学习,工作,娱乐带来极大的方便,由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确,性能稳定,携带方便等特点,它还用于计时,自动报时及自动控制等各个领域。 尽管目前市场

    4、上以有现成数字钟集成电路芯片出售,价格便宜这些都是数字电路中最基本的,应用最广的电路。数字电子钟的基本逻辑功能框图如下:它是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。这次的课程设计主要是采用51单片机内部时钟信号为系统提供计时信号,可以通过按键修改时间,使其在给定的时间上进行刷新,最后在数码管上显示时间,通过初值直接给数码管初始化这次主要是对时分秒的编程。还带有闹钟功能设置好时间在时间到时蜂鸣器发出声音。1、系统方案与论证1.1 方案设计主要利用AT89C51单片机外接8155扩展单片机IO口,B口、C口控制数码管的位显示, A口控制数码管的段显示,P1口与按键和蜂鸣器相接用于

    5、时间的校正和声音提醒,使用27128芯片配置单片机的外部程序容量为16K的 ROM空间。本设计采用一节1.5V干电池为整个系统供电,在设计中引入一个升压电路(从1.5V升至5V),产生+5V电压用于给CPU及显示电路提供工作电压,这是数字时钟正常工作时的总电压。显示电路将“时”、“分”、“秒”计数器的输出,通过六个八段LED显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整 图1 系统结构图1.2主要模块方案选择比较与论证1.2.1单片机的选取选用AT89C51作为控制器,价格低,性价比高,多个定时器和其他外围功能丰富。

    6、而且运行速度快工作稳定。1.2.2模式转换的选择:键盘按键选择模式,方便易于控制。1.2.3输入方案的选择通过独立键盘输入数据,通过数据的加减来确定数据,功能齐全且直接输入方便快捷。1.2.4显示方案的选择方案一:使用功能更好的液晶显示,增加显示信息的可读性,看起来更方便。而12864点阵液晶模块有明显的优点:微功耗,尺寸小,超薄轻巧,字迹美观,视觉舒适,显示信息量大,大部分功能用不到,造成浪费。 方案二:时间显示可以用数码管,显示信息少,容易控制。经比较,故选用方案二进行设计。2、系统硬件模块2.1 AT89C51单片机 AT89C51是一种带4K字节FLASH存储器(FPEROMFlash

    7、 Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.2复位电路一般情况下单片机的复位电路有两种,即上电复位和手动复位电

    8、路。如图所示为手动复位电路。图2复位电路2.晶振电路图 晶振电路2.按键调整电路图 按键调整电路本系统采用四位按键 S4为功能选择键,S3为时分秒选择键,S2、S1为数字加减键。2.蜂鸣器电路由于51单片机管脚功率限制问题,本系统蜂鸣器电路采用一个晶体管驱动,功率大,安全稳定。图蜂鸣器电路2.6 74LS373芯片电路与管脚图图 74LS373管脚电路图 373为三态输出的八 D 透明锁存器,共有 54S373 和 74LS373 两种线路 373 的输出端 O0O7 可直接与总线相连。 当三态允许控制端 OE 为低电平时,O0O7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,

    9、O0O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,O 被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。 引出端符号: D0D7 数据输入端 OE 三态允许控制端(低电平有效) LE 锁存允许端 O0O7 输出端 2.7 27128电路与管脚图图7 27128管脚电路图27128使用了一片用与扩展外部ROM27128管脚说明A0到A13为14条地址信号输入线,说明芯片容量为2的14次方,即16KD0到D7为数据线,表示芯片的每

    10、个存储单元存放一个字节(8位二进制数)。对芯片读数时,作为输出线,对芯片编程时,作为输入线。CE为输入信号,低电平有效。(有称作片选信号)OE为输出允许信号,低电平有效PGM为编程脉冲输入端,当对芯片编程时,由此端加入编程脉冲信号;读取数据时PMG的值为1Vcc和Vpp都是接电源的,正常工作时是+5V2.8外部并行口扩展8155电路图图8 8155管脚电路图 2、8155的地址编码及工作方式 8155各引脚功能说明如下: RST:复位信号输入端,高电平有效。复位后,3个I/O口均为输入方式。 AD0AD7:三态的地址/数据总线。与单片机的低8位地址/数据总线(P0口)相连。单片机与8155之间

    11、的地址、数据、命令与状态信息都是通过这个总线口传送的。 RD:读选通信号,控制对8155的读操作,低电平有效。 WR:写选通信号,控制对8155的写操作,低电平有效。 CE:片选信号线,低电平有效。 IO/M :8155的RAM存储器或I/O口选择线。当IO/M 0时,则选择8155的片内RAM,AD0AD7上地址为8155中RAM单元的地址(00HFFH);当IO/M 1时,选择 8155的I/O口,AD0AD7上的地址为8155 I/O口的地址。 ALE:地址锁存信号。8155内部设有地址锁存器,在ALE的下降沿将单片机P0口输出的低8位地址信息及 ,IO/ 的状态都锁存到8155内部锁存

    12、器。因此,P0口输出的低8位地址信号不需外接锁存器。 PA0PA7:8位通用I/O口,其输入、输出的流向可由程序控制。 PB0PB7:8位通用I/O口,功能同A口。 PC0PC5:有两个作用,既可作为通用的I/O口,也可作为PA口和PB口的控制信号线,这些可通过程序控制。 TIMER IN:定时/计数器脉冲输入端。 TIMER OUT:定时/计数器输出端。 VCC:5V电源。在单片机应用系统中,8155是按外部数据存储器统一编址的,为16位地址,其高8位由片选线 提供, CE0,选中该片。 当 CE0,IO/M 0时,选中8155片内RAM,这时8155只能作片外RAM使用,其RAM的低8位编

    13、址为00HFFH;当 CE0,IO/M 1时,选中8155的I/O口,其端口地址的低8位由AD7AD0确定2.9 六位8段LED数码管显示电路图10 LED数码管电路图数码管时间显示分为 时、分、秒三部分,JP3为秒位 采用24进制,JP2为分位,采用60进制,JP1为时位,采用60进制。3、系统软件调试3.1 程序结构 (1)主程序。 实现初始化与键盘监控, (2)定时器 T0 中断服务程序。 时钟电路的设计功能是利用单片机内部的定时/计数器进行中断定时,配合软件 延时实现时、分、秒的计时。利用定时器 T0 中断服务程序实现计时功能,同时 刷新计时缓冲区。定时器 T0 每隔 100ms 益处

    14、中断一次(设系统使用 12MHZ 晶振, 定时 T0 工作方式 1) 的定时初值为 3CBOH(即 THO=3CH,TL0=0B0H),每循环中断 10 次则延时时间为 1s,重复 60 次为 1min,分计时 60 次为 1 小时,小时计时 24 次则时间重新回到 00:00:00。 (3)时间设置与闹钟设置子程序。 实现当前时间及定时启闹钟时间的键盘输入设置。其功能是 用键盘设置子程序将键入的 6 位时间值送入键盘设置缓冲区, 用合字子程序将键 盘设置缓冲区中的 6 位 BCD 码合并为 3 位压缩 BCD 码, 送入计时缓冲区或闹钟值寄存区。若键盘输入的小时值大于 23 或分和秒值大于

    15、59,则不合法,将取消本 次设置,清 0 重新开始计时。 (4)键盘扫描子程序。 判断是否有键按下, 无键按下则循环等待, 有键按下则求取返回。 (5)显示子程序。 实现显示缓冲区的 6 位 BCD 码的动态扫描方式显示。 首先将 3 字节计时缓冲区中 时、分、和秒压缩 BCD 码拆分为 6 字节 BCD 码,由拆字子程序实现。当按下时间 或闹钟设置键后,在 6 位设置完成之前,应显示键入的数据而不显示当前时间, 为此系统设置一个计时显示允许标志位 F0,在时间/闹钟设置期间 F0=1,不调用 拆字子程序。 (6)定时比较子程序。 实现当前时间与预设的启闹钟时间的比较,若二者完全相同时,启动蜂

    16、鸣器名 叫并置位闹钟标志位。当重新按下 ALM 键时,停闹并清 0 闹钟标志。 (7)其他辅助功能子程序。 键盘设置子程序:将键入的 6 位时间值送入键盘设置缓冲区。 拆字程序:将 3 字节计时缓冲区中时、分和秒压缩 BCD 码拆分为 6 字节 BCD 码并刷新显示缓冲区。 合字子程序:将键盘设置缓冲区中 6 位 BCD 码合并为 3 位压缩 BCD 码,送入 计时缓冲区或闹钟值寄存区,同时检测时间值的合法性。 3、2系统软件流程图3.3源程序见附录4、设计总结心得体会在本次课程设计制作过程中,收获颇多。首先,自学能力大大提高。由一开始的一无所知到最终设计成功,所需要的知识除了来自课堂,更多的

    17、是课外通过上网查询、向老师等多种渠道获得。其次,在制作过程中遇到很多硬件和软件等各方面的问题,多次修改最终将困难一一解决。通过这次设计不仅丰富了理论知识,更激发了创新精神,受益终生。5参考文献【1】单片微机原理及应用【M】.清华大学出版社.2005.【2】黄庆华,张永格.单片机开发技术和实训【M】. 【3】电子技术基础模拟部分(第四版)【M】.高等教育出版社.1996(2004重印).【4】全国大学生电子设计竞赛训练教程【M】.电子工业出版社.2005-1.【5】数字电子技术基础【M】高等教育出版社.1998-12.【6】模拟电子技术基础【M】高等教育出版社.2006-12.【7】仪器仪表学报

    18、【J】第33卷第六期.2012.附录源程序#include #include unsigned char led14=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x40,0x00,0x76,0x77; /用一维数组定义0-9、横杠、全灭 H和A unsigned char a8=2,3,10,5,9,10,0,0; /给数码管赋初值 unsigned char second=0,minute=59,hour=23;unsigned char minute1=0,hour1=0;unsigned char b8=0xfe,0xfd,0x

    19、fb,0xf7,0xef,0xdf,0xbf,0x7f; /位选 unsigned char i,k=0;unsigned int temp;unsigned char M,S_flag,beep_num,ZD_flag;sbit K1=P30;sbit K2=P31;sbit K3=P32;sbit BEEP=P33;/延时函数 /void delay_10us(unsigned n) /10微秒级延时 do _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(-n);void delay_ms(unsigned n) /毫秒级延时 do d

    20、elay_10us(100); while(-n); void init() M=0; S_flag=0; /闪烁标志位 TMOD=0x10; /定时器1以方式1定时 TH1=0xfc; TL1=0x18; EA=1; /打开总中断 ET1=1; /允许定时器1中断 TR1=1; /开启定时器1 (开始定时计数) void time1() interrupt 3 /定时器1中断函数 TH1=0xfc; /定时1ms TL1=0x18; temp+; if(temp=1000) /配合定时器定时1s temp=0; second+; if(second=59) /正常走时时间 second=0;

    21、 if(minute59) minute+; else minute=0; hour+; hour%=24; /不使小时数越界 if(hour%12=0) beep_num=24; /12/24点鸣笛12声 else beep_num=hour%12*2; /其它时间的鸣笛声数 ZD_flag=1; /整点标志位 if(hour1=hour&minute1=minute) /闹钟时间到 beep_num=120; /闹1min ZD_flag=1; if(temp%250=0) /每250ms S_flag=!S_flag; /闪烁标志位取反 if(ZD_flag) /有闹时任务 beep_n

    22、um-; /鸣笛数减1 if(beep_num) BEEP=!BEEP; /鸣笛位取反(1次响1次不响) else BEEP=0; ZD_flag=0; if(k=8) k=0; P1=ak; P2=bk+; /先送代码,再打开关,防止余晖效应 delay_10us(20); /多亮一会儿 P2=0xff; /熄灭数码管 /显示模块 /void display() a0=(M=1)?(S_flag=1)?ledhour/10:led11):(M=3)?(S_flag=1)?ledhour1/10:led11):(M=4)?ledhour1/10:ledhour/10); /数码管第一位显示 a

    23、1=(M=1)?(S_flag=1)?ledhour%10:led11):(M=3)?(S_flag=1)?ledhour1%10:led11):(M=4)?ledhour1%10:ledhour%10); a2=led10; a3=(M=2)?(S_flag=1)?ledminute/10:led11):(M=4)?(S_flag=1)?ledminute1/10:led11):(M=3)?ledminute1/10:ledminute/10); a4=(M=2)?(S_flag=1)?ledminute%10:led11):(M=4)?(S_flag=1)?ledminute1%10:le

    24、d11):(M=3)?ledminute1%10:ledminute%10); a7=(M=3|M=4)?led13:ledsecond%10; /按键处理函数 /void key_prc() if(K1=0) delay_ms(2); /延时去抖 if(K1=0) /按K1进行模式切换 M+; if(M=5) M=0; while(!K1);/等待按键释放 if(M!=0) switch(M) case 1: /模式1调时 if(K2=0) delay_ms(2); /延时去抖 if(K2=0) /加键按下 if(hour 0) hour-; else hour=23; while(!K3)

    25、; break; case 2: /模式2调分 if(K2=0) delay_ms(2); /延时去抖 if(K2=0) /加键按下 if(minute0) minute-; else minute=59; while(!K3); break; case 3: /模式3闹钟调时 if(K2=0) delay_ms(2); /延时去抖 if(K2=0) /加键按下 if(hour10) hour1-; else hour1=23; while(!K3); break; case 4: /模式4闹钟调分 if(K2=0) delay_ms(2); /延时去抖 if(K2=0) /加键按下 if(minute10) minute1-; else minute1=59; while(!K3); break; void main() init(); while(1) key_pr


    注意事项

    本文(单片机课程设计数字钟设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开