当前位置:文档之家› 基于AT89S52单片机的抢答器毕业设计(c语言)

基于AT89S52单片机的抢答器毕业设计(c语言)

基于AT89S52单片机的抢答器毕业设计(c语言)
基于AT89S52单片机的抢答器毕业设计(c语言)

学士学位论文(设计)

论文题目基于单片机的多路智能抢答器的设计

作者姓名

指导教师

所在院系

专业名称

完成时间2009年5月15日

XXXX学院本科毕业论文(设计)诚信承诺书

目录

摘要 (1)

1.概述 (2)

1.1 研究目标与任务 (2)

1.2 方案设计与论证 (2)

1.3 研究步骤 (3)

2.电路原理图的设计 (3)

2.1 电路组成框图 (4)

2.2 电路原理图 (4)

3.电路硬件设计 (5)

3.1单片机最小系统 (5)

3.2按键电路 (10)

3.3显示电路 (12)

3.4报警电路 (13)

4.系统软件的设计 (13)

4.1编译软件——Keil C (13)

4.2仿真软件——Proteus (15)

4.3制板软件——Protel DXP (16)

5.调试及故障分析 (18)

5.1程序调试 (18)

5.2硬件焊接及故障分析 (18)

6.总结 (19)

7.致谢 (20)

参考文献 (21)

附录一 (22)

附录二 (33)

XXXX学院学士学位论文评审表

基于单片机的多路智能抢答器的设计

摘要:抢答器是一种通过数码显示和警示等手段,准确、公正、直观地判断出第一抢答者的设备。本文介绍了一种以STC89C52为核心的多

路智能抢答器系统,并分别从硬件和软件两方面对设计思想进行了

阐述。硬件设计包括:单片机最小系统,按键电路、显示电路、报

警电路;软件设计包括Keil编译程序、Proteus电路仿真、Protel DXP

电路制板。经过调试和运行,该系统达到了预期目标,具有反应灵

敏、功能齐全、实用性强的特点。

关键词:单片机键盘显示报警

中文分类号:TP368.1

DESIGN OF MULITIPATH CALLING IMPLEMENT

BASED ON MCS

Abstract:Calling Implement could accurate, impartial, penetrating to decide who is the No.1 to press the button, and shows the results through

nixietube. A kind of multipath calling implement is introduced in the

thesis, and the STC89C52 is its hard core. Hardware design include:

the smallest MCS system, keyboard circuit, display circuit, alarm

circuit; Software design include: Keil compiler, Proteus simulation,

Protel DXP system circuit board. Also, the design method of the

control system was expounded from aspects of the software and the

hardware. And after debugging and running, the system reached the

expected target, which have many advantages such as fast reaction, all

ready function and good practicability.

Keywords:MCS, keyboard, display, alarm

基于单片机的多路智能抢答器的设计

1.概述

随着计算机技术的发展,单片机技术已经成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛,特别是在工业控制和仪表仪器智能化中扮演着举足轻重的角色。在单片机家族的众多成员中,52系列单片机以其优越的性能、成熟的技术、高可靠性和高性价比,成为国内单片机应用领域内的主流。

各种知识竞赛、文娱活动的广泛开展,使抢答器成了必不可少的电子设备,它为参赛选手提供了公正、客观、快速的裁决,已逐渐发展成为一种成型的电子产品,但市面上所售抢答器价格一般较贵且多为小规模集成电路构成,其性能单一,工作起来不够理想。本文介绍了一种以STC89C52单片机为核心的智能抢答器,它充分利用了单片机系统的优点,具有结构简单、功能强大、可靠性好、成本较低,实用性强的特点。

1.1 研究目标与任务

抢答器在电视台、商业机构、学校及企事业单位都有广泛应用,它为各种竞赛增添了刺激性、娱乐性,在一定程度上丰富了人们的业余生活。它的基本功能是:有几个小组参赛,当主持人允许抢答的情况下,优先抢答者发出抢答信号,此时其他参赛组的抢答电路即失去控制作用;在主持人解除抢答信号后,电路才自动恢复到各组又均可抢答的状态中。

本课题目标是开发并且制作一种结构简单、实用性强、基于单片机的智能抢答器,从而公正、快速、准确的裁决出第一抢答者。

1.2 方案设计与论证

方案一:

系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发[1, 2]。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统

功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较烦琐,使用不太方便。

方案二:

采用52系列单片机STC89C52作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现[3,4]。由于使用单片机作为控制核心,其技术比较成熟,应用起来方便、简单,并且周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩展和更改。

