单片机课程设计基于单片机的多功能综合应用系统的设计

合集下载

单片机原理及应用课程设计报告

单片机原理及应用课程设计报告

单片机原理及应用课程设计报告单片机是一种集成了微处理器、存储器和输入输出端口的芯片,广泛应用于各种电子设备中。

在现代电子科技中,单片机作为控制系统的核心,发挥着至关重要的作用。

本文将介绍单片机的原理及应用,并结合实际课程设计案例,探讨其在电子控制领域的应用。

单片机的原理主要包括中央处理器(CPU)、存储器和输入输出端口。

CPU是单片机的核心,负责执行程序指令和进行数据处理;存储器用于存储程序指令和数据;输入输出端口则实现单片机与外部设备的通讯。

通过这三个部分的协同工作,单片机能够实现各种控制功能。

在单片机的应用中,最常见的是嵌入式系统。

嵌入式系统是将计算机技术应用于各种电子设备中,如家用电器、汽车、医疗设备等。

通过单片机的控制,这些电子设备可以实现智能化、自动化的功能,为人们的生活带来便利。

在单片机的课程设计中,学生通常需要设计一个简单的控制系统。

以智能灯控系统为例,学生可以通过单片机控制灯的亮度和颜色,实现远程控制和定时开关功能。

通过设计这样一个项目,学生可以更好地理解单片机的工作原理和应用方法。

除了嵌入式系统,单片机还广泛应用于工业控制领域。

例如,自动化生产线中的各种传感器和执行器,都需要通过单片机来进行控制和监控。

单片机的高可靠性和实时性,使其成为工业控制领域的首选方案。

总的来说,单片机作为一种集成了微处理器、存储器和输入输出端口的芯片,具有广泛的应用前景。

通过学习单片机的原理及应用,人们可以更好地理解现代电子技术的发展趋势,为未来的职业发展奠定基础。

希望通过本文的介绍,读者对单片机的原理及应用有了更深入的了解,并能够在实际工作中灵活运用这一技术,为电子控制领域的发展做出贡献。

单片机多功能系统设计

单片机多功能系统设计

《单片机原理及应用》课程设计班级学号学生姓名专业系别电子与电气工程学院指导教师电子与电气工程学院年月一、课程设计目的《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须要接受的一项工程训练。

在课程的设计过程中,在教师的指导下,运用工程的方法,通过一个简单的课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决具体问题的目的。

通过课程设计,应能加强学生如下能力的培养:(1)独立工作能和创造能力;(2)综合运用专业及基础知识,解决实际工程技术问题的能力;(3)查阅图书资料、产品手册和各种工具书的能力;(4)工程绘图的能力;(5)编写技术报告和编制技术资料的能力。

二、设计内容本次课程设计主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。

软件编程是本次课程设计的重要环节。

在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点:1)、熟悉Keil C51编程平台及相关编程软件2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调3)、编写、调试LED流水灯(循环显示)程序并进行软硬件联调4)、编写、调试键盘扫描子程序并进行软硬件联调5)、编写、调试数码管动态扫描程序并进行软硬件联调6)、电子钟设计(包括键盘、时钟、显示等)7)、温度测量控制系统设计(包括键盘、显示、控制、报警等)其中前五个内容是后两个内容的基础,主要是编制一些子程序,为后继的整个系统设计打下基础。

单片机应用系统设计课程设计

单片机应用系统设计课程设计

断点调试、跟
统测试等
化性能等
踪调试等
软件测试与优化
测试方法:单元测试、集成测试、系统测试等 测 试 工 具 : J U n i t 、 Te s t N G 等 优化目标:提高代码质量、提高运行效率、降低资源消耗等 优化方法:代码重构、算法优化、性能调优等
Part Five
单片机应用系统功 能实现
软件设计、调试与测试、优化与改进等部分
Part Three
单片机硬件设计
单片机芯片选型
单片机性能:速度、内存、 外设等
单片机品牌:STM、TI、 NXP等
单片机类型:8位、16位、 32位等
单片机价格:成本、性价比 等
单片机应用领域:工业控制、 智能家居、汽车电子等
单片机开发环境:IDE、编 译器、调试器等
硬件电路原理图设计
单片机硬件设计主要包括单片机、外围电路、电源电路、接口电路等部分。
单片机是硬件设计的核心,需要选择合适的型号和性能参数。
外围电路包括输入输出接口、数据存储、显示、控制等部分,需要根据实际需求 进行设计。 电源电路需要保证单片机的正常工作,包括电源电压、电流、稳定性等方面的考 虑。
Part Six
单片机应用系统可 靠性设计
抗干扰技术
屏蔽技术:使用金属外壳或屏蔽罩,防止电磁干扰 滤波技术:使用滤波器,滤除不需要的频率成分 接地技术:良好的接地设计,降低干扰信号的强度 软件抗干扰技术:使用软件算法,消除或减弱干扰信号的影响
电源系统设计
电源选择:选择稳定、可靠的电源,如锂电池、太阳能电池等 电源保护:设计电源保护电路,防止电源过压、过流、过热等故障 电源管理:设计电源管理电路,实现电源的智能管理,如自动开关机、自动调节电源等 电源备份:设计电源备份系统,实现电源故障时的自动切换,保证系统正常运行

