谁可以教我写一下用51单片机sd卡读写控制的32*32的点阵驱动,我想在上面显示一个指针式的时钟,求电路程序

当前位置: >>
51单片机优秀毕业论文
泸 州 职 业 技 术 学 院毕 业 论 文基于单片机的进制换算学生姓名 所 在 系 班 专 级 业XXXXXXX XXXX XXXXXX XXXXX指导教师2012 年 6 月 5 日 指导教师评阅书指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □ 优 □ 优 □ 优 □ 优 □ 优 □ 良 □ 良 □ 良 □ 良 □ 良 □ 中 □ 中 □ 中 □ 中 □ 中 □ 及格 □ 及格 □ 及格 □ 及格 □ 及格 □ 不及格 □ 不及格 □ 不及格 □ 不及格 □ 不及格 2、学生掌握专业知识、技能的扎实程度 3、学生综合运用所学知识和专业技能分析和解决问题的能力 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 5、完成毕业论文(设计)期间的出勤情况 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 优 □ 良 □ 良 □ 中 □ 中 □ 及格 □ 及格 □ 不及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 优 □ 优 □ 良 □ 良 □ 良 □ 中 □ 中 □ 中 □ 良 □ 及格 □ 及格 □ 及格 □ 中 □ 不及格 □ 不及格 □ 不及格 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? 3、论文(设计说明书)所体现的整体水平建议成绩:□ 优(在所选等级前的□内画“√”) 指导教师: (签名) 年 单位: 月 日 (盖章) 评阅教师评阅书评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 优 □ 良 □ 良 □ 中 □ 中 □ 及格 □ 及格 □ 不及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 优 □ 优 □ 良 □ 良 □ 良 □ 中 □ 中 □ 中 □ 及格 □ 及格 □ 及格 □ 不及格 □ 不及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? 3、论文(设计说明书)所体现的整体水平建议成绩:□ 优□ 良□ 中□ 及格□ 不及格(在所选等级前的□内画“√”) 评阅教师: (签名) 年 单位: 月 日 (盖章) 教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □ 优 □ 优 □ 优 □ 良 □ 良 □ 良 □ 中 □ 中 □ 中 □ 及格 □ 及格 □ 及格 □ 不及格 □ 不及格 □ 不及格 2、对答辩问题的反应、理解、表达情况 3、学生答辩过程中的精神状态 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 优 □ 良 □ 良 □ 中 □ 中 □ 及格 □ 及格 □ 不及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 优 □ 优 □ 良 □ 良 □ 良 □ 中 □ 中 □ 中 □ 及格 □ 及格 □ 及格 □ 不及格 □ 不及格 □ 不及格 □ 不及格 (签名) 月 日 2、论文的观念是否有新意?设计是否有创意? 3、论文(设计说明书)所体现的整体水平评定成绩:□ 优 □ 良 □ 中 □ 及格 (在所选等级前的□内画“√”) 教研室主任(或答辩小组组长): 年 教学系意见:系主任: 年 月(签名) 日 泸州职业技术学院毕业论文目录目录摘要 ??????????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ???? ?????????? ??????????? ??????????? ?????????? ???? 1 绪论 ??????????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ???? ?????????? ??????????? ??????????? ?????????? ???? 2 课题背景??????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ?????????? ??????????? ??????????? ?????????? 2 课题意义??????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ?????????? ??????????? ??????????? ?????????? 2 程序扩展??????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ?????????? ??????????? ??????????? ?????????? 2 本章小节??????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ?????????? ??????????? ??????????? ?????????? 2 第一章 系统功能及操作 ????????????????????????????????????3 ??????????? ?????????? ??????????? ???? ?????????? ??????????? ??????????? ???? 1.1 系统功能的确定 ????????????????????????????????????? ??????????? ?????????? ??????????? ????? ?????????? ??????????? ??????????? ???? 3 1.2 基本功能 ????????????????????????????????????????? ??????????? ?????????? ??????????? ???????? 9 ?????????? ??????????? ??????????? ???????? 1.3 本章小结 ???????????????????????????????????????? 10 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ???????? 第二章 系统模块介绍 ?????????????????????????????????????11 ??????????? ?????????? ??????????? ????? ?????????? ??????????? ??????????? ???? 2.1 主控模块 ????????????????????????????????????????11 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ??????? 2. 2 引脚说明????????????????????????????????????????11 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ??????? 2.3 主控模块设计 ?????????????????????????????????????? ????????????????????????????????????? 13 ?????????? ??????????? ??????????? ????? 2.3.1 电源电路模块设计 ???????????????????????????????? 13 ??????????? ?????????? ??????????? ?????????? ??????????? ??????????? 2.3.2 时钟电路模块设计 ???????????????????????????????? 13 ??????????? ?????????? ??????????? ?????????? ??????????? ??????????? 2.3.3 复位电路模块设计 ???????????????????????????????? 14 ??????????? ?????????? ??????????? ?????????? ??????????? ??????????? 2.4 LCD 显示模块 ????????????????????????????????????? ???????????????????????????????????? 15 ?????????? ??????????? ??????????? ???? 2. 5 按键模块???????????????????????????????????????? ??????????? ?????????? ??????????? ???????? ??????????????????????????????????????? 17 第三章 系统硬件设计―实验板介绍 ????????????????????????????? 19 ??????????? ?????????? ???????? ?????????? ??????????? ???????? 3.1 硬件总图 ???????????????????????????????????????? ??????????? ?????????? ??????????? ???????? ??????????????????????????????????????? 19 3.2 主控硬件模块 ?????????????????????????????????????? ????????????????????????????????????? 20 ?????????? ??????????? ??????????? ????? 3.3 按键硬件模块化 ???????????????????????????????????? 21 ??????????? ?????????? ??????????? ???? ?????????? ??????????? ??????????? ???? 3.4 LCD 显示硬件模块化 ?????????????????????????????????? ?????????????????????????????????22 ?????????? ??????????? ??????????? ? 3.5 本章小结 ???????????????????????????????????????? 22 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ???????? 第四章 系统软件设计 ????????????????????????????????????? ??????????? ?????????? ??????????? ????? ???????????????????????????????????? 23I 泸州职业技术学院毕业论文目录4.1 数据单元分配 ?????????????????????????????????????? ????????????????????????????????????? 23 ?????????? ??????????? ??????????? ????? 4.2 主程序设计流程图 ??????????????????????????????????? 25 ??????????? ?????????? ??????????? ??? ?????????? ??????????? ??????????? ??? 4.3 程序说明 ???????????????????????????????????????? 26 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ???????? 4.3.1 包含数据库 ???????????????????????????????????? 26 ??????????? ?????????? ??????????? ???? ?????????? ??????????? ??????????? ???? 4.3.2 程序初始化 ???????????????????????????????????? ??????????? ?????????? ??????????? ???? ??????????????????????????????????? 26 4.3.3 字符串显示 ???????????????????????????????????? ??????????? ?????????? ??????????? ???? ??????????????????????????????????? 26 4.3.4 实现计算设定 ??????????????????????????????????? ?????????????????????????????????? 26 ?????????? ??????????? ??????????? ?? 4.4 本章小结 ???????????????????????????????????????? 27 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ???????? 第五章 系统调试 ??????????????????????????????????????? 28 ??????????? ?????????? ??????????? ??????? ?????????? ??????????? ??????????? ??????? 5.1 硬件调试 ???????????????????????????????????????? 28 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ???????? 5.2 软件调试 ???????????????????????????????????????? 29 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ???????? 5.3 本章小结 ???????????????????????????????????????? 29 ??????????? ?????????? ??????????? ???????? ?????????? ??????????? ??????????? ???????? 结束语 ????????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ?? ???????????????????????????????????????????? 30 致 谢 ??????????? ??????????? ?????????? ??????????? ??? ????????????????????????????????????????????? 31 ?????????? ??????????? ??????????? ?????????? ??? 附录:程序清单 ???????????????????????????????????????? ??????????? ?????????? ??????????? ???????? ??????????????????????????????????????? 32 参考文献 ???????????????????????????????????????????? ??????????? ?????????? ??????????? ??????????? ? ???????????????????????????????????????????38II 泸州职业技术学院毕业论文摘要摘 要本次设计是基于单片机的进制换算,在设计中需要进行进制间的转换。所需 要 MCS-51 单片机、LCD1602 型液晶显示。在此设计中主控模块我们选要的是 AT89S52 芯片。AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造, 与工业 80C51 产品指令和引脚完全兼容。 片上 Flash 允许程序存储器在系统可编 程, 亦适于常规编程器。 在单芯片上, 拥有灵巧的 8 位 CPU 和在系统可编程 Flash, 使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 设计当中显示采用 LCD 液晶显示,其特点是:1、显示质量高 2、没有电磁 辐射 3、可视面积大 4、应用范围广 5、画面效果好 6、数字式接口 7、 “身材” 匀称小巧 8、功率消耗小等。点阵字符型 LCD 是专门用于显示数字、字母、图 形符号及少量自定义符号的液晶显示器。这类显示器把 LCD 控制器、点阵驱动 器、字符存储器、显示体及少量的阻容元件等集成为一个液晶显示模块。鉴于字 符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的。 所以在本设计中采用 AT89S52 主控、LCD1602 显示。不仅功能能实现而且 经济实惠。关键词:单片机AT89S52进制换算LCD 液晶显示1 泸州职业技术学院毕业论文绪论绪 论课题背景本文讨论的单片机多功能时钟系统的核心是目前应用极为广泛的 51 系列单 片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠 性高,功能多等特点。不仅能满足所需要求而且还有很多功能可供扩展,有着广 泛的应用领域。 本课题是基于单片机的进制间换算,进制间换算比较复杂,有时需要快速计 算二,八,十,十六之间的转换。为了转换快速所以专门制作了一种计算器。专 门计算进制间的相互换算。当输入相应的进制数是能够转换成自己想要的进制 数。是一种快捷方便的设计。课题意义通过用单片机最小系统开发一种进制见换算计算器,能够以按键输入 0~9 (十进制) ,0~G(十六进制)0~7(八进制) ,0~1(二进制) 。学习了我们所学 的按键扫描和 LCD 扫描。通过单片机中的程序计算进制间的换算,计算结果通 过 LCD 显示出来。实际意义是一种新型计算机,快速计算进制间的换算。在此 设计中不仅得到进制换算的一种工具,同时通过亲自焊接最小系统,得到了完全 的最小系统。并且能够完成程序的实现,在此也是件非常值得高兴之事。程序扩展在本程序中只涉及到了十进制转二进制、八进制、十六进制。在以后的运行 中可以开发成进制相互转换,包括二转八、二转十、二转十六、八转二、八转十、 八转十六等。同样以 AT89S52 型开发,通过修改程序,增加硬件上的按键,增加 接线口等。既可以完成设计的扩展。本章小节本章主要介绍了课题背景、 设计任务和课题意义,对单片机的优点及结构作 了简要叙述,也对本系统的应用及概况进行了说明。2 泸州职业技术学院毕业论文系统功能及操作第一章 系统功能及操作1.1 系统功能的确定进制间的转换:1. 十 -----& 二 一个十进制,比如:6,将它转换成二进制数。 十进制数转换成二进制数, 是连续除 2 的过程: 把要转换的数,除以 2,得到商和余数, 将商继续除以 2, 直到商为 0。最后将所有余数倒序排列,得到数就是转换结果。 比如要转换 6 为二进制数。 “把要转换的数,除以 2,得到商和余数”。 那么:图 1-1 十转二示意图要转换的数是 6, 6 ÷2,得到商是 3,余数是 0。 “将商继续除以 2,直到商 为 0……” 现在商是 3,不是 0,所以继续除以 2。 那就: 3 ÷ 2, 得到商是 1, 余数是 1。 “将商继续除以 2,直到商为 0……” 现在商是 1,不是 0,所以继续 除以 2。 那就: 1 ÷2, 得到商是 0,余数是 1 “将商继续除以 2,直到商为 0…… 最后将所有余数倒序排列” 。现在商已经是 0。 三次计算依次得到余数分别是: 0、1、1,将所有余数倒序排列,就是:110。 6 转换成二进制,结果是 110。 表1 被除数 6 3 1 计算过程 6/2 3/2 1/2 转换方式 商 3 1 0 余数 0 1 13 泸州职业技术学院毕业论文系统功能及操作(在计算机中,÷ / 来表示) 用 2. 二 ----& 十 二进制数转换为十进制数 :二进制数第 0 位的权值是 2 的 0 次方,第 1 位 的权值是 2 的 1 次方…… 所以,设有一个二进制数:,转换为 10 进 制为: 下面是竖式:
换算成 十进制 & ^ & 为次方 第 0 位 0 * 2^0 = 0 第 1 位 0 * 2^1 = 0 第 2 位 1 * 2^2 = 4 第 3 位 0 * 2^3 = 0 第 4 位 0 * 2^4 = 0 第 5 位 1 * 2^5 = 32 第 6 位 1 * 2^6 = 64 第 7 位 0 * 2^7 = 0 + 公式:第 N 位 10^(N-1) --------------------------100 用横式计算为: 0*2^0+0*2^1+1*2^2+0*2^3+0*2^4+1*2^5+1*2^6+0 * 2 ^ 7 = 100 0 乘以多少都是 0,所以我们也可以直接跳过值为 0 的位: 1 * 2 ^ 2 + 1 * 2 ^ 5 + 1 * 2 ^ 6 = 100 3. 十 ----& 八 10 进制数转换成 8 进制的方法,和转换为 2 进制的方法类似,唯一变化: 除数由 2 变成 8。 将十进制数 120 转换成八进制数: 用表格表 1 示:4 泸州职业技术学院毕业论文系统功能及操作表2 被除数 120 15 1 计算过程 120/8 15/8 1/8转换方式 商 15 1 0 余数 0 7 1120 转换为 8 进制,结果为:170。 4. 八 ----& 十 八进制就是逢 8 进 1。 八进制数采用 0~7 这八数来表达一个数。 八进制数第 0 位的权值为 8 的 0 次方,第 1 位权值为 8 的 1 次方,第 2 位权 值为 8 的 2 次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507 换算成十进制。 第 0 位 7 * 8^0 = 7 第 1 位 0 * 8^1 = 0 第 2 位 5 * 8^2 = 320 第 3 位 1 * 8^3 = 512 -------------------------839 同样,也可以用横式直接计算: 7 * 8^0 + 0 * 8^1 + 5 * 8^2 + 1 * 8^3 = 839 结果是,八进制数 1507 转换成十进制数为 839 5. 十 ----& 十六 10 进制数转换成 16 进制的方法,和转换为 2 进制的方法类似,唯一变化: 除数由 2 变成 16。 同样是 120,转换成 16 进制则为,如表 2: 表3 被除数 120 7 计算过程 120/16 7/16 转换方式 商 7 0 余数 8 75 泸州职业技术学院毕业论文系统功能及操作120 转换为 16 进制,结果为:78。 6. 十六----& 十 16 进制就是逢 16 进 1,但我们只有 0~9 这十个数字,所以我们用 A,B,C, D,E,F 这六个字母来分别表示 10,11,12,13,14,15。字母不区分大小写。 十六进制数的第 0 位的权值为 16 的 0 次方,第 1 位的权值为 16 的 1 次方, 第 2 位的权值为 16 的 2 次方…… 所以,在第 N(N 从 0 开始)位上,如果是是数 X (X 大于等于 0,并且 X 小于等于 15,即:F)表示的大小为 X * 16 的 N 次方。 假设有一个十六进数 2AF5, 那么如何换算成 10 进制呢? 用竖式计算: 2AF5 换算成 10 进制: 第 0 位: 5 * 16^0 = 5 第 1 位: F * 16^1 = 240 第 2 位: A * 16^2 = 2560 第 3 位: 2 * 16^3 = 8192 + ------------------------------------10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 (在上面的计算中,A 表示 10,而 F 表示 15) 现在可以看出,所有进制换算成 10 进制,关键在于各自的权值不同。 十进 数 1234 可以给这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 7. 二 ----& 八 ()(二) 整数部分: 从后往前每三位一组,缺位处用 0 填补,然后按十进制方法进 行转化, 则有: 001=1 011=3 然后将结果按从下往上的顺序书写就是: 那么这个 31 就是二进制 11001 31,6 泸州职业技术学院毕业论文系统功能及操作的八进制形式 小数部分: 从前往后每三位一组,缺位处用 0 填补,然后按十进制方法进 行转化, 则有: 101=5 然后将结果部分按从上往下的顺序书写就是:5,那么这个 5 就是二进制 0.101 的八进制形式 所以:()(二)=(31.5)(八) 8. 八 ----& 二 (31.5)(八) 整数部分: 从后往前每一位按十进制转化方式转化为三位二进制数,缺位处 用 0 补充 则有: 1----&1----&001 3----&11 然后将结果按从下往上的顺序书写就是:11001,那么这个 11001 就是八进 制 31 的二进制形式 , 小数部分:从前往后每一位按十进制转化方式转化为三位 二进制数,缺位处用 0 补充 则有: 5----&101 然后将结果按从下往上的顺序书写就是:101,那么这个 101 就是八进制 5 的二进制形式 所以:(31.5)(八)=()(二) 9. 十六 ----& 二 ;二 ----& 十六 二进制和十六进制的互相转换。直接就能转换为十六进制数,反之亦然。 首先一个二进制数:如:1111, 计算: * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 1 由于 1111 才 4 位, 所以必须直接记住它每一位的权值,并且是从高位往低位 记,:8、4、2、1。即,最高位的权值为 2^3 = 8,然后依次是 2^2 = 4,2^1=2, 2^0 = 1。 对于任意一个 4 位的二进制数,都可以很快算出它对应的 10 进制值。 下列列出四位二进制数 xxxx 所有可能的值 仅 4 位的 2 进制数 快速计算方法 十进制值 十六进值 1111 = 8 + 4 + 2 + 1 = 15 F 1110 = 8 + 4 + 2 + 0 = 14 E7 泸州职业技术学院毕业论文系统功能及操作1101 = 8 + 4 + 0 + 1 = 13 D 1100 = 8 + 4 + 0 + 0 = 12 C 1011 = 8 + 0 + 2+ 1 = 11 B 1010 = 8 + 0 + 2 + 0 = 10 A 1001 = 8 + 0 + 0 + 1 = 9 9 .... 0001 = 0 + 0 + 0 + 1 = 1 1 0000 = 0 + 0 + 0 + 0 = 0 0 二进制数要转换为十六进制,就是以 4 位一段,分别转换为十六进制。 如(上行为二制数,下面为对应的十六进制):
FD , A5 , 9B 反过来,当看到 FD 时,如何迅速将它转换为二进制数 ,先转换 F: F, 需知道是 15,然后 15 用 8421 凑,应该是 8 + 4 + 2 + 1,所以四位全为 1 :1111。 接着转换 D: 看到 D,知道它是 13,13 用 8421 凑,应该是:8 + 4 + 1,即:1101。 所以,FD 转换为二进制数,为:
由于十六进制转换成二进制相当直接,所以,需要将一个十进制数转换成 2 进制数时, 也可以先转换成 16 进制, 然后再转换成 2 进制。 比如, 十进制数 1234 转换成二制数,如果要一直除以 2,直接得到 2 进制数,需要计算较多次数。所 以可以先除以 16,得到 16 进制数。如表 4: 表4 被除数
结果 16 进制为: 0x4D2 然后可直接写出 0x4D2 的二进制形式: 10。 其中对映关系为: 0100 -- 4 1101 -- D 计算过程 /16 4/16 转换方式 商 77 4 0 余数 2 13 (D) 48 泸州职业技术学院毕业论文系统功能及操作0010 -- 2 同样,如果一个二进制数很长,需要将它转换成 10 进制数时,除了前面学 过的方法是,还可以先将这个二进制转换成 16 进制,然后再转换为 10 进制。 下面举例一个 int 类型的二进制数: 11
按四位一组转换为 16 进制: 6D E5 AF 1B 。再转换为 10 进制: 6*16^7+D*16^6+E*16^5+5*16^4+A*16^3+F*16^2+1*16^1+B*16^0=1,843,769,11 51.2 基本功能在本设计中能够实现按键输入、软件的数据处理、输出显示的基本功能。 1、按键输入:在硬件中有案件模块。上面有 4*4 的按键矩阵。输入的数据包括 0~9 数字、确认、取消等键功能。当按下相应的数字或功能键时,信号会传入单 片机,单片机会做出相应的反应。再由显示屏显示出结果。 2、数据处理:通过按键的输入,数据传入芯片。芯片会按照输入的程序运行方 式处理数据。最后将计算结果输出给显示屏。 3、输出显示:通过按键的输入软件的处理。会将输入的数字或者软件计算的数 据按照规定的方式显示在相应的位置。 下图为系统结构图:电源电路时钟电路 单 片 机复位电路L C D 显 示按键输入图 1-2 系统结构框图9 泸州职业技术学院毕业论文系统功能及操作4、操作说明:当按下 SB1~SB10 中的键就输入相应的数字,在 LCD 上也会显示 相应的数。 当需转换进制时先决定你输入的数是那种类型,在此只涉及到了十进 制转换成二进制、十六进制。开发方向可以向二进制转换成十进制、八进制、十 六进制。八进制转换成二进制、十进制、十六进制。现在只需输入相应的十进制 数。数字输入完后,按下转换的“确认”键。则输入的十进制就转换成二进制和 八进制。1.3 本章小结本章主要介绍了本次设计的方向,以及确定转换方式和转换流程。同时也叙 述了操作方式和得出的结果。10 泸州职业技术学院毕业论文系统模块介绍第二章 系统模块介绍2.1 主控模块在本次设计中使用 AT89S52 芯片: AT89S52 是一种低功耗、 高性能 CMOS8 位微控制器, 具有 8K 在系统可编 程 Flash 存储器。 使用 Atmel 公司高密度非易失性存储器技术制造, 与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常 规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。图 2-1AT89S52 芯片以及引脚结构图2. 2 引脚说明MCS 单片机都采用 40 引脚的双列直插封装方式。如图为引脚排列图,图中 引脚可以分为以下四类:电源类引脚 2 个、时钟类引脚 2 个、并行 I/O 类引脚 32 个、控制类引脚 4 个。 电源类引脚: ① Vss 20 号引脚 Vss 为电源接地端。11 泸州职业技术学院毕业论文系统模块介绍②Vcc 40 号引脚 Vcc 是芯片电源的输入端,接+5V 电源。时钟类引脚: ① XTAL1 内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用 外部振荡器时,此引脚接地。 ② XTAL2 内部振荡电路反相放大器的输出端,是外接晶体的另一端。当采用外 部振荡器时,此引脚接外部振荡源。 控制类引脚: ① RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到 高跳变) ,将使单片机复位。 ② ALE 正常操作时为 ALE 功能(允许地址锁存)提供把地址的低字节锁存到 外部锁存器。 ③PSEN 外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,在每个机器周期内两次有效。同样可以驱动八 LSTTL 输入。 ④ /Vpp 为内部程序存储器和外部程序存储器的选择端。当/Vpp 为 高电平时, 问内部程序存储器; 访 当/Vpp 为低电平时, 则访问外部程序存储器。 并行 I/O 类引脚: ① P0 口(P0.0 - P0.7) P0 口(P0.0 - P0.7)是一个 8 位漏极开路型双向 I/O 口,在访问外部存 储 器时,它是分时传送的低字节地址和数据总线,P0 口能以吸收电流的方式驱 动八个 LSTTL 负载。 ② P1 口(P1.0 - P1.7) P1 口(P1.0 - P1.7)是一个带有内部提升电阻的 8 位准双向 I/O 口。 能驱动(吸收或输出电流)四个 LSTTL 负载。 。 ③ P2 口(P2.0 - P2.7) P2 口(P2.0 - P2.7)是一个带有内部提升电阻的 8 位准双向 I/O 口, 在访问外部存储器时,它输出高 8 位地址。P2 口可以驱动(吸收或输出电流)四 个 LSTTL 负载。 ④ P3 口(P3.0 - P3.7) P3 口(P3.0 - P3.7)是一个带有内部提升电阻的 8 位准双向 I/O 口。12 泸州职业技术学院毕业论文系统模块介绍2.3 主控模块设计电源、时钟信号以及复位电路是单片机工作的基本条件,缺一不可。单片机 基本系统――包括:电源电路、时钟电路、复位电路。图 2-2 主控电路2.3.1 电源电路模块设计 电源模块:提供+5V 电源,系统板为从 USB 接口获取+5V 电源,只要用相应配 套的 USB 线从电脑主机获取+5V 直流电源。 2.3.2 时钟电路模块设计 单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准。 MCS-51 的时钟信号产生方式:13 泸州职业技术学院毕业论文系统模块介绍① ②内部时钟方式,利用芯片内部的振荡电路; 外部时钟方式。图 2-3 时钟电路由于 AT89S52 单片机芯片内有时钟振荡电路, 因此本项目中采用内部时钟方 式。 只要在单片机的 XTAL1 和 XTAL2 引脚外接石英晶体和微调电容,就构成了自 激振荡器并在单片机内部产生时钟脉冲信号,具体电路设计如图所示。图中电容 C1 和 C2 的作用是稳定频率和快速起振,电容置在 5~30pF,在此选择 30pF;晶 振 X1 的振荡频率范围在 1.2~12MHz 间选择,本项目中选择 12MHz。 时钟电路为单片机产生时钟脉冲序列,作为单片机工作的时间基准,典型的晶体 振荡频率为 12MHz。 2.3.3 复位电路模块设计图 2-4 复位电路复位电路使单片机或系统中的其他部件处于某种确定的状态。当在 51 单片 机的 RST 引脚引入高电平并保持 2 个机器周期,单片机内部就执行复位操作。 复位操作基本形式: ① 上电复位;② 另一种是按键复位。14 泸州职业技术学院毕业论文系统模块介绍2.4 LCD 显示模块图 2-5 LCD 引脚图LCD1602 型液晶显示的外部接口信号有 16 条,与 AT89S52 芯片的接口有 8 条数据线 DB0~DB7、3 条控制线 RS、RW、E,见表 5: 表5 引脚 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 符号 Vss Vcc Vl RS RW E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K 输入 输入 输入 三态 三态 三态 三态 三态 三态 三态 三态 状态LCD 液晶引脚功能表功能 电源地 电源正极 接 5V 液晶显示偏压 寄存器选择,为 1 时数据寄存器,为 0 时指令寄存器 R\W 为读写,为 1 时为读操作为 0 时为写操作 使能信号 数据总线 数据总线 数据总线 数据总线 数据总线 数据总线 数据总线 数据总线 背光源正 背光源负15 泸州职业技术学院毕业论文系统模块介绍1602LCD 显示模块可以与 AT89S52 单片机直接接口,1602LCD 的 8 位双向数 据线 D0―D7 连接 P0 口的 P0.0―P0.7, 1602LCD 使能信号 E 连接 P2 口线的 P2.2; 1602LCD 读/写选择信号 R/W 连接 P2 口线的 P2.1,当 P2.1=0 为写数据信号,当 P2.1=1 为读数据信号;1602LCD 数据/命令选择信号 RS 连接 P2 口线的 P2.0,当 P2.0=0 为命令信号;当 P2.0=1 为数据信号;1602LCD 的 VCC 引脚接+5 电源,引 脚 GND 接地。见图 2-6:图 2-6LCD 显示模块与单片机的接口电路原理图16 泸州职业技术学院毕业论文系统模块介绍2. 5 按键模块AT89S52 单片机的 P1 口用作键盘 I/O 口,键盘的列线接到 P1 口的低 4 位, 键盘的行线接到 P1 口的高 4 位。 列线 P1.0―P1.3 分别接有 4 个上拉电阻到正电 源+5V,并把列线 P1.0―P1.3 设置为输入线,行线 P1.4―P1.7 设置为输出线。4 根行线和 4 根列线形成 16 个相交点。见图 2-7:图 2-7 键盘模块与单片机的接口电路原理图列线通过电阻接正电源,并将行线所接的单片机的 I/O 口作为输出端,而 列线所接的 I/O 口则作为输入端。这样,当按键没有按下时,所有的输出端都是 高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉 低,这样,通过读入输入线的状态就可得知是否有键按下了。17 泸州职业技术学院毕业论文系统模块介绍图 2-8 系统整体原理图2.6 本章小结本章主要介绍了主控模块、按键模块、显示模块和复位电路、时钟电路。同 时也说明了各个模块的引脚的连接方法和引脚说明。18 泸州职业技术学院毕业论文实验板介绍第三章 系统硬件设计―实验板介绍3.1 硬件总图图 3-1 硬件总图通过焊接得到如图的硬件图,按键是 4*4 键阵,LCD 为 1602A 型19 泸州职业技术学院毕业论文实验板介绍3.2 主控硬件模块图 3-2 主控硬件主控模块包括时钟电路、复位电路、滤波电路、按键插排、LCD 插排等。20 泸州职业技术学院毕业论文实验板介绍3.3 按键硬件模块化图 3-3 按键实物图本电路采用 4 输入与门用于产生键盘中断,其输入端与各行线相连,输出端 接至 89s52 的外部中断输入端。当有键闭合时,使某条列线为低电平,如果这条 列线上没有闭合键,则各行线的状态都为高电平;如果列线上有键闭合,则相应 的那条行线即变为低电平。于是就可以根据行线号与列线号计算出闭合键的键 码。21 泸州职业技术学院毕业论文实验板介绍3.4 LCD 显示硬件模块化图 3-4 LCD 显示本设计采用 1602 型 LCD,在初始状态下 LCD 显示 hix: dec: bit:当键盘 有输入时 dec: 会显示输入相应的数字。 当按键输入有 “确定” 键时 LCD 上的 hix: 和 bit:将会出现相应转换的数字。3.5 本章小结本章主要介绍硬件。经过自己的努力焊接出来以上的硬件图,并能够调试成 功,完成本次设计任务。不仅在其中获得了知识,而且也使自己更加充实。在过 程中虽然遇到了不少的阻碍,但自己依然克服困难完成了本次硬件设计、焊接。 增强了信心也考验了自己的个人能力。22 泸州职业技术学院毕业论文系统软件设计第四章 系统软件设计4.1 数据单元分配表 6 数据分配表硬件分配 LCD 显示 I/O 口单片机 I/O 口 P0.0~P0.7 为信号输入 P2.0~P2.2 为使能信号输入 P1.0~P1.3 为低四为输入备注按键输入 I/O 口 使能信 号口 复位 口 时钟输 入口P1.4~P1.7 为高四位输入 P2.0~P2.2 为使能信号输入 第 31 口 第9口 EA/Vpp RST 高电平 为读程序 复位高电平第 18、19 为别为 X1、X2LCD 控制命令集表7 LCD 指令表指令 名称 清屏 归位 输入 方式 限制 开关 光标 功能 设置 地址 设置控制信号 RS R\W 0 0 0 0 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 * 0 0 0 0 0 1 ID S B运行时 间 1.64ms 1.64ms 40us 40us 40us 40us 40us功能 清屏 DDRAM 值 回位 设置光标 设置显示 光移动 工作方式 设置地址0 0 0 0 1 D C 0 0 0 1 SC *RL * * *0 0 1 DL N F0 1 A5 A4 A3 A2 A1 A023 泸州职业技术学院毕业论文系统软件设计地址 设置 读取值 写数据 读数据0 0 1 10 1 0 11 A6 A5 A4 A3 A2 A1 A0 BF A6 A5 A4 A3 A2 A1 A0 数据 数据40us 0 40us 40us设置地址 读取地址计数 数据写入 数据读出 N=1 两行显示 N=0 一行显示 5*10 点阵字符 5*7 点阵字符 BF=1;忙I\D=1;数据度\写操作后 AC 自动加 1 S\C=1;画面平移一个字符 I\D=0;数据度\写操作后 AC 自动减 1 S\C=0;光标平移一个字位 S=1 S=0 D: C: 数据读\写操作,画面平移 数据读\写操作,画面不移 R\L=1;左移 R\L=0;左移 DL=1; DL=0; 4 8 F=1; F=1; 位数据接口显示开关 “1”―开; “0”―关位数据接口光标开关 “1”―开; “0”―关 B:BF=0;准备好闪烁开关 “1”―开; “0”―关按键数据分配表 表8 按键 SB1 SB2 SB3 SB4 SB5 SB6 SB7 SB8 SB9 SB10 SB11 SB12 SB13 输入数 1 2 3 4 5 6 7 8 9 0 10 11 12 按键数据分配表 LCD 显示 1 2 3 4 5 6 7 8 9 0 确认 A B P0.0~P0.7 4*4 按 键举 阵 I/O 口 备注24 泸州职业技术学院毕业论文系统软件设计SB14 SB15 SB1613 14 15C D E4.2 主程序设计流程图开始P0.0~P0.7 显示字符串P1.0~P1.7 输入数字P0.0~P0.7 显示数字调用计算程序显示计算结果结束图 4-1 程序流程图25 泸州职业技术学院毕业论文系统软件设计4.3 程序说明在本设计中程序采用 C 语言编程。涉及到数学计算、数学公式以及数学符号。 4.3.1 包含数据库 C 语言编程涉及到数据库的包含。在本程序中包含: #include &REG51.H& #include &math.H& 4.3.2 程序初始化 程序初始化包括 AT89S52 的初始化、液晶显示屏初始化和清屏。芯片初始化 包括:I\O 输入 sbit dec=P1^1; 时能端口 sbit b=P1^2。液晶初始化包括:设 置工作方式、显示状态设置、输入工作方式、设置地址、清屏。 (xzl(0x38);xzl(0x0c);xzl(0x06);xzl(0x80);xzl(0x01) 4.3.3 字符串显示 在初始时 LCD 会显示字符串 hex、 dec、 (uc code nn[]={&hex:&};uc code bit。 qq[]={&dec:&};uc code wn[]={&bit:&};) 。在输入字符包括:1~9~f({uc code mm[]=&ABCDEF&;)4.3.4 实现计算设定 在本设计中将要涉及数学乘除法运算:十进制数转换成二进制数,是连续除 2 的过程:把要转换的数,除以 2,得到商和余数, 将商继续除以 2,直到商为 0。最后将所有余数倒序排列,得到数就是转换结果。十进制数转换成十六进制, 同十进制转换成二进制类似。 (erjz[i]=m%2; m=m/2; “%”表示除法取余数, “/” 表示除法。)26 泸州职业技术学院毕业论文系统软件设计4.4 本章小结通过画程序流程图,确定程序书写的大体方向。再通过查阅资料、请教老 师等之后书写各个模块的程序, 在未完成所有程序时,可以用 protuse 仿真软件 试验各个模块程序是否正确。 当完成程序书写同样用 protuse 仿真。首先需要建 仿真硬件图。 照程序书写的使能端和 I\O 口连接仿真电路图。后写入程序查看是 否是自己想要的结果,如果不是。检查程序书写和仿真电路图,确认无误则程序 书写成功。硬件的焊接也可以仿照仿真电路图焊接。能够保证焊接无误。确定硬 件和程序无误时,可以通过烧写软件写入单片机,并连接好硬件。接通电源,调 试硬件的到相应效果即可。27 泸州职业技术学院毕业论文系统调试第五章 系统调试5.1 硬件调试硬件焊接以模块化的方法焊接,便于排错。模块分为主控模块、按键模块、 LCD 显示模块。各个模块风别焊接在三块电路板中,用排线连接起来。在调试 时首先在芯片上烧写有关 LCD 显示的程序, 将主控模块和 LCD 显示模块用排线 连接好并接上电源。查看 LCD 显示是不是程序中应有的显示。如果是,则就说 明主控模块和 LCD 模块都调试成功,如果不是或者不显示着就要仔细排查焊接 线路和排线连接线路。 接着将按键模块用排线连接与主控模块连接,重新烧写有 关按键扫描并通过 LCD 显示出相应的字符的程序。接通电源,查看按键是否能 够输入相应字符或者按键是否灵敏等,在 LCD 上观看显示是否正确。如果正确 则调试成功。如果不正确则继续调试。图 5-1LCD 和按键调试图28 泸州职业技术学院毕业论文系统调试5.2 软件调试软件书写前画出程序流程图,确定程序大体方向。并通过查阅教材、图书书 籍、咨询老师、朋友等方式寻求帮助。也可以参照《单片机应用技术及项目化训 练》一书书写。书中有关于案件扫描程序、LCD 显示程序等,可以参考。在书 写程序完成时,可通过 portues 仿真软件仿真。这样可以查看程序是否正确,不 正确则继续修改。正确则可以烧写进焊接的硬件中去,再次调试直至显示、按键 都能运行程序运行正确为止。图 5-2 上图为 protues 仿真5.3 本章小结本章主要介绍了硬件系统和软件系统的调试。硬件调试主要通过输入显示程 序和按键扫描程序,再接通电源查看显示是否合符要求。软件调试通过使用 portues 仿真软件检查程序是否正确和能否取得相应效果。29 泸州职业技术学院毕业论文结束语结束语在本设计中, 通过自己辛勤的焊接自己出色的完成了硬件的焊接。并能够调 试成功运行相应的程序,自己倍感莫大的收获和欣慰!在老师、同学、朋友、网 络的帮助下,自己能够顺利完成程序的书写。在书写完成之后,自己能够编辑到 仿真软件中测试程序是否有相应的效果。 在程序完成调试完成后能够通过烧写软 件烧入芯片中, 并通过自己焊接的硬件完成测试,最后在硬件操作中完成本次设 计。 在完成毕业设计过程中,认识到学习要勤奋,要多寻求帮助,多查阅资料。 通过这一阶段的毕业设计,我受益匪浅,不仅锻炼了良好的逻辑思维能力,而且 培养了弃而不舍的求学精神和严谨作风。给我的业务素质、个人能力的培养提供 了一个难得的机会, 令我回顾这些天来的设计过程,我学到许多实际问题的解决 方法,为以后在工作岗位上的继续深造打下了基础。此次毕业设计,也是大学三 年所学知识很好的总结。 此次编制招标文件不仅重温了过去所学知识,而且学到了很多新的内容。相 信这次毕业设计对我今后的工作会有一定的帮助。所以,我很用心的把它完成。 在设计中体味艰辛,在艰辛中体味快乐。 最后,我要感谢我的指导老师洪震老师,他们对我的毕业设计进行了多次 的参考与修改, 我的毕业设计才得以顺利完成。同样我也要衷心的感谢教育过和 指导过我的各位老师,感谢给予我帮助的朋友们,谨献上我最真挚的祝福。30 泸州职业技术学院毕业论文致 谢致 谢将近两个月的毕业论文阶段结束了,在这段时间里,我得到了许多老师和 朋友的关心和帮助。 首先,我要对我的指导老师向老师诚挚的谢意,在整个做毕业论文期间,洪 震老师无微不至的关心我的学习和生活,课题遇到困难时更是关注着课题的进 程。 洪震老师高深的学术造诣、 严谨的治学态度和勤勉的工作精神以及他平易近 人的态度使我受益终身。 在我做毕业论文期间我的同学和朋友给予了我很大的帮助, 在我遇到困难的 时候,总是不断给我提出许多有价值的意见,并且经常鼓励我。 感谢我的带领老师,在课题的进行阶段给我提出了许多有创新的观点。 最后感谢在我的课题进行中给予我帮助的所有的朋友们! 此致 敬礼31 泸州职业技术学院毕业论文程序清单附录:程序清单#include &REG51.H& #include &math.H& #define keyport P1 #define uc unsigned char #define ui unsigned int sbit hex=P1^0; sbit dec=P1^1; sbit b=P1^2; sbit rs=P2^0; sbit e=P2^2; sbit rw=P2^1; uc flag3,flag1=0,temp=0,shu=0; void xzl(uc temp); void xsj(uc temp); void delay(ui z) { ui x,y; for(x=z;x&0;x--) for(y=110;y&0;y--); } void lcdinit(void) { xzl(0x38); xzl(0x0c); xzl(0x06); xzl(0x80); xzl(0x01); } void lcd(uc i,uc j,uc temp) //液晶显示 //液晶初始化 //时能端口 //I\O 输入 //包含数据库{uc code mm[]=&ABCDEF&; xzl(0x80+i+0x40*(j-1));32 泸州职业技术学院毕业论文程序清单xsj(mm[temp]); } void lcdstring() { uc code nn[]={&hex:&}; uc code qq[]={&dec:&}; uc code wn[]={&bit:&}; xzl(0x80); for(i=0;i&4;i++) xsj(nn[i]); xzl(0x88); for(i=0;i&4;i++) xsj(qq[i]); xzl(0x80+0x40); for(i=0;i&4;i++) xsj(wn[i]); } uc key(void) { uc temp, temp=0xf0; keyport= temp= temp=temp&0xf0; if(temp==0xf0) { flag3=0; return(0xff); } delay(5); temp= if(temp&0xf0==0x00) //读键盘子程序 //液晶显示的字符串33 泸州职业技术学院毕业论文程序清单return(0xff); temp=0 keyport= temp= temp=temp&0xf0; switch(temp) { case 0xe0:key=7; case 0xd0:key=8; case 0xb0:key=9; case 0x70:key=0 } temp=0 keyport= temp= temp=temp&0xf0; switch(temp) { case 0xe0:key=4; case 0xd0:key=5; case 0xb0:key=6; case 0x70:key=0 } temp=0 keyport= temp= temp=temp&0xf0; switch(temp) { case 0xe0:key=1; case 0xd0:key=2; case 0xb0:key=3; case 0x70:key=0 }34 泸州职业技术学院毕业论文程序清单temp=0xf7; keyport= temp= temp=temp&0xf0; switch(temp) { case 0xe0:key=0 case 0xd0:key=0x00; case 0xb0:key=20; case 0x70:key=0 } if(flag3) return(0xff); flag3=1; return(key); } void main(void) { uc mm,m,i=0,erjz[8],hex[2]; rw=0; lcdinit(); lcdstring(); while(1) { mm=key(); if(mm!=0xff) { if(mm!=20) { shu=temp*10+ lcd(13,1,temp); lcd(14,1,mm); temp= //主函数35 泸州职业技术学院毕业论文程序清单} else { m= i=0; while(i&8) { erjz[i]=m%2; i++; m=m/2; } for(i=8;i&0;i--) { lcd(12-i,2,erjz[i-1]); } for(i=0;i&8;i++) { if(i&4) hex[0]=hex[0]+erjz[i]*pow(2,i); else hex[1]=hex[1]+erjz[i]*pow(2,(i-4)); } lcd(4,1,hex[1]); lcd(5,1,hex[0]); hex[0]=0; hex[1]=0; } } } } void xzl(uc temp) {e=0; rs=0; //液晶写指令36 泸州职业技术学院毕业论文程序清单P0= delay(5); e=1; delay(5); e=0; } void xsj(uc temp) {e=1; rs=1; P0= delay(5); e=1; delay(5); e=0; //液晶写数据37 泸州职业技术学院毕业论文参考文献参考文献[1] 胡汉才.单片机原理及接口技术[M].北京:清华大学出版社,1996. [2] 胡健.单片机原理及接口技术[M].北京:机械工业出版社,2004. [3] 胡健.单片机实用教程[M].北京:兵器工业出版社,2001. [4] 周行慈.单片机应用程序设计基础[M].北京:北京航空航天大学出版社,1991. [5] 李广弟.单片机基础[M].修订本,北京:北京航空航天大学出版社,2001. [6] 李朝青.单片机原理及接口技术[M],简明修订版.北京:北京航空航天大学出版 社,1999. [7] 李叶紫.MCS-51 单片机应用教程[M].北京:清华大学出版社,2004. [8] 朱定华.单片机原理及接口技术[M].北京:电子工业出版社,2001. [9] 李庭贵.单片机应用技术及项目化训练[M].西南交通大学出版社,2009 [10] AT89S52 芯片资料(译文),Atmel 公司. [11] 实验板资料,www.mcuprog.com.38
更多搜索:
赞助商链接
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 单片机读写u盘 的文章

 

随机推荐