经过比较,显然方案二比方案一简单的多,不但从性能上优于方案一,而且在使用上及其功能的实现上都较方案一简洁,并且由于单片机具有优越的高集成电路性,使其工作速度更快、效率更高。另外STC89C52单片机可以采用12MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩展功能。而方案一采用了中小规模集成电路,由于其复杂的电路性能,可能会使信号的输入输出产生延时及不必要的误差。因此选择方案二比较适合。

1.3 研究步骤

(1)根据要求,设计出比较合理的方案,选取合适的硬件器件,熟悉各个器件的性能;

(2)编写程序,根据设计的要求,编制主程序以及各子程序模块;

(3)通过Keil、Proteus等软件进行仿真;

(4)仿真成功后开始搭建实物电路,并且进行调试;

(5)进行PCB设计;

(6)实验总结;

(7)撰写研究报告。

2.电路原理图的设计

根据设计功能的要求,电路应该包括控制电路,按键电路,以及用来显示裁决结果的显示电路。除了用数码管显示目前的动作情形,同时也需要用声音提醒或者警告操作人员,因此也在电路设计时加入了报警电路。

2.1 电路组成框图

抢答器电路总体设计方框图如图1所示:

图1抢答器总体设计方框图

2.2 电路原理图

抢答器电路原理图如图2所示,控制电路以单片机STC89C52为核心,按键电路采用矩阵式键盘的接法,显示电路采共阴极数码管动态显示,报警采用蜂鸣器报警电路。

图2抢答器电路设计原理图

3.电路硬件设计

电路硬件包括:单片机最小系统(即控制电路)、按键电路、显示电路、报警电路。

3.1单片机最小系统

(1)系统结构

总线型单片机非总线应用的最小系统示意图如图3所示,只有单片机和时钟电路、复位电路构成的最简单电路,并行总线不用于外围扩展,可作为应用系统的I/O口使用。

图3 总线型单片机非总线应用的最小系统

(2)系统特点

○1有大量可使用的I/O口;

○2没有并行扩展,应用系统结构简单;

○3外围器件只能通过UART口的串行移位方式或虚拟串行扩展总线进行扩展。

(3)STC89C52单片机

STC89C52单片机具有片内E2PROM,是真正的单片机,由于不需要外接EPROM,所以应用非常普遍。

STC89C52的主要工作特性如下:

○1片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为10000次;

○2片内数据存储器内含256字节的RAM;

○3具有32根可编程I/O口线;

○4具有3个可编程定时器;

○5中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;

○6串行口是具有一个全双工的可编程串行通信口;

○7具有一个数据指针DPTR;

○8低功耗工作模式有空闲模式和掉电模式;

○9具有可编程的3级程序锁定位;

○10单片机STC89C52工作电源电压为5(1+0.2)V,且典型值为5V;

○11单片机STC89C52最高工作频率为24MHz,单片机正常工作时,都

需要有一个时钟电路和一个复位电路。

STC89C52的内部结构图如图4所示:

图4 STC89C52内部结构图

52单片机有4个8位并行输入/输出接口:P0、P1、P2和P3口这四个口既可以并行输入或输出8位数据,又可按位使用,即每一位均能独立做输入或输出用。图5为各接口的电气结构示意图[5,6]:

(a)P0

口位

(c)P2口位

交替输

(d)P3口位

(b)P1口位

图5 P0、P1、P2、P3口的电气结构图

I/O端口的结构

○1锁存器加引脚的典型结构

52的I/O端口都由内部总线实现操作控制。P0-P3四个I/O端口都可以用作普通I/O口,因此,要求有输出锁存功能。内部总线又是分时操作,故每个I/O端口都有相应的锁存器。然而,I/O端口又是外部的输入/输出通道,必须有相应的引脚,故形成了I/O端口的锁存器加引脚的典型结构。

○2I/O的复用结构

I/O端口的总线复用。在使用并行扩展总线时,P0口可做数据总线口和低8位地址总线口,P0口为三态双向口。P0口输出并行总线的地址/数据信号;P2口输出高8位地址信号。

I/O端口的功能复用。P3口为复用的I/O端口,口内有复用输出功能的控制端;引脚也有复用输入功能的控制端。P3口的第二功能输入引脚功能表如表1所示:

表1 P3口的第二功能输入引脚

端口引脚第二功能说明

P3.0 RXD 串行数据接受

P3.1 TXD 串行数据发送

P3.2 0

