ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:608.28KB ,
资源ID:10409396      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10409396.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子系统设计课设基于单片机和CPLD的数字时钟.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子系统设计课设基于单片机和CPLD的数字时钟.docx

1、电子系统设计课设 基于单片机和CPLD的数字时钟电子系统设计课程设计报告题目:基于单片机和CPLD的数字时钟姓名: XXX院系: 电力学院专业:电子科学与技术学号: XXXXXXXXX指导老师:XXXXXXXXX 完成时间: 2014 年 1 月 9 日设计题目基于单片机和CPLD的数字时钟设计要求设计过程(包括:设计方案、上机设计与仿真结果、硬件实验方案及实验结果、收获和体会)成绩评定指导教师评语课程设计等级目 录第1章 设计概述 3 1.1使用软件简介 .41.2 设计目的及要求 .4第二章 总体设计 4 2.1 设计框图 42.2 设计框图概述 .5第三章 硬件设计 5 3.1数字时钟的

2、结构 .53.2数字时钟的功能实现.73.3 数字时钟的功能模块设计.7第四章 程序框图和清单 11 4.1 程序框图 .114.2 程序 .124.3 清单 .19第五章 实验结果和体会 20体会22第一章 设计概述1.1使用软件简介a.使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。KEIL uVISION是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC+的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多

3、开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。KEIL uVision5是uVision4的升级版本,页面有了进一步的优化,使用起来更加的人性化。b.仿真软件Protues Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和D

4、SP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译。c.综合工具Modelsim Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。1.2设计目的及要求a、设计要求(1)设计一个基于单片机和CPLD的数字时钟;(2)根据

5、性能指标,计算元件参数,选好元件,设计电路并画出电路图;对设计电路进行模拟与测试。(3)撰写设计报告。b、技术指标使用单片机和CPLD设计,显示年、月、日、小时、分钟、秒,时间可以调整。第二章 总体设计2.1设计框图2.2设计框图概述 a.晶振电路:12MHZ晶振和两个22PF的电容,产生标准脉冲信号。 b.复位电路:利用它把电路恢复到起始状态。 c.时钟芯片:本设计采用高精度时钟芯片DS12C887,自带晶体振荡器和锂电池。在没有外部电源的情况下可工作10年。在运行中,单片机从时钟芯片读取当前时间,然后送到数码管显示。 d.数码管显示:本设计采用八段共阴极数码管,可以同时显示年月日或者时分秒

6、。 e.数码管驱动:选用两个74HC573锁存器,分别控制数码管的段码显示和位码显示。 f.按键:采用四个独立按键,分别用来实现调整时间及其它功能。第三章 硬件设计3.1 数字时钟的结构运用protues软件进行仿真,keil软件与其调试显示时分秒显示年月日3.2 数字时钟的功能实现 本设计一共使用四个独立按键来实现数字时钟的功能,其中k1是时分秒和年月日切换显示键,若当前显示是时分秒,按下k1,则切换显示到年月日;k2键为修改项选择键,按一下k2修改当前显示的第三位,按两下k2修改当前显示的第二位,按三下k2修改当前显示的第一位;k3和k4分别为增大和减小按键,来对修改项进行操作,只有在k2

7、按下之后才有效。3.3 数字时钟的功能模块设计 本设计中需要用到CPLD的有两个74HC573锁存器,下面用Modelsim进行锁存器设计.锁存器代码:module verilog_74hc573(LE1,OE_N1,D1,Q1,LE2,OE_N2,D2,Q2); input LE1,OE_N1,LE2,OE_N2; input 7:0 D1,D2; output 7:0 Q1,Q2; reg 7:0 Q_r1,Q_r2; wire 7:0 D_r1,D_r2; assign D_r1=D1; always(OE_N1,LE1,D1) begin if(OE_N1) begin Q_r1=8h

8、z; end else if(LE1) begin Q_r1=D_r1; end else begin Q_r1=Q_r1; end end assign Q1=Q_r1; assign D_r2=D2; always(OE_N2,LE2,D2) begin if(OE_N2) begin Q_r2=8hz; end else if(LE2) begin Q_r2=D_r2; end else begin Q_r2=Q_r2; end end assign Q2=Q_r2;endmodule测试代码timescale 1ns/1ns; module verilog_74hc573_tb; re

9、g le1,oe_n1; reg 7:0 d1; wire 7:0 q1; initial begin le1=0; oe_n1=0; d1=8b0000_1111; end always begin #5 le1=1; oe_n1=0; #5 d1=8d1111_0000; #5 d1=8d0000_1111; #5 le1=0; oe_n1=0; #5 d1=8d1010_0101; #5 d1=8d0101_1010; #5 oe_n1=1; le1=0; #5 d1=8d1111_1111; #5 oe_n1=1; le1=0; #5 d1=8d1000_0001; #5 d1=8d0

10、001_1110; #5 oe_n1=1; le1=1;#5 d1=8d0011_1100; #5 d1=8d1100_0011; endverilog_74hc573u1( .LE1(le1), .OE_N1(oe_n1), .D1(d1), .Q1(q1); endmodule仿真结果第四章 程序框图和清单4.1程序框图 1 2 3 4.2程序#include#define uchar unsigned char#define uint unsigned int#define M 1#define N 10sbit sp=P30;sbit dscs=P24;sbit dsas=P25;sb

