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

上传人:b****7 文档编号:10409396 上传时间:2023-02-11 格式:DOCX 页数:33 大小:608.28KB
下载 相关 举报
电子系统设计课设基于单片机和CPLD的数字时钟.docx_第1页
第1页 / 共33页
电子系统设计课设基于单片机和CPLD的数字时钟.docx_第2页
第2页 / 共33页
电子系统设计课设基于单片机和CPLD的数字时钟.docx_第3页
第3页 / 共33页
电子系统设计课设基于单片机和CPLD的数字时钟.docx_第4页
第4页 / 共33页
电子系统设计课设基于单片机和CPLD的数字时钟.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

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

《电子系统设计课设基于单片机和CPLD的数字时钟.docx》由会员分享,可在线阅读,更多相关《电子系统设计课设基于单片机和CPLD的数字时钟.docx(33页珍藏版)》请在冰豆网上搜索。

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

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

《电子系统设计》

课程设计报告

题目:

基于单片机和CPLD的数字时钟

 

姓名:

XXX

院系:

电力学院

专业:

电子科学与技术

学号:

XXXXXXXXX

指导老师:

XXXXXXXXX

 

完成时间:

2014年1月9日

设计题目

基于单片机和CPLD的数字时钟

设计要求

设计过程

(包括:

设计方案、上机设计与仿真结果、硬件实验方案及实验结果、收获和体会)

成绩评定

指导教师评语

课程设计等级

目录

第1章设计概述…………………………………………………………………3

1.1使用软件简介………………………………………………………….4

1.2设计目的及要求………………………………………………………….4

第二章总体设计…………………………………………………………………4

2.1设计框图………………………………………………………4

2.2设计框图概述…………………………………………………….5

第三章硬件设计………………………………………………………………5

3.1数字时钟的结构……………………………………………………….5

3.2数字时钟的功能实现……………………………………………………….7

3.3数字时钟的功能模块设计…………………………………………………….7

第四章程序框图和清单……………………………………………………………11

4.1程序框图……………………………………….……11

4.2程序……………………………………………………………….12

4.3清单……………………………………………………………….19

第五章实验结果和体会………………………………………………………………20

体会…………………………………………………………………………………22

 

第一章设计概述

1.1使用软件简介

a.使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。

KEILuVISION是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。

KEILuVision5是uVision4的升级版本,页面有了进一步的优化,使用起来更加的人性化。

b.仿真软件ProtuesProteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MATLAB等多种编译。

c.综合工具ModelsimMentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。

1.2设计目的及要求

a、设计要求

(1)设计一个基于单片机和CPLD的数字时钟;

(2)根据性能指标,计算元件参数,选好元件,设计电路并画出电路图;对设计电路进行模拟与测试。

(3)撰写设计报告。

b、技术指标

使用单片机和CPLD设计,显示年、月、日、小时、分钟、秒,时间可以调整。

第二章总体设计

2.1设计框图

 

2.2设计框图概述

a.晶振电路:

12MHZ晶振和两个22PF的电容,产生标准脉冲信号。

b.复位电路:

利用它把电路恢复到起始状态。

c.时钟芯片:

本设计采用高精度时钟芯片DS12C887,自带晶体振荡器和锂电池。

在没有外部电源的情况下可工作10年。

在运行中,单片机从时钟芯片读取当前时间,然后送到数码管显示。

d.数码管显示:

本设计采用八段共阴极数码管,可以同时显示年月日或者时分秒。

e.数码管驱动:

选用两个74HC573锁存器,分别控制数码管的段码显示和位码显示。

f.按键:

采用四个独立按键,分别用来实现调整时间及其它功能。

第三章硬件设计

3.1数字时钟的结构

运用protues软件进行仿真,keil软件与其调试

显示时分秒

显示年月日

3.2数字时钟的功能实现

本设计一共使用四个独立按键来实现数字时钟的功能,其中k1是时分秒和年月日切换显示键,若当前显示是时分秒,按下k1,则切换显示到年月日;k2键为修改项选择键,按一下k2修改当前显示的第三位,按两下k2修改当前显示的第二位,按三下k2修改当前显示的第一位;k3和k4分别为增大和减小按键,来对修改项进行操作,只有在k2按下之后才有效。

3.3数字时钟的功能模块设计

本设计中需要用到CPLD的有两个74HC573锁存器,下面用Modelsim进行锁存器设计.

锁存器代码:

moduleverilog_74hc573(LE1,OE_N1,D1,Q1,LE2,OE_N2,D2,Q2);

inputLE1,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;

assignD_r1=D1;

always@(OE_N1,LE1,D1)

begin

if(OE_N1)

begin

Q_r1<=8'hz;

end

elseif(LE1)

begin

Q_r1<=D_r1;

end

else

begin

Q_r1<=Q_r1;

end

end

assignQ1=Q_r1;

assignD_r2=D2;

always@(OE_N2,LE2,D2)

begin

if(OE_N2)

begin

Q_r2<=8'hz;

end

elseif(LE2)

begin

Q_r2<=D_r2;

end

else

begin

Q_r2<=Q_r2;

end

end

assignQ2=Q_r2;

endmodule

测试代码