INT外部中断0申请

P3.3 1

INT外部中断1申请

P3.4 T0 定时/计数器0输入

P3.5 T1 定时/计数器1输入

P3.6 WR外部数据存储器写选通

P3.7 RD外部数据存储器读选通

○3准双向口结构

P0、P1、P2、P3口作为普通I/O口使用时,都是准双向口结构,准双

向口的典型结构如图(5)-b所示,准双向口的输入操作和输出操作本质不同,输入操作是读引脚状态;输出操作是对口锁存器的写入操作。由口锁存器和引脚电路可知:当由内部总线给口锁存器置0或1时,锁存器中的“1”或“0”状态立即反映到引脚上。但是在输入操作(读引脚)时,如果口锁存器状态为“0”,引脚被钳位在“0”状态,导致无法读出引脚的高电平输入。

I/O端口的应用特性

○1端口的自动识别。无论是P0、P2口的总线复用,还是P3口的功能复用,内部资源会自动选择,不需要通过指令的状态选择。

○2口锁存器的读、改、写操作。许多涉及到I/O端口的操作,实际上只是设计口锁存器的读出、修改、写入的操作。这些指令都是一些逻辑运算指令、置位/清除指令、条件转移指令以及将I/O口作为目的地址的操作指令。

○3P0口作为普通I/O口使用。当不使用并行扩展总线时,P0、P2口都可以做普通I/O口。但是P0口为开漏结构,作I/O口时必须外加上拉电阻。

○4I/O口的驱动特性。P0口每一个I/O口可输出驱动8个TTL负载。而P1-P3口只能驱动4个。

(4)时钟电路

时钟电路用于产生单片机工作所需要的时钟信号。设计中采用了比较典型的内部时钟方式,如图6所示:

其工作原理是:片内高增益反向放大器XTAL1、XTAL2外接作为反馈元件的晶体(呈感性)与电容组成的并联谐振回路构成一个自激振荡器向内部时钟电路提供振荡时钟。

振荡器的频率主要取决于晶体的振荡频率,一般晶体可以在1.2-12MHz 之间任选。电容的大小影响振荡器电路的稳定性和快速性,其值有微调作用,通常取30pF左右。在设计电路板时,晶振和电容应尽可能的靠近芯片,以减小分布电容,保证振荡器振荡的稳定性[7]。

图6 单片机外接晶体的接法

(5)复位电路

复位是单片机的初始化操作,其主要功能是将程序计数器PC初始化为0000H,使单片机从0000H单元开始执行程序。复位操作不影响片内RAM 的内容,但是对SFR中的一些寄存器有影响。

图7各种复位电路

单片机的复位是靠外部电路复位的。其复位方式有上电复位和按键手动复位两种。复位电路中的电阻、电容数值的设置,是为了保证在RST管脚处至少保持两个机器周期(24个振荡周期)的高电平而完成复位过程的,也就是在斯密特触发器的输入端维持在最低阀值电压以上足够长时间,使斯密特触发器产生一个正脉冲。电阻值通常为1K,电容值通常为22uF。图7为几种常见的复位电路接法[8]。

3.2按键电路

(1)键盘接口和键输入软件中应解决的几个问题

○1消除抖动

按键的合断过程存在一个抖动的暂态过程,这种抖动的暂态过程大约经过5-10ms的时间,人的肉眼是察觉不到的,但对于高速的CPU是有反

应的,可能产生误处理。为了保证键动作一次,仅作一次处理,必须采取措施以消除抖动。本设计中采用了软件消抖的方法。

软件消抖是用延时来躲过暂态抖动过程,执行一段大于10ms的延时程序后,再读取稳定的键状态。

○2键盘的监测方法

对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对于是否有键按下的信息输入方式有中断方式和查询方式两种。

(2)行列式键盘工作原理

行列式键盘又叫矩阵式键盘。用I/O线组成行、列结构,按键设置在行与列的交点上,这样可以节约I/O口线。4×4矩阵式键盘的示意图如图8所示:

图8 4×4矩阵式键盘的示意图

检测键盘上有无键按下可采用查询工作方式。

首先由P1口的高四位输出0电平,从P1口的低四位读取键盘的状态;再从P1口的低四位输出0电平,从P1口的高四位读取键盘状态。将两次读取的结果组合起来就可以得到一组特征编码[9],如表2所示:

表2 4×4矩阵式键盘键码表

按键

K0 K1 K2 K3 K4 K5 K6 K7 K8 名称

特征

