51单片机课程设计源程序
MCS51单片机原理及嵌入式系统应用课程设计 (2)
MCS51单片机原理及嵌入式系统应用课程设计一、课程设计背景嵌入式系统是一个以计算机技术为基础,集成了计算机硬件和软件系统的设备。
随着信息技术的飞速发展,嵌入式系统已经成为各种各样产品的重要组成部分,如家电、汽车、医疗器械等。
因此,对嵌入式系统的研究和开发也变得越来越重要。
MCS51是一种被广泛应用于嵌入式系统设计的单片机。
MCS51拥有稳定的性能和丰富的硬件资源,同时使用起来也非常方便。
在本课程设计中,我们将探究MCS51单片机的原理以及其在嵌入式系统中的应用,旨在帮助学生更好地理解嵌入式系统,提高其技能水平,为未来就业做好准备。
二、课程设计内容2.1 MCS51单片机原理MCS51单片机由CPU、存储器、输入输出接口及其它外设组成。
本部分内容主要包括以下几个方面:•MCS51的CPU结构和工作原理•存储器及存储器扩展方式•输入输出接口及其应用•定时器和中断控制器的原理2.2 嵌入式系统应用MCS51单片机在嵌入式系统中的应用非常广泛,包括控制电路、仪器设备、工业控制等领域。
本部分内容将侧重于MCS51单片机在嵌入式系统中的具体应用,主要包括以下几个方面:•定时器的应用•中断的应用•A/D转换的应用•串口通信的应用•基于MCS51的嵌入式系统设计案例2.3 课程设计实践课程设计实践环节是本设计的重点部分。
学生将按照以下流程完成实践:•组建小组,编写嵌入式系统设计方案•搭建硬件平台,包括MCS51单片机和相关外设•编写程序,完成设计方案的实现•测试程序,调试错误并进行优化三、课程设计评估本课程设计采用绩效考核制度。
学生将分小组完成课程设计,小组成员之间责任明确,根据完成情况和实现效果,将对小组进行绩效评估。
评估方案主要从以下方面考虑:•设计方案的合理性•实现方案的正确性及完整性•程序的优化程度及代码质量四、总结本课程设计旨在通过MCS51单片机的原理和应用让学生更好地理解嵌入式系统的设计和开发过程。
51单片机毕业课程设计功率因数计
51单片机毕业课程设计功率因数计(完整版)51单片机毕业课程设计—功率因数计1. 概述本文档介绍了一种基于51单片机的毕业课程设计方案,即功率因数计。
本设计旨在实现对电网中功率因数的测量和监控,从而提高电能的利用效率。
2. 设计原理本设计主要基于功率因数的定义和计算公式来实现。
功率因数定义为有功功率与视在功率之比,通过测量电网中的电压和电流,并使用适当的算法进行计算,可以获得功率因数的数值。
3. 硬件设计3.1 电路元件本设计所需的电路元件包括:- 51单片机- 电流传感器- 电压传感器- 显示屏3.2 电路连接将电流传感器和电压传感器连接到51单片机的相应引脚上,以实时获取电流和电压值。
通过数字转模拟转换器(DAC)将获取的模拟数据转换为数字形式,然后使用适当的算法计算功率因数,并将结果显示在显示屏上。
4. 软件设计4.1 主程序流程主程序的流程如下:1. 初始化电路连接和显示屏。
2. 循环执行以下步骤:- 读取电流和电压值。
- 使用计算公式计算功率因数。
- 将计算结果显示在显示屏上。
3. 结束程序。
4.2 算法设计本设计中使用的算法主要是根据功率因数的计算公式进行计算。
具体步骤如下:1. 读取电流和电压值。
2. 使用下述公式计算功率因数:- 功率因数 = 有功功率 / 视在功率3. 将计算结果保存,并根据需要进行显示或记录。
5. 总结本文档介绍了一种基于51单片机的毕业课程设计方案,即功率因数计。
通过测量电流和电压,并使用适当的算法进行计算,可以实现对电网中功率因数的测量和监控。
该设计有助于提高电能的利用效率,具有一定的实用性和应用前景。
51单片机期末课程设计
51单片机期末课程设计一、课程目标知识目标:1. 理解并掌握51单片机的基本原理和结构组成,包括内部资源、指令系统及编程方法。
2. 学会使用51单片机的开发工具和编程环境,如Keil C及ISP下载线。
3. 掌握51单片机在嵌入式系统中的应用,能够阅读并分析相关电路图。
技能目标:1. 能够独立设计并编写简单的51单片机程序,实现基础的外围设备控制,如LED灯、蜂鸣器等。
2. 能够运用所学的知识解决实际的51单片机编程问题,进行基本的程序调试和故障排查。
3. 通过课程设计项目,培养动手实践能力和团队协作能力。
情感态度价值观目标:1. 培养学生对于电子技术和编程的兴趣,激发其主动探索和创新的热情。
2. 增强学生的工程意识,培养严谨、细致、负责的学习态度和职业素养。
3. 通过课程学习,使学生认识到技术对生活的影响,增强社会责任感和使命感。
本课程针对高年级学生,在已有电子技术和C语言编程基础的前提下,进一步深化对51单片机的理解与应用。
课程性质为理论与实践相结合,强调知识的应用性和实践性。
在教学过程中,注重培养学生的自主学习和问题解决能力,以项目驱动教学,确保学生能够达到预设的学习成果。
通过期末课程设计,巩固所学知识,提高综合运用能力。
二、教学内容本课程教学内容紧密围绕课程目标,结合教材以下章节展开:1. 51单片机原理概述:包括内部结构、工作原理、资源分布等,重点理解时钟电路、复位电路的作用。
- 教材章节:第1章 51单片机基础2. 51单片机指令系统与编程:学习汇编语言编程,掌握常用指令,理解程序执行流程。
- 教材章节:第2章 51单片机指令系统与编程3. 开发工具使用:介绍Keil C集成开发环境和ISP下载线的使用方法,学会创建、编译、下载程序。
- 教材章节:第3章 51单片机开发工具4. 外围设备控制:学习51单片机与LED灯、蜂鸣器、数码管等外围设备的接口与编程控制。
- 教材章节:第4章 51单片机外围设备编程5. 传感器应用:结合实际案例,学习传感器与51单片机的连接和数据处理。
51单片机课程设计报告
51单片机课程设计报告一、课程目标知识目标:1. 理解51单片机的硬件结构、工作原理及其功能特点;2. 学会使用51单片机的指令系统进行程序设计;3. 掌握51单片机与外围电路的接口技术,能实现简单的硬件控制功能;4. 了解51单片机在嵌入式系统中的应用及发展趋势。
技能目标:1. 能够运用C语言编写51单片机的程序,实现基础控制功能;2. 能够运用仿真软件对51单片机程序进行调试,分析并解决简单问题;3. 能够设计简单的51单片机硬件系统,进行电路连接和功能测试;4. 培养学生的动手能力、创新能力和团队协作能力。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情;2. 培养学生严谨、务实的科学态度,提高自主学习能力;3. 培养学生关注社会发展,了解科技在生活中的应用,增强社会责任感;4. 培养学生团队合作精神,尊重他人意见,善于沟通交流。
课程性质:本课程为实践性较强的电子技术课程,以51单片机为核心,结合硬件和软件,培养学生的实际操作能力和创新能力。
学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力和解决问题的能力。
通过课程学习,使学生能够独立完成简单的51单片机控制系统设计。
二、教学内容根据课程目标,教学内容分为以下几个部分:1. 51单片机硬件结构及原理- 熟悉51单片机的内部结构、引脚功能;- 掌握51单片机的工作原理及性能特点。
2. 51单片机指令系统与编程- 学习51单片机的指令集,理解各指令的功能和使用方法;- 掌握C语言在51单片机编程中的应用。
3. 51单片机外围接口技术- 学习51单片机与常见外围电路(如LED、LCD、键盘等)的接口技术;- 掌握外围设备的控制原理及编程方法。
4. 仿真软件的使用- 学习使用Keil、Proteus等仿真软件进行51单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。
简单51单片机课程设计
简单51单片机课程设计一、课程目标知识目标:1. 理解51单片机的基本结构、工作原理及功能特点;2. 学会使用51单片机的开发环境,掌握相关编程语言及语法;3. 掌握51单片机外围电路的连接方法,了解常见传感器的使用;4. 掌握51单片机在实际应用中的调试与优化方法。
技能目标:1. 能够运用51单片机编写简单的程序,实现基本的功能;2. 能够分析并解决51单片机在实际应用中出现的问题;3. 能够运用所学知识,设计并实现简单的51单片机控制系统;4. 培养学生的动手能力、创新能力和团队协作能力。
情感态度价值观目标:1. 培养学生对单片机及嵌入式系统的兴趣,激发学习热情;2. 培养学生严谨、求实的科学态度,养成良好的学习习惯;3. 培养学生具备积极向上的心态,面对困难和挑战时保持乐观;4. 培养学生具备团队协作精神,学会与他人共同解决问题。
本课程针对初中学段学生,结合课程性质、学生特点和教学要求,明确以上课程目标。
通过本课程的学习,学生将能够掌握51单片机的基本知识和技能,培养实际应用能力,同时培养良好的情感态度价值观。
后续教学设计和评估将围绕这些具体的学习成果展开。
本章节教学内容依据课程目标,紧密结合教材,确保科学性和系统性。
具体教学内容如下:1. 51单片机基础知识:介绍51单片机的结构、原理及功能特点,包括内部资源、外部接口等,对应教材第一章。
2. 开发环境与编程语言:学习51单片机的开发环境搭建,掌握C语言编程基础,包括数据类型、运算符、控制语句等,对应教材第二章。
3. 基本I/O口操作:学习51单片机I/O口编程,实现LED灯、蜂鸣器等基本控制,对应教材第三章。
4. 中断与定时器:介绍中断系统、定时器原理及应用,学会编写中断服务程序,对应教材第四章。
5. 外围电路与传感器:学习51单片机与外围电路的连接方法,了解常见传感器的工作原理及使用,对应教材第五章。
6. 实际应用案例分析:分析51单片机在实际应用中的案例,如温度控制系统、智能家居等,对应教材第六章。
基于51单片机的课程设计
-探索51单片机在智能家居中的应用,如家居环境监测与控制;
-介绍并实践51单片机与蓝牙模块的连接,实现无线数据通信;
-分析并设计一个简易的抢答器系统,涉及按键扫描、状态机设计等;
-结合课堂所学,开展创新设计竞赛,鼓励学生自主设计并实现具有实际应用价值的单片机控制系统。
-开展综合实训,要求学生团队协作,完成一个综合性的单片机控制系统设计,如智能家居控制系统,提升学生的实际操作能力和项目实践能力。
-汇编语言程序设计
- C语言程序设计
3.《单片机原理与应用》第六章:51单片机的I/O接口及应用
- I/O口的控制方法
-基本输入/输出应用实例
4.《单片机原理与应用》第七章:51单片机的定时器/计数器与中断系统
-定时器/பைடு நூலகம்数器的工作原理及应用
-中断系统的原理及应用
5.《单片机原理与应用》第八章:51单片机的串行通信
-串行通信的原理
-串行通信接口的编程与应用
本章节将以上述内容为基础,结合实际案例,引导学生掌握51单片机的原理、编程及应用。
2、教学内容
本节课程设计将具体包括以下教学内容:
- 51单片机的最小系统构成及其功能分析;
-基本I/O口操作,实现LED灯的闪烁与控制;
-定时器/计数器的编程,实现精确延时及脉冲产生;
5、教学内容
-专题讨论:51单片机在工业控制中的应用,如自动化生产线上的传感器数据采集与处理;
-介绍并实践51单片机与各类传感器(如温湿度、光照、红外等)的接口技术;
-深入讲解51单片机的电源管理,探讨低功耗设计方法;
-通过项目案例,学习如何使用51单片机进行数据加密与解密,增强系统安全性;
MCS51单片机原理及嵌入式系统应用2007年版课程设计
MCS51单片机原理及嵌入式系统应用2007年版课程设计一、课程设计背景MCS51单片机是一种广泛使用的嵌入式系统芯片,它具有体积小、功能丰富、易于编程等特点。
因此,MCS51单片机在工业控制、电子设备、通信等领域得到广泛应用。
为了培养学生的嵌入式系统设计能力,提高学生的实践能力,本课程设计旨在让学生深入了解MCS51单片机的原理,学习其编程技术,掌握嵌入式系统的设计和应用。
二、课程设计目标本课程设计的主要目标是:•理解MCS51单片机的基本原理和结构;•掌握MCS51单片机的编程技术,包括指令系统、寄存器、中断等;•运用MCS51单片机设计和实现简单的嵌入式系统,如LED灯控制、温度测量、蜂鸣器控制等。
三、课程设计内容3.1 原理部分1.MCS51单片机概述–单片机的定义和历史–MCS51单片机的特点和应用范围2.MCS51单片机的硬件结构–CPU、存储器、I/O控制器、定时器等模块–内存映射和端口地址3.MCS51单片机的指令系统–指令结构和格式–常用指令介绍4.MCS51单片机的中断系统–中断的概念和原理–中断的类型和优先级–编程实现中断处理程序3.2 编程部分1.MCS51单片机的汇编语言–汇编语言的概述和特点–MCS51单片机的汇编语言语法2.MCS51单片机的编程工具–Keil C51集成环境–编译、烧录和调试技术3.MCS51单片机的编程实践–简单的LED灯控制–温度测量和显示–蜂鸣器的控制和实现四、课程设计要求1.学生需主动参与课程设计过程,积极探索MCS51单片机的原理和编程技术;2.学生需按时提交实验报告,并在班级或教师指导下进行课程设计展示;3.学生可以结合自身兴趣和实际需求,开发嵌入式系统应用,如智能家居、智能车载、工业自动化等,实现MCS51单片机技术的应用。
五、实验器材和设备1.MCS51单片机开发板2.LED灯、电阻、电容、温度传感器等元器件3.Keil C51集成环境软件六、课程设计评价本课程设计评价主要从以下几个方面考虑:1.设计的难度是否适合本课程水平;2.报告和展示是否清晰明了,实验结果是否准确;3.学生在课程设计过程中的主动性和创新性。
51单片机温度课程设计
51单片机温度课程设计一、课程目标知识目标:1. 理解51单片机的结构与原理,掌握温度传感器与单片机的连接方法;2. 学会编写程序,实现温度的采集、处理和显示;3. 了解温度控制系统的基本原理及其在实际应用中的重要性。
技能目标:1. 能够正确使用万用表、编程器等工具,进行单片机与温度传感器的连接;2. 掌握C语言编程,实现温度数据的采集、处理和显示;3. 能够分析温度控制系统的性能,提出优化方案。
情感态度价值观目标:1. 培养学生动手实践能力,激发创新精神,增强解决实际问题的自信心;2. 培养团队合作精神,提高沟通与协作能力;3. 增强学生对我国电子产业的了解,提高国家认同感和自豪感。
课程性质:本课程为实践性较强的课程,结合理论教学,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的电子基础知识,对单片机有一定了解,但实际操作经验不足。
教学要求:教师需采用讲解、示范、指导相结合的教学方法,引导学生主动参与实践,提高学生的实际操作能力。
同时,注重培养学生分析问题和解决问题的能力,达到学以致用的目的。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,为未来的职业发展打下坚实基础。
二、教学内容1. 理论知识:- 51单片机基础知识:介绍51单片机的结构、工作原理及特点;- 温度传感器原理:讲解温度传感器的工作原理、种类及其与单片机的连接方法;- C语言编程:复习C语言基础知识,重点讲解与51单片机相关的编程技巧。
2. 实践操作:- 硬件连接:指导学生使用万用表等工具,完成温度传感器与51单片机的连接;- 软件编程:编写程序实现温度数据采集、处理和显示,通过实践操作熟悉编程过程;- 系统调试:分析温度控制系统的性能,引导学生提出优化方案并进行调试。
3. 教学大纲:- 第一周:51单片机基础知识学习,了解温度传感器原理;- 第二周:C语言编程复习,学习与51单片机相关的编程技巧;- 第三周:进行硬件连接,学习温度传感器与单片机的连接方法;- 第四周:编写程序,实现温度数据采集、处理和显示;- 第五周:系统调试,分析性能并提出优化方案。
51单片机相关课程设计
51单片机相关课程设计一、课程目标知识目标:1. 理解51单片机的硬件结构,掌握其工作原理;2. 学习并掌握51单片机的指令系统,能进行基本的编程操作;3. 了解并掌握51单片机在嵌入式系统中的应用。
技能目标:1. 能够运用C语言编写简单的51单片机程序,实现基础功能;2. 学会使用仿真软件对51单片机程序进行调试,解决常见问题;3. 能结合实际需求,设计并实现简单的51单片机控制系统。
情感态度价值观目标:1. 培养学生对电子技术及编程的兴趣,激发其创新意识;2. 培养学生团队协作精神,使其在项目实践中学会沟通与分享;3. 强化学生的工程意识,使其认识到技术对社会发展的作用。
课程性质:本课程为实践性较强的课程,旨在帮助学生将理论知识与实际应用相结合,培养其动手能力和创新能力。
学生特点:学生处于高年级阶段,已具备一定的电子技术和编程基础,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,通过项目驱动教学,使学生在实践中掌握知识,提高技能。
同时,关注学生的情感态度价值观培养,引导其形成积极的学习态度和正确的价值观。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 51单片机硬件结构及原理:介绍51单片机的内部结构,包括CPU、存储器、I/O口、定时器等模块,分析其工作原理及相互关系。
相关教材章节:第一章 51单片机概述与硬件结构2. 51单片机指令系统及编程:讲解51单片机的指令集,学习C语言编程基础,编写简单的程序实现基础功能。
相关教材章节:第二章 51单片机指令系统与编程3. 仿真软件使用与程序调试:学习使用Keil、Proteus等仿真软件,进行51单片机程序的编写、编译、调试及下载。
相关教材章节:第三章 51单片机程序开发与调试4. 51单片机应用实例:分析并实践51单片机在嵌入式系统中的应用,如温度控制、灯光调节等。
相关教材章节:第四章 51单片机应用实例5. 课程项目实践:分组进行项目实践,设计并实现一个简单的51单片机控制系统,如智能小车、智能家居等。
51单片机C语言程序设计-图文
/* 名称:8 只 LED 左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) {
case 2: //东西向黄灯闪烁,绿灯关闭 DelayMS(300); YELLOW_A=~YELLOW_A;GREEN_A=1; if(++Flash_Count!=10) return; //闪烁 5 次 Flash_Count=0; Operation_Type=3; break;
case 3: //东西向红灯,南北向绿灯亮 RED_A=0;YELLOW_A=1;GREEN_A=1; RED_B=1;YELLOW_B=1;GREEN_B=0; DelayMS(2000); Operation_Type=4; break;
3 Ykcsh 呈献
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff }; //延时 void DelayMS(uint x) {
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; while(1) { //从数组中读取数据送至 P0 和 P2 口显示
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {
51单片机课程设计
17.课后实践与持续学习:鼓励学生在课后继续进行单片机实践,培养自主学习能力,推荐相关学习资源,引导学生持续深入学习。
18.课程总结与反馈:在课程结束时,组织学生进行课程总结,反馈学习体验和收获,为后续课程的教学提供改进方向。
13.安全教育与操作规范:在教学过程中,穿插安全教育,让学生了解单片机实验操作中的安全注意事项,遵守实验室操作规范。
14.成果展示与评价:组织学生进行课程设计成果的展示,通过自评、互评和教师评价相结合的方式,对学生的设计作品进行评价,促进学生能力的全面提升。
4、教学内容
15.知识拓展与前沿技术:介绍51单片机在现实生活中的应用以及相关前沿技术,如物联网、智能家居等领域的应用,拓宽学生知识面。
51单片机课程设计
一、教学内容
本节“51单片机课程设计”依据八年级下册《信Байду номын сангаас技术》教材第四章“单片机控制”内容展开,主要包括以下知识点:
1. 51单片机的结构和原理:介绍51单片机的内部结构、工作原理及其各个组成部分的功能。
2. 51单片机的指令系统:列举常用的51单片机指令,如数据传送、逻辑运算、算术运算等。
3. 51单片机的I/O口编程:讲解如何通过编程控制51单片机的输入输出口,实现LED灯、蜂鸣器等器件的控制。
4. 51单片机的定时器/计数器:介绍定时器/计数器的工作原理和编程方法,实现精确的时间控制。
5. 51单片机的中断系统:讲述中断的概念、中断源以及中断编程方法,提高程序的响应速度。
6. 51单片机的外部扩展:探讨如何通过外部扩展,实现更多的功能,如扩展RAM、ROM、键盘、显示器等。
51单片机小车课程设计
51单片机小车课程设计一、课程目标知识目标:1. 掌握51单片机的硬件结构、工作原理及编程方法;2. 了解小车的基本构造,理解电机驱动、传感器等模块的功能及相互关系;3. 学习如何将51单片机应用于小车控制,实现小车的基本运动控制功能。
技能目标:1. 能够运用C语言编写51单片机的程序,实现对小车的控制;2. 学会使用电机驱动、传感器等模块,进行小车电路的搭建和调试;3. 培养动手实践能力,通过课程设计,独立完成一个具有基本功能的小车控制系统。
情感态度价值观目标:1. 培养学生对电子科技的兴趣,激发创新意识;2. 培养学生团队协作精神,学会共同分析问题、解决问题;3. 培养学生严谨的科学态度,提高自我评价和反思能力。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 掌握51单片机的基本知识,能够独立编写程序;2. 完成小车电路搭建,实现小车的基本运动控制;3. 撰写课程设计报告,总结设计过程和经验教训;4. 参与团队讨论,积极提出问题,共同解决问题;5. 通过课程学习,提升对电子科技的兴趣和热情,培养创新精神和动手能力。
二、教学内容1. 51单片机基础知识:介绍51单片机的硬件结构、工作原理、寄存器及I/O 口编程;2. C语言编程:回顾C语言基础,重点讲解51单片机编程中的常用语法和技巧;3. 小车电路设计:讲解电机驱动原理,介绍常用传感器(如红外、超声波等)的工作原理及接线方法;4. 小车控制算法:学习如何编写程序实现小车的前进、后退、转向等基本运动控制;5. 课程设计实践:指导学生进行小车电路搭建、程序编写及调试,实现小车的基本功能;6. 课程总结:撰写课程设计报告,总结设计过程中的经验教训。
教学内容安排与进度:第一周:51单片机基础知识学习;第二周:C语言编程训练;第三周:小车电路设计与分析;第四周:小车控制算法学习;第五周:课程设计实践;第六周:课程总结及评价。
51单片机课程设计实例
51单片机课程设计实例一、引言51单片机是一种广泛应用于嵌入式系统的微控制器。
它具有低功耗、高性能、易编程等特点,因此在电子设计领域得到了广泛的应用。
本文将介绍一个基于51单片机的课程设计实例,通过该实例可以帮助读者更好地理解51单片机的应用。
二、实例背景假设我们要设计一个温度检测系统,能够实时监测环境的温度,并根据一定的温度范围进行报警。
这样的系统在很多场景下都有实际应用价值,比如温室大棚的温度控制、电子设备的温度监测等。
三、硬件设计1. 硬件电路我们可以通过使用温度传感器将环境的温度转化为电压信号,然后将该信号输入到51单片机的模拟输入引脚。
同时,我们需要连接一个蜂鸣器来进行报警。
2. 电路图以下是该系统的简化电路图:(不要输出图片链接)四、软件设计1. 程序框架我们可以通过编写嵌入式C语言程序来实现该系统的功能。
以下是程序的基本框架:```#include <reg51.h>sbit buzzer = P1^0; //定义蜂鸣器控制引脚void delay(unsigned int time){unsigned int i, j;for(i = time; i > 0; i--)for(j = 110; j > 0; j--);}void main(){while(1){//读取温度传感器的模拟输入值unsigned int temperature = ADC_Read(0);if(temperature > 30) //如果温度超过30摄氏度{buzzer = 1; //蜂鸣器报警delay(1000); //延时1秒buzzer = 0; //关闭蜂鸣器delay(1000); //延时1秒}}}```2. 程序说明程序首先定义了一个蜂鸣器控制引脚,并编写了一个延时函数。
在主函数中,通过循环不断读取温度传感器的模拟输入值,并进行比较。
如果温度超过30摄氏度,则蜂鸣器报警,持续1秒钟,然后关闭蜂鸣器并延时1秒钟。
基于-51单片机课程设计报告
单片机课程设计课题:基于51单片机的交通灯设计基于51单片机数字温度计设计报告一、设计目的作用本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20,单片机AT89C52,,四位共阴极数码管一个,电容电阻若干。
DS18B20支持“一线总线”接口,测量温度范围-55°C~+125°C。
在-10~+85°C范围内,精度为±0.5°C。
18B20的精度较差,为± 2°C 。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
本次数字温度计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,按键设置部分,时钟电路。
主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阴极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路,按键部分用来设置上下限报警温度。
测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。
二、设计要求(1).利用DS18B20传感器实时检测温度并显示。
(2).利用数码管实时显示温度。
(3).当温度超过或者低于设定值时蜂鸣器报警,LED闪烁指示。
(4).能够手动设置上限和下限报警温度。
三、设计的具体实现1、系统概述方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案设计框图如下:方案二:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
51单片机的课程设计
51单片机的课程设计一、课程目标知识目标:1. 理解51单片机的硬件结构,掌握其工作原理;2. 学会使用51单片机的开发环境,掌握基本的编程语法和技巧;3. 掌握51单片机中断、定时器、串行通信等模块的应用;4. 了解51单片机在嵌入式系统中的应用,培养对单片机应用场景的认识。
技能目标:1. 能够独立设计简单的51单片机程序,完成基础的控制任务;2. 能够运用51单片机解决实际问题,具备一定的编程调试能力;3. 能够阅读和分析51单片机的相关资料,提高自学能力和技术文献阅读能力。
情感态度价值观目标:1. 培养学生对单片机技术的兴趣,激发学生探索嵌入式领域的热情;2. 培养学生的团队合作意识,提高沟通与协作能力;3. 引导学生关注我国单片机技术的发展,增强学生的民族自豪感;4. 培养学生严谨、细致、负责的学习态度,养成良好的编程习惯。
课程性质:本课程为实践性较强的学科,旨在通过51单片机的学习,让学生掌握基本的单片机原理和编程技能,培养实际操作和解决问题的能力。
学生特点:学生具备一定的电子基础和编程基础,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,以实例教学为主,培养学生动手实践能力。
同时,关注学生的情感态度价值观培养,激发学生的学习兴趣和探究欲望。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 51单片机硬件结构:介绍51单片机的内部结构、引脚功能、工作原理等,结合教材第二章内容进行讲解。
- 微控制器原理- 51单片机引脚功能- 时钟与复位电路2. 开发环境与编程工具:学习51单片机的开发环境搭建,掌握编程工具的使用。
- Keil C51集成开发环境安装与配置- 51单片机程序编写、编译与下载3. 51单片机编程语言:学习单片机C语言编程基础,掌握基本语法和编程技巧。
- C语言基础语法- 特定寄存器的操作与编程4. 中断与定时器:学习中断系统、定时器的工作原理和应用实例。
51单片机秒表课程设计
51单片机秒表课程设计一、课程目标知识目标:1. 学生能理解51单片机的基本原理,掌握其编程方法。
2. 学生能掌握秒表功能的基本组成部分,如计时、暂停、复位等。
3. 学生能理解并应用中断、定时器等51单片机的相关知识。
技能目标:1. 学生能运用C语言编写51单片机程序,实现秒表功能。
2. 学生能通过实验操作,调试并优化程序,解决实际问题。
3. 学生能熟练使用相关开发工具和调试设备,如编译器、仿真器等。
情感态度价值观目标:1. 学生培养对单片机编程的兴趣,激发创新意识和实践欲望。
2. 学生培养良好的团队合作意识,学会互相交流、协作解决问题。
3. 学生培养严谨的科学态度,注重实验数据的真实性,勇于面对和克服困难。
课程性质:本课程为实践性课程,以项目为导向,结合理论知识与实际操作,培养学生的动手能力和编程思维。
学生特点:学生具备一定的电子基础和编程基础,对51单片机有一定了解,但对中断、定时器等高级功能尚不熟悉。
教学要求:教师需引导学生运用已学知识,通过实际操作,逐步掌握51单片机的编程和应用。
在教学过程中,注重培养学生的实际操作能力、问题解决能力和团队协作能力。
课程目标的设定旨在使学生在完成本项目后,能够独立设计并实现简单的单片机应用系统。
二、教学内容1. 理论知识:- 51单片机结构及工作原理- C语言编程基础:数据类型、运算符、控制语句等- 中断和定时器的原理与应用- 键盘输入与数码管显示原理2. 实践操作:- 使用Keil软件编写和编译程序- 使用STC89C52RC单片机进行程序下载和调试- 设计并实现秒表功能,包括计时、暂停、复位等3. 教学大纲:- 第一周:回顾51单片机基本原理,学习C语言编程基础- 第二周:学习中断和定时器知识,分析秒表功能需求- 第三周:设计程序框架,编写中断处理程序和定时器程序- 第四周:编写键盘输入和数码管显示程序,实现秒表功能- 第五周:项目调试、优化和展示4. 教材章节及内容:- 第一章:51单片机概述,了解单片机的发展及其应用- 第二章:C语言编程基础,掌握基本语法和数据类型- 第三章:中断和定时器,学习中断处理和定时器编程方法- 第四章:输入输出接口,学习键盘输入和数码管显示技术教学内容的选择和组织旨在保证学生能够系统地掌握51单片机编程及应用,注重理论与实践相结合,培养学生的实际操作能力。
c51单片机课程设计
c51单片机课程设计一、课程目标知识目标:1. 理解C51单片机的基本原理与结构,掌握其指令系统及编程方法。
2. 学会使用C51单片机进行简单的电路设计与控制系统实现。
3. 了解C51单片机在嵌入式系统中的应用,掌握相关外围电路的设计与调试。
技能目标:1. 能够运用C语言编写简单的C51单片机程序,完成基础控制功能。
2. 熟练使用Keil、Proteus等软件进行C51单片机程序的编译、仿真与调试。
3. 能够分析并解决C51单片机在实际应用中遇到的问题,具备一定的故障排查能力。
情感态度价值观目标:1. 培养学生对电子技术及嵌入式系统的兴趣,激发其创新意识与探索精神。
2. 强化学生的团队合作意识,培养其在项目实践中的沟通与协作能力。
3. 培养学生严谨、务实的科学态度,使其认识到技术对社会发展的积极作用。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为电子技术领域的一门实践性课程,旨在培养学生的编程能力、电路设计能力及实际操作能力。
2. 学生特点:学生已具备一定的电子技术基础,具有较强的学习兴趣和动手能力,但对复杂编程及实际应用尚存一定难度。
3. 教学要求:注重理论与实践相结合,充分调动学生的积极性与主动性,提高其在实际项目中的应用能力。
二、教学内容1. C51单片机原理与结构:介绍C51单片机的硬件结构、工作原理及性能特点,对应教材第一章内容。
- 单片机内部结构- 指令系统与执行过程- 性能参数与选型2. C51单片机编程基础:学习C语言编程,掌握C51单片机程序设计方法,对应教材第二章内容。
- 数据类型、运算符与表达式- 控制语句与函数- 汇编与C语言混合编程3. C51单片机外围电路设计:学习常用外围电路的设计方法,如键盘、显示、传感器等,对应教材第三章内容。
- 键盘电路设计- 显示器接口设计- 传感器信号处理4. C51单片机应用实例:通过实际案例,学习C51单片机在嵌入式系统中的应用,对应教材第四章内容。
基于51单片机的课程设计
摘要 (2)第1章概述 (3)1.1ADC0832调节频率输入实现的意义 (3)第2章频率计实现的理论分析 (3)2.1ADC0832调节频率输出的基本结构和原理 (3)第3章单片机基础与芯片使用 (4)3.1单片机介绍 (4)3.2ADC0832介绍和时序使用 (7)第4章系统方案设计及实现 (11)4.1单片机选取 (11)4.2系统硬件结构图 (13)4.3各模块的实现 (13)4.4软件的实现 (15)4.5功能调试 (24)结束语 (26)参考文献 (27)致谢 (28)“ADC0832控制频率输出”实质上是运用可调电阻反馈电压模拟量输入到ADC0832中输出数字量。
应用数字量填充单片机定时器初值,可产生中断从而实现电平转换,接到示波器上可观察方波的输出,由数码管直观的看出电平变化频率。
设计的关键在于数模转换,这个由ADC0832来实现,所以可以比较容易得到一个可控制的频率计。
本文以单片机的实际应用为背景,介绍了以单片机为核心ADC0832控制频率输出设计的基本结构和基本原理。
关键词:单片机;ADC0832;数模转换Abstract"ADC0832 control frequency output" is actually using the adjustable resistorfeedback analog voltage input to the ADC0832 digital output. Application ofdigital single-chip timer initial filling, can generate an interrupt to realize the conversion level, received the oscilloscope can observe Fang Bo's output, by the digital tube directly see level change frequency. The key lies in the design of digital to analog conversion, this is implemented by ADC0832, so it can be easily obtained a controlled frequency meter.Based on the background of the practical application of SCM, SCM introduced to the basic structure of frequency output control design of the core and basic principle of ADC0832.Keyword: MCU; ADC0832; digital to analog conversion第1章概述1.1 ADC0832调节频率输入实现的意义应用ADC0832和可调电阻,由可调电阻反馈电压模拟量输入到中输出数字量。
51单片机课程设计
51单片机课程设计51单片机课程设计一、课程背景1、基于实际工程应用,单片机可广泛应用于家电、计算机、通信、汽车及其它自动化控制领域,日益需要在选材、分析和处理能力等方面作准确分析,提高物联网相关技术人才培养质量。
2、51单片机是一种具有优秀性能和多功能的可编程控制器,其功能包括存储器、输入输出功能、定时功能。
3、掌握51单片机的开发环境,可以实现在51单片机上编写程序,实现各种功能开发,可以简化完成物联网数据采集、控制、传输等工作。
二、课程宗旨1、使学习者具备编写程序和调试51单片机的能力,调动学生对51单片机的兴趣。
2、让学生利用51单片机作出各种技术实现,解决日常生活中的实际问题。
3、培养学生灵活运用51单片机进行技术开发的能力。
4、能够指出注意事项和错误,带领学生解决其它问题,做出正确有用的决定能力。
三、课程结构1、基础篇(1)51单片机原理介绍,介绍其CPU、I/O 端口、定时器/计数器等功能,及基本的组成结构。
(2)51单片机的程序设计实验,如单片机的程序结构及汇编程序编写、语句编写等技术。
2、应用篇(1)实验程序的编写与调试,实验的实践操作,将重点放在实践操作上。
(2)实验内容实现51单片机常用的电子系统控制及现场总线控制技术。
3、开发篇(1)解决实际工程中应用问题,编写仪器控制系统程序。
(2)学习使用Keil开发环境,习得控制程序的编写、调试、软件的配置知识。
(3)完成常用的智能硬件设计,提供专业实现方案。
四、课程考核考核手段主要采用实验报告、加分考核、平时表现评比等方式,通过考查学生实验技能和应用能力来鉴定学生能力掌握水平。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TIME0_DOWN EQU F0 ;将F0设置为定时器0定时到标志FINISH_ID EQU 30H ;学号发送标志KEY_FLAG BIT 00H ;有键按下标志KEY_LONG BIT 01H ;键长按KEY_D EQU 31H ;键值存放地址ADC0809_AD EQU 8000H ;设置ADC0809地址DAC0832_AD EQU 0000H ;设置DAC0832地址ADC_FLAG BIT 02H ;设置ADC0809读数据标志ADC_DATE EQU 32H ;设置ADC0809数据地址ADC_0 EQU 33H ;ADC0809转化为BCD码后个位存放地址ADC_1 EQU 34H ;十分位存放地址ADC_2 EQU 35H ;百分位存放地址ADC_3 EQU 36H ;千分位存放地址ORG 0000H ;程序开始,跳转至主程序0000 020030 LJMP MAINORG 0003H ;外部中断0入口0003 020141 LJMP INT0_INORG 000BH ;设置定时器0中断入口地址000B 020132 LJMP TIME0ORG 0013H ;外部中断1入口0013 020151 LJMP INT1_INORG 0030H ;主程序开始地址0030 758169 MAIN: MOV SP,#69H ;初始化堆栈指针0033 C292 CLR P1.2 ;显示器清零0035 D292 SETB P1.20037 753000 MOV FINISH_ID,#0 ;将标志位清零003A C2D5 C LR TIME0_DOWN003C C200 CLR KEY_FLAG003E C201 CLR KEY_LONG0040 753100 MOV KEY_D,#00043 C202 CLR ADC_FLAG0045 753200 MOV ADC_DATE,#00048 753300 MOV ADC_0,#0004B 753400 MOV ADC_1,#0004E 753500 MOV ADC_2,#00051 753600 MOV ADC_3,#00054 C291 CLR P1.1 ;初始化键盘,行线置零,有键按下触发中断0056 C293 CLR P1.30058 D2B8 S ETB PX0 ;设置键盘中断为高级中断005A D28A SETB IT1 ;设置外部中断1为下降沿触发方式005C 758901 MOV TMOD,#01H ;设置定时器0工作方式005F 75A887 MOV IE,#10000111B ;开中断;*************显示学号******************0062 7A05 MOV R2,#5 ;显示学号程序,设置发送数据的个数0064 EA DIS_ID: MOV A,R20065 C3 CLR C0066 9401 SUBB A,#10068 900232 MOV DPTR,#TAB_ID ;查断码表表得到发送的数据值006B 93 MOVC A,@A+DPTR006C F599 MOV SBUF,A ;发送数据006E 109902 CONT: JBC TI,NEXT ;等待数据发完,发完清除中断标志继续发送0071 80FB SJMP CONT0073 DAEF NEXT: DJNZ R2,DIS_ID ;判断第一段发完没有,发完后继续发送下一段0075 7A05 MOV R2,#5 ;重赋发送数据的个数0077 0530 INC FINISH_ID ;递增学号显示标志,判断是否发送完成0079 E530 MOV A,FINISH_ID007B B40306 CJNE A,#3,NEXT1 ;没有完成则先延时后继续发送007E 753000 MOV FINISH_ID,#00081 02009F LJMP OTHER ;发送完成后执行其他程序0084 758C3C NEXT1: MOV TH0,#3CH ;定时器0定时初值,延时50ms,计算方法:0087 758AB0 MOVTL0,#0B0H ;TH0=(65536-50000)/256,TL0=(65536-50000)%25 6008A 7B1E MOV R3,#30 ;设置软件计数器,计30次,即1.5s008C D28C S ETB TR0 ;启动定时器0008E E582 MOV A,DPL ;发完一次后DPTR加5,指向下一页数据0090 2405 ADD A,#50092 F582 MOV DPL,A0094 E583 MOV A,DPH0096 3400 ADDC A,#00098 F583 MOV DPH,A009A 10D5C7 L1: JBC TIME0_DOWN,DIS_ID ;等待计时时间到,时间到继续下步显示009D 80FB SJMP L1;************判断按键执行其他功能**************009F 3000C2 OTHER: JNB KEY_FLAG,DIS_ID ;判断是否有键按下,没有则继续显示学号00A2 C2A8 CLR EX0 ;如果有键按下,则关闭键盘中断,以免再次中断导致键值读错00A4 758C3C M OV TH0,#3CH ;开启定时器0,计算是否为长按键00A7 758AB0 M OV TL0,#0B0H00AA 7B1E M OV R3,#3000AC D28C SETB TR000AE 1200D0 L CALL KEYSCAN ;键盘扫描,以确定按键值和长按键00B1 200103 JB KEY_LONG,SEC_FUN ;判断是否为长按键,若是,则调用第二功能00B4 020064 LJMP DIS_ID ;否则继续显示学号00B7 C201 SEC_FUN:CLR KEY_LONG ;清楚长按键标志00B9 900252 MOV DPTR,#TAB_FUN ;利用查转向地址表法执行对应第二功能程序00BC E531 MOV A,KEY_D00BE 2531 ADD A,KEY_D00C0 73 JMP @A+DPTR;*********delay10ms子程序**************00C1 D2D3 DELAY_10MS: SETB PSW.3 ;10MS延时子程序00C3 780A DL0: MOV R0,#1000C5 797D DL1: MOV R1,#7DH00C7 00 NOP00C8 00 NOP00C9 D9FA DJNZ R1,DL100CB D8F6 DJNZ R0,DL000CD C2D3 CLR PSW.300CF 22 RET;**********键盘扫描子程序**************00D0 5390FD KEYSCAN: ANL P1,#11111101B ;键盘扫描子程序,先将P1.1赋0,P1.3赋100D3 439008 ORL P1,#00001000B00D6 E590 MOV A,P1 ;读回P1.5,P1.7的值,若P1.5为0,则键值为000D8 20E506 JB ACC.5,K100DB 753100 MOV KEY_D,#000DE 020104 LJMP OUT_KS1 ;若P1.7为1,则键值为100E1 20E706 K1: JB ACC.7,KS00E4 753101 MOV KEY_D,#100E7 020104 LJMP OUT_KS100EA 5390F7 KS: ANL P1,#11110111B ;再将P1.3赋0,P1.1赋1 00ED 439042 ORL P1,#01000010B00F0 E590 MOV A,P1 ;读回P1.5,P1.7的值,若P1.5为0,则键值为200F2 20E506 JB ACC.5,K200F5 753102 MOV KEY_D,#200F8 020104 LJMP OUT_KS100FB 20E706 K2: JB ACC.7,OUT_KS1 ;若P1.7为0,则键值为300FE 753103 MOV KEY_D,#30101 020104 LJMP OUT_KS1 ;读出键值后判断松手0104 E590 OUT_KS1: MOV A,P1 ;读回P1值0106 445F ORL A,#5FH ;屏蔽不相干位0108 F4 CPL A ;变0有效为1有效0109 600B JZ OUT_KS2 ;判断是否继续为0,若为0,则说明松手了,继续判断是否为长按键010B E531 MOV A,KEY_D ;若不为0,则显示键值010D 900241 MOV DPTR,#TAB_NUM ;查表法显示键值0110 93 MOVC A,@A+DPTR0111 120126 LCALL DIS_NUM ;调用显示键值程序0114 80EE SJMP OUT_KS1 ;循环判断是否松手0116 30D504 OUT_KS2: JNB TIME0_DOWN,OUT_KS3 ;判断定时器0是否定时完,若完,则置长按键标志0119 C2D5 CLR TIME0_DOWN ;否则,直接返回011B D201 SETB KEY_LONG011D C200 OUT_KS3: CLR KEY_FLAG ;先清除按键标志,关闭蜂鸣器,关闭定时器0,再返回011F C28C CLR TR00121 D2A8 SETB EX00123 D290 SETB P1.00125 22 RET;************显示键值子程序***************0126 7C05 DIS_NUM: MOV R4,#50128 F599 DIS_NUM1: MOV SBUF,A012A 109902 LP: JBC TI,DIS_NUM2012D 80FB SJMP LP012F DCF7 DIS_NUM2: DJNZ R4,DIS_NUM10131 22 RET;*********定时器0中断服务程序*************0132 758C3C TIME0: MOV TH0,#3CH ;重复初值0135 758AB0 MOV TL0,#0B0H0138 DB06 D JNZ R3,OUT_TIME0 ;递减软件计数器,若减为0,说明计数时间到013A 7B1E MOV R3,#30 ;否则,直接返回013C C28C CLR TR0 ;计数时间到后,重赋软件计数器初值,关闭计数器013E D2D5 SETB TIME0_DOWN ;设定计数时间到标志0140 32 OUT_TIME0: RETI;*********外部中断0中断服务程序**********0141 C0D0 INT0_IN: PUSH PSW ;保护现场0143 1200C1 LCALL DELAY_10MS ;出现中断信号后,先延时10ms0146 A2B2 MOV C,P3.2 ;读回P3.2引脚状态0148 4006 JC OUT_INT0 ;若继续为低电平,则确定有键按下,置按键标志,开启蜂鸣器后返回014A D200 SETB KEY_FLAG ;若为高电平,说明为干扰信号,标志位不置位直接返回014C C290 CLR P1.0014E D0D0 POP PSW ;恢复现场0150 32 OUT_INT0: RETI;*********外部中断1中断服务程序**********0151 C0E0 INT1_IN: PUSH ACC ;保护现场0153 908000 MOV DPTR,#ADC0809_AD ;给ADC0809地址,读回AD转换值0156 E0 MOVX A,@DPTR0157 F532 MOV ADC_DATE,A0159 D202 SETB ADC_FLAG ;AD读完数据标志置位015B D0E0 POP ACC ;恢复现场015D 32 RETI;*********AD功能程序*********************015E 908000 FUN_AD: MOV DPTR,#ADC0809_AD ;DPTR赋值为ADC0809地址0161 F0 MOVX @DPTR,A ;打开AD0162 100202 L3: JBC ADC_FLAG,NEXT2 ;等待AD是读数完成0165 80FB SJMP L30167 E532 NEXT2: MOV A,ADC_DATE ;将AD读数送A 0169 75F013 MOV B,#19 ;将读到的值乘以19得到应该显示的读数值016C A4 MUL AB016D D2D4 SETB PSW.4 ;保护第0组工作寄存器016F FA MOV R2,A ;先把该显示的值暂存0170 ABF0 MOV R3,B0172 C3 AD0: CLR C ;把暂存的值转化为4位BCD码0173 EA MOV A,R2 ;利用减法,先减1000,够减则相应位加1,否则,恢复原值0174 94E8 SUBB A,#0E8H ;继续减100,得到百位值,同上的方法0176 FA MOV R2,A ;十位和个位利用除法得到0177 EB MOV A,R30178 9403 SUBB A,#03H017A FB MOV R3,A017B 4004 JC AD01017D 0533 INC ADC_0017F 80F1 SJMP AD00181 EA AD01: MOV A,R20182 24E8 ADD A,#0E8H0184 FA MOV R2,A0185 EB MOV A,R30186 3403 ADDC A,#03H0188 FB MOV R3,A0189 EA AD1: MOV A,R2018A C3 CLR C018B 9464 SUBB A,#64H018D FA MOV R2,A018E EB MOV A,R3018F 9400 SUBB A,#00191 FB MOV R3,A0192 4004 JC AD110194 0534 INC ADC_10196 80F1 SJMP AD10198 EA AD11: MOV A,R20199 2464 ADD A,#64H019B 75F00A MOV B,#10019E 84 DIV AB019F F535 MOV ADC_2,A01A1 85F036 MOV ADC_3,B01A4 E536 MOV A,ADC_3 ;判断最后一位的值大小,若小于5,舍掉01A6 B40500 CJNE A,#5,AD2 ;否则,向高位进101A9 401C AD2: JC SHE01AB E535 MOV A,ADC_201AD 2401 ADD A,#101AF D4 DA A01B0 FC MOV R4,A01B1 540F ANL A,#0FH01B3 F535 MOV ADC_2,A01B5 EC MOV A,R401B6 C4 SWAP A01B7 540F ANL A,#0FH01B9 2534 ADD A,ADC_101BB D4 DA A01BC FC MOV R4,A01BD 540F ANL A,#0FH01BF F534 MOV ADC_1,A01C1 EC MOV A,R401C2 C4 SWAP A01C3 540F ANL A,#0FH01C5 2433 ADD A,#ADC_001C7 753600 SHE: MOV ADC_3,#001CA 1201D8 LCALL DIS_AD ;转换后显示转换值01CD C2D4 CLR PSW.4 ;恢复第0组工作寄存器01CF 200003 JB KEY_FLAG,AD_OUT ;等待其他键按下01D2 02015E LJMP FUN_AD01D5 02009F AD_OUT: LJMP OTHER;***********AD显示功能********************01D8 E535 DIS_AD: MOV A,ADC_2 ;先发送最后一位01DA 900241 MOV DPTR,#TAB_NUM ;查表得到段码01DD 93 MOVC A,@A+DPTR01DE F599 MOV SBUF,A ;发送段码01E0 109902 A_0: JBC TI,DIS_AD0 ;等待发完,未完继续等待,完成后发送下一个01E3 80FB SJMP A_001E5 E534 DIS_AD0: MOV A,ADC_101E7 900241 MOV DPTR,#TAB_NUM01EA 93 MOVC A,@A+DPTR01EB F599 MOV SBUF,A01ED 109902 A_1: JBC TI,DIS_AD101F0 80FB SJMP A_101F2 E533 DIS_AD1: MOV A,ADC_001F4 90024C MOV DPTR,#TAB_DOT01F7 93 MOVC A,@A+DPTR01F8 F599 MOV SBUF,A01FA 109902 A_2: JBC TI,DIS_AD201FD 80FB SJMP A_201FF 7400 DIS_AD2: MOV A,#00H0201 F599 MOV SBUF,A0203 109902 A_3: JBC TI,DIS_AD30206 80FB SJMP A_30208 7400 DIS_AD3: MOV A,#00H020A F599 MOV SBUF,A020C 109902 A_4: JBC TI,OUT_DIS_AD020F 80FB SJMP A_40211 22 OUT_DIS_AD: RET;************DA功能************************0212 900000 FUN_DA: MOV DPTR,#DAC0832_AD ;赋DA地址0215 7400 MOV A,#00H ;发送数据给DAC08320217 F0 UP: MOVX @DPTR,A0218 04 INC A ;A加1后继续传0219 00 NOP ;等待时间到021A 00 NOP021B 00 NOP021C 00 NOP021D 00 NOP021E 70F7 JNZ UP0220 14 DOWN: DEC A ;A加完后开始减1 0221 F0 MOVX @DPTR,A ;传送数据给DAC08320222 00 NOP0223 00 NOP0224 00 NOP0225 00 NOP0226 00 NOP0227 70F7 JNZ DOWN0229 200003 JB KEY_FLAG,DA_OUT ;判断是否有其他键按下,有即跳出DA功能,无则继续跳回DA功能022C 04 INC A022D 80E8 SJMP UP022F 02009F DA_OUT: LJMP OTHER0232 0000800235 8080 TAB_ID: DB 00H,00H,80H,80H,80H ;学号显示断码表0237 404046023A C686 DB 40H,40H,46H,0C6H,86H023C 6060FC023F FEDA DB 60H,60H,0FCH,0FEH,0DAH0241 FC60DA0244 F266B60247 BEE0FE024A F600 TAB_NUM: DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,00H ;数字断码表024C FD61DB024F F367B7 TAB_DOT: DB 0FDH,61H,0DBH,0F3H,67H,0B7H ;带小数点数字断码表0252 0164 TAB_FUN: AJMPDIS_ID ;第二功能转向地址表0254 0164 AJMP DIS_ID0256 215E AJMP FUN_AD0258 4112 AJMP FUN_DAEND符号值类型AC = 00D6H CONST 常量ACC = 00E0H CONST 常量AD0 = 0172H CODE 标号AD01 = 0181H CODE 标号AD1 = 0189H CODE 标号AD11 = 0198H CODE 标号AD2 = 01A9H CODE 标号ADC0809_AD = 8000H CONST 常量ADC_0 = 0033H CONST 常量ADC_1 = 0034H CONST 常量ADC_2 = 0035H CONST 常量ADC_3 = 0036H CONST 常量ADC_DATE = 0032H CONST 常量ADC_FLAG = 0002H CONST 常量AD_OUT = 01D5H CODE 标号A_0 = 01E0H CODE 标号A_1 = 01EDH CODE 标号A_2 = 01FAH CODE 标号A_3 = 0203H CODE 标号A_4 = 020CH CODE 标号B = 00F0H CONST 常量CONT = 006EH CODE 标号CY = 00D7H CONST 常量DAC0832_AD = 0000H CONST 常量DA_OUT = 022FH CODE 标号DELAY_10MS = 00C1H CODE 标号DIS_AD = 01D8H CODE 标号DIS_AD0 = 01E5H CODE 标号DIS_AD1 = 01F2H CODE 标号DIS_AD2 = 01FFH CODE 标号DIS_AD3 = 0208H CODE 标号DIS_ID = 0064H CODE 标号DIS_NUM = 0126H CODE 标号DIS_NUM1 = 0128H CODE 标号DIS_NUM2 = 012FH CODE 标号DL0 = 00C3H CODE 标号DL1 = 00C5H CODE 标号DOWN = 0220H CODE 标号DPH = 0083H CONST 常量DPL = 0082H CONST 常量EA = 00AFH CONST 常量ES = 00ACH CONST 常量ET0 = 00A9H CONST 常量ET1 = 00ABH CONST 常量EX0 = 00A8H CONST 常量EX1 = 00AAH CONST 常量F0 = 00D5H CONST 常量F1 = 00D1H CONST 常量FINISH_ID = 0030H CONST 常量FUN_AD = 015EH CODE 标号FUN_DA = 0212H CODE 标号IE = 00A8H CONST 常量IE0 = 0089H CONST 常量IE1 = 008BH CONST 常量INT0_IN = 0141H CODE 标号INT1_IN = 0151H CODE 标号IP = 00B8H CONST 常量IT0 = 0088H CONST 常量IT1 = 008AH CONST 常量K1 = 00E1H CODE 标号K2 = 00FBH CODE 标号KEYSCAN = 00D0H CODE 标号KEY_D = 0031H CONST 常量KEY_FLAG = 0000H CONST 常量KEY_LONG = 0001H CONST 常量KS = 00EAH CODE 标号L1 = 009AH CODE 标号L3 = 0162H CODE 标号LP = 012AH CODE 标号MAIN = 0030H CODE 标号NEXT = 0073H CODE 标号NEXT1 = 0084H CODE 标号NEXT2 = 0167H CODE 标号OTHER = 009FH CODE 标号OUT_DIS_AD = 0211H CODE 标号OUT_INT0 = 0150H CODE 标号OUT_KS1 = 0104H CODE 标号OUT_KS2 = 0116H CODE 标号OUT_KS3 = 011DH CODE 标号OUT_TIME0 = 0140H CODE 标号OV = 00D2H CONST 常量P = 00D0H CONST 常量P0 = 0080H CONST 常量P1 = 0090H CONST 常量P2 = 00A0H CONST 常量P3 = 00B0H CONST 常量PCON = 0087H CONST 常量PS = 00BCH CONST 常量PSW = 00D0H CONST 常量PT0 = 00B9H CONST 常量PT1 = 00BBH CONST 常量PX0 = 00B8H CONST 常量PX1 = 00BAH CONST 常量RB8 = 009AH CONST 常量REN = 009CH CONST 常量RI = 0098H CONST 常量RS0 = 00D3H CONST 常量RS1 = 00D4H CONST 常量SBUF = 0099H CONST 常量SCON = 0098H CONST 常量SEC_FUN = 00B7H CODE 标号SHE = 01C7H CODE 标号SM0 = 009FH CONST 常量SM1 = 009EH CONST 常量SM2 = 009DH CONST 常量SP = 0081H CONST 常量TAB_DOT = 024CH CODE 标号TAB_FUN = 0252H CODE 标号TAB_ID = 0232H CODE 标号TAB_NUM = 0241H CODE 标号TB8 = 009BH CONST 常量TCON = 0088H CONST 常量TF0 = 008DH CONST 常量TF1 = 008FH CONST 常量TH0 = 008CH CONST 常量TH1 = 008DH CONST 常量TI = 0099H CONST 常量TIME0 = 0132H CODE 标号TIME0_DOWN = 00D5H CONST 常量TL0 = 008AH CONST 常量TL1 = 008BH CONST 常量TMOD = 0089H CONST 常量TR0 = 008CH CONST 常量TR1 = 008EH CONST 常量UP = 0217H CODE 标号公有符号: 125 私有符号: 0。