版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、盐城工学院课程设计说明书(2011)目 录1概述11.1课题的研究意义和目的12方案论证12.1 STC89C52主要功能特性12.2系统分析33硬件系统的设计33.1硬件介绍33.2部分硬件原理图43.3最小单片机系统54系统的软件设计55软硬件联调75.1正面图75.2反面接线85.3测试结果8结束语9参考文献9附录10附录1 protel原理图10附录2 PCB图11附录3 protues仿真图12附录4 程序清单12附录5元器件清单171概述1.1课题的研究意义和目的1、通过本实验的设计初步了解单片机工作原理和各功能端口的相关设置;2、掌握PROTEUS软件的安装和配置过程;3、学会绘
2、制电路原理图;4、了解装载程序和调试;5、PROTEUS VSM 与uVision3的联调;6、用单片机仿真软件,并进行调试;7、掌握单片机相应的编程步骤,了解秒表相关的工作流程;8、熟悉KEILPROTEUS等相关软件的使用。2方案论证2.1 STC89C52主要功能特性1、兼容MCS51指令系统 2、8k可反复擦写(大于1000次)Flash ROM; 3、32个双向I/O口; 4、256x8bit内部RAM; 5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz; 7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密
3、位; 10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。STC89C52为8 位通用微处理器,采用工业标 准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成
4、的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。P0 口:P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每
5、位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT8
6、9C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash 编程和程序校验期间,P1 接收低8 位地址。表.P1.0和P1.1的第二功能 引脚号功能特性P1.0T2,时钟输出P1.1T2EX(定时/计数器2)P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序
7、存储器或16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX RI 指令)时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。 P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 。P3 口还接
8、收一些用于Flash 闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只
9、有一条MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存
10、储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。2.2系统分析设计的电路主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。设计框图如图2-1所示; 图2-13硬件系统的设计3.1硬件介绍根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LCD显示器电路。图2-2 为硬件电路设计框图。图2-2系统硬件电路根据课题设计要求,它由以下几个部件组成:单片机89C52
11、RC、电源、时分秒显示模块。时分秒显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。显示模块中时分秒显示驱动、校时模块都通过89C52RC的I/O口控制。显示模块中的复位电路由89C52RC的RESET端控制。电源部分:电源部分有二部分组成。一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由5V的电池供电,以保证停电时正常走时。正常情况下电池是不提供电能的,以保证电池的寿命。3.2部分硬件原理图3.2.1STC89C52管脚图如图3-1所示: 图3-13.2.2 1602LCD液晶硬件图如图3-2所示:图3-23.3最小单片机系统如图
12、3-3所示:图3-34系统的软件设计此部分主要介绍显示模块,显示模块是实现数字钟的重要部分,在显示时,首先将时间十进制数据转化为显示段码,然后送往液晶显示。显示段码采用动态扫描的方式。在要求改变显示数据的类别时,只须改变R1(指向数据缓冲区的指针)指向的十进制数据缓冲区即可。如图4-1所示:图4-1结束语通过这次实验,我学会了熟练运用protues,keil,protel等软件,在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。其次,在这次课程设计中,我们运用到了以前所学的专业课知识。虽然过去从未独立
13、应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。附录1 protel原理图EA/VP31X119X218RESET9P101P112P123P134P14
14、5P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30P3021P3122P3223P3324P3425P3526P3627P3728U18051x1CRYSTALC120pFC220pFR110kC310uFK1SW-PBK2SW-PBVCCLS1SPEAKER12345678161514131211109RP1RESPACK4VCCd0d1d2d3d4d5d6d7RSRWEd0d1d2d3d4d5d6d7RSRWEd0d1d2d3d4
15、d5d6d712345678910111213141516JP1HEADER 16VCCR210KQ1PNPVCC附录2 PCB图附录3 protues仿真图附录4 程序清单#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define unit unsigned int #define delayNOP() _nop_();_nop_();_nop_();_nop_();/LCD 控制void LCD_Initialize();void LCD_Set_POS(uchar);void L
16、CD_Write_Data(uchar);void Display_String(uchar *,uchar);sbit K1=P10;sbit K2=P11;sbit BEEP=P30;sbit LCD_RS=P20;sbit LCD_RW=P21;sbit LCD_EN=P22;uchar KeyCount=0;uchar code msg1="Second Watch 0"uchar code msg2=">>>> "uchar code Prompts16= ":1-> ", ":1-&
17、gt; :2 ", ":1->2 :3-> ", ":1->2 :3->4"/计时缓冲与显示缓冲uchar Time_Buffer =0,0,0,0;uchar LCD_Display_Buffer="00:00:00:00"/蜂鸣器void Beep() uchar i,j=70; for (i=0;i<180;i+) while(-j);BEEP=BEEP;BEEP=0;/延时void DelayX(unit ms) uchar i; while(ms-) for(i=0;i<120;
18、i+);/显示计时void Show_Second() uchar i; LCD_Set_POS(0x45);/设置LCD显示起点 for(i=3;i!=0xff;i-) /将两位整数的1/100s,秒,分,时转换为8位数字字符 LCD_Display_Buffer2*i+1=Time_Bufferi/10+'0' LCD_Display_Buffer2*i =Time_Bufferi%10+'0' /在i=3,2,1,0时分别显示时,分,秒,1、100s LCD_Write_Data(LCD_Display_Buffer2*i+1); LCD_Write_Da
19、ta(LCD_Display_Buffer2*i); LCD_Write_Data(':'); /Time0中断 void Time0() interrupt 1 using 0 TH0=-10000/256; TL0=-10000%256; Time_Buffer0+; if(Time_Buffer0=100) Time_Buffer0=0; Time_Buffer1+; if(Time_Buffer1=60) /秒 Time_Buffer1=0;Time_Buffer2+; if(Time_Buffer2=60) /分 Time_Buffer2=0;Time_Buffer3
20、+; if(Time_Buffer3=24) /时 Time_Buffer3=0; /主函数 void main() uchar i; IE=0x82; TMOD=0x01; TH0=-10000/256; TL0=-10000%256; LCD_Initialize(); Display_String(msg1,0x00); Display_String(msg2,0x40); while(1) if(K1=0) DelayX(100); i=+KeyCount; switch(i) case 1: case 3:TR0 =1; Display_String(Promptsi-1,0); b
21、reak; case 2: case 4:TR0 =0; Display_String(Promptsi-1,0); break;default:TR0=0; break;while (K1=0) ; /等待释放K1键Beep();elseif(K2=0)TR0=0;KeyCount=0;for(i=0;i<4;i+) Time_Bufferi=0; /清零计时缓冲 Display_String(msg1,0);Beep();DelayX(100);while (K2=0) ; /等待释放K2键Show_Second();/1602LCD显示驱动函数 e#include<reg51
22、.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define DelayNOP()_nop_();_nop_();_nop_();_nop_();bit LCD_Busy_Check();void LCD_Initialize();void LCD_Set_POS(uchar);void LCD_Write_Command(uchar); void LCD_Write_Data(uchar);/延时void DelayMS(uint ms)uchar t;while(ms-)for (t=0;t<120;t+);/LCD忙检查bit LCD_Busy_Check()bit Result;LCD_RS=0;LCD_RW=1;LCD_EN=1;DelayNOP();Result=(bit)(P0&0x80);LCD_EN=0;return Result;/向LCD写指令void LCD_Write_Command(uchar cmd)while (LCD_Busy_Check();LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 结婚租马合同模板
- 物流运输承包合同模板
- 社区防疫物资采购合同范例
- 商店员工合同范例
- 正常雇工合同模板
- 石料出租合同范例
- 油田员工劳动合同模板
- 甲方管理物业合同范例
- 电器箱合同范例
- 医院综合布线合同范例
- 设备设施大中修的界定和内容
- 追觅科技在线测评题
- 2024中国华电集团限公司校招+社招高频难、易错点500题模拟试题附带答案详解
- 冷弯机安全操作规程有哪些(4篇)
- 2024年浙江省初中学业水平考试英语试卷真题(含答案详解)
- 小学道德与法治《中华民族一家亲》完整版课件部编版
- 2024中国铁路成都局集团限公司招聘6006人高校毕业生(一)高频500题难、易错点模拟试题附带答案详解
- 人工草坪铺设合同协议书
- 七年级上册道德与法治《3.1认识自己 》说课稿(2022课标)
- DL∕T 5372-2017 水电水利工程金属结构与机电设备安装安全技术规程
- 2024-2030年中国先进过程控制(APC)行业市场发展趋势与前景展望战略分析报告
评论
0/150
提交评论