基于51单片机的一个多功能系统设计

基于51单片机的一个多功能系统设计
图 1 电路 原 理
侧短 接 , 被测试 电压 VX 来 自手拨 电位 器 w5 2 . MC14 3的电路 接成 不断 重 复测 量 的模 式 , 秒 43 每
1 2 数 码显 示 、 . 按键 、 E L D和 蜂鸣器 电路单 元 ( 2 图 )
Байду номын сангаас
由 4个 移位 寄存 器 7HC 6 ( 4 14 U6一U9 和 4个共 ) 阴数 码 管 ( E S G1一 S G )构 成 数 码 显 示 电 路 , E 4 6 9 25 C 0 1的 串行 口采 用 方 式 “ ” 作 , 显 示 数 据 0工 将 送 7HC 6 行静 态显 示 . 下 DIC R键 时 将清 除 4 14进 按 SL 数 码 管 上 的 全 部 显 示 . 光 输 出 由 移 位 寄 存 器 声 7 HC 6 ( 0高 4位 支 持 , “ ” 有 效 . 下 DI一 4 14U1 ) 送 1时 按 S
读 人“ ” , 明无键 按 下 ; 1时 说 反之 , 则说 明有 键 按 下 , 此 时可转 入逐 键识 别 ,
1 电路 的 设 计
1 1 电路组 成框 图 ( 1 . 图 )
②逐键 识别 、 移位 寄存 器 7 HC 6 令 4 14的低 4位 依 次 为 “” 其 余 位 为 “ ” ; P . , 到 “ ” 明该 0( 1 ) 从 34读 读 0表
负 的温度 系数 , 值 大 约 是 一2~ 一22mV, 如 果 其 . P C, 在 0℃ 时 电桥 平衡 , B端输 出 0V, 10℃ 时 电桥 A、 在 0
作者简介 : 国平 (9 8一)男 , 李 17 , 河南济源人 , 助教 , 硕士研究生
维普资讯
造价低 , 编程方便 的优 点; 并给 出了电路原理 图和相应 的软件设计 以及 具体应用 .

单片机系统的设计课程设计

单片机系统的设计课程设计

单片机系统的设计课程设计一、课程目标知识目标:1. 让学生理解单片机系统的基本原理和组成,掌握其设计流程和方法。

2. 使学生掌握单片机编程的基础知识,能运用C语言或汇编语言进行简单程序编写。

3. 帮助学生了解单片机系统在实际应用中的功能与作用,如智能家居、机器人等。

技能目标:1. 培养学生具备独立设计单片机系统的能力,包括硬件电路设计和软件编程。

2. 提高学生运用单片机解决实际问题的能力,如数据采集、信号处理等。

3. 培养学生动手实践和团队协作的能力,能够完成课程项目的设计与实施。

情感态度价值观目标:1. 培养学生对单片机系统设计和开发产生兴趣,提高其学习积极性和主动性。

2. 培养学生具备创新精神和实践意识,敢于尝试新方法,解决实际问题。

3. 培养学生具备良好的团队合作精神和沟通能力,能够在团队中发挥积极作用。

课程性质:本课程为实践性较强的学科,要求学生在理解理论知识的基础上,动手实践,完成单片机系统的设计与实现。

学生特点:学生具备一定的电子技术基础和编程能力,对单片机系统有一定了解,但实践经验不足。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的积极性,培养其创新能力和实践能力。

