1、目 录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 元器件清单 17盐城工学院课程设计说明书(2011)11 概述1.1 课题的研究意义和目的
2、1、通过本实验的设计初步了解单片机工作原理和各功能端口的相关设置;2、掌握 PROTEUS 软件的安装和配置过程;3、学会绘制电路原理图;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、 256x8
3、bit 内 部 RAM; 5、 3 个 16 位 可 编 程 定 时 /计 数 器 中 断 ; 6、 时 钟 频 率 0-24MHz; 7、 2 个 串 行 中 断 , 可 编 程 UART 串 行 通 道 ; 8、 2 个 外 部 中 断 源 , 共 8 个 中 断 源 ; 盐城工学院课程设计说明书(2011)29、 2 个 读 写 中 断 口 线 , 3 级 加 密 位 ; 10、 低 功 耗 空 闲 和 掉 电 模 式 , 软 件 设 置 睡 眠 和 唤 醒 功 能 ; 11、有 PDIP、PQFP、TQFP 及 PLCC 等几种封装形式,以适应不同产品的需求。STC89C52 为 8
4、位 通 用 微 处 理 器 , 采 用 工 业 标 准 的 C51 内 核 , 在 内 部功 能 及 管 脚 排 布 上 与 通 用 的 8xc52 相 同 , 其 主 要 用 于 会 聚 调 整 时 的 功 能 控制 。 功 能 包 括 对 会 聚 主 IC 内 部 寄 存 器 、 数 据 RAM 及 外 部 接 口 等 功 能 部 件的 初 始 化 , 会 聚 调 整 控 制 , 会 聚 测 试 图 控 制 , 红 外 遥 控 信 号 IR 的 接 收 解 码及 与 主 板 CPU 通 信 等 。 主 要 管 脚 有 : XTAL1( 19 脚 ) 和 XTAL2( 18 脚 )为 振 荡
5、 器 输 入 输 出 端 口 , 外 接 12MHz 晶 振 。 RST/Vpd( 9 脚 ) 为 复 位 输 入端 口 , 外 接 电 阻 电 容 组 成 的 复 位 电 路 。 VCC( 40 脚 ) 和 VSS( 20 脚 ) 为供 电 端 口 , 分 别 接 +5V 电 源 的 正 负 端 。 P0P3 为 可 编 程 通 用 I/O 脚 , 其 功能 用 途 由 软 件 定 义 , 在 本 设 计 中 , P0 端 口 ( 3239 脚 ) 被 定 义 为 N1 功能 控 制 端 口 , 分 别 与 N1 的 相 应 功 能 管 脚 相 连 接 , 13 脚 定 义 为 IR 输 入
6、 端 ,10 脚 和 11 脚 定 义 为 I2C 总 线 控 制 端 口 , 分 别 连 接 N1 的 SDAS( 18 脚 )和 SCLS( 19 脚 ) 端 口 , 12 脚 、 27 脚 及 28 脚 定 义 为 握 手 信 号 功 能 端 口 ,连 接 主 板 CPU 的 相 应 功 能 端 , 用 于 当 前 制 式 的 检 测 及 会 聚 调 整 状 态 进 入 的控 制 功 能 。P0 口 : P0 口 是 一 组 8 位 漏 极 开 路 型 双 向 I/O 口 , 也 即 地 址 /数 据 总线 复 用 口 。 作 为 输 出 口 用 时 , 每 位 能 吸 收 电 流 的
7、方 式 驱 动 8 个 TTL 逻 辑门 电 路 , 对 端 口 P0 写 “1”时 , 可 作 为 高 阻 抗 输 入 端 用 。 在 访 问 外 部 数 据 存储 器 或 程 序 存 储 器 时 , 这 组 口 线 分 时 转 换 地 址 ( 低 8 位 ) 和 数 据 总 线 复 用 ,在 访 问 期 间 激 活 内 部 上 拉 电 阻 。 在 Flash 编 程 时 , P0 口 接 收 指 令 字 节 , 而在 程 序 校 验 时 , 输 出 指 令 字 节 , 校 验 时 , 要 求 外 接 上 拉 电 阻 。 P1 口 : P1 是 一 个 带 内 部 上 拉 电 阻 的 8 位
8、 双 向 I/O 口 , P1 的 输 出 缓冲 级 可 驱 动 ( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 端 口 写 “1”, 通过 内 部 的 上 拉 电 阻 把 端 口 拉 到 高 电 平 , 此 时 可 作 输 入 口 。 作 输 入 口 使 用 时 ,因 为 内 部 存 在 上 拉 电 阻 , 某 个 引 脚 被 外 部 信 号 拉 低 时 会 输 出 一 个 电 流 (IIL)。与 AT89C51 不 同 之 处 是 , P1.0 和 P1.1 还 可 分 别 作 为 定 时 /计 数 器 2 的 外部 计 数 输 入 ( P1.0/T2) 和
9、 输 入 ( P1.1/T2EX) , Flash 编 程 和 程 序 校 验 期 间 ,P1 接 收 低 8 位 地 址 。 表 .P1.0 和 P1.1 的 第 二 功 能 引脚号 功能特性盐城工学院课程设计说明书(2011)3P1.0T2,时钟输出P1.1T2EX(定时/计数器 2)P2 口 : P2 是 一 个 带 有 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P2 的 输 出缓 冲 级 可 驱 动 ( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 端 口 P2 写“1”, 通 过 内 部 的 上 拉 电 阻 把 端 口 拉 到 高 电
10、平 , 此 时 可 作 输 入 口 , 作 输 入 口 使用 时 , 因 为 内 部 存 在 上 拉 电 阻 , 某 个 引 脚 被 外 部 信 号 拉 低 时 会 输 出 一 个 电 流(IIL)。 在 访 问 外 部 程 序 存 储 器 或 16 位 地 址 的 外 部 数 据 存 储 器 ( 例 如 执 行MOVX DPTR 指 令 ) 时 , P2 口 送 出 高 8 位 地 址 数 据 。 在 访 问 8 位 地 址的 外 部 数 据 存 储 器 ( 如 执 行 MOVX RI 指 令 ) 时 , P2 口 输 出 P2 锁 存 器的 内 容 。 Flash 编 程 或 校 验 时
11、, P2 亦 接 收 高 位 地 址 和 一 些 控 制 信 号 。 P3 口 : P3 口 是 一 组 带 有 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 。 P3 口 输出 缓 冲 级 可 驱 动 ( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 P3 口 写 入“1”时 , 它 们 被 内 部 上 拉 电 阻 拉 高 并 可 作 为 输 入 端 口 。 此 时 , 被 外 部 拉 低 的P3 口 将 用 上 拉 电 阻 输 出 电 流 ( IIL) 。 P3 口 除 了 作 为 一 般 的 I/O 口 线 外 ,更 重 要 的 用 途 是 它 的
12、 第 二 功 能 。 P3 口 还 接 收 一 些 用 于 Flash 闪 速 存 储 器编 程 和 程 序 校 验 的 控 制 信 号 。 RST: 复 位 输 入 。 当 振 荡 器 工 作 时 , RST 引 脚 出 现 两 个 机 器 周 期 以 上 高电 平 将 使 单 片 机 复 位 。 ALE/PROG: 当 访 问 外 部 程 序 存 储 器 或 数 据 存 储 器 时 , ALE( 地 址 锁 存允 许 ) 输 出 脉 冲 用 于 锁 存 地 址 的 低 8 位 字 节 。 一 般 情 况 下 , ALE 仍 以 时钟 振 荡 频 率 的 1/6 输 出 固 定 的 脉 冲
13、信 号 , 因 此 它 可 对 外 输 出 时 钟 或 用 于 定 时目 的 。 要 注 意 的 是 : 每 当 访 问 外 部 数 据 存 储 器 时 将 跳 过 一 个 ALE 脉 冲 。对 Flash 存 储 器 编 程 期 间 , 该 引 脚 还 用 于 输 入 编 程 脉 冲 ( PROG) 。 如 有 必要 , 可 通 过 对 特 殊 功 能 寄 存 器 ( SFR) 区 中 的 8EH 单 元 的 D0 位 置 位 , 可禁 止 ALE 操 作 。 该 位 置 位 后 , 只 有 一 条 MOVX 和 MOVC 指 令 才 能 将ALE 激 活 。 此 外 , 该 引 脚 会 被
14、 微 弱 拉 高 , 单 片 机 执 行 外 部 程 序 时 , 应 设 置ALE 禁 止 位 无 效 。 PSEN: 程 序 储 存 允 许 ( PSEN) 输 出 是 外 部 程 序 存 储 器 的 读 选 通 信 号 ,盐城工学院课程设计说明书(2011)4当 AT89C52 由 外 部 程 序 存 储 器 取 指 令 ( 或 数 据 ) 时 , 每 个 机 器 周 期 两 次PSEN 有 效 , 即 输 出 两 个 脉 冲 。 在 此 期 间 , 当 访 问 外 部 数 据 存 储 器 , 将 跳 过两 次 PSEN 信 号 。 EA/VPP: 外 部 访 问 允 许 。 欲 使 CP
15、U 仅 访 问 外 部 程 序 存 储 器 ( 地 址 为0000HFFFFH) , EA 端 必 须 保 持 低 电 平 ( 接 地 ) 。 需 注 意 的 是 : 如 果 加 密位 LB1 被 编 程 , 复 位 时 内 部 会 锁 存 EA 端 状 态 。 如 EA 端 为 高 电 平 ( 接Vcc 端 ) , CPU 则 执 行 内 部 程 序 存 储 器 中 的 指 令 。 Flash 存 储 器 编 程 时 , 该引 脚 加 上 +12V 的 编 程 允 许 电 源 Vpp, 当 然 这 必 须 是 该 器 件 是 使 用 12V 编程 电 压 Vpp。 XTAL1: 振 荡 器
16、反 相 放 大 器 的 及 内 部 时 钟 发 生 器 的 输 入 端 。 XTAL2: 振 荡 器 反 相 放 大 器 的 输 出 端 。2.2 系统分析设计的电路主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。设计框图如图 2-1 所示; 控制部分计数与存储部分显示部分图 2-13 硬件系统的设计3.1 硬件介绍根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LCD 显示器电路。图 2-2 为硬件电路设计框图。盐城工学院课程设计说明书(2011)5按 键 电 路 STC8952LCD显 示 电 路图 2-2系统硬件电路根据课题
17、设计要求,它由以下几个部件组成:单片机89C52RC、电源、时分秒显示模块。时分秒显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。显示模块中时分秒显示驱动、校时模块都通过 89C52RC 的 I/O 口控制。显示模块中的复位电路由 89C52RC 的 RESET 端控制。电源部分:电源部分有二部分组成。一部分是由 220V 的市电通过变压、整流稳压来得到+5V 电压,维持系统的正常工作;另一部分是由 5V 的电池供电,以保证停电时正常走时。正常情况下电池是不提供电能的,以保证电池的寿命。3.2 部分硬件原理图3.2.1STC89C52 管脚图如图 3-1 所示:盐城工学院课
18、程设计说明书(2011)6图 3-13.2.2 1602LCD 液晶硬件图如图 3-2 所示:图 3-23.3 最小单片机系统如图 3-3 所示:盐城工学院课程设计说明书(2011)7C130pFC230pFC310uFX111.0592MR110k图 3-34 系统的软件设计此部分主要介绍显示模块,显示模块是实现数字钟的重要部分,在显示时,首先将时间十进制数据转化为显示段码,然后送往液晶显示。显示段码采用动态扫描的方式。在要求改变显示数据的类别时,只须改变R1(指向数据缓冲区的指针)指向的十进制数据缓冲区即可。如图 4-1 所示:盐城工学院课程设计说明书(2011)8图 4-1结束语通过这次
19、实验,我学会了熟练运用 protues,keil,protel 等软件,在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。其次,在这次课程设计中,我们运用到了以前所学的专业课知识。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这盐城工学院课程设计说明书(2011)9是我做这次课程设计的又一收获后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一
20、次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。附录 1 protel 原理图EA/VP31X119X218RESET9P101P112P123P134P145P156P167P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN29ALE/P30P30 21P31 22
21、P32 23P33 24P34 25P35 26P36 27P37 28U18051x1CRYSTALC120pFC220pF R110kC310uFK1SW-PBK2SW-PBVCCLS1SPEAKER1 2 3 4 5 6 7 8161514131211109 RP1RESPACK4VCCd0d1d2d3d4d5d6d7RSRWEd0d1d2d3d4d5d6d7RSRWE d0d1d2d3d4d5d6d71 2 3 4 5 6 7 8 9 10111213141516JP1HEADER 16VCCR210KQ1PNPVCC盐城工学院课程设计说明书(2011)10附录 2 PCB 图盐城工学
22、院课程设计说明书(2011)11附录 3 protues 仿真图d0d1d2d3d4d5d6d7d0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7RSRWERSRWEXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD63P0.7/AD732P1.01P1.2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD1P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17
23、P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92P2.2/A1023P2.3/A1 24P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51CLOCK=12MC120pFC220pFC310uFX1CRYSTALR110kD714D613D512D41D310D29D18D07E6RW5RS4VS1VD2VE3LCD1LM016L23456789 1RP1RESPACK-8K2 (清 零 )K1 (启 停 控 制 ) LS1SOUNDER附录 4 程序清单#include #include #define uchar unsi
24、gned char#define unit unsigned int #define delayNOP() _nop_();_nop_();_nop_();_nop_();/LCD 控制void LCD_Initialize();void LCD_Set_POS(uchar);void LCD_Write_Data(uchar);盐城工学院课程设计说明书(2011)12void Display_String(uchar *,uchar);sbit K1=P10;sbit K2=P11;sbit BEEP=P30;sbit LCD_RS=P20;sbit LCD_RW=P21;sbit LCD_
25、EN=P22;uchar KeyCount=0;uchar code msg1=“Second Watch 0“;uchar code msg2=“ “;uchar code Prompts16= “:1- “,“:1- :2 “,“:1-2 :3 “,“:1-2 :34“;/计时缓冲与显示缓冲uchar Time_Buffer =0,0,0,0;uchar LCD_Display_Buffer=“00:00:00:00“;/蜂鸣器void Beep()盐城工学院课程设计说明书(2011)13uchar i,j=70;for (i=0;i#include#define uchar unsign
26、ed 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;盐城工学院课程设计说明书(2011)18while(ms-) for (t=0;t120;t+);/LCD 忙检查bit
27、 LCD_Busy_Check()bit Result;LCD_RS=0;LCD_RW=1;LCD_EN=1;DelayNOP();Result=(bit)(P0LCD_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_(); _nop_();P0=cmd; DelayNOP();LCD_EN=1;DelayNOP();LCD_EN=0;/向 LCD 写数据void LCD_Write_Data(uchar
28、 str)盐城工学院课程设计说明书(2011)19while (LCD_Busy_Check() ;LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=str;DelayNOP();LCD_EN=1;DelayNOP();LCD_EN=0;/初始化 LCDvoid LCD_Initialize()DelayMS(5);LCD_Write_Command(0x38);DelayMS(5);LCD_Write_Command(0x0c);DelayMS(5);LCD_Write_Command(0x06);DelayMS(5);LCD_Write_Command(0x01);DelayMS
29、(5);/设置显示位置void LCD_Set_POS(uchar Position)LCD_Write_Command(Position|0x80);/显示函数,在 LCD 指令行上显示字符串void Display_String(uchar*str,uchar LineNo)uchar k;盐城工学院课程设计说明书(2011)20LCD_Set_POS(LineNo);for (k=0;k16;k+) LCD_Write_Data (strk);附录 5 元器件清单序号 名称 型号 数量1 单片机 STC89C52 12 排针 2.54mm 单排针 2 排3 排阻 2K 14 瓷片电容 30pf 25 晶振 11.0592MHZ 16 单片机插座 40P 17 按键 18 万能板 双面板 10cm*15cm 19 电解电容 10uF/16V 110 电阻 10K 111 电阻 1K 112 可调电阻 W103 113 发光二极管 红 114 蜂鸣器 HYDZ 115 PNP 三极管 9012 1