77H 7BH 0BBH 0DBH 7DH 0BDH 0DDH 7EH 0BEH 键码

按键

K9 KA KB KC KD KE KF 未按

名称

特征

0DEH 0B7H 0D7H 0EEH OEDH 0EBH 0E7H 0FFH

键码

3.3显示电路

显示电路为六位共阴极LED动态显示接口电路。

单个共阴极7段数码的段选码如表3所示:

表3 7段共阴数码管段选码表

显示字符0 1 2 3 4 5 6 7 8 9 共阴极段选码3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 共阴极LED数码管将发光二极管的阴极(负极)短接后作为公共阴极,当驱动信号为高电平、“-”端接低电平时才能发光。这样的多位显示,将所有位的选线并联在一起,由一个8位I/O口控制,实现各部分的分时选通。由于所有位选皆由一个I/O口控制,在每一瞬间6位LED会显示相同的字符。想要每一位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字型码,而位选则控制I/O口在该显示位送出低电平,以保证该位显示相应字符。如此轮流,使每一位分时显示该位应显示字符。其管脚配置及动态显示接口电路如图9所示:

图9共阴极数码管管脚配置及动态显示接口电路

3.4报警电路

考虑到实验室现有的元器件,设计中采用了蜂鸣器报警电路,如果有条件还可以采用更高级的语音报警电路,那样更加直观方便。电路的接法如图10所示[10]:

图10蜂鸣器报警电路

工作工程:蜂鸣器经过74LS04接在P3.7口,当P3.7输出为低电平“0”时,74LS04端输出为“1”,晶体管导通,蜂鸣器两端获得约+5V的电压而鸣叫;当P3.7输出为高电平“1”时,三极管截止,蜂鸣器停止鸣叫。

电路中74LS04不仅起到了反向作用,还有增大负载能力的作用。4.系统软件的设计

众多软件的联合使用对应用系统的设计起到了很重要的作用,在实物制作之前对设计进行仿真,可以检验程序的执行结果是否与设计的功能相同,这样可以对程序进行改进。在这里用到了Keil C和Proteus,同时在电路制板时用到了Protel DXP绘制PCB板。

4.1编译软件——Keil C

(1)Keil C的使用

Keil C是众多单片机应用开发软件中优秀的软件之一,它集编辑,编译,仿真等于一体,同时支持汇编和C语言的程序设计,本设计使用它作为C编译器,使用方法如下:

首先建立一个工程,然后将C程序文件添加到工程下链接编译,接着设置生成并输出HEX文件,如果程序编译后有错误就进行调试[11]。

(2)程序设计

完整的程序参见附录。

○1主流程

主流程图如图11所示:

图11主流程图图12按键扫描流程

○2按键扫描流程

每一个按键都对应一个处理子程序,通过对按键扫描进行按键识别。按键识别的方法包含了行扫描法和反转法。按键扫描流程图如图12所示,包括了对矩阵键盘和调整时间按键的扫描。

○3中断流程图

设计采用了外部中断,中断程序流程图如图13所示:

图13 中断流程图

4.2仿真软件——Proteus

Proteus是一款常用的仿真软件,和Keil联合使用,对设计的完善起到很大的作用,也对硬件的搭建提供了连线依据。

Proteus的使用相对比较简单,在元件库中找到相应电路所要用到的元件后放置在原理图纸上,然后用导线连接起来就可以了。

在选用元件后,可以在原理图纸上双击某元件,更改它的属性,如电阻的名称、阻值等。本设计中使用了单片机,需要加载程序文件。之前已经使用Keil C生成了所需要的HEX文件,直接加载进来就可以了。

这时就可以运行仿真了。在仿真之前最好再检查一下电路的连接,确认正确之后再运行,以免粗心造成运行结果与设计的不相符合。

设计的仿真原理图如图14所示:

图14电路仿真原理图

4.3制板软件——Protel DXP

PCB电路板的设计流程[12]:

(1)设计原理图

创建一个新项目;创建一张新的原理图图纸;查找元件;在原理图中放置元件;设置元件属性;放置电源和接地符号;绘制原理图。

(2)定义元件封装

原理图设计完成后,元件的封装有可能被遗漏或有错误。对于用户自己设计的元件或者是某些特殊元件,必须由用户自己定义或修改元件的封装。

(3)设置PCB图纸

可以设定PCB电路板的结构及尺寸,板层数目,通孔的类型,网格的大小等,既可以用系统提供的PCB设计模板进行设计,也可以手动设计PCB 板。

