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

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《 单片机课程设计 》 系 别: 信息科学技术系 专业班级: 电信0803班 学 号: 20081186107 学生姓名: 刘 佩 指导教师: 刘 丽老师 (2010-2011学年第2学期) 华中科技大学武昌分校 第一部分 芯片资料介绍: 一: 89C52内部结构及芯片图 AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes的可反复擦写的只读程序存储器(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中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个部件复位。 主要性能参数: ·与MCS—51产品指令和引脚兼容 ·8K字节可擦写FLASH闪速储存器 ·1000次擦写周期 ·全静态操作:0HZ——24MHZ ·三级加密程序存储器 ·256×8字节内部RAM ·32个可编程I/O口线 ·3个15位定时/计数器 ·8个中断源 ·可编程串行UART通道 ·低功耗空闲和掉电模式 第二部分 课程设计课题 课题一:电子钟 一:制作要求:用80C51/52单片机编程控制显示的电子钟。 1)要有8位LED显示器,分别显示 “年号:月份:日期”/“时:分:秒:毫秒” 例如“2005。10。 20”表示“2005年10月20日”/“10 52 49” 表示“10时52分49秒XX毫秒” 2)要有四位输入按键,功能分别是“移位”,“数字+”,“存储” 即“SHIFT”,“NUM+”,“SAVE” 3)显示过程:实验板通电开机后,8位LED显示器显示“时:分:秒” 按下“SHIFT”后第一位数字闪动,继续按下“SHIFT”后面数字闪动移位。 再按“NUM+”数字增加,按“NUM-”数字减少,按“SAVE”储存修改结果。 二:硬件结构:80C52/51,8位LED显示器,CD4511-BCD译码器。参考电路见(附录一) 三:软件思路:可以分四个部分:参考子程序段见(附录六) 1》动态扫描显示LED电路程序 设立8个内部RAM 显示缓冲区 ,将要显示的数据的BCD码送显示缓冲区,程序只需要将显示缓冲区的BCD码,送相应的端口即可。动态扫描显示 例如:将40H-48H 为“时:分:秒”显示区 将49H-4FH 为“年:月:日”显示区 2》动态扫描键盘程序: 循环扫描有无按键,有:判断是何按键,转入相应子程序处理。 无:返回主程序执行。 3》定时器设置与时间处理的程序: 此段为该程序段的关键所在,它决定时间的准确性,和进位的正确性。 定时器计数可用中断方式,也可以用软件查询方式进行。定时器中断定时方式的精确度高。采用软件延时方式要注意每条指令的机器周期的精确计算,否则会造成时间的不准。 4》各项功能键的子程序模块: ⑴移位子程序:按下“SHIFT”后左边第一位数字闪动,继续按下“SHIFT”后面数字闪动移位。程序中可设置第二显示缓冲区,将移到要闪动的数字位设为不显示(黑)“0FFH/00H”,程序只需要将两组显示缓冲区的BCD码,分时间间隔发送出去,就会产生数字闪动效果。 ⑵数字+/-:将要显示的数据缓冲区的内容取出加一/减一,注意每个位都有自己的位限制,如“时”的位最大数23,“分、秒”最大数59,“月”最大数 12,“日” 最大数 31。两位数一起调整比较方便。还要注意的是计数后二/十进制之间的转换问题。 ⑶“存储”:即将修改好的数值存储到显示缓冲区,并返回,进入主程序运行。 #includeu.h #define temp 20000 uint flag,flag_1 = 0; uint flag_2,flag_3 = 1; sbit K0=P0^0;

文档评论(0)

2749166188 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档