远程电子钟-远程控制端_第1页
远程电子钟-远程控制端_第2页
远程电子钟-远程控制端_第3页
远程电子钟-远程控制端_第4页
远程电子钟-远程控制端_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告 设计课题 远程电子钟 专业班级 学生姓名 指导教师 设计时间 题目 远程电子钟 远程控制端 一 课程设计目的 通过实验 更深刻地了解了单片机的工作原理 掌握单片机的简单开发 过程 了解 485 总线传送数据单片机对数据的接收和 LCD1602 的程序编译 及工作原理 熟悉液晶显示器的性能和使用 以及如何将单片机与其他器 件联合使用 二 课程设计题目 通过 485 总线将数据传送到远程控制端 远程控制端将所接受的数据在 液晶显示器显示年 月 日 时 分 秒 远程控制端需设计看门狗 813 程序 以保证远程控制端的稳定性 三 系统分析与设计 1 系统总体设计 确定系统功能模块划分及说明 本系统使用到的芯片 89C51 LCD1602 字符液晶 看门狗 813 模块 串 口 MAX232 地址锁存器 74HC573 Max485 总线 各芯片功能说明 单片机 89c51 集成了CPU ROM RAM 定时器 计数器和多功能等基本功 能部件 LCD1602 字符液晶 显示字符 串口 MAX232 进行串行通信 看门狗 813 能够对单片机 89c51 进行复位 防止单片机死机 地址锁存器 573 对单片机 89c51 的 P0 口地址进行锁存 本实验总共由两个步骤组成 1 数据接收 通过 485 总线单片机 AT89C51 来接收数据 2 输出显示 单片机处理接收来的时间 并在 LCD1602 显示 2 系统详细设计 上位机完成时钟的产生与发送的功能 时钟系统由时钟芯片 8563 来完成 从此子系统可以获得时间信 息 发送子系统将时间数据经由 232 总线发送到远程电子钟的接受端 以供其显示 下位机远程控制端完成接收和显示的功能 数据的接收 将代表年 月 日 星期 时 分 秒的数据接 收后 从串口缓冲区中读出数据 处理后的数据显示分两行显示在 液晶 1 系统流程图 上位机系统程图 否 是 开始 初始化 时钟 串口 LCD 读取时间数据 判断秒是否改变 调用数据处理函数 以供显示 调用串口发送函数 设置显示位置 调用显示函数 将时间显示出来 下位机系统程图 开始 初始化 调中断 从缓冲器中 读取上位机的请求信息 否 是否与本 机相同 否 是 读入数据并求校验和 从缓冲器中读入校验和 是否与上位机相同 是 送入缓冲器 准备显示 年 月 日 结束 时 分 秒 结束 2 电路图 图 1 系统硬件连接图 图 2 单片机 89c51 连接图 图 3 看门狗连接图 图 4 串口 232 及其电路连接 图 5 LCD1602 电路连接 3 源程序清单 远程电子钟 远程控制端 主要功能模块有 1 数据接收模块 2 单片机控制输出模块 3 输出显示模块 4 为了保证接收稳定性采用看门狗程序 include include include define uchar unsigned char define uint unsigned int define ulong unsigned long define LCDCOM0 XBYTE 0Xe000 define LCDCOM1 XBYTE 0Xe000 define LCDDATA XBYTE 0Xe800 define LCDDATA READ XBYTE 0Xe800 define Nop nop nop nop nop nop nop nop nop nop no p fosc 12MHZ 时延时 10us ucharbuf 14 ucharpf uchar idata s shuzi 10 0 x30 0 x31 0 x32 0 x33 0 x34 0 x35 0 x36 0 x37 0 x38 0 x39 数据 0 9 串行口初始化 void init void TMOD 0 x20 设定 T C1 为定时方式 2 TH1 0 xe8 设定波特率 TL1 0 xe8 PCON 0 x00 TR1 1 启动 T C1 SCON 0 x50 串行口工作在方式 1 sbit bflag ACC 7 void wait void do ACC LCDCOM1 while bflag 1 LCD1602 初始化 void init lcd wait LCDCOM0 0 x38 置功能 2 行 5 7 字符 wait LCDCOM0 0 x06 置输入模式 地址增量 显示屏不移动 wait LCDCOM0 0 x0f 显示开 显示光标 光标闪烁 wait LCDCOM0 0 x01 清显示 wait 数据接收初始化 void receive uchar idata d uchar i do while RI 0 RI 0 while SBUF 0 xaa 0 判定 A 机请求否 SBUF 0 xbb 发应答信号 while TI 0 TI 0 while 1 pf 0 清校验和 for i 0 i 16 i while RI 0 RI 0 d i SBUF 接收一个数据 pf d i 求校验和 while RI 0 RI 0 接收 A 机校验和 if SBUF pf 0 比较校验和 SBUF 0 x00 break 校验和相同发 00 else 出错发 FF 重新接收 SBUF 0 xff while TI 0 TI 0 LCD 地址控制子程序 void init command uchar command 发送新命令 一般用于给出新的显示地址 wait LCDCOM0 command 首行地址 0 x80 0 xa7 次行地址 0 xc0 0 xe7 显示字符子函数 void d char uchar a 显示字符函数 wait LCDDATA a 输出到数据寄存器 看门狗程序即定时器 sbit P3 4 P1 4 void timer0 viod interrupt 1 using 1 P3 4 1 TH0 0 重新装载计数初值 即定最大定时时间 TL0 0 TR0 1 启动定时器 Nop 延时建立时间大于 4 7us Nop 每个 10us 5 Nop 共延时 50us 便于输出较长时间的高电平充分为 狗 Nop Nop Nop P3 4 0 主函数 main int j 0 初始化程序 TMOD 0 x01 定时器 0 方式 1 TH0 0 装载计数初值即最大定时时间 TL0 0 TR0 1 启动定时器 P3 4 1 Nop 延时建立时间大于 4 7us 每个 10us 5 Nop 共延时 50us Nop Nop Nop Nop P3 4 0 init 串行口初始化 000000000 init lcd LCD1602 初始化 00000000000 接收数据程序 receive buf 接收数据即待显示的时间全信息包括年月日十分秒 14 个数字 LCD 显示程序 for j 14 j if j 0 init command 0 x80 DDRAM 地址设置 显示首行第一个位置地址 else if j 1 init command 0 x81 DDRAM 地址设置 显示首行第二个位置地址 else if j 2 init command 0 x82 DDRAM 地址设置 显示首行第三个位置地址 else if j 3 init command 0 x83 DDRAM 地址设置 显示首行第四个位置地址 else if j 4 init command 0 x85 DDRAM 地址设置 显示首行第六个位置地址 else if j 5 init command 0 x86 DDRAM 地址设置 显示首行第七个位置地址 else if j 6 init command 0 x88 DDRAM 地址设置 显示首行第九个位置地址 else if j 7 init command 0 x89 DDRAM 地址设置 显示首行第十个位置地址 else if j 8 init command 0 xc0 DDRAM 地址设置 显示第二行第一个位置地址 else if j 9 init command 0 xc1 DDRAM 地址设置 显示第二行第二个位置地址 else if j 10 init command 0 xc3 DDRAM 地址设置 显示第二行第四个位置地址 else if j 11 init command 0 xc4 DDRAM 地址设置 显示第二行第五个位置地址 else if j 12 init command 0 xc6 DDRAM 地址设置 显示第二行第七个位置地址 else if j 13 init command 0 xc7 DDRAM 地址设置 显示第二行第八个位置地址 d char s shuzi buf j 分析数据并显示在 LCD 上 四 系统调试过程中出现的主要问题 1 程序设计编程时对变量的定义 参数的传递的使用不是很熟练 2 显示器上的数据固定不变 不能循环显示数据 显示器上的一部分数据 出现串码 3 当与数据发送端连接时 由于与发送端的波特率不一致 导致无法正常 接收数据 4 调试程序时 由于 813 看门狗芯片程序的存在 编译时不能通过 所以 在编译时把看门狗程序暂时滤掉 但是确保看门狗程序的正确性 五 系统运行报告与结论 本系统的特点 系统能够接收远程发来的多字节数据 通过校验位来验 证传过来的数据是否为正确的数据 将接收的数据代码进行转化并在液晶 显示器上进行十进制的显示 存在问题 不能从接收端发给发送端允许发送的信号 使得接收端不停 的接收数据 改进意见 在设计一个按键程序和发送信号的程序 可以从接收端控制 数据的发送 六 总结 1 设计中遇到的问题及解决过程 1 对芯片的功能不了解例如 LCD1602 字符液晶 看门狗 813 不 能正确的运用 通过解读 PDF 文档 翻阅相关书籍和老师的指 导 熟悉芯片的功能及学会如何运用 2 程序设计对子程序的编译时出现变量的定义 参数的传递使用 都出现了问题 通过查找 PDF 文档 翻阅书籍 参考通用例程 了解器件的工作时序 并成功器件编程从初始化编程到功能的 实现 完成各芯片的电路连接图 2 设计中产生的错误及原因分析 1 液晶显示器上输出字符不准确并出现串码 原因是液晶显示 中源程序送显部分输出数组长度不够造成 经过调试 最终达 到时间正确显示 2 参数的的传递不匹配 出现错误 通过对参数是需要返回之值 与否 返回值类型来判断传递参数 经过多次分析 判断逐渐 熟悉了参数的传递规律 3 子程序的调用 初始化不正确 使得程序不能产生目标文件 修改子程序初始化 修改子程序初始化位置 使程序编译能够 通过 3 设计体会和收获 过本次的系统设计 进一步掌握了单片机的用法及程序设计 通过硬件的 连接及调试 学会了程序软件和硬件的实现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论