单片机原理及应用课程设计-电子跑表(编辑修改稿)内容摘要:
D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .0 /T 21P 1 .1 /T 2 E X2P 1 . 23P 1 . 34P 1 . 45P 1 . 56P 1 . 67P 1 . 78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 / R D17P 3 . 6 / W R16P 3 .5 /T 115P 2 .7 /A 1 528P 2 .0 / A 821P 2 .1 / A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427U1S T C89 C5 2X1CR Y S T A LC13 0 pC23 0 pS W 1S W S P S TC31uFR11kR 2 31kR 2 41kP 1 .2R 1 51k 图 3 系统总电路图 3 系统程序设计 总体设计 : 图 4 总体框架图 STC89C52RC NEC8255 数码管驱动电路 4 位数码管显示实时时钟 键盘实现开始暂停复位 晶振时钟电路 复位电路 显示切换电路 5 图 5 主程序流程图 :主程序 本设计中秒表采用定时器 T0 中断完成。 主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。 其程序执行流图如图 5 所示。 显示子程序 时间显示子程序每次显示 4 个连续内存单元的十进制 BCD 码数据,首地址在调用显示程序时先指定 [3]。 60H~65H 为秒表计时单元, 70H~75H 为时钟显示单元。 由于采用 7 段共阳极数码管动态扫描实现数据显示,所以显示用十进制 BCD 码数据的对应段码存放在 ROM 表中。 显示时,先取出内存地址中的数据,然后查得对应的显示用段码从 P0 口输出, P2口将对应的数码管选中供电,就能显示该地址单元的数据值。 时间等内部 RAM 初始化 键盘,时钟的初始化 显示初始化时间 有键按下 判断键值 秒表/时钟开始 秒表/时钟暂停 秒表/时钟清零 秒表与时钟切换 N Y 0键 1键 2键 INTO 键 6 图 6 电子时钟程序流程 图时钟初始化 第一次按下 0键 59分 59秒到 60 秒到 第一次按下 0 键 秒个位 +1 分个位 +1,秒位清 0 重置 T0 定时初值 T0 中断服务程序 N N Y Y 7 图 7 跑表程序流程图 第一次按下 3 键 1 秒到 秒 100 秒到 100 秒到 第一次按 0 键下 秒表初始化 秒百十位 +1,秒个位清 0 重置 T0 初始值 十分秒位 +1 秒百十位 +1,秒十位清 0 秒个位 +1,十分秒位清 0 T0 中断服务程序 N N N Y Y Y 8 时钟计时程序 50ms 定时器溢出累加 20 次,使得最小单位为 1s。 此处电子时钟计时最大范围为59 分 59 秒。 如图 6。 秒表 本模块利用了 STC89C52 的定时器 0 进行定时,每隔 50ms 就产生一次中断, 2 次累加从而实现跑表的最小计时单位为十分秒。 按下 2 键后,启动跑表,数码管显示如图7 所示。 再次按下 3 键后,跑表停止,显示所记的时间。 显示的时间范围为 ~秒。 表格 1 电子时钟和秒表的显示 电 子 时 钟 分 秒 秒 表。 秒 其中, 为所显示的数值。 进行初始化时, 均显示的为 00。 跑表程序的流程图如图 7 所示。 定时器 T0 中断服务程序 跑表和时钟显示共用定时器 T0。 定时溢出中断周期设为 50ms,中断进入后先进行定时中断初值校正,当中断累计 20 次(即 50*20=1s)时,对秒计时单元进行加 1 操作。 时钟计数单元地址分别在 70H~71H(秒)、 76H~77H(分)中,最大计时值为 59 分 59秒。 7AH 单元内存放“熄灭符”数据( 0AH),用于时间调整的闪烁功能。 在计数单元中,采用十进制 BCD 码计数,满 10 进位。 9 4 调试及性能分析 硬件调试 硬件调试时可以检查印制板及焊接的质量情况,在检查无误的后可通点检查 LED显示器的点亮状况。 若亮度不理想,可以调整 P0 口的电阻大小,一般情况下取 200Ω 电阻即可获得满意的亮度效果。 实验室制作时,可结合示波器测试晶振及 P0、 P2端 口的波形情况进行综合硬件测试分析。 软件调试 根据上述需求分析得出的思路,进行 C 语言程序的编写。 C 语言程序一共分为三个部分:第一部分是 STC89C52 芯片的初始化;第二部分是 8255 可编程定时 /计数芯片的初始化;第三部分是,模块的编写。 在该电子跑表的设计过程中一共有两个模块: 1. 计时和显示模块; 2. 秒表模块。 在各模块中可编写如 P1=0x55 进行各模块的测试。 软件调试在 Wave 或 Keil C51 编译器下进行,源程序编译及仿真调试应分段或以子程序为单元逐个进行,最后可结合硬件实时调试。 性能分析 设计之初的思路是选择将分,秒分别保存在一个字节的内存单元中,这样在计时的设计上将变得简单,但这样的设计也带来一个问题,那就是在读入用户输入和将时间显示到屏幕上时的 16 进制转到 ASCII 码时,由于涉及到将一个字节内容拆分转化,灵活性受到限制,于是考虑将分,秒的每一位用一个字节储存,这样在进行转化时将节省很多操作时间 ,设计过程中反复修改了程序的结构以达到优化目的 ,在时间显示出现问题后 ,我们进行了单元测试并最终发现了问题 ,在找到问题症结后,我们对显示部分代码及电路进行了完善 [5],最终得到了正确的显 示结果。 按照设计程序分析, LED 显示器动态扫描的频率约为 167Hz,实际使用观察时完全没有闪烁。 由于计时中断程序中加了中断延时误差处理,所以实际计时精度非常高。 可满足多种场合的应用需要。单片机原理及应用课程设计-电子跑表(编辑修改稿)
相关推荐
,我们最终选择了 AT89S52 通用的普通单片机来实现系统设计。 AT89S52 是一种兼容 MCS51 微控制器,工作电压 到 ,全静态时钟 0 Hz 到 33 MHz,三级程序 加密, 32 个可编程 I/O 口, 2/3个 16 位定时 /计数器, 6/8 个中断源,全双工串行通讯口,低功耗支持 Idle 和Powerdown 模式, Power down 模式支持中断唤醒 ,
它是将发光二极管的阴极 (负极 )短接后作为反映出半导体材料的特性。 常见管芯材料有磷化镓 (GaP)、砷化镓 (GaAs)、磷砷化镓 (GaAsP)、氮化镓 (GaN)等,其中氮化镓可发蓝光。 发光颜色不仅与管芯材料有关,还与所掺杂质有关,因此用同一种管芯材料可以制成发出红、橙、黄、绿等不同颜色的数码管。 其他颜色LED 数码管的光谱曲线形状与之相似,仅入,值不同。 LED 数码管的产品中
e x cha lle nge s t hese da ys . W her e once t he y q uie t ly rep laced r e la ys a nd ga ve a n occas io na l r eport to a corpora te ma infra me, t he y are no w gro uped into ce lls, give n new
方案三:采用烟雾传感器。 当烟雾探头碰到烟雾或者某些特定的气体时烟雾探头内部阻值发生变化,传送出高电平,再经过外电路传给单片机,再由其发生信号。 综合上述讨论,我们采用方案三,不仅能监测到火灾发生时的情况,而且还能有效的控制宿舍内抽烟的频率。 人员监测模块的选择 方案一:采用光电开关。 能监测到人员通过,经济实用,并且监测距离 适中,性价比较高,适用于公寓监控系统。 方案二:利用图像识别的原理。
根据地形地貌特点,主干通讯网络设计建议采用目前比较成熟的 GPRS/CDMA无线通讯方式完成现场各个站点与监控中心的双向数据传输;主干网络和二级网络采用我公司开发的具有自主知识产权的路灯监控专业成套产品 — “灯联网”路灯远程智能监控系统,使得整个 XX 县灯光、景观、桥梁灯饰多媒体控制共用一套相同的软、硬件平台、 同一个监控中心 ,维护简单,备品备件品种单一。 监控中心设计 1.管理中心
理,以指导 整个系统在 下一步的工作。 火源探测模块的框图如 图 31 所示 : 图 31 系统的软件设计 该部分的软件设计主要是涉及到传感器测得温度与火源定位的关系。 火源定位是根据自由空间的能量损耗公 式由测得温度推算出来的。 系统功能的实现 传感器组把测得温度分别通过模数转换传给单片机,单片机通过一定的处理,比较得出温度最高的三个传感器,根据能量在自由空间的衰减规律可知