通过课程学习,使学生能够达到上述课程目标,为后续专业课程学习和实际工程应用打下坚实基础。

二、教学内容1. 单片机系统概述:介绍单片机的基本概念、发展历程、应用领域及未来发展趋势。

- 教材章节:第一章 单片机概述2. 单片机硬件结构:讲解单片机的内部结构、工作原理、主要性能指标及硬件连接方式。

- 教材章节:第二章 单片机硬件结构3. 单片机编程语言:学习单片机编程所需的基础知识,包括C语言和汇编语言。

- 教材章节:第三章 单片机编程语言4. 单片机I/O口编程:介绍I/O口的基本操作方法,包括输入、输出、中断等。

- 教材章节:第四章 单片机I/O口编程5. 单片机系统设计流程与方法:讲解单片机系统设计的步骤、方法及注意事项。

单片机综合应用课程设计

单片机综合应用课程设计

单片机综合应用课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程和编程方法。

2. 使学生了解并掌握单片机在综合应用中的关键技术和常见模块的使用。

3. 帮助学生掌握相关电子元器件的功能和连接方式,能够正确搭建单片机应用系统。

技能目标:1. 培养学生运用单片机进行创新设计的能力,能够独立完成简单的综合应用项目。

2. 提高学生编程和调试单片机程序的能力,解决实际问题。

3. 培养学生团队协作和沟通能力,能够共同完成复杂项目的搭建与调试。

情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养其探究精神和创新意识。

2. 培养学生严谨、务实的科学态度,养成良好的实验操作习惯。

3. 增强学生的环保意识,使其关注可持续发展,将绿色环保理念融入单片机应用项目中。

课程性质:本课程为实践性较强的综合应用课程,注重理论知识与实际操作相结合,培养学生动手能力和创新能力。

学生特点:学生处于高年级阶段,已具备一定的单片机基础知识和编程技能,具有一定的自主学习能力和团队合作意识。

教学要求:结合课程性质、学生特点,明确课程目标,注重理论与实践相结合,提高学生的实际操作能力和创新能力。

将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。

二、教学内容1. 单片机基础回顾:回顾单片机的基本原理、结构、指令系统及编程方法,巩固学生对单片机基础知识点的掌握。

相关教材章节:第一章 单片机原理与结构2. 单片机应用模块:学习并实践单片机在综合应用中的常见模块,如传感器、执行器、显示模块等。

相关教材章节:第二章 单片机接口技术;第三章 常用传感器及其接口技术3. 编程与调试:学习单片机程序设计方法,掌握编程工具及调试技巧,能够解决实际问题。

相关教材章节:第四章 单片机C语言编程;第五章 单片机程序调试与优化4. 综合应用设计:结合所学知识,进行创新设计,完成一个具有实际应用价值的单片机综合项目。

单片机应用系统课程设计

单片机应用系统课程设计

硬件
扩展用ADC0809将温度->电压->数字 三位LED显示温度 扩展一片外部RAM,具体芯片自定
软件
主程序:ADC0809初始化 ,RAM初始化,堆 栈设定,定时器初始化 定时中断服务程序 显示子程序
ADC0809采样与显示例
设计说明书撰写要求
1.绪论
1.1 目的与意义 1.2 本设计的主要任务 1.3 系统完成的主要功能
3、硬件设计
选择系统所需的各类元器件; 设计系统的电子线路图和印刷电路板; 安装元器件的调试硬件线路。 硬件设计应确保功能设计和接口设计满足系 统的需求,并且充分考虑和软件的协调工作 关系。
4、软件设计
基于软件工程的思想,拟制出本系统的软件 设计方案。 划分出主要的软件模块、根据需要绘制部分 软件模块的流程图。 调试程序和测试软件的基本功能。
四、源程序(续)
STATUS2:MOV R0,#3 FLASH: MOV P1,#0AH ;P1输出 东西红,南北绿闪 MOV R3,#5 LCALL DELAY MOV P1,#5AH MOV R3,#5 LCALL DELAY DJNZ R0,FLASH MOV P1,#5FH ;P1输出 东西红,南北绿 MOV R3,#30 LCALL DELAY
三、流程图
开始 初始状态东西 南北都是红灯
状 态 1南 北 绿 灯,东西红灯
状 态 2南 北 绿 灯 闪 转黄灯,东西红灯
状 态 3南 北 红 灯,东西绿灯
状 态 4南 北 红 灯 , 东西绿灯闪转黄灯
四、源程序
汇编程序: ORG 0000H LJMP START ORG 0040H START: MOV SP,#60H STATUS0:MOV P1,#0FH ;P1输出 东西南北红灯亮 MOV R3,#30 LCALL DELAY STATUS1:MOV P1,#5AH ;P1输出 东西绿,南北红 MOV R3,#50 LCALL DELAY

