- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专业项目设计
综合项目设计
题 目 警报计数器的设计与实现
学 院 计算机学院
专 业 计算机科学与技术
班 别 10级(6 )班
学 号
姓 名
指导老师
2014年 1月10日
目 录
前言 2
一、 课程设计目的 3
二、 运行环境 3
三、 需求分析 3
四、 详细设计 3
1、 AT89C52介绍 3
2、 AT89C52系列单片机外引脚功能 4
3、 仿真电路图 5
4、 警报电路设计 5
5、 矩阵键盘设计 6
6、 主要功能函数代码 6
五、 各模块详细功能 8
1. 计数功能 8
2. 设置计数初值功能 9
3. 设置警报 9
六、 心得与体会 10
七、 参考文献 10
八、 附录:(源代码) 11
前言
摘要:单片机在电子产品中的应用越来越广泛,其具有使用方便、价格低廉等优势,其中计数器在单片机电子产品中得到广泛的应用,例如电子时钟,秒表,各类检测器等。本设计是基于AT89C52的一个警报计数器,包括74HC245,7445,7SEG-MPX8-CC,能够实现警报,计数,设置的多功能计数器。所有功能能够通过按钮实现,符合人们实际的生活所需,具有整体性好、人性化强、可靠性高等优点
关键词:计数器 AT89C52 4X4矩阵键盘 7SEG-MPX8-CC
课程设计目的
1.掌握MCS-51系列单片机的基本结构和原理。
2.学会用C语言对单片机的内部和外围器件的编程。
3.掌握计数器中断处理程序的编程。
4.掌握Protues ISIS 仿真环境。
运行环境
Proteus 7 Professional,Keil uVision4,Microsoft Visual Studio 2010
需求分析
基于AT89C52芯片开发功能性需求如下:
1.设计一个计数器,使其能够进行顺数,倒数计数。
2.能够自由设置计数初值。
3.计数器具有警报功能。
4.能够自由设置警报值
详细设计
系统主要由3部分组成,分别是7SEG-MPX8-CC、74HC245、7445组成的显示时间模块、4X4矩阵输入模块、蜂鸣警报器模块。用AT89C52芯片作为核心主控芯片。
AT89C52介绍
AT89C52是一个低电压,高性能CMOS?8位单片机,片内含8k?bytes的可反复擦写的Flash只读程序存储器和256?bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2?个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52系列单片机外引脚功能
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。主要功能特性: 兼容MCS51指令系统 · 8k可反复擦写(1000次)Flash ROM · 32个双向I/O口 · 256x8bit内部RAM · 3个16位可编程定时/计数器中断 · 时钟频率0-24MHz · 2个串行中断 · 可编程UART串行通道 · 2个外部中断源 · 共6个中断源 · 2个读写中断口线 · 3级加密位 · 低功耗空闲和掉电模式 · 软件设置睡眠和唤醒功能因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。{
uchar readkey, rereadkey;
uchar x_temp,y_temp;
BUTTON_PORT=0x0f;
x_temp= BUTTON_PORT 0x0f;
if (x_temp==0x0f) return(0xff); /*无按键,退出*/
BUTTON_PORT=0xf0;
y_temp= BUTTON_PORT 0xf0;
文档评论(0)