`timescale1ns/1ns;

moduleverilog_74hc573_tb;

regle1,oe_n1;

reg[7:

0]d1;

wire[7:

0]q1;

initial

begin

le1=0;

oe_n1=0;

d1=8'b0000_1111;

end

always

begin

#5le1=1;

oe_n1=0;

#5d1=8'd1111_0000;

#5d1=8'd0000_1111;

#5le1=0;

oe_n1=0;

#5d1=8'd1010_0101;

#5d1=8'd0101_1010;

#5oe_n1=1;

le1=0;

#5d1=8'd1111_1111;

#5oe_n1=1;

le1=0;

#5d1=8'd1000_0001;

#5

d1=8'd0001_1110;

#5oe_n1=1;

le1=1;

#5d1=8'd0011_1100;

#5d1=8'd1100_0011;

end

verilog_74hc573

u1(.LE1(le1),.OE_N1(oe_n1),.D1(d1),.Q1(q1));

endmodule

 

仿真结果

第四章程序框图和清单

4.1程序框图

123

4.2程序

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineM1

#defineN10

sbitsp=P3^0;

sbitdscs=P2^4;

sbitdsas=P2^5;

sbitdsrw=P2^6;

sbitdsds=P2^7;

sbitduan=P2^0;

sbitwei=P2^1;

sbitk1=P3^4;

sbitk2=P3^5;

sbitk3=P3^6;

sbitk4=P3^7;

voiddelay(uint);

voidinit();

voidkeyscan();

voiddisplay(uchar,uchar,uchar);

voidwrite_ds(uchar,uchar);

voidset_time();

ucharread_ds(uchar);

ucharshi,fen,miao,month,day;

ucharyear,flag,k2_num,i;

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

voiddelay(uintx)

{

uinti,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

voidinit()

{

flag=0;

k2_num=0;

write_ds(0x0a,0x20);

write_ds(0x0b,0x26);

set_time();

}

voiddisplay(ucharsh,ucharfe,ucharmia)

{

ucharsg,ss,fg,fs,mg,ms;

sg=sh%10;

ss=sh/10;

fg=fe%10;

fs=fe/10;

mg=mia%10;

ms=mia/10;

duan=1;

P0=table[ss];

duan=0;

P0=0xfe;

wei=1;

wei=0;

P0=0x00;

delay(M);

duan=1;

P0=table[sg];

duan=0;

P0=0xfd;

wei=1;

wei=0;

P0=0x00;

delay(M);

duan=1;

P0=table[10];

duan=0;

P0=0xfb;

wei=1;

wei=0;

P0=0x00;

delay(M);

duan=1;

P0=table[fs];

duan=0;

P0=0xf7;

wei=1;

wei=0;

P0=0x00;

delay(M);

duan=1;

P0=table[fg];

duan=0;

P0=0xef;

wei=1;

wei=0;

P0=0x00;

delay(M);

duan=1;

P0=table[10];

duan=0;

P0=0xdf;

wei=1;

wei=0;

P0=0x00;

delay(M);

duan=1;

P0=table[ms];

duan=0;

P0=0xbf;

wei=1;

wei=0;

P0=0x00;

delay(M);

duan=1;

P0=table[mg];

duan=0;

P0=0x7f;

wei=1;

wei=0;

P0=0x00;

delay(M);

}

voidwrite_ds(ucharadd,uchardate)

{

dsas=1;

dsds=1;

dsrw=1;

dscs=0;

P1=add;

dsas=0;

dsrw=0;

P1=date;

dsrw=1;

dsas=1;

dscs=1;

}

ucharread_ds(ucharadd)

{

uchards_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;

returnds_date;

}

voidset_time()

{

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);

}

voidkeyscan()

{

if(k1==0)

{

uinti;

delay(5);

if(k1==0)

{

flag++;

if(flag>=2)

{

flag=0;

}

for(i=N;i>0;i--)

{

if(flag==0)

{

display(shi,fen,miao);

}

else

{

display(year,month,day);

}

}

while(!

k1);

}

}

if(k2==0)

{

delay(5);

if(k2==0)

{

k2_num++;

if(k2_num>=4)

{

k2_num=0;

}

for(i=N;i>0;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)

{

case1:

write_ds(0,(miao+1));

break;

case2:

write_ds(2,(fen+1));

break;

case3:

write_ds(4,(shi+1));

break;

}

for(i=N;i>0;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)

{

case1:

write_ds(0,(miao-1));

break;

case2:

write_ds(2,(fen-1));

break;

case3:

write_ds(4,(shi-1));

break;

}

for(i=N;i>0;i--)

{

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)

{

case1:

write_ds(7,(day+1));

break;

case2:

write_ds(8,(month+1));

break;

case3:

write_ds(9,(year+1));

break;

}

for(i=N;i>0;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)

{

case1:

write_ds(7,(day-1));

break;

case2:

write_ds(8,(month-1));

break;

case3:

write_ds(9,(year-1));

break;

}

for(i=N;i>0;i--)

{

if(flag==0)

{

display(shi,fen,miao);

}

else

{

display(year,month,day);

}

}

while(!

k4);

}

}

}

}

}

voidmain()

{

init();

while

(1)

{

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清单

BillOfMaterialsFor数字钟

DesignTitle

:

数字钟

Author

:

Revision

:

DesignCreated

:

2013Äê12ÔÂ22ÈÕ

DesignLastModified

:

2014Äê1ÔÂ7ÈÕ

TotalPartsInDesign

:

11

2 Resistors

Quantity:

References

Value

OrderCode

2

R1,R2

500

 

3 Capacitors

Quantity:

References

Value

OrderCode

2

C1,C2

22p

 

1

C3

100u

MaplinVH12N

4 IntegratedCircuits

Quantity:

References

Value

OrderCode

1

U1

AT89C52

 

2

U2,U3

74HC573

 

1

U4

DS12887

 

2 Miscellaneous

Quantity:

References

Value

OrderCode

1

RP1

RESPACK-8

 

1

X1

CRYSTAL

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

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

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