1 / 15
文档名称:

单片机课程设计毕业设计(论文).doc

格式:doc   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机课程设计毕业设计(论文).doc

上传人:6188 2016/4/16 文件大小:0 KB

下载得到文件列表

单片机课程设计毕业设计(论文).doc

文档介绍

文档介绍:1 《单片机课程设计》系别: 信息科学技术系专业班级: 电信 0803 班学号: 20081186107 学生姓名: 刘佩指导教师: 刘丽老师( 2010-2011 学年第 2 学期) 华中科技大学武昌分校 2 第一部分芯片资料介绍: 一: 89C52 内部结构及芯片图 AT89C52 是美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 8Kbyte s 的可反复擦写的只读程序存储器( PEROM )和 256 bytes 的随即存储数据存储器( RAM ),器件采用 ATMEL 公司的高密度,非易失性存储技术生产,与标准 MCS-51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器( CPU )和 FLASH 存储单元。功能强大 AT89C52 单片机适合与许多较为复杂控制应用场合。 AT89C52 提供以下标准功能: 8K 字节 FLASH 闪速存储器, 256 字节内部 RAM ,32个I/O 口线,3个16位定时/计数器,一个 6向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C52 可降致 0HZ 的静态逻辑操作,并支持两种软件可选的节点工作模式。空闲方式停止 CPU 工作,但允许 RAM ,定时/ 计数器,串行口及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个部件复位。 3 第二部分课程设计课题课题一:电子钟一:制作要求:用 80C51/52 单片机编程控制显示的电子钟。 1)要有 8位LED 显示器,分别显示“年号:月份:日期”/“时:分:秒:毫秒”例如“2005 。10。20”表示“2005 年10月20日”/“105249”表示“10时 52分49秒XX毫秒” 2)要有四位输入按键,功能分别是“移位”,“数字+”,“存储”即“SHIFT ”,“NUM+ ”,“SAVE ” 3)显示过程:实验板通电开机后, 8位LED 显示器显示“时:分:秒”按下“SHIFT ”后第一位数字闪动,继续按下“SHIFT ”后面数字闪动移位。再按“NUM+ ”数字增加,按“NUM- ”数字减少,按“SAVE ”储存修改结果。二:硬件结构: 80C52/51 ,8位LED 显示器, CD4511-BCD 译码器。参考电路见(附录一) 三:软件思路:可以分四个部分:参考子程序段见(附录六) 主要性能参数: ·与MCS —51产品指令和引脚兼容·8K字节可擦写 FLASH 闪速储存器·1000 次擦写周期·全静态操作: 0HZ —— 24MHZ ·三级加密程序存储器·256 ×8字节内部 RAM ·32个可编程 I/O 口线·3个15位定时/计数器·8个中断源·可编程串行 UART 通道·低功耗空闲和掉电模式 4 1》动态扫描显示 LED 电路程序设立 8 个内部 RAM 显示缓冲区,将要显示的数据的 BCD 码送显示缓冲区,程序只需要将显示缓冲区的 BCD 码,送相应的端口即可。动态扫描显示例如:将 40H-48H 为“时:分:秒”显示区将49H-4FH 为“年:月:日”显示区 2》动态扫描键盘程序: 循环扫描有无按键,有:判断是何按键,转入相应子程序处理。无:返回主程序执行。 3》定时器设置与时间处理的程序: 此段为该程序段的关键所在,它决定时间的准确性,和进位的正确性。定时器计数可用中断方式,也可以用软件查询方式进行。定时器中断定时方式的精确度高。采用软件延时方式要注意每条指令的机器周期的精确计算,否则会造成时间的不准。 4》各项功能键的子程序模块: ⑴移位子程序:按下“SHIFT ”后左边第一位数字闪动,继续按下“SHIFT ”后面数字闪动移位。程序中可设置第二显示缓冲区,将移到要闪动的数字位设为不显示(黑) “0FFH/00H ”,程序只需要将两组显示缓冲区的 BCD 码,分时间间隔发送出去,就会产生数字闪动效果。⑵数字+/- :将要显示的数据缓冲区的内容取出加一/减一,注意每个位都有自己的位限制,如“时”的位最大数 23,“分、秒”最大数 59,“月”最大数 12,“日”最大数 31。两位数一起调整比较方便。还要注意的是计数后二/十进制之间的转换问题。⑶“存储”:即将修改好的数值存储到显示缓冲区,并返回,进入主程序运行。#include<> #define temp 20000 uint flag,flag_1 =0; uint flag_2,flag_3 =1; sbit K0=P0^0; sbit K1=P0^1; sbit K2=P0^2; sbit K3=P0^3; uchar ms=0,sec=55,min=59,hour=23,day=27,day1,month=2; int year