单片机综合设计
单片机ISP
第一章单片机/ISP综合设计实验装置简介1.1 概述由于计算机科学和电路集成技术的迅猛发展,电子系统日趋数字化、复杂化和大规模集成化,且电子系统设计原理和大型软件设计的原理极为接近。
这些都要求电子类专业的教学重点应由传统的基础功能模块设计转向对大规模复杂系统的分析和管理,加强对学生系统概念的培养。
电子信息系列实验装置便是为了满足这种需要而开始研发的。
它包含有电子技术实验装置,计算机组成/网际服务实验装置,微机系统与接口实验装置及单片机/ISP综合设计实验装置。
该系列实验装置提供了集演示、验证和综合设计的新一代教学平台,并按照教学大纲的要求配置了实验项目和实验内容,此外,用户还可根据自己的需要安排实验内容,发挥创造性才能。
单片机技术是一门很实用的技术,单片机在工业控制中独占鳌头,故又称为微控制器。
迄今为止,8位单片机仍占有单片机市场的60%以上份额,促进了8位单片机朝着高性能和多功能化方向发展。
随着CPLD技术的不断发展,也越来越被广大设计人员重视、应用。
单片机/ISP综合设计实验装置实质上是构建了一个以CPLD/FPGA和MCU为中心,能与微机子系统进行通信的综合设计实验平台,它采用的是CPLD/FPGA和MCU双系统核心架构,再与外围设备通过总线方式连接起来。
可以完成有关单片机,微机接口,逻辑设计等众多实验,可作为“计算机结构与逻辑设计”,“单片机原理与应用”,“在系统编程技术”,“VHDL 设计”,“微型计算机测控技术”和“电子系统综合设计”等课程的综合实验装置。
该实验装置在教学实践中的应用,为提高学生的动手能力,加深学生对单片机、CPLD/FPGA技术的理解提供了良好的实验平台,为以后电子系统设计开发打下坚实的基础。
除具有单片机,CPLD/FPGA双系统核心构架外,提供了极其丰富的功能单元电路,如A/D、D/A、RTC及通讯接口等,并可根据学生应用的需要方便地扩展其它电路,使其完全能够做出具有复杂性和创造性的综合性实验,另外配置的一些工具模块也能为学生做实验提供方便。
AT89C51单片机综合设计PPT课件
硬件连接
将LED灯的正极连接到单片机的I/O口,负 极接地。
软件编程
使用C语言编写程序,通过循环语句控制I/O 口的电平状态,实现LED的闪烁。
实现效果
LED灯按照设定的频率快速闪烁,可实现基 本的信号指示功能。
实例二:按键输入
按键输入原理
通过检测AT89C51单片机的I/O口电平变化, 判断是否有按键按下。
单片机广泛应用于智能仪表、工业控制、智能家居、消费电子等领域。
AT89C51单片机特性
8位处理器
AT89C51单片机采用8位处理器 ,可处理8位二进制数据。
Flash存储器
AT89C51单片机内部集成了 Flash存储器,可用于程序存储 和数据存储。
丰富的I/O接口
AT89C51单片机具有丰富的输 入/输出接口,可连接各种外设 。
应用拓展
未来,AT89C51单片机将在物联网、智能制造、人工智能等领域 发挥更大的作用,为智能化生活提供更多便利。
开发环境与工具
随着开发环境和工具的不断完善,AT89C51单片机的开发将更加 便捷高效。
课程建议与展望
课程内容
在未来的课程中,应加强对AT89C51单片机的原理、外设接口、 开发工具等方面的介绍,以便学生更好地理解和应用。
软件编程
使用C语言编写程序,通过检测I/O口的电平 状态变化,判断是否有按键按下。
硬件连接
将按键的一端连接到单片机的I/O口,另一 端接地。
实现效果
当按键被按下时,程序会检测到电平变化并 执行相应的操作,实现人机交互功能。
实例三:数码管显示
数码管显示原理
通过控制数码管的各个段(a-g)的亮灭,显示数字或字符。
实践环节
单片机项目设计-七彩炫光心型流水灯
单片机应用系统综合设计
1、硬件焊接 2、控制程序设计 3、硬软件联调 4、程序载 5、产品测试
电路原理图
一、硬件焊接
第一步:清点元 器件
第二步:焊接工具准备
常用必备焊接测试工具:焊接烙铁,元件盒,万用表, 锡丝,镊子,烙铁架, 吸锡器,海绵,剪钳,尖嘴钳, 螺丝刀,松香助焊剂等!
第三步:元器件焊接与安装
• 焊接过程注意事项:焊接前,可用万用表测量电阻阻值大小, 电容、二极管要分清极性再焊接。
• 1、焊接电阻 • 2、焊接瓷片电容C1、C2、晶振Y1、IC座 • 3、焊接电解电容(注意电容必须横放)
• 4、焊接LED,注意LED 引脚正负(长正短负)。 • 5、焊接DC005电源座和自锁开关
第四步:电路测试
二、控制程序设计
1、编写程序实现1盏灯顺时针走一圈。然后逆时针走一圈 2、编写程序实现4个LED同时顺时、逆时针移动1/4圈 3、自由发挥
3、硬软件联调 4、程序下载 5、产品测试
单片机的原理与设计开发
设备管理
通过单片机编程,实现对家居设备的集中管 理和控制。
数据采集
利用传感器模块,实时采集家居环境数据, 如温度、湿度、光照等。
人机交互
通过手机APP或智能语音助手等设备,实现 家居设备的远程控制和语音交互。
THANKS
感谢观看
单片机的应用领域
智能仪表
单片机可以实现各种智能仪表的测量和控制功能, 如温度、压力、流量等。
工业控制
单片机可以用于实现工业生产线的自动化控制, 如电机控制、生产线监控等。
家用电器
单片机可以用于实现家用电器智能化,如智能电 视、智能冰箱等。
单片机的发展历程
早期单片机
早期的单片机只有简单的计算和控制功能,主要用于工业控制和 智能仪表等领域。
输入输出接口
实现单片机与外部 设备的通信。
中断系统
实现单片机的实时 处理和多任务处理。
单片机的指令系统
指令集
单片机所能执行的指令集合。
指令格式
指令的编码格式和长度。
寻址方式
指令中操作数的寻址方式。
指令执行时序
单片机执行指令所需的时间和时序。
单片机的存储器结构
用于控制单片机内部特定功能。
用于存储数据和堆栈。 用于存储程序代码。
单片机的原理与设计 开发
目录
• 单片机概述 • 单片机的工作原理 • 单片机的设计开发 • 单片机设计开发的实践案例
01
单片机概述
单片机的定义与特点
定义
单片机是一种集成电路芯片,将 计算机的中央处理器、存储器、 输入输出接口等集成在一块芯片 上,实现微型计算机的功能。
特点
单片机具有体积小、重量轻、低 功耗、可靠性高等优点,广泛应 用于智能仪表、工业控制、家用 电器等领域。
单片机综合实验课程设计
单片机综合实验课程设计一、课程目标知识目标:1. 学生能理解单片机的基本工作原理,掌握其内部结构和功能模块;2. 学生能掌握单片机编程的基本语法和常用指令,具备编写简单程序的能力;3. 学生能了解并运用单片机接口技术,实现与外围设备的通信和控制。
技能目标:1. 学生能运用所学知识,设计并实现简单的单片机控制系统;2. 学生能熟练使用编程软件和开发工具,进行单片机的程序编写、调试与优化;3. 学生能通过实验操作,培养动手能力和团队协作能力,提高问题解决能力。
情感态度价值观目标:1. 学生通过课程学习,增强对电子技术和编程的兴趣,培养主动探索和创新的意识;2. 学生在学习过程中,树立正确的价值观,认识到单片机技术在现实生活中的应用价值;3. 学生通过团队协作,培养沟通与协作能力,增强集体荣誉感和责任感。
课程性质:本课程为单片机原理与应用的综合实验课程,注重理论与实践相结合,以培养学生的动手能力和创新能力为主。
学生特点:学生具备一定的电子技术和编程基础,对单片机有一定了解,但实践经验不足。
教学要求:教师应结合学生特点和课程性质,采用任务驱动、案例教学等方法,引导学生主动参与实验,提高实践操作能力和创新能力。
同时,注重个体差异,因材施教,确保每位学生都能在课程中学有所获。
通过课程目标的分解与实现,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下三个方面:1. 单片机原理与结构- 熟悉单片机的内部结构,掌握其功能模块;- 了解单片机的工作原理,理解指令执行过程;- 学习单片机编程语言,掌握基本语法和常用指令。
教学大纲:参照教材第1章至第3章,共计6学时。
2. 单片机编程与接口技术- 学习单片机程序设计方法,掌握程序编写、调试与优化技巧;- 了解单片机接口技术,掌握I/O口、定时器、中断等应用;- 学习外围设备与单片机的通信协议,实现数据交换和控制。
教学大纲:参照教材第4章至第6章,共计10学时。
单片机课程设计电子时钟
xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:电子时钟院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (3)2.3功能模块的设计与实现 (4)第3章结果测试及分析 (11)3.1结果测试 (11)3.2结果分析 (11)参考文献 (12)附录 A (13)附录 B (21)附录 C (22)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容,要求实现在MCS51单片机上对数字电子钟的基本功能设计,对当前时间正确显示,并可根据需要对时间进行更改,以完成时间的校对和闹钟的设置。
时钟时间以时、分、秒在6位数码管上显示,小时以24小时计时模式,分秒均为60进位。
用6MHz晶振产生振荡脉冲,定时器进行秒计时。
调整设置时间的过程运用可编程键盘上的按键进行控制,共设有5个按键,首先按键A进入校时模式或E进入闹钟模式,再分别按键B对小时或C分钟进行更改,每按键一次数码管计数显示加一,更改结束后按键D退出设置,时钟正常显示。
闹钟时间到时,蜂鸣器鸣响10秒后时钟正常显示。
1.2 设计思路采用C语言程序设计结合硬件电路设计方法,利用Lab6000实验箱来实现数字电子钟的设计。
1)提出方案根据设计要求,可将本次设计分为3个模块进行:1)时钟显示模块:主要用于时间的正确显示。
2)校时模块:此模块用于时钟的校对,以完成用户更改时间的需求。
3)闹钟模块:用于实现闹钟的时间设置和定点闹铃的功能。
2)方案论证时钟显示模块中,利用可编程定时器中断进行秒计时,将时间显示在6位数码管上。
校时模块主要利用键盘上5个键的控制完成各项功能,并在数码管上动态显示改变结果,完成设置后进入时钟显示模块。
闹钟模块的设置过程与校时模块相似,但设置完成进入时间显示模块后则等待闹铃时间,到规定时间后,通过数码管闪烁及蜂鸣器的鸣响来实现定点闹铃提醒功能。
单片机综合实训教案
单片机综合实训教案一、教学目标1. 了解单片机的基本概念、结构和原理。
2. 掌握单片机的编程方法和应用技巧。
3. 能够独立完成单片机系统的设计和调试。
二、教学内容1. 单片机概述单片机的定义和发展历程单片机的结构和组成部分2. 单片机编程基础单片机的指令系统编程语言和开发工具程序结构和编程规范3. 单片机应用系统设计系统需求分析硬件选型和电路设计软件设计和编程4. 单片机系统调试与优化调试方法和工具常见问题和解决方案系统性能优化技巧5. 单片机应用案例解析温度控制器设计智能家居系统设计控制系统设计三、教学方法1. 讲授法:讲解单片机的基本概念、原理和编程方法。
2. 实践法:动手操作单片机开发板,进行编程和系统设计。
3. 案例分析法:分析实际应用案例,理解单片机的应用场景。
4. 讨论法:分组讨论,解决实际问题和难点。
四、教学资源1. 教材:单片机原理与应用2. 实验设备:单片机开发板、编程器、调试器等3. 软件工具:Keil、MPLAB等编程软件4. 在线资源:相关教程、案例和答疑论坛五、教学评价1. 平时成绩:考察学生的出勤、提问和讨论情况。
2. 实验报告:评估学生的实践操作能力和编程水平。
3. 课程设计:评价学生的系统设计和调试能力。
4. 期末考试:测试学生对单片机知识的掌握程度。
六、教学安排1. 课时:共计32课时,其中理论讲授16课时,实验操作16课时。
2. 教学计划:第1-4课时:单片机概述及结构原理第5-8课时:单片机编程基础第9-12课时:单片机应用系统设计第13-16课时:单片机系统调试与优化第17-20课时:单片机应用案例解析第21-24课时:实践操作与实验第25-28课时:课程设计第29-32课时:期末复习与考试七、教学重点与难点1. 教学重点:单片机的基本概念、结构和原理。
单片机的编程方法和应用技巧。
单片机系统的设计、调试与优化。
2. 教学难点:单片机指令系统的理解与应用。
硬件电路设计与故障排除。
单片机综合实验课程设计
单片机综合实验课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构及相关功能模块的使用方法。
2. 学生能掌握单片机编程的基本语法和技巧,能独立完成简单的程序设计。
3. 学生能了解单片机在现实生活中的应用,并学会分析实际案例。
技能目标:1. 学生能运用所学知识,完成单片机的基本操作和程序编写。
2. 学生能通过实验,学会使用相关开发工具和调试技巧,具备一定的故障排查能力。
3. 学生能运用单片机技术解决实际问题,提高创新实践能力。
情感态度价值观目标:1. 学生通过单片机综合实验课程,培养对电子信息科学的兴趣和热情。
2. 学生在团队协作中,学会沟通、分享和合作,提高解决问题的能力。
3. 学生能认识到单片机技术对社会发展的作用,树立正确的价值观和责任感。
课程性质:本课程为实践性课程,侧重于培养学生的动手能力和创新能力。
学生特点:学生已具备一定的单片机基础知识,对实际操作感兴趣,但编程能力和问题解决能力有待提高。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践和团队协作,提高学生的综合能力。
通过课程目标分解,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础理论:回顾单片机的基本原理、内部结构、工作原理等,重点讲解中断系统、定时器/计数器、串行通信等模块的功能和应用。
2. 单片机编程语言:以C语言为基础,介绍单片机编程的基本语法、数据类型、运算符、控制语句等,并通过实例进行讲解。
3. 单片机实验操作:结合教材章节,进行以下实验:- 基本输入输出实验:学习单片机I/O口控制,实现LED灯、蜂鸣器等设备的控制。
- 中断控制实验:掌握中断系统的使用,实现外部中断控制。
- 定时器/计数器实验:学习定时器/计数器的配置,完成定时控制等功能。
- 串行通信实验:了解串行通信原理,实现单片机之间的数据传输。
单片机课程设计报告
单片机课程设计实验报告设计题目:基于单片机的多功能综合应用系统的设计专业:电子信息工程班级:姓名:指导老师:目录第一章设计说明1.1 设计目的 (3)1.2 设计内容及要求 (3)第二章硬件电路仿真实现2.1 硬件结构分析 (5)2.2基本功能仿真电图 (6)2.3扩展功能仿真电路图 (10)2.4 实物电路图 (15)第三章软件设计实现3.1软件程序内容 (16)3.2模块分析 (16)3.3 程序流程图 (17)第四章系统测试4.1 软件调试 (19)4.2硬件调试 (19)第五章心得体会 (20)第六章参考文献 (21)附录 (21)第一章设计说明1.1 设计目的单片机在许多领域使用十分广泛,如智能仪器仪表、实时工控、通讯设备、导航系统、家用电器等。
各科任老师们经常说“学好单片机,工作就不成问题了。
”可见学好单片意义之重大。
单片机作为一门基础学科,既是对前期学习C语言的综合运用,也是理论与实践相结合的一大体现。
本次课程设计通过基础部分,拓展功能以及整体电路的实现能很好地锻炼我们的动手及编程能力。
1.2 设计内容及要求内容:1.设计并实现具有复位功能的单片机小系统。
2.利用单片机进行灯光的场景开关控制、循环点亮控制、花样变化控制及速度变化控制(如:左右循环、扩散收缩式移动、流星雨、舞台灯光综合效果、名曲名句跟随显示等。
至少应做两项:前两项选一并有速度变化控制功能,后三项选一或自创特色花样)。
3. 炫彩音乐显示(依据3秒以上某名曲名句,模拟高、中、低音三分频,彩色LED随音频变化而起伏显示的效果,进一步地,LED 亮度跟随音乐响度闪烁)。
4.利用单片机进行灯光的色彩连续变化效果控制。
5.利用单片机进行灯光的三色联动定时控制(以交通灯为例)。
(说明:3、4中二选一,1、2、5必选)6. 配合2至5项中功能,实现液晶屏输出功能或状态信息。
7. 以调节5或4项中的时间为例实现基于4X4键盘的输入功能。
51单片机设计实例
51单片机设计实例
1. 电子钟:使用51单片机设计一个数字时钟,可以显示小时和分钟,并能够设置闹钟功能。
2. 温度监控器:使用51单片机设计一个温度监控器,可以实时监测当前温度,并根据设定的阈值发出警报。
3. 电子秤:使用51单片机设计一个电子秤,可以精确测量物体的重量,并显示在LCD屏幕上。
4. 电子门锁:使用51单片机设计一个电子门锁系统,可以使用密码或者指纹进行解锁,并记录进出门的时间。
5. 智能家居控制器:使用51单片机设计一个智能家居控制器,可以通过手机APP控制家庭中的灯光、空调、窗帘等设备。
6. 智能车:使用51单片机设计一个智能车,可以根据传感器检测到的环境信息进行自主导航和避障。
7. 电子琴:使用51单片机设计一个简单的电子琴,可以通过按键发出不同的音符。
8. 电子游戏机:使用51单片机设计一个简单的电子游戏机,可以玩一些简单的游戏如打砖块、赛车等。
9. 电子宠物:使用51单片机设计一个虚拟宠物,可以通过按钮和
显示屏与宠物进行互动,喂食、玩耍等。
10. 无线遥控器:使用51单片机设计一个无线遥控器,可以控制电视、空调、音响等家电设备。
基于Proteus的单片机综合实验仿真平台设计
基于Proteus的单片机综合实验仿真平台设计基于Proteus的单片机综合实验仿真平台设计一、引言单片机在嵌入式系统中起着非常重要的作用,它能够完成各种各样的控制任务。
为了验证程序在实际硬件上的可行性,需要进行实验验证。
然而,传统的硬件实验需要大量的时间和资源,而且存在许多困难,如硬件组件的购买和组装、故障排除等。
因此,开发一种基于仿真的单片机实验平台对于提高学生和工程师们的实验效率和能力具有重要意义。
二、综合实验仿真平台设计基于Proteus的综合实验仿真平台整体设计如下图所示:1. 系统架构综合实验仿真平台主要由三个模块构成:上位机、仿真器和实验控制模块。
上位机负责程序设计、仿真设置和结果显示;仿真器负责仿真各种外设;实验控制模块提供与示波器、信号源、电压表等外部设备的接口,并负责控制这些设备的动作。
2. 上位机模块上位机模块提供了一个用户友好的图形界面,使用户可以方便地编写和调试单片机程序。
用户可以编写程序并通过仿真器加载到仿真模块中进行仿真。
上位机模块还提供了一个仿真设置界面,用户可以设置仿真时钟频率、在仿真模块中加载外设模块等。
最后,上位机模块还可以显示仿真的结果,如波形图、寄存器状态和程序输出等。
3. 仿真器模块仿真器模块是整个平台的核心部分,它负责加载用户编写的程序,并对程序进行仿真和调试。
仿真器模块通过解析程序指令,模拟单片机的工作过程,包括指令执行、数据传输和外设控制等。
仿真器模块能够提供准确的仿真结果,并支持动态调试,如单步执行、断点设置和变量跟踪等。
4. 实验控制模块实验控制模块负责与外部设备进行通信和控制。
它提供了与示波器、信号源、电压表等设备的接口,并能够通过命令控制这些设备的动作。
实验控制模块还可以检测外设的反馈信息,并将其显示在上位机的界面上。
三、功能与特点基于Proteus的综合实验仿真平台具有以下功能和特点:1. 真实性:平台能够准确模拟真实硬件环境,包括单片机的指令集和外设的工作原理。
单片机课程设计
单片机课程设计设计概述单片机课程设计是指一种基于单片机技术的实践项目,旨在帮助学生深入了解单片机的工作原理与应用,并提升其动手实践能力。
本文将介绍单片机课程设计的重要性、设计步骤以及实施过程中可能遇到的问题和解决方法。
1. 单片机课程设计的重要性单片机是现代电子技术中的重要组成部分,广泛应用于各个领域。
通过进行单片机课程设计,学生能够学习到实际应用中的电子原理、电路设计和软件编程等知识,培养学生的动手实践能力和创新意识,提高学生对单片机应用的理解和掌握程度。
2. 设计步骤2.1 确定设计目标和要求在进行单片机课程设计之前,首先需要明确设计的目标和要求。
这包括设计的功能、性能指标、应用场景等方面的考虑。
通过明确设计目标和要求,可以为后续的设计提供明确的方向和指导。
2.2 系统框架设计在进行单片机课程设计时,需要先进行系统框架设计。
这包括确定系统的硬件组成和软件架构,确定系统各个模块的功能和相互关系。
通过系统框架设计,可以有效地组织和管理设计的各个部分,提高设计的可维护性。
2.3 硬件设计与实现在进行单片机课程设计时,需要进行硬件设计与实现。
这包括电路图设计、元器件选型和电路焊接等方面的工作。
通过合理的硬件设计与实现,可以满足系统的功能和性能要求,并确保系统的正常工作。
2.4 软件设计与编程在进行单片机课程设计时,需要进行软件设计与编程。
这包括编写程序代码、调试和测试等方面的工作。
通过合理的软件设计与编程,可以实现系统的各项功能,并提高系统的运行效率和稳定性。
2.5 系统调试与测试在进行单片机课程设计时,需要进行系统调试与测试。
这包括对硬件和软件进行综合测试,发现并解决问题。
通过系统调试与测试,可以确保系统的正常运行,并及时修复和优化系统的问题。
3. 实施过程中可能遇到的问题和解决方法在进行单片机课程设计的实施过程中,可能会遇到一些问题。
下面列举了几个常见的问题及其解决方法:3.1 硬件故障可能会出现电路连接错误或元器件损坏等硬件故障问题。
单片机的硬件设计
单片机的硬件设计单片机(Microcontroller)是一种集成电路,包含了中央处理器(CPU)、存储器(RAM和ROM)、输入输出接口(I/O)以及各种外围设备的控制电路。
单片机的硬件设计是指在选择单片机型号的基础上,设计并构建相应的电路板和外围设备,以满足特定的应用需求。
本文将介绍单片机硬件设计的基本流程和要点。
一、选择单片机型号在进行单片机的硬件设计之前,首先需要选择适合自己需求的单片机型号。
选择单片机型号时需要考虑以下几个方面:1. 处理器性能:根据应用需求选择合适的处理器性能,包括CPU主频、指令周期、存储器容量等。
2. 外设接口:根据需要选择具备足够数量和类型的外设接口,如通用输入输出口、串口、SPI接口、I2C接口等。
3. 存储器容量:根据应用程序、数据存储需求选择合适的存储器容量,包括RAM和ROM。
4. 供电电压:根据系统的供电要求选择合适的单片机供电电压。
二、设计电路原理图在选择好单片机型号之后,接下来需要设计电路原理图。
电路原理图是描述硬件连接关系的图纸,用于后续的电路板布线和焊接。
设计电路原理图时需要考虑以下几个方面:1. 单片机芯片引脚的连接:将芯片引脚与外围电路连接,包括供电引脚、输入输出引脚和通信引脚等。
2. 外设电路的连接:根据实际需求,将各种外设电路与单片机相连接,如按键、LED灯、显示屏、传感器等。
3. 时钟电路设计:根据单片机要求设计时钟电路,为单片机提供稳定的时钟信号。
4. 供电电路设计:根据单片机的供电要求设计合适的供电电路,确保单片机正常工作。
三、进行电路板设计电路原理图设计完成后,需要根据原理图进行电路板设计。
电路板设计包括布线、封装和引脚分配等工作。
设计电路板时需要遵循以下几个原则:1. 布局合理:将电路元件按照一定的布局规则进行布线,尽量避免信号干扰和电磁辐射。
2. 信号线长度和走向控制:控制信号线的长度和走向,使其尽量短且不交叉,减少信号传输延迟和干扰。
51单片机综合实验报告
《单片机原理与接口技术》综合实验报告实验题目:基于单片机的电子日历、数字温度计、音乐播放器学院:电子信息学院专业:12 电子信息工程实验者:潘安乐学号: 1 2 2 8 4 0 1 0 1 0前言21世纪是信息时代,电子技术发展日新月异,在电子信息发展迅猛的年代,我们不仅要掌握8051系列单片机的C语言编程,而且要掌握好按键、LCD、USB 等程序的编写,要知道几乎每一样单片机系统都要与他们打交道的。
并且单片机作为一种经典的微控制器,其技术已经涉及到我们生活、工作、科研,各个领域,已经成为一种比较成熟的技术,作为电子专业的学生,我们学习了单片机,就要将其应用到自己的日常生活中来。
电子日历:在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响,随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。
为了在观测时间的同时,能够了解其它与人类密切相关的信息,比如星期、日期等,于是电子万年历诞生了,它集时间、日期、星期等功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。
数字温度计:在科学技术不断发展的今天,温度的检测.控制应用于许多行业,随着电子行业的发展,数字仪表反应快,操作简单,对环境要求不高的优点,市场上逐渐出现越来越多的数字式温度计。
实践表明,低功耗高精度的便携式数字式温度计使用方便,工作稳定,待机时间长,具有广阔的应用前景,本实验所采用的DS18B20可以很好的转换温度值,并且直接显示温度值,它的性能优于传统的感温元件并且省去了A\D、和模拟开关的设计。
数字音乐播放器:本文设计的数字音乐播放器是以单片机为核心元件的数字音乐播放器。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。
单片机综合实训教案
单片机综合实训教案第一章:单片机概述1.1 单片机的定义与发展历程1.2 单片机的主要组成部分1.3 单片机的应用领域1.4 单片机的发展趋势第二章:单片机的基本原理2.1 单片机的硬件结构2.2 单片机的指令系统2.3 单片机的编程语言2.4 单片机的时序分析第三章:单片机的开发工具与编程环境3.1 单片机开发工具的种类及作用3.2 常用的单片机编程软件3.3 单片机编程环境的搭建3.4 单片机程序的与第四章:单片机的基本操作与实践4.1 单片机的启动与复位4.2 单片机的输入与输出4.3 单片机的定时与中断4.4 单片机的串行通信第五章:单片机应用实例解析5.1 温度控制器的设计与实现5.2 智能家居系统的设计与实现5.3 电子密码锁的设计与实现5.4 智能车模的设计与实现第六章:单片机系统设计基础6.1 系统设计流程与原则6.2 硬件选型与设计6.3 软件设计方法与技巧6.4 系统调试与优化第七章:传感器与单片机的接口技术7.1 常见传感器的原理与应用7.2 传感器与单片机的连接方式7.3 传感器信号的放大与处理7.4 传感器数据的采集与处理第八章:嵌入式系统设计与实践8.1 嵌入式系统概述8.2 嵌入式操作系统简介8.3 嵌入式系统设计与开发流程8.4 嵌入式系统实践项目案例第九章:单片机在工业控制中的应用9.1 工业控制概述9.2 单片机在工业控制中的应用实例9.3 工业控制系统的可靠性设计9.4 工业控制系统的发展趋势第十章:单片机项目实战与创新10.1 单片机项目开发的注意事项10.2 单片机项目的实战案例解析10.3 单片机项目的创新与优化10.4 单片机项目竞赛与创新创业实践重点和难点解析重点环节一:单片机的定义与发展历程解析:单片机的定义是教学的基础,需要准确理解和掌握。
发展历程的介绍能够帮助学生了解单片机的技术演进,对于培养学生的技术背景和行业认知有重要作用。
重点环节二:单片机的主要组成部分解析:了解单片机的组成部分对于理解其工作原理和功能至关重要。
单片机综合设计实验
单片机综合设计实验一、实验目的通过单片机的综合设计实验,加深对单片机原理和应用的理解,练习使用单片机进行控制和数据处理的能力。
二、实验内容设计一个模拟温度控制系统,要求能够通过单片机读取温度传感器的温度值,并根据设定的目标温度进行判断和控制,使得温度值稳定在目标温度附近。
即实现一个简单的闭环温度控制系统。
三、实验器材1.单片机:使用8051单片机2.温度传感器:使用LM35温度传感器3.显示器:使用数码管显示器4.控制器:使用电热器作为温度控制的对象,通过控制电热器的加热时间和加热功率来控制温度四、实验步骤1.连接电路将LM35温度传感器与单片机相连接,使得单片机能够读取到温度传感器的模拟信号。
将单片机与数码管显示器以及电热器相连接,使得单片机能够通过数码管显示温度值,并能够控制电热器的加热时间和加热功率。
2.编写程序根据实验要求,设计一个闭环温度控制系统的程序。
通过单片机读取温度传感器的温度值,并与设定的目标温度进行比较,根据比较结果控制电热器的加热时间和加热功率。
同时,将温度值通过数码管进行显示,使得操作人员能够实时监控温度的变化。
3.调试验证五、实验结果经过调试验证,实验结果表明设计的温度控制系统能够达到预期的效果。
单片机能够准确读取温度传感器的温度值,并根据设定的目标温度进行判断和控制,使得温度能够稳定在目标温度附近。
六、实验总结通过这次单片机综合设计实验,我对单片机的原理和应用有了更深入的理解。
通过实际操作和编程,我学会了如何连接温度传感器和数码管显示器,以及如何通过单片机对温度进行控制和显示。
同时,我还锻炼了解决问题和调试的能力,提高了实际应用技能。
这次实验不仅提供了实践的机会,也巩固了我对单片机的相关知识,为今后的学习和应用打下了坚实的基础。
单片机设计流程
单片机设计流程
一旦确定了单片机芯片,接下来就是进行原理图设计。
在设计原理图时,需要考虑到各个模块之间的连接关系,以及外部器件的接口方式和电路连接。
同时,还需要考虑到电源管理、时钟电路、复位电路等基本电路的设计。
完成原理图设计后,就是进行PCB布局设计。
在进行布局设计时,需要考虑到信号线的长度和走线方式,以及各个器件之间的布局关系。
同时,还需要考虑到电源和地线的布局,以减小电磁干扰和提高系统的稳定性。
完成PCB布局设计后,就是进行PCB的制板和焊接。
在制板和焊接过程中,需要注意工艺的选择和操作规范,以保证PCB的质量和稳定性。
完成PCB制板和焊接后,就是进行单片机程序的编写和调试。
在编写程序时,需要根据需求和原理图设计,逐步完成各个模块的功能实现。
在调试过程中,需要注意对各个模块的功能进行验证和调整,以保证系统的稳定性和可靠性。
最后,就是进行系统整体测试和验证。
在测试和验证过程中,需要对系统的功能和性能指标进行全面的测试和评估,以确保系统能够满足设计要求。
总的来说,单片机设计流程包括需求分析、芯片选择、原理图设计、PCB布局设计、制板和焊接、程序编写和调试、系统测试和验证等多个环节。
每个环节都需要认真对待,以保证系统的稳定性和可靠性。
只有这样,才能设计出符合要求的单片机系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学本科设计报告题目:基于7290的LED时钟系统设计课程名称:单片机综合设计学院(系):电子信息与电气工程学部专业:电子信息工程班级电子0804学号:200801204学生姓名:宋陆阳成绩:2011 年05 月23 日题目:基于7290的LED时钟系统设计1 设计要求1)显示功能:a.用开关K1\K2切换用8位数码管显示当前“时-分-秒”;b.用开关K1\K2切换用8位数码管显示当前“年-月-分”;c.用开关K1\K2切换用8位数码管显示报警“日.时-分”。
2)修改功能:a.能够通过按键操作修改当前时、分、秒并显示;b.能够通过按键操作修改报警时、分并显示。
3)错误提示功能:当输入修改值不符合时间合法数值时即时大于24,分大于60,秒大于60,提示"Error"错误,并返回正常走表。
4)报警功能:a.整点报时功能:59分55秒开始每秒响一下,且00秒频率提高;b.定时报警:当当前走表时间与所设置的报警时间一致时,驱动蜂鸣器产生“.XI.DUO.”的铃音进行定时报警。
2 设计分析及系统方案设计1.主程序结构:无限循环结构.完成初始化功能:进行7290复位,初始化PCF8563T的时间数据,对中断INT0,INT1进行工作方式设置,开中断,并进入无限循环且等待中断产生.2.中断INT0:顺序结构每秒钟PCF8567的CLKOUT产生一个中断,从PCF8563T中读入数据进行调整拆分送入内存,时钟秒加一并显示,当K1=1,K2=1时,8位数码管显示当前“时-分-秒”;当K1=0时,8位数码管显示当前“年-月-分”;K1=1,K2=0时,8位数码管显示报警“日.时-分”.判断当前时间是否为整点,若是,则从59分55秒开始每秒钟驱动蜂鸣器每秒响1000HZ铃音0.5秒,00秒频率提高;判断当前时间是否与所设置报警时间相同,若满足要求,则驱动蜂鸣器产生一个“.XI.DUO.”的铃声。
3.中断INT1:顺序结构当有按键操作时产生中断。
读取键值,当按链介于“A—E”选择需修改的内容:A:修改当前时间“时”;B:修改当前时间“秒”;C:修改当前时间“分”;D:修改报警时间“时”;E:修改报警时间“分”,然后等待输入2次按键"0-9"所修改数据,当输入数据部符合时间格式时,即时大于24,分大于60,秒大于60,显示提示“Error”并返回主程序,当输入数据符合正常时间格式时,回显,并退出中断;若输入其它键则无操作退出中断.3 系统电路图ZLG7290BPCF8563T4 外围接口模块硬件电路功能描述P3.2接PC8567的CLKOUT,每秒产生一次中断;P3.3接ZLG7290B,当有按键操作时产生中断;P1.3接蜂鸣器;P1.2接开关K1,选择切换显示当前“时分秒”或“年月日”;P1.4接开关K2,选择切换显示当前时间或报警“日时分”;P1.7接ZLG7290复位键;P1.0接I2C通讯线SDA;P1.1接I2C通讯线SCK。
89C51:89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。
89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
ZLG7290B:ZLG7290B是广州周立功单片机发展有限公司自行设计的数码管动态显示驱动、建键盘扫描管理芯片。
能够驱动8位共阴极结构的LED数码管或64位独立的LED,同时还能扫描管理多达64个按键(S1-S56、F0-F7)的扫描识别。
其中8只健(F0-F7)可以作为功能键使用就像电脑键盘上的Ctrl、Shift、Alt键一样。
另外ZLG7290B 内部还设置有连击计数器,能够使某些按键按下后不松手而连续有效。
接口采用I2C结构。
该芯片为工业级芯片,被广泛运用于仪器仪表等工业测量领域的电路设计中。
特点:直接驱动1英寸以下的8位LED共阴极数码管或独立的64位LED ;能够管理多达64只按键。
具有自动去抖,其中8只按键可直接作为功能键使用;段电流可达20mA。
位电流可达100mA以上;利用外接功率驱动器可以驱动一英寸以上的大型数码管;具有闪烁、段点亮、段熄灭、功能键、连击计数等功能;提供10种数字、21种字母的译码显示功能,也可以将字形码写入显示寄存器直接显示数据;系统仅使用键盘电路时,工作电流为1mA;与主控器之间采用I2C 接口,仅需两条信号线;工作电压范围:+3.3~+5.5V;工作温度范围:-40℃~+85℃;封装:DIP24(窄体) 或SOP-24.PCF8563T:PCF8563T 是低功耗CMOS实时时钟/日历芯片,它具有一个可编程的时钟输出,一个中断输出和掉电检测电路,与外部主控器之间通过I2C总线连接。
最大总线速度为400KHZ。
每次对其的读写操作内部的地址寄存器都会自动产生增量。
PCF8563T内部具有16个8位的寄存器;一个可自动增量的地址寄存器;一个32.768KHZ的振荡器(具有集成的补偿电容),一个用与为实时时钟RTC提供时钟源的分频器;一个可编程的时钟输出电路;一个定时器;一个报警器;一个掉电检测电路和一个400KHZ的I2C总线接口5 主程序中主要变量定义变量名称RAM单元/寄存器功能当前时间值10H-1DH 程序初始时存储初始时间,当运行后存当前时间PC8563时间20H-29H 存储从PC8563中读出当前的时间参数当前时间1 30H-37H 存储处理无效位后当前日、月、年信息当前时间2 38H-3FH 存储处理无效位后当前秒、时、分信息报警时间40H-47H 存储处理无效位后报警日、时、分信息Data 50H-57H 存储“Error”的查表信息数据个数R7 I2C操作时读入数据个数目标地址R0 I2C操作时目标数据块首址器件地址R2 I2C操作时器件内部从地址写地址R3 I2C写操作时地址读地址R4 I2C读操作时地址6 系统软件中各个子程序的功能描述子程序名称入口参数出口参数功能描述INT_RCT 无无走表中断子程序,并且判断整点闹铃以及报警INT_7290 无无按键中断子程序,修改当前“时分秒”或者报警“时分”可以进行输入错误提示,回显等功能ALARM 无无产生0.5秒1000HZ音频ALARM1 R5、R6 无产生指定频率音频0.5秒CHAFEN 20H-2AH 30H-47H 对20H-2AH数据进行拆分CF A R3、R4 把A拆分成独立BCD码ADJUST 20H-26H 20H-26H 屏蔽PCF8563读出无关位DIS_ERR 无无LED显示“Error”RDKEY 无 A 读按键值WR8563 写8563操作DELAY 无无延时子程序7主程序程序流程图主程序开辟一个数据区10H-1DH存储时间、data-data+7存储显示命令参数将10H-1DH存储时间、命令参数送PCF8563T中等待中断主程序流程图A 键?查询按键?按键定义 A 键:修改小时 B 键:修改分; C 键:修改秒;D 键:修改按键时;E 键:修改按键分;YYNYINT1 读取键值查询按键?N读取键值 送小时的位RETINC 键?B 键?当前分钟处理( 同小时 处理 )当前秒处理 ( 同小时 处理 )开中断YN关中断YYN 调拆分、查表送28H-2FH送7290调显示N将51的10H-1DH 的数据送PCF8563TD 键?报警时处理 ( 同小时 处理 )D 键?报警时处理 ( 同小时 处理 )NYYN 数据合法NY读取键值 送小时的时位数据合法YN按键中断INT_7290调程序显示"Error"终端服务INT0 闹铃1000HZ,0.5ms ALARM:8 程序清单SDA BIT P1.0 ;定义I2C 信号引脚 SCL BIT P1.1 WSLA EQU 070H RSLA EQU 071HDISDA EQU 20H ;源数据块首地址DISCON EQU 08H ;写入数据个数 DATA_1 EQU 50H ;变量区首地址WSLA_8563 EQU 0A2H ;PCF8563口地址 RSLA_8563 EQU 0A3HWSLA_7290 EQU 70H ;ZLG7290口地址 RSLA_7290 EQU 71H ORG 8000HLJMP 8100HYYY利用RDADD 从PCF8563T 中读出时间参数送20H-2AH利用ADJUST 屏蔽掉参数中的无用的位 中断服务调CHAFEN 子程序将时间分别送28H-2FH 、38H-3FH缓冲区P1.2=1?RETI显示时分秒显示年月日NY报警时间到整点时间到P1.4=1?显示报警日时分产生报警闹铃产生整点闹铃YYNNN程序入口 PUSH PSW PUSH 07H T0.T1初始化 R7←10 启动T0.T1TF0=1?T0初值,TF0←0驱动BUZZTF1=1?T1初值,TF1←0R7-1→R7关闭T0.T1 POP 07HPOP PSWNNORG 8003HLJMP INT_RCTORG 8100HORG 8013HLJMP INT_7290ORG 8100HSTART: MOV SP,#60HCLR P1.7 ;7290复位LCALL DELAYSETB P1.7;***********************************************************;设定PCF8563的时间和命令参数(参数和控制命令缓冲区10H-1DH);*********************************************************** MOV 10H,#00H ;启动控制字MOV 11H,#1FH ;设置报警及定时器中断MOV 12H,#55H ;秒单元MOV 13H,#37H ;分单元MOV 14H,#10H ;小时单元MOV 15H,#26H ;日期单元MOV 16H,#03H ;星期单元MOV 17H,#05H ;月单元MOV 18H,#10H ;年单元MOV 19H,#36H ;设定分报警MOV 1AH,#10H ;设定小时报警MOV 1BH,#26H ;设定日报警MOV 1CH,#03H ;设定星期报警MOV 1DH,#83H ;设定CLKOUT的频率(1S)MOV DATA_1, #13H ;变量缓冲区(显示 "Error " )MOV DATA_1+1,#13H ;注意:MOV DATA_1+2,#13H ;变量取值范围0-FMOV DATA_1+3,#11HMOV DATA_1+4,#12HMOV DATA_1+5,#11HMOV DATA_1+6,#11HMOV DATA_1+7,#10H;************************************************************ MOV R7,#0EH ;写入参数个数(时间和控制字)MOV R0,#10H ;参数和控制命令缓冲区首地址MOV R2,#00H ;从器件内部从地址MOV R3,#WSLA_8563 ;准备向PCF8563T写入数据串LCALL WRNBYT ;写入时间、控制命令到8563SETB EAMOV TCON,#00HSETB EX0CLR IT0SETB EX1SETB IT1SJMP $ ;等待中断;************************************************************* ; 中断服务INT_RCT子程序;*************************************************************** INT_RCT:MOV R7,#0AH ;读出数个数MOV R0,#20H ;目标数据块首址MOV R2,#02H ;从器件内部从地址MOV R3,#WSLA_8563MOV R4,#RSLA_8563;准备读PCF8563T的时间参数LCALL RDADD ;调读数据子程序,将读出的数据;存放于单片机20-26H中LCALL ADJUST ;调时间调整子程序MOV 12H,20HMOV 13H,21HMOV 14H,22HMOV 19H,27HMOV 1AH,28HMOV 1BH,29HLCALL CHAFEN ;调拆分子程序(包含查表)MOV A,22H ;判断是否到定时时间CJNE A,28H,MMBUYMOV A,21HCJNE A,27H,MMBUYMOV A,#00HCJNE A,20H,MJ_1MOV R5,#21HMOV R6,#0F9HCALL ALARM1MJ_1: MOV A,#01HCJNE A,20H,MJ_2MOV R5,#0E0HMOV R6,#0F9HCALL ALARM1MJ_2: MOV A,#02HCJNE A,20H,MJ_3MOV R5,#8BHMOV R6,#0FAHCALL ALARM1MJ_3: MOV A,#03HCJNE A,20H,MJ_4MOV R5,#0D7HMOV R6,#0FAHCALL ALARM1MJ_4: MOV A,#04HCJNE A,20H,MJ_5MOV R5,#67HMOV R6,#0FBHCALL ALARM1MJ_5: MOV A,#05HCJNE A,20H,MJ_6MOV R5,#0E8HMOV R6,#0FBHCALL ALARM1MJ_6: MOV A,#06HCJNE A,20H,MJ_7MOV R5,#5BHMOV R6,#0FCHCALL ALARM1MJ_7: MOV A,#07HCJNE A,20H,MMBUYMOV R5,#8EHMOV R6,#0FCHCALL ALARM1MMBUY: MOV A,#59H ;判断是否整点CJNE A,21H,LCMOV A,#55HCJNE A,20H,LC_1LCALL ALARMLC_1: MOV A,#56HCJNE A,20H,LC_2CALL ALARMLC_2: MOV A,#57HCJNE A,20H,LC_3CALL ALARMLC_3: MOV A,#58HCJNE A,20H,LC_4CALL ALARMLC_4: MOV A,#59HCJNE A,20H,LCCALL ALARMLC: MOV A,#00HCJNE A,21H,LCCCJNE A,20H,LCCMOV R5,#44HMOV R6,#0FEHCALL ALARM1LCC: MOV R7,#08HMOV R2,#10HMOV R3,#WSLA_7290JNB P1.2,YEARS ;使用P1.2控制显示内容JNB P1.4,BAOJINMOV R0,#38H ;显示小时、分钟和秒SJMP DISPYEARS: MOV R0,#30H ;显示年、月和日期SJMP DISPBAOJIN: MOV R0,#40HDISP: LCALL WRNBYT ;调7290显示JNB P3.2,$RETI;************************************************************** ;ALARM;************************************************************** ALARM: PUSH PSW ;产生0.5秒1000HZ音频PUSH 07HMOV TMOD,#11HMOV TL0,#33HMOV TH0,#0FEHMOV TL1,#0FCHMOV TH1,#4BHSETB TR0SETB TR1LOOPC: JNB TF0,$MOV TL0,#33HMOV TH0,#0FEHCLR TF0CPL P1.3JB TF1,LOOPCMOV TL1,#0FCHMOV TH1,#4BHCLR TF1DJNZ R7,LOOPCCLR TR0CLR TR1POP 07HPOP PSWRETALARM1:PUSH PSW ;产生指定频率音频0.5秒PUSH 07HMOV TMOD,#11HMOV TL0,R5MOV TH0,R6MOV TL1,#0FCHMOV TH1,#4BHSETB TR0SETB TR1LOOPD: JNB TF0,$MOV TL0,R5MOV TH0,R6CLR TF0CPL P1.3JB TF1,LOOPDMOV TL1,#0FCHMOV TH1,#4BHCLR TF1DJNZ R7,LOOPDCLR TR0CLR TR1POP 07HPOP PSWRET;************************************************************ ;各子程序;************************************************************* ORG 8300HCHAFEN: PUSH PSW ;对20H-2AH单元的参数拆分, PUSH ACC ;查表后送28H-2FH(年月日)PUSH 03H ;和38H-3FH (时分秒)PUSH 04HMOV A,20H ;取秒参数LCALL CF ;拆分、查表在R4(H)、R3中MOV 38H,R3 ;送秒的个位MOV 39H,R4 ;送秒的十位MOV 3AH,#02H ;送分隔符-MOV A,21H ;取分参数LCALL CF ;拆分、查表在R4(H)、R3中MOV 3BH,R3 ;送分的个位MOV 3CH,R4 ;送分的十位MOV 3DH,#02H ;送分隔符-MOV A,22H ;取小时参数LCALL CF ;拆分、查表在R4(H)、R3中MOV 3EH,R3 ;送小时的个位MOV 3FH,R4 ;送小时的十位MOV A,23H ;取日起参数LCALL CFMOV A,R3ORL A,#01HMOV R3,AMOV 30H,R3MOV 31H,R4MOV A,25H ;取月参数LCALL CFMOV A,R3ORL A,#01HMOV R3,AMOV 32H,R3MOV 33H,R4MOV A,26H ;取年参数LCALL CFMOV A,R3ORL A,#01HMOV R3,AMOV 34H,R3MOV 35H,R4MOV 36H,#0FCH ;年的高两位处理MOV 37H,#0DAHMOV A,27H ;报警分LCALL CFMOV 40H,R3MOV 41H,R4MOV 42H,#02HMOV A,28H ;报警时LCALL CFMOV 43H,R3MOV 44H,R4MOV 45H,#01MOV A,29H ;报警日LCALL CFMOV 46H,R3MOV 47H,R4POP 04HPOP 03HPOP ACCPOP PSW;******************************************************************* CF: PUSH 02H ;将A中的数据拆分为两个独立的PUSH DPH ; BCD码并查表PUSH DPL ; 结果分别存于R4、R3中MOV DPTR,#LEDSEGMOV R2,AANL A,#0FHMOVC A,@A+DPTRMOV R3,AMOV A,R2SWAP AANL A,#0FHMOVC A,@A+DPTRMOV R4,APOP DPLPOP DPHPOP 02HRET;*******************************************************************;将20H -26H中从PCF8563中读出的7个字节参数的无关位屏蔽掉(参见表8.7);******************************************************************* ADJUST: PUSH ACCMOV A,20H ;处理秒单元ANL A,#7FHMOV 20H,AMOV A,21H ;处理分单元ANL A,#7FHMOV 21H,AMOV A,22H ;处理小时单元ANL A,#3FHMOV 22H,AMOV A,23H ;处理日期单元ANL A,#3FHMOV 23H,AMOV A,24H ;处理星期单元ANL A,#07HMOV 24H,AMOV A,25H ;处理月单元ANL A,#1FHMOV 25H,APOP ACCRET;*************************************************************;中断服务INT_7290子程序;***************************************************************INT_7290:PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWLCALL RDKEY ;读取第一个按键值(功能键)CJNE A,#0AH,MINUTE ;判断是A键吗?;是A键时开始处理小时数据AKEY_1: JB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第二个按键值(小时的十位数?SWAP A ;处理输入的数据(十位)CJNE A,#00H,X_1SJMP XXX_1: CJNE A,#10H,X_2SJMP XXX_2: CJNE A,#20H,X_3SJMP XXX_3: LJMP DIS_ERRXX: ANL 14H,#0FHORL 14H,AJB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第三个按键值(小时的个位数)CJNE A,#00H,Y_1LJMP YYY_1: CJNE A,#01H,Y_2LJMP YYY_2: CJNE A,#02H,Y_3LJMP YYY_3: CJNE A,#03H,Y_4LJMP YYY_4: CJNE A,#04H,Y_5LJMP YYY_5: LJMP DIS_ERRYY: ANL 14H,#0F0H ;处理输入的数据(个位)ORL 14H,ALCALL WR8563LJMP BACKMINUTE: CJNE A,#0BH,SECOND ;判断是B键吗?是B键时开始处理分数据AKEY_2: JB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第二个按键值(分钟的十位数?SWAP A ;处理输入的数据(十位)CJNE A,#00H,Z_1SJMP ZZZ_1: CJNE A,#10H,Z_2SJMP ZZZ_2: CJNE A,#20H,Z_3SJMP ZZZ_3: CJNE A,#30H,Z_4SJMP ZZZ_4: CJNE A,#40H,Z_5SJMP ZZZ_5: CJNE A,#50H,Z_6SJMP ZZZ_6: LJMP DIS_ERRZZ: ANL 13H,#0FHORL 13H,AJB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第三个按键值(分钟的个位数)ANL 13H,#0F0H ;处理输入的数据(个位)ORL 13H,ALCALL WR8563 ;将修改后的时间参数送PCF8563LJMP BACKSECOND: CJNE A,#0CH,HOUR_1 ;判断是C键吗?是C键时开始处理秒数据AKEY_3: JB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第二个按键值(秒的十位数?SWAP A ;处理输入的数据(十位)CJNE A,#00H,Q_1SJMP QQQ_1: CJNE A,#10H,Q_2SJMP QQQ_2: CJNE A,#20H,Q_3SJMP QQQ_3: CJNE A,#30H,Q_4SJMP QQQ_4: CJNE A,#40H,Q_5SJMP QQQ_5: CJNE A,#50H,Q_6SJMP QQQ_6: LJMP DIS_ERRQQ: ANL 12H,#0FHORL 12H,AJB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第三个按键值(秒的个位数)ANL 12H,#0F0H ;处理输入的数据(个位)ORL 12H,ALCALL WR8563 ;将修改后的时间参数送PCF8563LJMP BACKHOUR_1: CJNE A,#0DH,MIN_1 ;判断是D键吗?;是D键时开始处理报警小时数据AKEY_4: JB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第二个按键值(小时的十位数?SWAP A ;处理输入的数据(十位)CJNE A,#00H,E_1SJMP EEE_1: CJNE A,#10H,E_2SJMP EEE_2: CJNE A,#20H,E_3SJMP EEE_3: LJMP DIS_ERREE: ANL 1AH,#0FHORL 1AH,AJB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第三个按键值(小时的个位数)CJNE A,#00H,F_1LJMP FFF_1: CJNE A,#01H,F_2LJMP FFF_2: CJNE A,#02H,F_3LJMP FFF_3: CJNE A,#03H,F_4LJMP FFF_4: CJNE A,#04H,F_5LJMP FFF_5: LJMP DIS_ERRFF: ANL 1AH,#0F0H ;处理输入的数据(个位)ORL 1AH,ALCALL WR8563SJMP BACKMIN_1: CJNE A,#0EH,BACK ;判断是E键吗?;是E键时开始处理报警分数据AKEY_5: JB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第二个按键值(分钟的十位数?SWAP A ;处理输入的数据(十位)CJNE A,#00H,S_1SJMP SSS_1: CJNE A,#10H,S_2SJMP SSS_2: CJNE A,#20H,S_3SJMP SSS_3: CJNE A,#30H,S_4SJMP SSS_4: CJNE A,#40H,S_5SJMP SSS_5: CJNE A,#50H,S_6SJMP SSS_6: LJMP DIS_ERRSS: ANL 19H,#0FHORL 19H,AJB P3.3,$ ;以查询的方式等待下一次按键操作LCALL RDKEY ;读取第三个按键值(分钟的个位数)ANL 19H,#0F0H ;处理输入的数据(个位)ORL 19H,ALCALL WR8563 ;将修改后的时间参数送PCF8563SJMP BACKBACK: CJNE A,#0FH,DOWNDOWN: CLR IE0 ;清标志POP PSWPOP ACCPOP 07HPOP 04HPOP 03HPOP 02HPOP 00HRETI;***************************************************; DISPAY "Error";***************************************************DIS_ERR:PUSH 07HPUSH 00HPUSH 01HPUSH 02HPUSH 03HMOV DPTR,#LEDSEG ;开始对变量查表MOV R7,#DISCON ;写入数据个数MOV R0,#DISDA ;源数据块首地址MOV R1,#DATA_1LOOP1: MOV A,@R1MOVC A,@A+DPTR ;查表得对应的字形码MOV @R0,A ;送显示缓冲区INC R1INC R0DJNZ R7,LOOP1MOV 28H,#00HLOOP: MOV R7,#DISCONMOV R2,#10HMOV R3,#WSLAMOV R0,#DISDALCALL WRNBYT ;调显示子程序LCALL DELAYLCALL DELAYPOP 03HPOP 02HPOP 01HPOP 00HPOP 07HSJMP DOWN;*********************************************************; 读键值子程序(;出口参数累加器A---获取到的键值);*********************************************************RDKEY: MOV R0,#1FH ;键值缓冲单元MOV R7,#01H ;取一个数据(键值)MOV R2,#01H ;指向内部数据键值寄存器地址MOV R3,#WSLA_7290 ;取器件地址(写)MOV R4,#RSLA_7290 ;取器件地址(读)LCALL RDADD ;读出7290的01H单元中的键值MOV A,1FH ;取健值送缓冲单元DEC ARET;****************************************************************** ; 向日历芯片写入时间参数子程序;将RAM的10H-1DH中的时间参数(含控制字)写入芯片的00H-0DH单元;****************************************************************** WR8563: MOV R7,#0EH ;写入参数个数(时间和控制字)MOV R0,#10H ;参数和控制命令缓冲区首地址MOV R2,#00H ;从器件内部从地址MOV R3,#WSLA_8563 ;准备向PCF8563T写入数据串LCALL WRNBYT ;写入时间、控制命令到8563RET ;******;***************************************************************** LEDSEG: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4HDB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHDB 9EH,18H,3AH,00H ;E,r,o;******************************************************************* ; 延时子程序;******************************************************************* DELAY: PUSH 00HPUSH 01HMOV R0,#00HDELAY1: MOV R1,#00HDJNZ R1,$DJNZ R0,DELAY1POP 01HPOP 00HRET;**********************************************************;由汇编语言编制的I2C通讯子程序;**********************************************************;通用的I2C通讯子程序(多字节写操作);入口参数R7字节数,R0:源数据块首地址;R0原数据块首地址;R2从器件内部子地址;R3:外围器件地址(写);*********************************************************** WRNBYT: PUSH PSWPUSH ACCWRADD: MOV A,R3 ;取外围器件地地址(包含r/w=0)LCALL STA ;发送起始信号SLCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,WRADD ;如果应MOV A,R2LCALL WRBYT ;发送内部寄存器首地址LCALL CACK ;检测外围器件的应答信号JB F0,WRADD ;如果应答不正确返回重来WRDA: MOV A,@R0LCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,WRADD ;如果应答不正确返回重来INC R0DJNZ R7,WRDALCALL STOPPOP ACCPOP PSWRET;*******************************************************************;(2)带有内部单元地址的多字节读操作子程序 RDADD;*******************************************************************;通用的I2C通讯子程序(多字节读操作);入口参数R7字节数;;R0目标数据块首地址;R2从器件内部子地址;;R3器件地址(写);R4器件地址(读);WRBYT、STOP、CACK、STA、MNACK;******************************************************************* RDADD: PUSH PSW ;从PCF8563的02H单元读入7个参数PUSH ACC ;存放于20H-26H单元RDADD1: LCALL STAMOV A,R3 ;取器件地址(写)LCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,RDADD1 ;如果应答不正确返回重来MOV A,R2 ;取内部地址LCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,RDADD1 ;如果应答不正确返回重来LCALL STAMOV A,R4 ;取器件地址(读)LCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,RDADD1 ;如果应答不正确返回重来RDN: LCALL RDBYTMOV @R0,ADJNZ R7,ACKLCALL MNACKLCALL STOPPOP ACCPOP PSWRETACK: LCALL MACKINC R0SJMP RDN;3)I2C各个信号子程序;********************************************************************** ; 启动信号子程序S;********************************************************************** STA: SETB SDA ;启动信号SSETB SCLNOP ;产生4.7US延时NOPNOPNOPNOPCLR SDANOP ;产生4.7US延时NOPNOPNOPNOPCLR SCLRET;********************************************************************** ; 停止信号子程序P;********************************************************************** STOP: CLR SDA ;停止信号PSETB SCLNOP ;产生4.7US延时NOPNOPNOPNOPSETB SDANOP ;产生4.7US延时NOPNOPNOPNOPCLR SCLCLR SDARET;********************************************************************** ; 应答信号子程序 MACK;********************************************************************** MACK: CLR SDA ;发送应答信号ACKSETB SCLNOP ;产生4.7US延时NOPNOPNOPNOPCLR SCLSETB SDARET;********************************************************************** ; 非应答法信号子程序MNACK;********************************************************************** MNACK: SETB SDA ;发送非应答信号NACKSETB SCLNOP ;产生4.7US延时NOPNOPNOPNOPCLR SCLCLR SDARET;********************************************************************** ; 应答检测子程序CACK;********************************************************************** CACK: SETB SDA ;应答位检测子程序SETB SCLCLR F0MOV C,SDA ;采样SDAJNC CEND ;应答正确时转CENDSETB F0 ;应答错误时F0置一CEND: CLR SCLRET;********************************************************************** ; 发送一个字节子程序WRBYT;********************************************************************** WRBYT: PUSH 06HMOV R6,#08H ;发送一个字节子程序WLP: RLC A ;(入口参数A)MOV SDA,CSETB SCLNOP ;产生4.7US延时NOPNOPNOPNOPCLR SCLDJNZ R6,WLPPOP 06HRET;********************************************************************** ; 接收一个字节子程序RDBYT;********************************************************************** RDBYT: PUSH 06HMOV R6,#08H ;接收一个字节子程序RLP: SETB SDASETB SCL; *******************************************NOP ;!!!!!产生大于15微秒的延时!!!!!!NOP ;注意这是专门为ZLG7290NOP ;添加的20微秒延时部分NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP; ********************************************MOV C,SDAMOV A,R2RLC AMOV R2,ACLR SCLDJNZ R6,RLP ;(出口参数R2)POP 06HRETEND9 系统调试运行结果说明、分析所出现得问题,设计体会与建议系统调试硬件环境:单片机综合仿真实验仪型号:DP-51PROC51仿真器型号:TKSMonitor系统调试软件环境:KeilC51 μVsion2系统设计语言:汇编语言系统调试中遇到的主要问题和解决方法:1,整点报时:当判断分为59秒为55秒时进行报时,但是00秒总地法有响声,后来发现是因为当00秒时,分已经不再是59,无法进入判断的程序,增加00,00报时后即解决了问题;2,存储区交叉:因为定义变量增多,把报警以及其修改功能增加以后,对报警时间进行处理拆分需占用内存,与原程序定义的内存区存在重叠,因为修改报警时间后回显的数是随机的,虽然已经将更改后的数字写入,不过依然会被覆盖,更改内存地址后即正常了,不过还是不太明白这个是不是随机的。