80c51单片机课程设计word文档良心出品
第3章 80C51单片机指令系统及程序设计
PUSH direct POP direct PUSH 0E0H POP 0D0H
直接地址
PUSH Acc POP PSW
第3章 80C51单片机指令系统及程序设计
单片机原理与应用
3.2.2 算术运算类指令(24条)
——普通加法指令(4条)
Rn ADD A , direct
@Ri #data
ADD ADD ADD ADD
#data16
addr16 addr11 direct Rel
Bit
(X) ←
位寻址区的直接寻址位
X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容 将 ← 后面的内容传送到前面去
第3章 80C51单片机指令系统及程序设计
单片机原理与应用
2、寻址方式
取得操作数的地址的方法叫做寻址方式。寻址 方式与计算机的存储空间结构是密切相关的。灵活运 用各种寻址方式,可以大大的提高程序的运行效率。 直接寻址 立即寻址 寄存器寻址 寄存器间接寻址 相对寻址 变址寻址 位寻址
位操作指令:2 17 条 四周期指令: 条
80C51单片机的程序设计(完整版)
第四章 80C51单片微机的程序设计 单片微机的程序设计
4.1概述 概述
4.1.1 汇编语言格式
1. 计算机语言 计算机语言——机器语言、汇编语言与高级语言 机器语言、 机器语言 程序就是为计算某一算式或完成某一工作的若干指令的有序 集合。计算机的全部工作概括起来, 集合。计算机的全部工作概括起来,就是执行这一指令序列的 过程。这一指令序列称为程序。为计算机准备这一指令前的过 过程。这一指令序列称为程序。 程称为程序设计。目前, 程称为程序设计。目前,可用于程序设计的语言基本上可分为 三种:机器语言、汇编语言和高级语言。 三种:机器语言、汇编语言和高级语言。 ⑴ 机器语言 在计算机中,所有的数符都是用二进制代码来表示的, 在计算机中,所有的数符都是用二进制代码来表示的,指令 也是用二进制代码来表示。这种用二进制代码表示的指令系统 也是用二进制代码来表示。 称为机器语言系统,简称为机器语言。 称为机器语言系统,简称为机器语言。直接用机器语言编写的 程序称为手编程序或机器语言程序。 程序称为手编程序或机器语言程序。
两种语句都由四个部分组成。其中每一部分称为域也称为字段, 两种语句都由四个部分组成。其中每一部分称为域也称为字段, 各字段之间用一个空格或字段定界符分隔, 各字段之间用一个空格或字段定界符分隔,常用的字段定界符有 冒号“ ”“逗号 逗号“ 和分号“ 冒号“:”“逗号“,”和分号“;”。其中方括号括起来的是 可选择部分。 可选择部分。
标号(也称为名字 标号 也称为名字) 域: 也称为名字 用来说明指令的地址。标号可以作为LJMP、AJMP、 用来说明指令的地址。标号可以作为 、 、 LCALL及ACALL等指令的操作数。 等指令的操作数。 及 等指令的操作数 • 在指令语句中,标号位于一个语句的开头位置,由字母和数 在指令语句中,标号位于一个语句的开头位置, 符组成, 字母打头,冒号“ 结束。 符组成 , 字母打头 , 冒号 “ : ” 结束 。 在 80C51单片微机的汇编 单片微机的汇编 语言中,标号中的字符个数一般不超过8个 若超过8个 语言中,标号中的字符个数一般不超过 个,若超过 个,则以前 面的8个为有效 后面字符不起作用。 个为有效, 面的 个为有效,后面字符不起作用。 • 不能使用本汇编语言中已经定义了的符号作标号, 不能使用本汇编语言中已经定义了的符号作标号,比如指令 助记符(如 及寄存器符号名称(如 助记符 如ADD) 、伪指令 (如END) 及寄存器符号名称 如PC) 。 如 • 一条语句可以有标号,也可以没有标号, 一条语句可以有标号,也可以没有标号,标号的有无取决于 程序中的其它语句是否需要访问该条语句。 程序中的其它语句是否需要访问该条语句。 伪指令语句与指令语句主要不同是在其名字后面没有冒号。 伪指令语句与指令语句主要不同是在其名字后面没有冒号。
(05)第五章 80C51单片机的程序设计(2)
其程序段如下: 其程序段如下:
18
START: START: MOV DPTR,#ADDR16 DPTR,#ADDR16 MOV A,40H A,40H ;40H单元内容送A 40H单元内容送A CLR C ;清CY 思路与查表类似。 本条指令 RLC A 思路与查表类似。 ;A内容左移一位(A*2) 内容左移一位(A*2 及下1条 查表:定向取数; 查表:定向取数; 指令的作 JNC TABEL:定向转移。 ,转TABEL CY=0 散转: ;若CY=0 散转 定向转移。 用? INC DPH ;若CY=1,DPH内容+1 CY=1,DPH内容 内容+ TABEL: TABEL: JMP @A+DPTR ;多分支转移 … 可以插入其它指令吗? ADDR16: ADDR16: AJMP LOOP0 LOOP0 AJMP LOOP1 LOOP1 … AJMP LOOPn
(R4)(R5)*2=[(R4)*2+(R5)*2的进位 (R4)(R5)*2=[(R4)*2+(R5)*2的进位][(R5)*2的低8位] 的进位][(R5)*2的低 的低8
6
(R4)(R5)*2=[(R4)*2+(R5)*2的进位 (R4)(R5)*2=[(R4)*2+(R5)*2的进位][(R5)*2的低8位] 的进位][(R5)*2的低 的低8
调整取数指针并取数
MOV DPTR,#TAB ;取表格首地址 取表格首地址 ADD A,DPL ;(R4)(R5)*2的低 位调整 的低8位调整 的低 位调整DPL MOV DPL,A MOV A,DPH ADDC A,R4 ;(R4)(R5)*2的高 位调整 的高8位调整 的高 位调整DPH MOV DPH,A CLR A MOVCA,@A+DPTR;取对应的第一字节 取对应的第一字节 MOV R4,A 条指令是否可以 CLR A ;准备取下一字节 这2条指令是否可以 准备取下一字节 MOV A,#01H 用某条指令替换? 用某条指令替换 INC DPTR ;调整指针 调整指针 MOVCA,@A+DPTR;取对应的第二字节 取对应的第二字节 MOV R5,A
80C51基于单片机的电梯控制器设计_毕业设计(论文)
80C51基于单片机的电梯控制器设计_毕业设计(论文)单片机技术课程设计报告课题名称基于单片机的电梯控制器设计系别理学院专业 _电子信息科学与技术_2013年 6月 20 日毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
第五章80C51单片机的程序设计
第五章80C51单片机的程序设计
宏指令语句:用以代替汇编语言源程序中 重复使用的程序段的一种语句,由汇编程序 在汇编时产生相应的目标代码。 (2) 汇编语言语句的格式 为了使汇编语言程序清晰、明了、易读、 易懂,特对汇编语言的话句格式作了严格的 规定。 指令语句的格式为: 标号: 助记符(操作码) 操作数(参数) ;注释
第五章80C51单片机的程序设计
例: 双字节加法程序段。 设被加数存放于片内RAM的addr1(低位字 节)、addr2(高位字节),加数存放于adddr3(低 位字节)和addr4(高位字节),运算结果和数存 于addr1和addr2中。其程序段如下: START: PUSH ACC ;将A中内容进栈保护 MOV R0, #addr1 ;将addr1地址值送R0 MOV R1, #addr3 ;将addr3地址值送R1 MOV A, @R0 ;被加数低字节内容送A
程序就是为计算某一算式或完成某一工作 而编制的若干指令的有序集合。计算机的全部 工作概括起来,就是执行这一指令序列的过程。 这一指令序列称为程序。 目前,可用于程序设计的语言基本上可分 为三种:机器语言、汇编语言和高级语言。
第五章80C51单片机的程序设计
下面先对这三种语言作以简单说明,然后重点 介绍80C51单片机的汇编语言。 1 机器语言:机器语言在计算机中,所有的数符 都是用二进制代码来表示的,指令也是用二进制代 码来表示。这种用二进制代码表示的指令系统称为 机器语言系统,简称为机器语言。直接用机器语言 编写的程序称为手编程序或机器语言程序。 计算机可以识别机器语言,并加以执行。但是, 对于使用者来说,不易看懂,不便记忆,容易出错。 为了克服这些缺点,从而出现了汇编语言和高级语 言。
在编写汇编语言程序时,标号、注释并不 是所有的语句都必需的,可以缺省。对于无操 作数指令,操作数域也缺省。具体书写格式如 下: 标 号: 操作码域 操作数域 ;注释
基于80C51的八路抢答器的单片机课程设计
目录1 引言 (4)2 总体方案设计 (4)3 硬件电路设计 (5)3.1 单片机及其外围电路 (5)3.2 硬件电路组成 (6)4 系统软件设计 (10)4.1 初始化程序设计 (10)4.2 主程序设计 (11)4.3 倒计时30s子程序的设计 (12)4.4 外部中断T1中断子程序设计 (14)4.5 定时器T1中断子程序设计 (17)4.6 选手按键程序的设计 (18)4.7 数码管显示程序的设计 (19)5 系统调试和总结 (21)附录A 系统原理图 (22)附录B 源程序 (22)1 引言此次设计提出了用80C51单片机为核心控制元件,设计一个简易的抢答器,本方案以80C51单片机作为主控核心,和数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有倒计时和实时显示抢答选手的号码的特点,还有复位电路,使其再开始新的一轮的答题和比赛。
它的功能实现是比赛开始,主持人读完题之后按下总开关,倒计时开始,此时数码管开始进行30s的倒计时,是选手的思考时间,倒计时完后,才允许开始抢答,若有人答题,对应的会在数码管上显示出该选手的编号并由蜂鸣器发出声音,在30s倒计时内答题无效。
2 总体方案设计接3单片机完全兼容的高性能CMOS 8位单片机,MCS-51系列单片机以其推出时间早、配套资源丰富、开发手段完善、性价比高等特点而得到了广泛的使用,是单片机的主流品种。
AT89C51的内部资源主要包括:·和MCS--51 系列完全兼容的高性能8位CPU;·4K字节可重复编程的Flash存储器;·256字节的SRAM;·4个8位的并行口,共32条I/O口线;·3个16位的定时器/计数器;·6个中断源,2个中断优先级的中断系统;·一个全双工的串行口;·内部振荡器;·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路其最小系统主要包括复位电路,时钟电路,如下图3.1所示。
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单片机控制系统,如智能小车、智能家居等。
单片机课件 教案 80C51的结构和原理
RST EA ALE PSEN
2013-7-26 9
P0
P1 P2
P3
80C51单片机主要由以下功能部件组成:
(1)8位微处理器(CPU); (2)128B数据存储器(RAM),片外可扩展到64KB; (3)4KB程序存储器(ROM/FLASH),片外可扩展到 64KB (4)21个特殊功能寄存器(SFR) (5)4个8位并行I/O口(P0口、P1口、P2口、P3口) (6)1个全双工异步串行口(UART); (7)2个16位定时器/计数器(T0,T1); (8)5个中断源的中断系统(X0,T0,X1,T1,S)。
PSW
ALU P1口驱动器
1 8 9 10
振荡器
P3口驱动器
17 18 19 20
P1.0 ~ P1.7
2013-7-26 17
RST
P3.0 ~ P3.7
XTAL2 XTAL1
VSS
2.4.1 CPU的功能单元
运算器
累加器ACC 寄存器B PSW
控制器
指令寄存器IR 译码与控制逻辑
其他寄存器
程~R7
2013-7-26
10
2.2.2 80C51的应用模式 带总线扩展引脚的产品
扩展总线的应用模式
P2 AL E P0 G OE D7 Q7 : : : : D0 Q0 AB P0
不扩展总线的应用模式
+5V 8
74LS373
89S51
P1
80C31
EA PSE N W R RD
8 8
P2 DB P3 CB 8 P3.0~P3.5 含第二功能
注:类似的还有Philips公司的 87LPC64,20引脚 8XC748/750/(751),24引脚 8X749(752),28引脚 8XC754,28引脚 等等
单片机 第四章 80C51单片机汇编语言程序设计
(1)绝对调用指令:ACALL addr11 (2)长调用指令:LCALL addr16
(后续)
4.2.4 子程序设计
3.注意设置堆栈指针和现场保护 4.最后一条指令必须是RET指令 5.子程序可以嵌套,即子程序可以调用子程序
(接上)
6.在子程序调用时,还要注意参数传递的问题
子程序的基本结构
MAIN: ┇ ;MAIN为主程序或调用程序标号 ┇ LCALL SUB ;调用子程序 ┇ SUB:PUSH PSW PUSH ACC ;现场保护 ;
过程B
是 出口 (c) 循环结构
出口 (b) 分支结构
4.2.1
顺序程序结构
是汇编语言程序的最简单也是最基本的程序结 构。程序执行时一条接一条地按顺序执行指令, 无分支、循环以及调用子程序。 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A , #30H ADD A , #58H MOV 30H , A SJMP $
二、定时程序 (2)多重循环定时程序(单片机频率为6MHz) 例 MOV R5,#TIME1 LOOP2: MOV R4,#TIME2 ;单周期指令 LOOP1: NOP ;单周期指令 NOP DJNZ R4,LOOP1 ;双周期指令 DJNZ R5,LOOP2 ;双周期指令 RET 公式: 循环体时间=(TIME2*4+2+1)*TIME1*2µs 总时间=循环体时间+4µs
机器编辑->交叉汇编->串行传送
(过程图见教材92页)
单片机的开发过程
设计硬件 软件编程 软件仿真调试 源代码烧入单片机 插入单片机脱机工作 模数电路/单片机硬件 MCS51汇编语言/C
计算机/MEDWIN环境
80c51单片机的课程实训设计(电子万年历)
烟台南山学院单片机课程设计题目电子万年历姓名:所在学院:所学专业:班级:学号:指导教师:完成时间:2010-12-22单片机课程设计任务书一、基本情况学时:2周学分:2学分适应班级:08电气工程二、课程设计的意义、性质、目标、要求1.意义课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不少的,是非常必要的。
2.性质课程设计是提高学生单片机技术应用能力以及文字总结能力的综合训练环节,是配合单片机课程内容掌握、应用得的专门性实践类课程。
3.目标通过典型实际问题的实际,训练学生的软硬件的综合设计、调试能力以及文字组织能力,建立系统设计概念,加强工程应用思维方式的训练,同时对教学内容做一定的扩充。
4.要求(1)课程设计的基本要求单片机课程设计的主要内容包括:理论设计与撰写设计报告等。
其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;硬件设计包括单元电路,选择元器件及计算参数等;软件设计包括模块化层次结构图,程序流程图。
程序设计是课程设计的关键环节,通过进一步完善程序设计,使之达到课题所要求的指标。
课程设计的最后要求是写出设计总结报告,把设计内容进行全面的总结,若有实践条件,把实践内容上升到理论高度。
(2)课程设计的教学要求单片机课程设计的教学采用相对集中的方式进行,以班为单位全班学生集中到设计室进行。
做到实训教学课堂化,严格考勤制度,在实训期间(两周)累计旷课达到6节以上,或者迟到、早退累计达到8次以上的学生,该课程考核按不及格处理。
在实训期间需要外出查找资料,必须在指定的时间内方可外出。
课程设计的任务相对分散,每3—5名学生组成一个小组,完成一个课题的设计。
小组成员既有分工、又要协作,同一小组的成员之间可以相互探讨、协商,可以互相借鉴或参考别人的设计方法和经验。
单片机毕业设计80c51
单片机毕业设计80c51本文的毕业设计主要涉及到80C51单片机的应用。
本篇文章将介绍单片机的基本原理、在数字电子钟的设计中的具体应用、硬件设计和软件编程,并给出程序设计流程与详细实现过程。
一、 80C51单片机的基本原理只要有些基础的理解,学习单片机并不难。
单片机是包含CPU、ROM、RAM和其他外设的一种集成电路(IC)芯片。
单片机因其体积小、功耗低、成本低而在实际应用中广泛使用。
具有代表性的是80C51单片机系列。
80C51单片机有多种不同的型号,每个型号内置指令集在某种程度上都有所不同。
最简单的80C51型号内置的指令集只有40多种指令。
可以想象,由于指令集非常简化、结构紧凑,这样设计出来的芯片具有性能非常稳定的特点。
二、数字电子钟的设计数字电子钟是指采用数字电路或数字电子技术设计的显示时间的钟。
数字电子钟广泛应用于生活中的种种需要,能够比较稳定地显示时间,其他功能还包括定时、闹钟、备忘等选项。
三、数字电子钟的硬件设计数字电子钟的硬件设计涵盖了三个方面:1. 显示电路的设计数字电子钟的显视屏幕通常是7片LED,其中6片是数字显示屏,第7片为冒号显示屏。
这个设计采用COS-8886电路,典型的应用范围是数码电子表、温度计等。
2. 时基方案的设计时基方案是指数字电子钟中的总体控制方案。
这里我们采用的是74HC4060的集成电路。
使用74HC4060,可以非常方便地进行时钟频率的分频设计。
3. 蓝牙通信模块的设计蓝牙通信模块的设计中,我们使用了常见的蓝牙串口传输模块,如HC-06,其工作电压在3.3V ~ 5V之间,具备良好的兼容性。
四、数字电子钟的软件编程数字电子钟的软件编程主要涉及以下两个方面:1. 定时计数器的设计采用80C51单片机设计定时计数器时,需要考虑到时钟频率、计时器精度、转换精度等问题。
借助于8051单片机提供的Timer/Counter模块,可以很方便地实现这个功能。
2. 蓝牙通信程序设计程序设计中需要考虑到串口通信协议,包括蓝牙模块的波特率,校验位和数据位等问题。
80C51可控流水灯单片机课程设计报告
80C51单片机流水灯实训和调试报告班级:姓名:学号:1 目的单片机课程设计主要是为了让我们增进对80C51单片机电路的感性认识,加深对理论方面的理解。
了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。
另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。
2.2课题的意义这次单片机课程设计是为了通过对流水灯控制的设计加强学生团队配合的能力和创造力;综合运用专业及基础知识,解决实际工程技术问题的能力。
能够让学生深入真是的体会到所学的理论知识和实践相结合的过程。
找出自身的不足并加以改正。
2.3预期的目标对8个LED灯设计5种流水灯显示方式,用一个按键进行方式选择,并用一个数码管显示方式编号;用两个键来控制流水灯流动的速度。
2.4面对的问题这次课程设计是通过80C51位单片机实现。
但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。
而更为严峻的就是设计的最后还要将软硬件相结合。
首先我们需要通过protel将设计的实物的电路图画出来,再根据电路图连接实物电路。
2.5课题的技术LED灯的显示方式、模式切换按钮的控制、亮灯速度的按键控制等技术。
3系统分析3.1涉及的基础知识电路焊接:制造电子产品的重要手段。
80C51单片机指令系统:规定80C51单片机内操作的语句或命令。
LED数码管的显示:向数码的显示送数,控制系统的显示部分。
3.280C51单片机引脚图及引脚功能介绍本次实习的目的在于加深80C51单片机的理解,首先来简单认识一下,它的引脚如图3-1所示:图3.1 80C51的引脚图单片机的39个引脚大致可分为4类:电源、时钟、控制和I/O引脚。
1.电源:(1)VCC:芯片电源,接+5V;(2)VSS:接地端;2.时钟:XTAL1、XTAL2 :晶体振荡电路反相输入端和输出端。
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. 中断与定时器:学习中断系统、定时器的工作原理和应用实例。
基于某80C51地电子密码锁单片机课程设计
单片机系统课程设计成绩评定表设计课题:基于89C51的电子密码锁的设计学院名称:电气工程学院专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:基于89C51的电子密码锁的设计专业班级:自动F1203学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录1 硬件组成与方案设计 (4)1.1 硬件组成 (4)1.2 方案设计 (4)2 单元电路设计 (4)2.1 时钟电路设计 (4)2.2 复位电路设计 (5)2.3 键盘电路设计 (5)2.4 显示电路设计 (6)2.5 整体电路图设计 (8)3 系统软件工作流程图 (9)3.1 主程序工作流程 (9)3.2 键盘扫描程序 (10)4 系统功能实际测试 (10)4.1 程序实际编译测试 (10)4.2 单片机实际操作演示 (11)总结 (16)参考文献 (17)附录A:整体电路图 (18)附录B:详细程序 (19)概述:自从人类开始制造锁以来长期所使用的锁都是机械锁,通俗的讲就是弹子芯锁。
而传统的弹子芯锁,由于其本身锁芯密齿的有限加之开锁工具钥匙的容易复制性,使得其安全性大大降低。
随着人们生活质量的提高,如何实现安全有效的防盗这一问题受到越来越多人的关注。
传统的机械锁由于安全性能太差,被撬的事件屡见不鲜。
相比之下,电子密码锁因其保密性强,使用灵活性好,安全系数高,受到了广大用户的欢迎。
电子密码锁作为一种新型的锁,安全性有了较大的提高,还省去了传统机械锁的钥匙,使用者只要记得其密码,便可以开启,从而大大提高了防盗功能。
本文主要设计了一种以单片机AT89C51为核心的电子密码锁。
详细地介绍了该电子密码锁以及其外围电路的设计过程。
电子密码锁主要由三部分组成:键盘输入部分、单片机最小系统部分、液晶显示部分。
通过外围键盘来进行密码输入,单片机则负责把输入的密码与设定好的密码进行比对从而判断是否输入正确,而液晶显示部分则负责进行相关提示信息的显示。
80c51单片机课程设计word文档良心出品
单片机课程设计报告题目:基于51单片机发光牌与伴奏音乐系统专业班级机械111班姓名学号一、设计目的(一)、以AT89C51单片机为主体,设计一个有伴奏音乐的发光牌。
1、功能放光牌用数码管显示,分别按顺序显示出“2”、“0”、“1”、“3”的数字样。
而且不断的循环从左到右显示。
同时还伴有歌名为“同一首歌”的旋律。
发光牌由数码管进行设置,歌声的旋律则由蜂鸣器来实现。
2、效果即数码管为发光牌,同时伴有歌声发光牌效果图可如下二、硬件系统AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。
(1)、硬件总电路图如下其中AT89C51单片机的设置如下选择12MH的晶振,该单片机选用24V的电压。
其中电路图中的7447芯片中的A,B,C,D,E,F,G 引脚是引出来用来分别接四个数码管的。
其中低电平代表通电,其数码管的0~9的数字代码如下:0X01、0X12、0X24、0X38、0X41、0X52、0X64、0X78、0X81、0X92.并通过p2.0、p2.1、p2.2、p2.3引脚分别来控制四个数码管的得电顺序。
从而实现发光牌的设置和控制。
、对蜂鸣器的控制的电路介绍)2(.为般是指时钟电路引脚、其中XTAL1XTAL2在片内它是振荡器反相放大器的输接外部晶振和微调电容的一端,TAL1:X入;若使用外部时钟时,该引脚必须接地。
在片内它是振荡器反相放大器的:接外部晶振和微调电容的另一端,XTAL2 输出;若使用外部时钟时,该引脚接外部时钟的输入端。
利用这两个引脚可以对歌曲的节奏和时间进行控制。
从而演奏蜂鸣器可根据不同代码发出声音。
其中歌曲的谱音可用代码表示,出“同一首歌”的旋律。
80C51单片机硬件设计
80C51单片机硬件设计摘要80C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。
这里介绍的是如何用80C51单片机来实现的毕业设计,该设计是结合科研项目而确定的设计类课题。
本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。
整个系统的电路结构简单,可靠性能高。
实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。
采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用关键词80C51单片机、光电检测器、PWM调速、电动小车Abstract80C51 is a 8 bit single chip computer.Its easily useing and multi-function suffer large users. This article introduce the CCUT graduation design with the 80C51 single chip copmuter.This design combines with scientific research object. This system regard the request of the topic, adopting 80C51 for controling core,super sonic sensor for test the hinder.It can run in a high and a low speed or stop automatically.It also can record the time ,distance and the speed or searching light and mark automatically The electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyse.The adoption of technique as:(1)Reduce the speed by program the engine;(2)efficient application of the sensor;(3)The adoption of the new display chip.Keywords 80C51 single chip computer、light electricity detector、PWM speed adjusting目录摘要 (I)Abstract (II)第一章前言 (4)第二章方案设计与论证 (6)(一)直流调速系统 (6)(二)检测系统 (7)(三)显示电路 (12)(四)系统原理图 .................................. 错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计报告题目:基于51单片机发光牌与伴奏音乐系统专业班级机械111班姓名学号一、设计目的(一)、以AT89C51单片机为主体,设计一个有伴奏音乐的发光牌。
1、功能放光牌用数码管显示,分别按顺序显示出“2”、“0”、“1”、“3”的数字样。
而且不断的循环从左到右显示。
同时还伴有歌名为“同一首歌”的旋律。
发光牌由数码管进行设置,歌声的旋律则由蜂鸣器来实现。
2、效果即数码管为发光牌,同时伴有歌声发光牌效果图可如下二、硬件系统AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。
(1)、硬件总电路图如下其中AT89C51单片机的设置如下选择12MH的晶振,该单片机选用24V的电压。
其中电路图中的7447芯片中的A,B,C,D,E,F,G 引脚是引出来用来分别接四个数码管的。
其中低电平代表通电,其数码管的0~9的数字代码如下:0X01、0X12、0X24、0X38、0X41、0X52、0X64、0X78、0X81、0X92.并通过p2.0、p2.1、p2.2、p2.3引脚分别来控制四个数码管的得电顺序。
从而实现发光牌的设置和控制。
、对蜂鸣器的控制的电路介绍)2(.为般是指时钟电路引脚、其中XTAL1XTAL2在片内它是振荡器反相放大器的输接外部晶振和微调电容的一端,TAL1:X入;若使用外部时钟时,该引脚必须接地。
在片内它是振荡器反相放大器的:接外部晶振和微调电容的另一端,XTAL2 输出;若使用外部时钟时,该引脚接外部时钟的输入端。
利用这两个引脚可以对歌曲的节奏和时间进行控制。
从而演奏蜂鸣器可根据不同代码发出声音。
其中歌曲的谱音可用代码表示,出“同一首歌”的旋律。
三、软件系统protues,仿真用软件软件编程序用keil软件其中控制歌曲播放的流程图如下开始定义晶振频率12000000HZ定义普通音符演奏的长度分率音符定时器初暂音符发生中断根据调号及升降八度计来生成新的频率表、算歌曲长度算出普通音符的演奏长度结束控制歌曲的子程序的功能是可以计算出歌曲的播放时间,与各个音符的停顿。
(3)对数码管控制a、数码管的接线图如下其中数码管的放大电路端如下图所示其中连接R1端的可与p22、p20、p21、p23连接。
b、对数码管控制的流程图如下开定义延迟时间常数显示第一个数码管显示第二个数码管显示第三个数码管“1”显示第四个数”3码管“结束四、仿真结果软件来实现,其仿真电路图如下仿真效果和预期一样。
其仿真用protues五、附件程序源代码如下#include <REG52.H>#include <stdio.h>#include SoundPlay.hvoid Delay1ms(unsigned int count){unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}65000 //定义延迟时间常数#define DELAYTIME unsigned int temp1;延时程序void delay(unsigned int temp)//{while(--temp);}同一首歌// unsigned char code Music_Same[]={0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x030x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,0x00,0x00 };//********************************************************************************* **main(){InitialSound();while(1){Play(Music_Same,0,3,360);Delay1ms(500);}P2=0; //led is offwhile(1){P2=0X24;//显示2,P2口输出其BCD码和扫描码P2.temp1=DELAYTIMdelay(temp1);P2=0X01;//显示0,P2口输出其BCD码和扫描码P2.0temp1=DELAYTdelay(temp1);P2=0X12;//显示1,P2口输出其BCD码和扫描码P2.1temp1=DELAYTIME;delay(temp1);P2=0X38;//显示3,P2口输出其BCD码和扫描码P2.3temp1=DELAYTIME;delay(temp1);}}/**************************************************************************SOUNDPLAY FOR 51MCUCOPYRIGHT (c)2005 BY JJJ.--ALL RIGHTSRESERVED --File Name: SoundPlay.hAuthor: Jiang Jian JunCreated: 2005/5/16Modified: NORevision: 1.0*******************************************************************************//*说明**************************************************************************曲谱存贮格式unsigned char code MusicName{音高,音长,音高,音长...., 0,0}; 末尾:0,0 表示结束(Important)音高由三位数字组成:个位是表示1~7 这七个音符十位是表示音符所在的音区:1-低音,2-中音,3-高音;百位表示这个音符是否要升半音: 0-不升,1-升半音。
音长最多由三位数字组成:个位表示音符的时值,其对应关系是:|0 |1 |2 |3 | 4 | 5 | 6 (n): 数值||几分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n十位表示音符的演奏效果(0-2): 0-普通,1-连音,2-顿音百位是符点位: 0-无符点,1-有符点调用演奏子程序的格式Play(乐曲名,调号,升降八度,演奏速度);|乐曲名: 要播放的乐曲指针,结尾以(0,0)结束;|调号(0-11) : 是指乐曲升多少个半音演奏;|升降八度(1-3) : 1:降八度, 2:不升不降,3:升八度;|演奏速度(1-12000): 值越大速度越快;***************************************************************************/ #ifndef __SOUNDPLAY_H_REVISION_FIRST__#define __SOUNDPLAY_H_REVISION_FIRST__//**************************************************************************#define SYSTEM_OSC 12000000//定义晶振频率12000000HZ#define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔sbit BeepIO = P3^7; //定义输出管脚unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 };//1~7在频率表中的位置unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存//************************************************************************** void InitialSound(void)BeepIO = 0;Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; // 计算TL1应装入的初值(10ms的初装值)Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%6; // 计算TH1应装入的初值TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TMOD |= 0x11;ET0 = 1;ET1= 0;TR0= 0;TR1 = 0;EA = 1;}void BeepTimer0(void) interrupt 1 //音符发生中断{BeepIO = !BeepIO;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0;}//************************************************************************** void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed){unsigned int NewFreTab[12]; //新的频率表unsigned char i,j;unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength; unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;for(i=0;i<12;i++) // 根据调号及升降八度来生成新的频率表{j = i + Signature;if(j > 11){j = j-12;NewFreTab[i] = FreTab[j]*2;}elseNewFreTab[i] = FreTab[j];if(Octachord == 1)NewFreTab[i]>>=2;else if(Octachord == 3)NewFreTab[i]<<=2;}SoundLength = 0;while(Sound[SoundLength] != 0x00) //计算歌曲长度{SoundLength+=2;}Point = 0;Tone = Sound[Point];Length = Sound[Point+1]; // 读出第一个音符和它时时值LDiv0 = 12000/Speed; // 算出1分音符的长度(几个10ms)LDiv4 = LDiv0/4; // 算出4分音符的长度LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最长间隔标准TR0= 0;TR1 = 1;while(Point < SoundLength){SL=Tone_x0010_; //计算出音符SM=Tone/10_x0010_;//计算出高低音SH=Tone/100; //计算出是否升半CurrentFre =NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率if(SL!=0){if (SM==1) CurrentFre >>= 2; //低音if (SM==3) CurrentFre <<= 2; //高音Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值Sound_Temp_TH0 = Temp_T/256;Sound_Temp_TL0 = Temp_T%6;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿}SLen=LengthTab[Length_x0010_]; //算出是几分音符XG=Length/10_x0010_; //算出音符类型(0普通1连音2顿音)FD=Length/100;LDiv=LDiv0/SLen; //算出连音音符演奏的长度(多少个10ms)if (FD==1)LDiv=LDiv+LDiv/2;if(XG!=1)if(XG==0) //算出普通音符的演奏长度if (SLen<=4)LDiv1=LDiv-LDiv4;elseLDiv1=LDiv*SOUND_SPACE;ElseLDiv1=LDiv/2; //算出顿音的演奏长度elseLDiv1=LDiv;if(SL==0) LDiv1=0;LDiv2=LDiv-LDiv1; //算出不发音的长if (SL!=0){TR0=1;for(i=LDiv1;i>0;i--) //发规定长度的音{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;}}if(LDiv2!=0){TR0=0; BeepIO=0;for(i=LDiv2;i>0;i--) //音符间的间隔{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;}}Point+=2;Tone=Sound[Point];Length=Sound[Point+1];}BeepIO = 0;}//************************************************************************** #endif。