(4)生成网表和加载网表

网表是电路原理图和印刷电路板设计的接口,只有将网表引入PCB系统后,才能进行电路板的自动布线。

(5)布线

设置布线规则后,先自动布线,然后手工调整。在元件很少且布线简单的情况下,也可以直接进行手动布线。制成的电路板如图15所示:

图15抢答器的PCB电路图

《单片机C语言程序设计》课程标准

广州康大职业技术学院 《单片机C语言程序设计》课程标准 一、基本信息 适用对像:应用电子技术专业的学生 课程代码: 学分:2 学时:36 制定人:徐又又 制定时间:2010年9月 所属系部:自动化 批准人:陶甫廷 二、课程的目标 1.专业能力目标 了解单片机C语言的特点、与PC机C语言的异同之处、单片机C语言的开发环境; 熟悉单片机C语言的基本语法规范、Keil C软件的应用及其与硬件平台的连接、C语言程 序结构设计、与单片机相关的设置等方面知识。 2.方法能力目标 了解用单片机C语言进行应用产品软件开发的步骤,具备单片机C语言程序的识读、修改的基本能力;学会使用Keil C软件进行源程序编辑、编译和软、硬件模拟调试的操作方 法与技能。 3.社会能力目标 通过后续课程《单片机应用实训》的学习与强化训练,具有使用单片机C语言进行电子产品、自动检测与控制和高新视听设施等方面的软件开发的职业技能。 三、整体教学设计思路 1.课程定位 该课程是应用电子技术和自动化技术等专业获得专业技能的必修课程之一,该课程属于职业技术课程,以培养电子产品开发相关行业急需的机电类和电子类高级技能应用型人才 为目标。 本课程一般在学生学完模拟电子技术与数字电子技术、计算机技术等专业基础课后再讲授;《单片机应用》等课程可作为先修课程,也可在同一学期开设。 2.课程开发思路

本课程根据“工学结合”的原则,强调对单片机C语言程序设计的理论部分删繁就简,以“实用够用”为度,就是为了便于他们在后续的实训月(四周)以及即将下厂顶岗实习期 (十周),将所学的单片机C语言程序设计的常用原理与实用知识,能够与实训、实习的生 产工位和顶岗工作更紧密地联系起来。 四、教学内容 1.学时分配 学习情境名称子学习情境1 子学习情境2 子学习情境3 子学习情境4 学时 分配 学习情境(单元)1 单片机C语言概述单片机C语言与 PC机C语言的异 同之处 简单的C程序介绍 及上机操作(编译 三个简单C程序) 3 教学时数 1 2 学习情境(单元)2单片机C语言开发环境 建立 Keil软件的使 用(源文件、 工程的建立) 上机操作(用keil 软件进行工程的设 置) 3 教学时数 2 1 学习情境(单元)3数据的类型、运算符和 表达式 用整型和字符型 定义变量 数的溢出 C51中特有的数 据类型 上机操作(用 算术运算符和 算术表达式编 写程序) 6 教学时数 2 1 2 1 学习情境(单元)4C51流程与控制顺序结构程序选择结构程序循环结构程 序(上机操作 编译冒泡排 序法程序) 6 教学时数 2 2 2 学习情 境(单 元)5 C51构造数据类型数组指针结构共用体和枚举 6 教学时数 2 2 1 1 学习情境(单元)6单片机内部资源的组成中断编程上机操作用定时器 /计数器资源 编程并编译 串口编程 6 教学时数 2 2 2 学习情境(单元)7函数函数的定义函数的调用局部变量和全局 变量 变量的存储类 别 6 教学时数 2 2 1 1

单片机C语言程序设计师试题及答案