11、it dsrw=P26;sbit dsds=P27;sbit duan=P20;sbit wei=P21;sbit k1=P34;sbit k2=P35;sbit k3=P36;sbit k4=P37;void delay(uint);void init();void keyscan();void display(uchar,uchar,uchar);void write_ds(uchar,uchar);void set_time();uchar read_ds(uchar);uchar shi,fen,miao,month,day;uchar year,flag,k2_num,i;unsig

12、ned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;void delay(uint x) uint i,j; for(i=x;i0;i-) for(j=110;j0;j-);void init() flag=0; k2_num=0; write_ds(0x0a,0x20); write_ds(0x0b,0x26); set_time();void display(uchar sh,uchar fe,uchar mia) uchar sg,ss,fg,fs,mg,ms; sg=sh%10; ss=s

13、h/10; fg=fe%10; fs=fe/10; mg=mia%10; ms=mia/10; duan=1; P0=tabless; duan=0; P0=0xfe; wei=1; wei=0; P0=0x00; delay(M); duan=1; P0=tablesg; duan=0; P0=0xfd; wei=1; wei=0; P0=0x00; delay(M); duan=1; P0=table10; duan=0; P0=0xfb; wei=1; wei=0; P0=0x00; delay(M); duan=1; P0=tablefs; duan=0; P0=0xf7; wei=1

14、; wei=0; P0=0x00; delay(M); duan=1; P0=tablefg; duan=0; P0=0xef; wei=1; wei=0; P0=0x00; delay(M); duan=1; P0=table10; duan=0; P0=0xdf; wei=1; wei=0; P0=0x00; delay(M); duan=1; P0=tablems; duan=0; P0=0xbf; wei=1; wei=0; P0=0x00; delay(M); duan=1; P0=tablemg; duan=0; P0=0x7f; wei=1; wei=0; P0=0x00; de

15、lay(M);void write_ds(uchar add,uchar date) dsas=1; dsds=1; dsrw=1; dscs=0; P1=add; dsas=0; dsrw=0; P1=date; dsrw=1; dsas=1; dscs=1;uchar read_ds(uchar add) uchar ds_date; dscs=0; dsas=1; dsds=1; dsrw=1; P1=add; dsas=0; dsds=0; P1=0xff; ds_date=P1; dsas=1; dsds=1; dscs=1; return ds_date;void set_time

16、() write_ds(0,0); write_ds(1,0); write_ds(2,0); write_ds(3,0); write_ds(4,12); write_ds(5,0); write_ds(6,0); write_ds(7,1); write_ds(8,1); write_ds(9,14);void keyscan() if(k1=0) uint i; delay(5); if(k1=0) flag+; if(flag=2) flag=0; for(i=N;i0;i-) if(flag=0) display(shi,fen,miao); else display(year,mo

17、nth,day); while(!k1); if(k2=0) delay(5); if(k2=0) k2_num+; if(k2_num=4) k2_num=0; for(i=N;i0;i-) if(flag=0) display(shi,fen,miao); else display(year,month,day); while(!k2); if(k2_num!=0) if(flag=0) if(k3=0) delay(5); if(k3=0) switch(k2_num) case 1: write_ds(0,(miao+1); break; case 2: write_ds(2,(fen

18、+1); break; case 3: write_ds(4,(shi+1); break; for(i=N;i0;i-) if(flag=0) display(shi,fen,miao); else display(year,month,day); while(!k3); if(k4=0) delay(5); if(k4=0) switch(k2_num) case 1: write_ds(0,(miao-1); break; case 2: write_ds(2,(fen-1); break; case 3: write_ds(4,(shi-1); break; for(i=N;i0;i-

19、) if(flag=0) display(shi,fen,miao); else display(year,month,day); while(!k4); if(flag=1) if(k3=0) delay(5); if(k3=0) switch(k2_num) case 1: write_ds(7,(day+1); break; case 2: write_ds(8,(month+1); break; case 3: write_ds(9,(year+1); break; for(i=N;i0;i-) if(flag=0) display(shi,fen,miao); else displa

20、y(year,month,day); while(!k3); if(k4=0) delay(5); if(k4=0) switch(k2_num) case 1: write_ds(7,(day-1); break; case 2: write_ds(8,(month-1); break; case 3: write_ds(9,(year-1); break; for(i=N;i0;i-) if(flag=0) display(shi,fen,miao); else display(year,month,day); while(!k4); void main() init(); while(1

21、) keyscan(); year=read_ds(9); month=read_ds(8); day=read_ds(7); shi=read_ds(4); fen=read_ds(2); miao=read_ds(0); if(flag=0) display(shi,fen,miao); else display(year,month,day); 4.3清单Bill Of Materials For 数字钟 Design Title:数字钟Author:Revision:Design Created:20131222Design Last Modified:201417Total Part

22、s In Design:112ResistorsQuantity:ReferencesValueOrder Code2R1, R25003CapacitorsQuantity:ReferencesValueOrder Code2C1, C222p1C3100uMaplin VH12N4Integrated CircuitsQuantity:ReferencesValueOrder Code1U1AT89C522U2, U374HC5731U4DS128872MiscellaneousQuantity:ReferencesValueOrder Code1RP1RESPACK-81X1CRYSTAL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1