单片机应用系统课程设计 方解石

单片机应用系统课程设计 方解石

单片机应用系统课程设计方解石单片机应用系统课程设计方解石一、电路设计1、电源电路实现电路电源的设计,采用“桥式”的电源电路,使用2节电池构成电源,并通过直流-直流转换器,获得一节5V电源电压,并将电源线与主控单片机连接。

2、主控单片机采用芯片AT89C51单片机,它是51系列单片机的一种,具有8K 字的可编程(EPROM)存储空间,片内复位电路,三种中断源,加上多种常用的I/O口,可以运行具有控制功能的强大的指令集,同时它的体积小,功耗低,工作环境友好,使它在消费电子设备、工业控制系统中应用较多。

3、传感器接口用于连接传感器,该部分采用两路Digital-I/O,用来检测使用者的身份码,连接检测芯片中的按键。

4、主机接口用于连接与主机的数据交换,该部分采用RS-232接口,用来接收与发送信息,实现控制与主机的数据交互。

5、光电耦合接口用于连接外部设备,该部分采用光电耦合器,用来检测两端电压差大于一定阈值时,触发信号。

二、程序设计1、编程语言程序采用C语言进行编写,可以利用C程序编写的功能较大,因此将程序中主要使用C语言进行编程。

2、程序结构设计程序分为5部分:(1)初始化:完成硬件设备的初始化,定义变量,确定程序的运行模式;(2)外部设备检测:完成外部设备的检测,检测到信号触发后,开启身份验证;(3)身份验证:对使用者输入的身份码进行验证,若验证正确,则向主机发送认证信号,反之则发送错误信号;(4)主机检测:检测主机的反馈信号,若信号正确,则启动数据传输步骤;(5)数据传输:将程序收到的反馈信号与设备的详细信息发送给主机。

三、安全考虑1、由于系统中需要处理的数据可能包含敏感信息,为保证系统安全,需要采用加密技术对数据进行加密,防止数据被窃取;2、在外部设备检测步骤中,采用光电耦合器作为外部设备的接口,在检测信号触发后,使用者需要输入身份码,以验证使用者的身份,以确保数据的安全;3、由于数据的传输可能存在安全隐患,因此,在数据传输步骤中,也需要同样采用合理的加密技术,以保证数据的安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计报告——基于单片机的多功能综合应用系统的设计摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

本次课程设计采用AT89C51单片机作为主要核心部件,加上LED、LCD、键盘、LED点阵等外围设备,实现了键盘控制LED并以LCD显示及LED点阵显示和可校时数字时钟、温度控制等功能,这些功能贴近日常生活,非常具有现实意义。

目录摘要 (2)一、概述 (4)1.1设计意义 (4)1.2设计目标 (5)第一部分:基本功能 (5)第二部分:基本应用模块 (5)第三部分:基于仿真的扩展模块 (5)第四部分:赛前训练模块 (5)1.3设计要求 (5)1.4 任务分配 (6)二、硬件和程序设计 (7)元器件及开发环境 (7)元器件清单 (7)开发环境 (8)第一部分:基本功能 (8)1.1 单片机最小系统 (8)1.2 LED彩灯模块 (10)1.3 LCD 显示模块 (10)1.4 键盘控制模块 (11)1.5 第一部分整体图 (11)1.6 硬件实物图 (12)1.7 程序设计 (13)第二部分:基本应用模块 (13)2.1 数字时钟 (13)2.2 程序设计 (14)第三部分:基于仿真的扩展模块 (15)3.1 点阵基础——8*8点阵调节 (15)3.2 点阵模块——16*16点阵显示 (15)3.3 程序设计 (16)第四部分:赛前训练模块 (16)4.1 系统描述 (16)4.2 温度采集模块 (17)4.3 时钟模块 (17)4.4 通信模块 (17)4.5 显示模块 (18)4.6 温度控制系统整体图 (18)4.7 程序设计 (18)三、总结和心得 (19)四、参考资料 (20)附录(程序代码节选) (21)第一部分(节选主要部分) (21)第二部分(节选主要部分) (23)一、概述1.1设计意义本次单片机课程设计内容包括单片机正常启动和复位,LED花样控制及亮度、色彩变化调节,LCD液晶显示屏的调节,点阵LED的文字输出,时钟芯片DS1302的配置,温度传感器DS18B20的使用,以及键盘控制单片机工作,对以上技术的掌握可以有效地提高我们的实际应用能力,如基于LED的节日艺术彩灯控制系统、温度采集和实时监控系统、电子日历等,具有非常实际的意义和价值,使我们对知识的学习由理论提升到实践,让专业知识学习得到极大巩固和提高。