单片机C语言程序设计师试题 一、填空题 1、设X=5AH,Y=36H,则X与Y“或”运算为_________,X与Y的“异或”运算为________。 2、若机器的字长为8位,X=17,Y=35,则X+Y=_______,X-Y=_______(要求结果写出二进制形式)。 3、单片机的复位操作是__________(高电平/低电平),单片机复位后,堆栈指针SP的值是________。 4、单片机中,常用作地址锁存器的芯片是______________,常用作地址译码器芯片是_________________。 5、若选择内部程序存储器,应该设置为____________(高电平/低电平),那么,PSEN信号的处理方式为__________________。 6、单片机程序的入口地址是______________,外部中断1的入口地址是_______________。 7、若采用6MHz的晶体振荡器,则MCS-51单片机的振荡周期为_________,机器周期为_______________。 8、外围扩展芯片的选择方法有两种,它们分别是__________________和_______________。 9、单片机的内部RAM区中,可以位寻址的地址范围是__________________,特殊功能寄存器中,可位寻址的地址是____________________。 10、子程序返回指令是________,中断子程序返回指令是_______。 11、8051单片机的存储器的最大特点是____________________与____________________分开编址。 12、8051最多可以有_______个并行输入输出口,最少也可以有_______个并行口。 13、_______是C语言的基本单位。 14、串行口方式2接收到的第9位数据送_______寄存器的_______位中保存。 15、MCS-51内部提供_______个可编程的_______位定时/计数器,定时器有_______种工作方式。 16、一个函数由两部分组成,即______________和______________。 17、串行口方式3发送的第9位数据要事先写入___________寄存器的___________位。 18、利用8155H可以扩展___________个并行口,___________个RAM单元。 19、C语言中输入和输出操作是由库函数___________和___________等函数来完成。 二、选择题 1、C语言中最简单的数据类型包括(b )。 A、整型、实型、逻辑型 B、整型、实型、字符型 C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 2、当MCS-51单片机接有外部存储器,P2口可作为( c )。 A、数据输入口 B、数据的输出口 C、准双向输入/输出口 D、输出高8位地址 3、下列描述中正确的是( d )。 A、程序就是软件 B、软件开发不受计算机系统的限制 C、软件既是逻辑实体,又是物理实体 D、软件是程序、数据与相关文档的集合 4、下列计算机语言中,CPU能直接识别的是( d )。 A、自然语言 B、高级语言 C、汇编语言 D、机器语言 5、MCS-5l单片机的堆栈区是设置在( c )中。

51单片机C语言程序设计复习资料

2013-2014学年上期51单片机C语言程序设计重修复习提纲考试方式:闭卷考试。 考试题型: 填空题(每空1分,共18分);单项选择题(每空2分,共18分);问答及计算题(每题4分,共16分);编程及程序阅读题(5小题,共48分)。 考试分数: 卷面成绩70%+平时成绩15%+实验成绩15%,未缺席、无课堂违纪、作业全交且认真完成的同学平时成绩可获得满分,缺席一次平时成绩扣30分,实验好评次数3次以上且实验报告全优的同学实验成绩可得满分,实验缺席一次扣30分。缺席实验和旷课共3次以上者,无考试资格。 考试时间: 18周周一(12月30日)下午14:00:16:00,考试地点:具体考室另行通知希望大家认真复习,认真听讲,不懂就问,考试成绩不及格允许查卷,如查卷卷面批阅无误成绩不做更改。 编程题为实验或实验类似的题目有3题,其余2题也取自课堂讲授例题,请务必认真复习。第一章单片机概述及单片机知识回顾 掌握什么是单片机、单片机的应用、常见单片机类型、十进制、十六进制、二进制数制转换知识。掌握单片机的硬件组成、CPU的结构、程序计数器PC的功能、存储器结构、机器周期的计算、会画出单片机的最小系统电路图及回答单片机最小系统的组成。 第二章C51语言程序设计基础(本章填空题和选择题比重较大请务必认真复习)掌握C51语言进行软件开发与汇编语言相比的优点、掌握C51的数据类型、特殊功能位的定义、C51的基本运算(位运算重点复习)、数组的定义、C51的结构及函数。 第三章AT89S51片内并行端口及编程(本章有编程题) 掌握P0-P3并行端口的特点,会开关量检测及流水灯程序的编程。 第四章AT89S51单片机的中断系统(本章有编程题) 掌握中断系统的结构、中断请求响应被满足的条件、外部中断的触发选择方式、外部中断的使用与编程。 第五章AT89S51单片机的定时器/计数器(本章有编程器) 掌握定时器的结构,TOMD及TCON的使用,定时器方式0和方式1的特点、会计算定时器初值,会用定时器中断产生PWM波形,会用定时器对外部事件进行计数。 第六章AT89S51单片机的串行口(本章有计算题) 掌握串行通信的基础知识(课本没有的内容请参照课堂讲授笔记或PPT)、串行口的四种工作方式的特点、会计算奇偶校验码、会根据波特率计算T1的初值。 第七章AT89S51单片机与输入/输出外设接口(本章有编程题) 掌握数码管动态显示的原理、掌握矩阵式键盘的原理与编程(矩阵键盘编程必考,但不会考4X4键盘)。 第八章AT89S51单片机与D/A与A/D转换器的接口(本章有编程题) 掌握AD与DA转换的接口、ADC和DAC的技术指标、常用AD和DA转换器。掌握ADC0809和TLC2543的使用与编程(2器件其中之一有编程题)。 第九章AT89S51单片机应用系统与调试(本章有编程题) 掌握单片机应用系统的软件抗干扰方法。

