版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉理工大学专业课程设计3(微处理器与微控制器应用)课程设计说明书模拟数字时钟的设计1 课程设计技术要求以89c51单片机为核心芯片,设计一个数字时钟,要求如下:a、 利用led显示数字时钟的时和分;b、 可以对数字时钟进行初始时间设置;c、 可以调整数字时钟的时间;2 设计方案及原理本设计以at89c51单片机为核心控制器,p0口接led显示模块,p1口接按键,通过按键输入来控制显示器的显示。在上电时led显示器开始显示时间并自动计时,自动计时采用单片机内部t0中断实现,在按键电路中只设置了三个按键,通过检测第一个按键按下的次数来实现调时、调分、调秒按键的作用,再通过led显示器显示时、分、
2、秒的改变。首先设定单片机内部的一个定时器计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容在相应位置显示出来。在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。at89c51引脚图如图1所示: 图1 at89c51引脚图vcc:供电电压。 gnd:接地。 p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被
3、定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输
4、入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。 p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些
5、特殊功能口,如下表所示: 口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断0) p3.3 /int1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 flash编程期间,此引脚用于输入编程脉冲。在
6、平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(000
7、0h- ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash 编程期间,此引脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 3 硬件实现方案3.1 振荡电路设计单片机内部有一个高增益、反相放大器,其输入端为芯片引脚xtal1,其输出端为引脚xtal2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取33pf)。这样就构成一个稳定的自激振荡器。振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础
8、上三分频产生ale信号,此时得到的信号时机器周期信号。振荡电路如图2所示: 图2 振荡电路3.2 按键接口电路 本实验设计中将按键安置在一起,每个按键占用一根i/o口线,每个按键电路相对独立。i/o口通过按键与地相连,i/o口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。i/o口内部有上拉电阻时,外部可不接上拉电阻。 按键接口电路如下图图3所示: 图3 键盘接口电路键盘接口电路中通过调节按键k1的次数分别设置秒、时、分,按键k2实在设置时间是对设置数进行加,按键k3是对设置数进行减,按键k4是进行复位。我设置的复位时间是00-00-00。3.3 显示电路设计对于现实电路我
9、们可以采用数码管,也可以采用液晶显示在这里我采用8位的led显示器,它显示的时间清晰便捷。显示电路如图4所示: 图4显示电路3.4 完整电路模拟数字时钟完整电路图如下图图5所示:xx 图5 模拟数字时钟完整电路4 模块功能分析或源程序代码4.1 定时中断子程序 本设计中采用单片机内部定时计数器对于中断子程序,每隔50ms产生一次中断,20次中断即为一秒,秒钟加1。秒钟计满60秒,分钟加1,分钟记满60,小时加1.当小时加到23时全部清零。以下是中断子函数的流程图如图6所示: 开始 产生中断? 否 是 x+ x=20? 否 是 x=0 m+ m=60? 否 是 m=0 f+ f=60? 否 是
10、f=0s+ s=24? 否 是 s=0 结束 图6 定时计数器终端服务流程图中断服务程序如下:void int0( ) interrupt 1/中断服务程序et0=0;tr0=0;th0=(65536-50000)/256;tl0=(65536-50000)%256;tr0=1; x+; if(x=20)/计数20恰好为1秒 x=0;m+; if(m=60)/秒到60 m=0;f+; if(f=60)/分到60 f=0;s+;if(s=24) s=0; 4.2 源程序代码#includeunsigned int m=0,f=0,s=0,con=0;unsigned chard=0xc0,0xf
11、9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/段选unsigned char x=0x00;#define uint unsigned int#define uchar unsigned charsbit k1=p10;/按钮sbit k2=p11;sbit k3=p12;sbit k4=p13;sbit s1=p14;void delay(unsigned int x)/延时1ms unsigned char j; while(x-) for(j=0;j=4) con=0;tr0=1;et0=1; if(con=1)/按了一下表示调
12、秒 if(k2=0)/增加 delay(30); while(k2=0); m+; if(m=59) m=0; if(k3=0)/减 delay(30); while(k3=0); m-; if(m=60) m=59; if(con=2) if(k2=0) delay(30); while(k2=0); f+; if(f=59) f=0; if(k3=0) delay(30); while(k3=0); f-; if(f=60) f=59; if(con=3) if(k2=0) delay(30); while(k2=0); s+; if(s=23) s=0; if(k3=0) delay(3
13、0); while(k3=0); s-; if(s=24)/实现循环减 s=23; ea=1;/中断开启 void main()/设置定时50ms th0=(65535-50000)/256; tl0=(65535-50000)%256; tmod=0x01;et0=1;tr0=1;ea=1;/开启定时中断 while(1) key(); display(); void int0() interrupt 1/中断服务程序et0=0;tr0=0;th0=(65536-50000)/256;tl0=(65536-50000)%256;tr0=1; x+; if(x=20)/计数20恰好为1秒 x=
14、0;m+; if(m=60)/秒到60 m=0;f+; if(f=60)/分到60 f=0;s+;if(s=24) s=0; et0=1;4.3 调试过程及结论自动开始计时如下图图7所示: 图7 开始计时调节时间如下图图8所示: 图8 调节时间复位如图图9所示: 图9 复位显示所遇到问题及结论:在设计过程中,遇到了几个小问题。比如,秒钟到达六十时,分钟核实中同时进位。这是在设计时因为大意而多加了一个大括号。通过调试结果证明设计符合要求。5 心得体会 通过这次的课程设计让我学到了很多东西,也牢固了了我在书本上所学的知识,通过一个课题的设计,让我明白了如何设计好一个项目。课题的入手后,先进行课题分
15、析,然后上网、看书查资料,之后就是开始初步的硬件画图和软件设计。再然后就是进行硬件软件的调试和修改,直到设计成功。每一个过程都要自己都去亲自实施和设计,才能在这个设计过程中学到了自己应该熟练掌握的知识和技能。这一次设计是使用c编程的,在这个编程过程中倒是学到了不少的东西,自己的编程能力也得到了好大的提高。单片机作为我们们的主要专业课之一,虽然初学们对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我们发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。作为一名电子专业的大三学生,我们觉得做单片机课程设计是十分有意义的,而且是十分必要的。虽然过去从未独立应用过它们,但在学习的过程
16、中带着问题去学我们发现效率很高,这是我们做这次课程设计的又一收获。然后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我们受益终身。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保公司解除租赁协议
- 污水处理招投标委托书范例
- 农业物流服务合同管理指南
- 文化产业严禁参与盗版侵权承诺书
- 公共广场地砖铺设合同
- 建筑加固改造升级劳务协议
- 上海市工业园区基础设施施工合同
- 医疗机构用工规范承诺书
- 石油开采设备日常养护管理办法
- 渔业捕捞与加工合同
- 《农村劳动人员就业问题分析【论文】》
- 中职《形体与化妆技巧》课程标准
- DB11-T 1832.15-2022建筑工程施工工艺规程 第15部分:通风与空调安装工程
- 医学英语教程(4)课件
- 网络传播法导论-第五章课件
- 月报 施工单位完成工程量统计表
- 情绪智力量表EIS
- 《 民航服务心理学》考试题及参考答案
- 《短歌行》理解性默写
- 部编版正视发展挑战优秀公开课课件
- 50篇美文背3500单词英译英(全)
评论
0/150
提交评论