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

    课程设计数字时钟.docx

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

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

    课程设计数字时钟.docx

    1、课程设计数字时钟一、设计目的及要求 1.1 设计目的 本设计主要是应用Proteus软件和嵌入式C语言编程工具 结合单片机原理及应用、微机原理与接口技术等专业课程,强化和巩固专业理论基础,掌握Proteus仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。 1.2 设计要求 试用定时器/计数器设计一个简单的数字时钟,能显示计时状态和结果。要求进行电路仿真实验,并使用C语言进行程序的开发二、硬件电路设计2.1芯片简介 本设计选择采用AT89C51单片机为核心。AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线

    2、,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 2.2 总体设计思路 本设计使用89C51芯片作为控制芯片,复位电路和时钟电路构成单片机最小系统。利用P0口8个引脚接上拉电阻,驱动LCD液晶显示时钟。 总体设计思路图2.3单元电路设计 本设计主要分为时钟电路模块,复位电路模块,显示模块和控制模块。设

    3、计方案如下 2.3.1 时钟模块 89C51单片机的时钟信号通常用内部振荡方法得到,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方法。由于单片机内部有一个高增益反相放大器,当外接晶振后就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选择6MHz、12MHz、24MHz。本设计采用12MHz晶振。图中电容C1、C2起到稳固振荡频率、快速起振的作用。电容值一般为530pF。本设计选用33pF电容。 2.3.2 复位电路模块 图2.4 复位电路 复位操作完成电路的初始化,使单片机从一种确定的状态开始运行。 由上图可知,控制模块实际上就是单片机的最小系统。本设计采

    4、用常用的上电且开关复位电路。上电后,由于电容的充电,使RST持续一段高电平时间。当单片机已在运行中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。此处 C3电容取10uF,R2=K。 2.3.3 控制模块 图2.5 控制电路 2.3.4 显示模块 显示部分电路设计如下图图2.6 显示模块电路图 三、软件设计 3.1 程序设计思路(流程图) 否 3.2 源程序#includeunsigned char tab= 23:58:48; unsigned char code tab2=hello; #define lcdp P0 sbit rs=P35; sbit rw=

    5、P36; sbit en=P37; sbit led=P17; sbit s1=P10; sbit s2=P11; sbit s3=P12; unsigned char n,count,mu; char ss=23,ff=58,mm=55; void delay(unsigned char z) unsigned char i,j; for(i=z;i0;i-) for(j=110;j0;j-); void write_com(unsigned char com)/写指令 rs=0; rw=0; en=0; lcdp=com; delay(5); en=1; delay(5); en=0; v

    6、oid write_date(unsigned char date)/写数据 rs=1; rw=0; en=0; lcdp=date; delay(5); en=1; delay(5); en=0; void write_sj(unsigned add,unsigned date) unsigned char shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(shi+0x30); write_date(ge+0x30); void init() /初始化 write_com(0x38); /设置16x2显示,5x7

    7、点阵,8位数据接口 write_com(0x06); /写一个字符后地址指针自动加1 write_com(0x01); /显示清零,数据指针清零 write_com(0x0c); /开显示,不显示光标 /write_com(0x08); /write_com(0x0e);/光标开启,但不闪烁 write_com(0x80); /显示位置 for(n=0;n10;n+) write_date(tabn); delay(1); write_com(0x80+0x40+3);/第二行显示 for(n=0;n8;n+) write_date(tab2n); delay(1); /定时器初始化 TH0=

    8、(65536-50000)/256; TL0=(65536-50000)%256; TMOD=0x01; EA=1; ET0=1; TR0=1; void key() if(s1=0) delay(5); if(s1=0) mu+; while(!s1); if(mu=1) TR0=0; write_com(0x80+9); write_com(0x0f);/光标闪烁 if(mu=2) write_com(0x80+6); write_com(0x0f);/光标闪烁 if(mu=3) write_com(0x80+3); write_com(0x0f);/光标闪烁 if(mu=4) TR0=1

    9、; mu=0; write_com(0x0c);/关闭光标 if(mu!=0) if(s2=0) delay(5); if(s2=0) while(!s2); if(mu=1) mm+; if(mm=60) mm=0; write_sj(8,mm); write_com(0x80+9); if(mu=2) ff+; if(ff=60) ff=0; write_sj(5,ff); write_com(0x80+6); if(mu=3) ss+; led=!led; if(ss=24) ss=0; write_sj(2,ss); write_com(0x80+3); if(s3=0) delay(

    10、5); if(s3=0) while(!s3); if(mu=1) mm-; if(mm=-1) mm=59; write_sj(8,mm); write_com(0x80+9); if(mu=2) ff-; if(ff=-1) ff=59; write_sj(5,ff); write_com(0x80+6); if(mu=3) ss-; led=!led; if(ss=-1) ss=23; write_sj(2,ss); write_com(0x80+3); void main() init(); while(1) key(); void time0() interrupt 1 TH0=(6

    11、5536-50000)/256; TL0=(65536-50000)%256; count+; if(count=20) count=0; mm+; if(mm=60) mm=0; ff+; if(ff=60) ff=0; ss+; if(ss=24) ss=0; write_sj(2,ss); write_sj(5,ff); write_sj(8,mm); 四、仿真调试 总体仿真电路图如下图所示 图4.1 整体仿真原理图 4.1 keil简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上

    12、有明显的优势。因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。4.2 keil与protues联调 双击图标进入Keil uVision2编程环境,输入程序。返回桌面双击图标进入PROTEUS仿真环境。点击左上角选项P后根据设计的电路图调出所需元件画好硬件原理图如图4.1所示。然后按照4.1节所写步骤设置keil和proteus的工作环境。实现keil和proteus的连调。 4.3 仿真结果五、总结

    13、 课程设计是培养学生综合运用所学知识,发现实际问题、提出实际问题、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际学习能力、动手能力的具体训练和考察过程。 在此次数字钟设计过程中, 在学习新知识的同时,把在课程中学到的理论知识运用到实际作品设计、操作中更进一步地熟悉了单片机芯片的结构及掌握了其工作原理和具体的使用方法与相关元器件的参数计算方法、使用方法了解了电路的开发和制作及课程设计报告的编写。加深了对相关理论知识及专业知识的掌握度,增强自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题的能力,更深刻的体会到了理论联系实际的重要性。 最后 我们组通过此次单片机课程设计不仅仅将我们一学期在单片机课程上的所学很好的应用到了实际设计中,更是将理论知识应用到了实践中。这才是真正的学习:不仅仅是读万卷书,更要行万里路,讲知识与实践有机的结合。也十分感谢老师为我们提供了这次单片机课程设计的机会。我们也通过此次课程设计,更清晰更实际的接触到了单片机。


    注意事项

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

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




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

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

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


    收起
    展开