1.2设计目标第一部分:基本功能1.设计并实现具有复位功能的单片机小系统。

2.利用单片机进行灯光的场景开关控制、循环点亮控制、花样变化控制及速度变化控制。

3.利用单片机进行灯光的色彩连续变化效果控制。

4.利用单片机进行灯光的三色联动定时控制(以交通灯为例)。

5. 配合2至4项中功能,实现液晶屏输出功能或状态信息。

6. 实现基于4X4键盘的输入功能。

第二部分:基本应用模块7. 数字时钟的设计(要求:显示时间、调整时间、闹钟功能等)第三部分:基于仿真的扩展模块8.16x16点阵LED显示同组同学汉字名。

第四部分:赛前训练模块9.温度监控系统1.3设计要求1.能启动、停止单片机;2.能通过开关(按键)进行功能选择;3.基本功能部分要体现循环、组合和色彩变化的控制功能和效果,实现三色联动定时控制,控制变化规律的类型或功能不少于5种。

1.4 任务分配根据组内成员的擅长方向,由纪琛负责电路仿真和程序设计,马浩负责硬件的搭建和调试。

第一部分用时3周,第二部分用时2周,第三部分用时1周,第四部分用时3周,共用时9周。

二、硬件和程序设计元器件及开发环境元器件清单17 74LS04 片 2 20 可换用74LS07/06、74HC245以改善驱动能力18 RT1602液晶显示屏只 1 2019 DS18B20温度传感器只 1 2020 8550三极管只 1 20 PNP型21 有源一体蜂鸣器5V 只 1 20(补充:由于本组第二部分设计要求,设计时自行增加了时钟芯片DS1302和32.768KHz晶振各一个)开发环境硬件仿真环境——Proteus 7软件开发环境——Keil µVision4第一部分:基本功能1.1 单片机最小系统1.1.1 复位电路1.1.2 晶振电路1.1.3 最小系统整体图1.2 LED彩灯模块1.3 LCD 显示模块1.4 键盘控制模块1.5 第一部分整体图1.6 硬件实物图1.7 程序设计(详细程序见附录)第二部分:基本应用模块2.1 数字时钟2.1.1 DS1302时钟电路2.1.2 数字时钟整体图2.2 程序设计第三部分:基于仿真的扩展模块3.1 点阵基础——8*8点阵调节3.2 点阵模块——16*16点阵显示3.3 程序设计(见压缩包附件)第四部分:赛前训练模块4.1 系统描述本系统由AT89C51做主控芯片,外部直流稳压电源给系统供电(未给出电源详细设计),通过I2C与24C02C构成的外部存储电路通信读取预存的温度上下限值,通过DS1302时钟模块读取准确的时间信息,通过DS18B20进行温度采集,当采集温度与预设的上下限温度比较,高于上限则红灯亮蜂鸣器响且启动风扇进行降温,低于下限则蓝灯亮蜂鸣器响且启动电热丝进行升温,考虑到要显示的信息较多,系统使用12864液晶AMPIRE128X64进行数据显示,当控制方式切换为手动模式时,使用按钮控制风扇和电热丝,串口RS-232用于与PC进行通信,可以手动设定温度上下限、当前时间、工作模式(自动、手动)。

由于时间和个人能力问题,本电路的串口通信功能未得到完善,软件设计也存在问题,虽然基本检测和自动控制能实现,但离预期可基本投入实际应用的目标还很遥远。