单片机C语言程序设计实训100例--基于8051+PROTEUS仿真1

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 令狐采学 第01 篇基础程序设计 01闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间 隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) {

for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 02 从左到右的流水 灯 /* 名称:从左到右的 流水灯 说明:接在P0口的8 个LED从左到右循环依次点亮,产生走马灯效果*/ #include #include #define uchar unsigned char #define uint unsigned int

//延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果

51单片机C语言程序设计实验

《51单片机C语言程序设计》实验教学指导书 伍勤谟编 二00六年十二月

单片机C语言实践教学的内容目录 实验一单片机C语言编程环境建立 实验目的:掌握Keil软件的安装,使用; 实验内容:Keil软件的安装,使用, 熟悉单片机C语言编程过程(源文件的建立,工程的建立,编译及链接等) 实验仿真板的介绍及使用等; 实验二51 C 语言数据类型,运算符与表达式的练习(1) 实验目的:掌握相关语句的编程方法。 实验内容:演示字符型数据和整型数据的溢出. 观察浮点型数据在内存中的存放方式; 演示实型数据的舍入误差; 观察数据在内存中的存储位置 实验三51 C 语言数据类型,运算符与表达式的练习(2) 实验目的:掌握相关语句的编程方法。 实验内容:定义多个变量观察各自的存储空间; 将变量定义在位变量变区; 研究pdata和xdata型变量的存储空间; 观察各种类型数据转换时的内存变化; 实验四51 C 语言程序流程控制语句的练习 实验目的:掌握for、while do---while等循环语句的编程方法。 实验内容:利用仿真型实验板和所学流程控制语句,编写演示流水灯功能的程序。 实验五51 C 语言的构造数据类型的练习 实验目的: 1 熟悉51 C 语言的指针与数组的语法结构。 2 掌握指针与数组的编程的方法。 实验内容:编写程序:通过指针变量访问整型变量 实验六51 单片机内部资源C 语言的编程练习 实验目的:掌握51 单片机内部资源C 语言编程的方法。 实验内容:编写利用外中断控制实验LED灯亮灭程序;利用定时器的中断方式控制实验板上LED闪烁功能,要求每50ms改变一次。 实验七51 单片机内部资源C 语言的编程练习 实验目的:掌握51 单片机内部资源C 语言编程的方法。 实验内容:编写利用定时器控制实验板两个灯的同时闪烁,但它们的闪烁时间不同;利用计数器功能将T0口计数值显示出来(用8个LED来显示数据)。 实验八51 C 语言的涵数语句的练习 实验目的: 1、掌握51 C 语言的涵数语句与程序结构。 2、掌握51 C 语言的涵数参数传递与调用。 实验内容:编写程序:求1个数的阶乘 实验九51单片机接口C 语言编程的练习 实验目的:掌握51单片机接口C 语言编程基本方法。 实验内容:编写实验板六位数码管动态显示程序,要求:使用定时中断实现显示的程序,第1~5位各位始终显示0,第六位在0~9之间显示。 实验十51单片机应用设计举例练习 实验目的:掌握51单片机应用设计方法。 实验内容:编写程序:用实验板实现秒钟功能,且有高位消隐功能。

51单片机C语言程序设计经典案例

项目三C51程序设计语言基础 任务1 C51程序的识读 1.C51程序结构 例3-1 P_test /********************* //注释,还可用//注释掉一行 File name:P_test.c Chip name:STC89C51RC Clock frequency:1.20MHz ***********************/ #include “reg52.h”//预处理命令,文件包含预处理命令,后缀名都是.h,标准的MCS-51单片机头文件为”reg51.h”,STC89系列单片机头文件为”reg52.h” #define unit unsigned int //宏定义预处理命令 sbit BZ=P3`7 ; sbit key=P1`0; void delay(unit ms) { unit i; while( ms --) { for(i=0;i<120;i++); } } void main(void) { while(1) { if(key==0) { BZ=0x0; delayms(10); BZ=0x1; delayms(50); P0=0xFF; } else { P0=~P0; delayms(500); } } } 2.C51的数据类型

位变量型bit 字符型无符号字符型unsigned char 有符号字符型signed char C51的数据类型整数型无符号整数型unsigned int 基本类型有符号整数型signed int 长整数型无符号长整数型unsigned long int 有符号长整数型signed long int 实数型(浮点型)单精度浮点型float 双精度浮点型double 数组类型array 结构体类型struct 构造类型共用体union 枚举enum 指针类型 空类型(void) 表3-1 C51基本数据类型的长度和值域 类型长度/bit 长度/byte 范围 位变量型bit 1 0 ,1 无符号字符型unsigned char 8 单字节0-255 有符号字符型signed char 8 单字节-128-127 无符号整数型unsigned int 16 双字节0-65536 有符号整数型signed int 16 双字节-32768-32767 无符号长整数型unsigned long int 32 四字节 有符号长整数型signed long int 32 四字节 单精度浮点型float 32 四字节 双精度浮点型double 32 四字节 一般指针类型24 三字节 3.C51的标识符和关键字 标识符是由字母、数字和下划线组成的字符串,第一个字符必须是字母或下划线,不超过32个字符。 表3-2 C51中的关键字 关键字用途说明 auto 存储种类声明用来声明局部变量 bdata 存储器类型说明可位寻址的内部数据存储器 break 程序语句退出最内层循环体 bit 位变量语句位变量的值是1(true)或0(flase)case 程序语句switch语句中的选择项 char 数据类型的声明单字节整数型或字符型数据

(完整版)单片机C语言程序设计实训100例—基于8051+Proteus仿真毕业论文

《基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED * 名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 * #include

P0=0xfe; while(1) { P0=_crol_(P0,1); P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 * 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果* #include

DelayMS(150); } } } 04 花样流水灯 * 名称:花样流水灯 说明:16只LED分两组按预设的多种花样变换显示 * #include