4.2 温度采集模块4.3 时钟模块4.4 通信模块4.5 显示模块4.6 温度控制系统整体图4.7 程序设计(详细见压缩包附件)端口、定时器、I2C 初始化预设定温度上下限温度转换时间Jc&Mh三、总结和心得在这次的单片机课程设计实验过程中,我遇到过很多难题,比如,如何调节占空比使得三色灯的颜色更具连续性,如何配置DS1302芯片,如何进行LCD 的初始化,如何使用较少的端口连接4个8*8点阵组成一个16*16点阵、如何温度采样等等,这些问题都曾导致我们的试验进度缓慢,因为我是负责仿真和程序部分的,如果我这边出不来,硬件那边就无法进行,因此我经常需要查阅大量网络资料和馆藏书籍,实时学习相关知识以保证我的知识量足以设计出稳定可靠的电路并写出符合功能要求的程序代码,这是很需要时间和精力的,因为很多情况都是,可能看了一上午的书,检查了一上午的代码,仍然解决不了我们遇到的问题。

就比如我们后期调试第一部分的电路时,LCD实物一直没有显示,但是仿真却有反应,找了半天才发现有2个控制端口接错位了。

从这些细小的问题可以看出,有时候一个产品的好坏并没有决定于它大的硬件设计或者程序驱动等,而往往是一些平时没注意的细微之处,在关键时刻导致整个产品的失败。

另一个教训就是,平时应该多查阅资料,有时候使用别人已经做好的模块可以节省大量的时间,设计初期我花大量时间去调试LCD驱动和键盘初始化,结果有现成的没及时用,白白浪费大量时间。

如果平时多阅读,使用的时候就能很快联想到相关见过的或者曾经做过的模块,这样可以大大缩短实验周期,提高效率。

总之,这次课程设计我学到了不少东西,理论知识永远还是需要实验来巩固才能提高。

四、参考资料1.《单片机课程设计指导》(第2版) 北京航空航天大学出版社作者:楼然苗李光飞 2012.12. 《单片机技术-课程设计与项目实例》中国电力出版社作者:李海滨等 2009.103.《 Proteus教程-电子线路设计、制版与仿真》清华大学出版社作者:朱清彗 2008.94.《 51系列单片机设计实例》(第2版) 北京航空航天大学出版社作者:楼然苗李光飞 2006.25.《基于5103K的单片机实验指导书》(内部试用)附录(程序代码节选)第一部分(节选主要部分)#include<reg52.h>#include<stdio.h> //标准输入输出#include<intrins.h>#include<stdlib.h>#include "last1_led.h"#define Data P0//数据端口sbit RS = P2^4; //Pin4sbit RW = P2^5; //Pin5sbit E = P2^6; //Pin6sbit p1_0=P1^0;//接东西绿灯//sbit p1_1=P1^1;//接东西黄灯//sbit p1_2=P1^2;//接东西红灯//sbit p1_3=P1^3;//接南北绿灯//sbit p1_4=P1^4;//接南北黄灯//sbit p1_5=P1^5;//接南北红灯//unsigned char key;static int i=0;char data TimeNum[]=" ";char data Test1[]=" ";//延时函数1//void delay1(unsigned int x)//键盘扫描函数//unsigned char keyscan(void)void last1_led(void);void roadlight(void)void DelayUs(unsigned char us)//delay usvoid DelayMs(unsigned char ms)/* 写入命令 */void WriteCommand(unsigned char c)/* 写入数据函数 */void WriteData(unsigned char c)/* 写入字节函数 *//* 写入字符串函数 */void ShowString (unsigned char line,char *ptr)/* 初始化函数 */void InitLcd()void lcdshow(void){InitLcd(); //初始化LCDDelayMs(15); //延时保证信号稳定WriteCommand(0x01); //显示清屏sprintf(Test1," LCD Test ");//打印输出第一行信息ShowString(0,Test1);sprintf(TimeNum," Hello AT89C51 ");//打印输出第二行信息ShowString(1,TimeNum);}// 三色联动//void delay_h(int x)//主函数//void main(void){unsigned char keycode;P1=0xFF;srand(3);while(1){keycode=keyscan();switch(keycode){case 0:last1_led();P1=0xFF;break;case 1:roadlight();P1=0xff;break;case 2:lcdshow();break;case 3:while(1){pwm();}break;default:break;}}}/*功能: 8个LED的4种花样显示 */#include <reg51.h>typedef unsigned char U8;typedef unsigned int U16;/*************宏定义*****************/#define speed P2#define led_data P1#define uchar unsigned char#define uint unsigned int/*************端口定义***************/sbit key_speed_jia=P2^0; //int0sbit key_speed_jian=P2^1; //int1/*************************************************************** 4种花样数据定义***************************************************************/ uchar code table0[]={0xE7,0xDB,0xBD,0x7E,0xFF,0x7E,0x3C,0x18,0x00,0xFF,0xE7,0xC3,0x81,0x00};uchar code table1[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};uchar code table2[]={0xAA,0x55};uchar code table3[]={0x00,0xFF};uint sudu; //流水灯速度uchar cishu; //闪烁次数/************************************************************* * 名称:last1_led* 功能:循环调用各个子程序**************************************************************/ void last1_led(void){ }void exter_int0() interrupt 0 //外部中断0函数void exter_int1() interrupt 2 //外部中断1函数第二部分(节选主要部分)#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar Second,Minute,Hour,Date,Month,Year,week;//时间等变量#define one 0x80 //第一行的初始位置#define two 0xc0 //第二行初始位置sbit RS_1602=P2^0; //1602数据命令端sbit E_1602=P2^1; //1602使能端sbit IO_1302=P2^4; //1302数据端sbit CLK_1302=P2^3; //1302时钟端sbit RST_1302=P2^2; //1302复位端sbit key_mode=P1^0; //功能按键sbit key_up=P1^1; //增量键sbit key_down=P1^2; //减量键sbit ACC0=ACC^0;sbit ACC7=ACC^7;uchar code tab1[]={"20 - - week "}; //液晶第一行默认显示数据uchar code tab2[]={" : : "}; //液晶第二行默认显示数据void init(); //定时器0初始化/********************ds1302****************************/void write_byte(uchar dat) //1302字节写{uchar kk;ACC=dat;RST_1302=1; //启动读写操作for(kk=8;kk>0;kk--) //8位数据{IO_1302=ACC0; //先传送数据低位CLK_1302=0;CLK_1302=1; //上升沿输入数据ACC=ACC>>1; //右移位}}uchar read_byte() //1302字节读{uchar kk;RST_1302=1; //启动读写操作for(kk=8;kk>0;kk--){ACC7=IO_1302; //先读入数据低位CLK_1302=1;CLK_1302=0; //下降沿输出数据ACC=ACC>>1; //右移位}return (ACC);}void write_1302(uchar add,uchar dat) //1302地址写{RST_1302=0;CLK_1302=0;RST_1302=1; //启动读写操作write_byte(add); //写地址write_byte(dat); //写数据CLK_1302=1;RST_1302=0; //禁止读写操作}uchar read_1302(uchar add) //1302地址读{uchar temp;RST_1302=0;CLK_1302=0;RST_1302=1; //启动读写操作write_byte(add); //写地址temp=read_byte(); //读数据CLK_1302=1;RST_1302=0; //禁止读写操作return(temp);}void ds1302_init() //1302初始化{RST_1302=0; //禁止读写操作CLK_1302=0; //时钟为低write_1302(0x80,Second|0x00); //允许写}void keyscan() //按键处理子程序{uchar key1n; //功能键按下次数if(key_mode==0) //key_down为功能键{delay(5); //延时去抖动if(key_mode==0) //功能键确认按下{while(!key_mode); //等待按键释放key1n++; //功能键按下次数加一if(key1n==9) //为9时调为1 则1~8key1n=1;switch(key1n) //功能键按键次数不同实现不同操作{case 1: //时调整秒TR0=0; //关闭定时器write_1602com(two+0x0b); //写入光标位置write_1602com(0x0f); //设置光标为闪烁write_1302(0x8e,0x00); //允许写write_1302(0x80,0x80|Dec_BCD(Second));//Secondbreak;case 2: write_1602com(two+8);break; //Minute闪烁case 3: write_1602com(two+5);break; //Hour闪烁case 4: write_1602com(one+0x0f);break; //week闪烁case 5: write_1602com(one+0x09);break; //Date闪烁case 6: write_1602com(one+0x06);break; //Month闪烁case 7: write_1602com(one+0x03);break; //Year闪烁case 8:write_1602com(0x0c); //设置光标不闪烁write_1302(0x80,0x00|Dec_BCD(Second)); //Secondwrite_1302(0x8e,0x80); //禁止写TR0=1;//打开定时器break;}}}if(key1n!=0) //当key_mode按下以后。

相关文档
最新文档