《单片机C语言程序设计》期末考核项目

《单片机C语言程序设计》期末考核项目 编制部门:电子信息工程技术专业编制人:张秀国审核人:编制日期:2013年6月18日 图1 模拟数字密码锁 一、基本考核要求:基于图1,编程实现下列功能。 开机显示如图2所示。 P A S S W O R D ■ 图2 开机显示画面

四、评分方法 1.完成基本考核要求,得60分 2.完成创新考核要求,加20分 3.项目报告中,流程图、知识点描述、难点及解决办法(10分),学习体会(10分) 出师表 两汉:诸葛亮 先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。 宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。 侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。 将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。

亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也。 臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。 先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。 愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。 今当远离,临表涕零,不知所言。

《单片机C语言程序设计》练习题

《单片机C语言程序设计》练习题 1.Keil软件的源文件的建立、工程的建立、工程的设置过程? 打开keil软件,在硬盘中新建一个文件夹,以保存本实验中所产生的文件,点击“文件”菜单中的“新建”,新建一个源文件,将程序输入文件中,点击“文件”菜单中的”保存”,,给源文件取名并保存为ASM文件类型。 点击“工程”菜单中的“新建工程”新建一个工程,给工程取名,并与源文件保存在同一文件夹中,在“CPU选择的对话框中,选择ATMEL公司的At89C52单片机,右击“source Group”,选择“Add File to Group....”,将源文件加入到工程,右击“Target”,选择“option for Target......”,选择“输出”列,并选择创建HEX 文件,对工程文件调试、编译,无误后生成HEX文件。 2.程序调试时可以运用哪些方法进行调试? 全速运行,单步运行,连续运行,断点运行 3.安装PL2303驱动软件后如何确定该虚拟端口的? 鼠标右键点击桌面的“我的电脑”==》设备管理器==>端口,可查看到“Prolific USB-to-Serial comm Port(COM4,根据串口使用情况不同而不同),此即为虚拟端口” 4.STC-ISP如何将程序下载到开发板中? 打开STC-ISP软件,选择单片机型号,串行口端口,打开HEX文件,点击Download 下载,即可实现自动下载编程。 5.编程使8个发光二极管按如下方式循环点亮。(1)L6、L4、L2、L0全亮全灭; (2)L7、L5、L3、L1全亮全灭;(3)L7、L6……L0依次单个点亮;(1)采用软件延时,各时间间隔为0.5秒。每次循环结束时蜂鸣器发出一声报警声音。 (2) 采用外部中断1方式来控制蜂鸣器,即有外部中断按键时,蜂鸣器发出 一声报警声音。 #include #define uint unsigned int

相关主题
相关文档 最新文档