首页 AT89C51单片机程序以及原理图

AT89C51单片机程序以及原理图

举报
开通vip

AT89C51单片机程序以及原理图AT89C51单片机程序以及原理图 51 单片机 C 语言应用学习任务书 第一部分 USB-ISP 单片机学习开发板硬件资源介绍 USB-ISP 单片机学习开发板是专为单片机初学者设计并的一种学习及开发板,可完成多个与实际 结合的单片机开发实例,帮助单片机初学者快速入门单片机技术。 初学者应当一步一步通过自己安 装元件、调试电路,将提供的多个实验按照从简单到复杂,从实现基本功能到完成扩展功能一步一步 地完成,脚踏实地全面提高理论知识和动手能力。 www p:// 第一节 单片机开发板概述 USB-I...

AT89C51单片机程序以及原理图
AT89C51单片机程序以及原理图 51 单片机 C 语言应用学习任务书 第一部分 USB-ISP 单片机学习开发板硬件资源介绍 USB-ISP 单片机学习开发板是专为单片机初学者设计并的一种学习及开发板,可完成多个与实际 结合的单片机开发实例,帮助单片机初学者快速入门单片机技术。 初学者应当一步一步通过自己安 装元件、调试电路,将提供的多个实验按照从简单到复杂,从实现基本功能到完成扩展功能一步一步 地完成,脚踏实地全面提高理论知识和动手能力。 www p:// 第一节 单片机开发板概述 USB-ISP 学习开发板由以下电路部分组成:USB 供电与数据下载电路,单片机最小系统电路, 4 个独立键盘输入电路,红外接收电路,8 个发光二极管显示电路,8 个数码管显示电路,蜂鸣器输 出电路,继电器输出电路,I2C 总线式串行 E2PROM 存储器 24C02 电路,PCF8563 万年历,串行通 讯接口电路,1602 液晶显示接口、12864 液晶显示接口,18B20 测温芯片接口。另外所有 P 口都连接 双排跳线,方便连接外部电路扩展。 1 51 单片机 C 语言应用学习任务书 第二节 主要实验项目 板载资源可以完成的实验项目: 1、发光二极管亮灭 2、发光二极管闪烁 3、发光二极管模拟广告流水灯(跑马灯) 4、蜂鸣器输出的音频报警器。 5、PWM 调节发光二极管亮度。 6、独立按键控制发光二极管亮灭。 。 7、实用独立按键控制开关灯(带延时去抖动) 8、单键多功能灯控器。 9、继电器输出控制 0 220V,5A 负载。 10、数码管静态显示 11、数码管动态扫描显示记分器。 12、数字钟 13、0 300kHz 频率计 14、0 100kHz 数字信号发生器 15、实时时钟课题 16、串行通信 扩展后可进行的实验项目: 1、单片机驱动功放电路音乐演奏 2、大尺寸数码管驱动显 3、可调亮度彩灯 4、4×4 键盘与密码锁 5、18B20 数字温度采集与显示 6、1602 液晶显示 7、12864 液晶显示 8、直流调光,直流电机调速 9、交流调光、交流电机调速 10、步进电机调速。 11、数字电压 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 12、8×8LED 点阵显示 第三节 电路原 理 1、下载电路 2 51 单片机 C 语言应用学习任务书 2、单片机最小系统 3、8 个发光二极管显示电路 3 51 单片机 C 语言应用学习任务书 4、独立键盘电路 5、8 位数码管电路 6、红外检测电路(部分版本没有) 7、18B20 数字温度传感器接口电路 8、蜂鸣器输出电路 4 51 单片机 C 语言应用学习任务书 9、继电器输出电路 10、串行通信电路 11、万年历与时钟 PCF8563 电路 12、I2C 总线 EEPROM 存储器 24C02 电路 5 51 单片机 C 语言应用学习任务书 13、LCD1602 和 LCD12864 驱动接口 6 51 单片机 C 语言应用学习任务书 第二部分 USB,ISP 单片机学习开发板制作与调试 一、USB,ISP 单片机学习开发板硬件资源介绍 AT89S51 单片机学习板板(以后简介学习板)集成多个硬件资源模块,每个模块各自可以成为独 立的单元,也可以相互组合,因此,可以为不同阶层的单片机爱好者及单片机开发者提供 不同的开发环境。本套学习板包含下载、单片机最小系统、流水灯、按键、数码管、继 电器、蜂鸣器等模块,具体原理见相应模块应用课题,电路见下图。 图 3.1 学习板电路原理图 二、元件识别与测试 在安装电路前必须先识别每种元件的参数、极性、引脚排列等,下面介绍每种元件的识别方法; 1.电阻 电阻主要有标称阻值、允许误差、功率等参数,本电路中主要选用色环电阻,下表列出本电路中 电阻阻值与 应的色环。 图 3.2 五环法示意图 3.3 四环法示意 图 图 7 51 单片机 C 语言应用学习任务书 额定功率 色标 序号 号 阻值 数量 (W) 五环 四环 1/4 棕黑黑银棕 棕黑金金 1 电阻 1 1 2 电阻 1.5K 1/4 棕绿黑棕棕 棕绿红金 1 3 电阻 1K 棕黑黑棕棕 3 1/4 棕黑红金 4 电阻 4.7K 黄紫黑棕棕 9 1/4 黄紫红金 5 电阻 5.1K 1/4 绿棕黑棕棕 绿棕红金 6 6 电阻 10 1/4 棕黑黑金棕 棕黑黑金 1 7 电阻 10K 1/4 棕黑黑红棕 棕黑橙金 2 8 电阻 100 1/4 棕黑黑黑棕 棕黑棕金 1 9 电阻 100K 1/4 棕黑黑橙棕 棕黑黄金 2 10 电阻 180 1/4 棕灰黑黑棕 棕灰棕金 2 11 电阻 200 红黑黑黑棕 9 1/4 红黑棕金 所提供的电阻中既有五环电阻也有四环电阻,所以要求同学们先判断该电阻是五环还是四环,再 应上表得到该电阻的阻值。 识别电阻的难点是怎样确认五环电阻器哪一端是第一环。认识色环电阻的小窍门 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 如下: ( 1)金色和银色只能是乘数和允许误差,一定放在右边; ( 2)表示允许误差的色环比别的色环稍宽,离别的色环稍远; ( 3)我们用的五环电阻大都允许误差是?1%的,用棕色色环表示;四环电阻大都允许误差是? 5%的,用金色色环表示。 .hn 图 3.4 排阻 本电路中还用到了排阻,所谓排阻就是若干个参数完全相同的电阻,它们的一个引脚都连到 一起,作为公共引脚,即上图中 1 脚。其余引脚正常引出。所以如果一个排阻是由 8 个电阻构成 的,那么它就有 9 只引脚。一般来说,最左边的那个是公共引脚。它在排阻上一般用一个白色点 标出来。排阻一般应用在数字电路上,比如:作为某个并行口的上拉或者下拉电阻用。使用排阻 2 比用若干只固定电阻更方便。排阻的标称电阻一般采用数码法,比如 102,就是 10×10 ,即 1K 1 的。前两位是有效值,这里是 10,第三位是 10 的几次幂。本电路中的 471 就是 47×10 即 470 欧姆。 2.电容 电容主要用到了瓷介电容和电解电容。 图 3.5 瓷片电图 3.6 电解电容 4 容 瓷介电容无极性,一般采用数码法标称其容量,104 就是 10×10 ,单位为 PF,104 也就是 0.1uF。 8 51 单片机 C 语言应用学习任务书 小于 100PF 的电容数码中的第三位省略,如 22PF 标为 22,15PF 标为 15,33PF 标为 33。 电解电容为有极性电容,出厂未 脚的电解电容其长脚为正极,也可根据其外壳标识的来判断, 标有"- - -"标志所 应的引脚为负极。电解电容其参数一般采用直标法,容量和耐压值直接标在外 壳上。 3.二极管 本电路中有稳压二极管、开关二极管、发光二极管,其外 见下图。 图 3.7 稳压管 图 3.8 开关管 1N4148 图 3.9 发光二极管 3V6 稳压二极管 号直接标在外壳上,为 3V6,即稳定电压为 3.6V,玻璃封装,黑色环这一端为阴极。 开关二极管 号直接标在外壳上,为 1N4148,玻璃封装,外形与 3V6 类似,黑色环这一端为阴 极。稳压二极管与开关二极管以标在外壳的 号来区分即可。 发光二极管以其外形直径区分,本电路中都采用直径为 ,3 的发光二极管,未 脚前长脚为阳极。 当二极管外壳标志不清楚时,可以用万用表来判断。以指针式万用表为例,将万用表置于 R× 100 或 R×1K,两只表笔分别接触二极管的两个电极,若测出的电阻约为几十、几百欧或几千欧,则黑 表笔所接触的电极为二极管的阳极,红表笔所接触的电极是二极管的阴极,如图 3.9(a)所示。若测 出来的电阻约为几十千欧至几百千欧,则黑表笔所接触的电极为二极管的阴极,红表笔所接触的电极 为二极管的阳极,如图 3.9(b)所示。若为数字式万用表,则结论刚好相反。 图 3.9 二极管极性判断 若正向测试时,测得阻值近 0,表明管子已被击穿,若阻值为无穷大,则 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 管子内部已断路。 4.三极管 本电路中采用了 PNP 中功率三极管 8550,其引脚排列如下图。 图 3.10 三极管引脚排列图 三极管性能简单测试 的大小 以 NPN 为例,将基极 B 开路,测量 C、E 极间的电阻。万用表 ?检查穿透电流 I CEO (指针式万用表 R×10K)红表笔接发射极,黑表笔接集电极,若阻值较高(几百千欧以上) ,则说明 穿透电流较小,管子能正常工作。若 C、E 极间电阻小,则穿透电流大,受温度影响大,工作不稳定, 9 51 单片机 C 语言应用学习任务书 在技术指标要求高的电路中不能用这种管子。若测得阻值近 0,表明管子已被击穿,若阻值为无穷大, 则说明管子内部已断路。 ?检查直流放大系数 , 的大小 一般的数字万用表具备测 , 的功能,将晶体管插入相应管 测试 孔中,即可从屏幕上直读 , 值。 5.按钮、开关 ( 1)按钮开关的测试 常见的按钮开关见图 3.11 所示。初学电子者在使用开关时,经常接错端 子而导致电路短路,所以在焊接开关时一定要测试开关的端子之间是常开还是常闭关系。很多同学一 般都是根据表面观察而认定端子之间的关系,导致误接。 图 3.11 微 按钮开关及示意图 没使用新开关时一定要亲自动手进行测试,测试方法:利用万用表的欧姆档,按动按钮开关,测 量端子之间的电阻,判断哪些端子是常开的,哪些端子是常闭的,哪些端子是连在一起的的。 从图 3.11 看出,按钮开关只有一组开关,1、2 和 3、4 脚在内部分别连接在一起,未按下按钮时 1、2 和 3、4 处于常开状态,因此在电路中只要连接 2 个引脚就可以,最可靠的方式是连接 角线的 两个引脚即可。 ( 2)自锁开关的测试 自锁开关与按钮开关的不同点是自锁开关松开手后可以保持其当前的开关状态。自锁开关内部包 含两组开关。内部的连接方式有两种,具体连接方式见下图,同学们可利用万用表进行测试,判断手 中自锁开关属于那种类 。 图 3.12 自锁开关及示意图 6.晶振 本电路中需要两个晶振,分别为 11.0592MHz 和 12MHz,无极性。晶振的作用是为系统提供基本 的时钟信号。 图 3.13 晶振 7.继电器 继电器是根据某种输入信号接通或断开小电流控制电路,实现远距离自动控制和保护的自动控制 10 51 单片机 C 语言应用学习任务书 电器。用万能表的电阻档,测量常闭触点与动点电阻,其阻值应为 0;而常开触点与动点的阻值就为 无穷大。由此可以区别出那个是常闭触点,那个是常开触点。可用万能表 R×10Ω档测量继电器线圈 的阻值,从而判断该线圈是否存在 开路现象。 图 3.14 继电 器 三、单片机学习开发板安装 根据上面的方法测试元件以后,就可以进行安装了。安装包括引脚预成 、引脚搪锡、插件、焊 接、检验等工序。 1.预成 成 跨距:它是指元器件引脚之间的距离,它应该等于印制板安装孔的中心距离,允许公差为 0.5 毫米。若跨距过大或过小,会使元器件插入印制板后,在元器件的根部间产生应力,而影响元器件 的可靠性。 . 图 3.15 引脚预成 要求示意 图 手工加工的元器件成 弯引脚可以借助镊子或小螺丝刀 引脚整形弯脚。左手用镊子紧靠电阻 的本体,夹紧元件的引脚(见图 3-30) ,使引脚的弯折处,距离元件的本体有两毫米以上的间隙。左 手夹紧镊子,右手食指将引脚弯成直角。 2.搪锡 元器件存放时间较长,表面有氧化层,导致可焊性不良。在安装之前 元器件的引线进行重新浸 锡处理,通常称为"搪锡"。工业上搪锡一般将元件引脚浸入锡缸中。这里可以直接将熔融的焊锡涂 在元件引脚上。 3.手工插装,应该先插装那些需要机械固定的元器件,如功率器件的散热器、支架、卡子等,然 11 51 单片机 C 语言应用学习任务书 后再插装需焊接固定的元器件。插装时不要用手直接碰元器件引脚和印制板上铜箔。为了防止电路板 倒过来焊接时元件松动歪斜,插装时可将元件引脚向两边弯曲,以固定元件。 直立式 电阻器、电容器、二极管等竖直安装在印刷电路板上的。 图 3.17 直立式插装 俯卧式 二极管、电容器、电阻器等元器件均是俯卧式安装在印刷电路板上的 图 3.18 俯卧式插装 插装集成电路管座时,请将管座的半圆缺口标志与印制板集成电路封装的半圆缺口标志 齐。 3.手工焊接的方法 ?电烙铁与焊锡丝的握法 手工焊接握电烙铁的方法有反握、正握及握笔式三种。焊锡丝拿法一般有两种。下图分别是电烙 铁握法和焊锡丝拿法。 图 3.19 电烙铁握法和焊锡丝拿法 ?手工焊接的方法 ?加热焊件 电烙铁的焊接温度由实际使用情况决定。一般来说以焊接一个锡点的时间限制在 4 秒最为合适。焊接时烙铁头与印制电路板成 45?角,电烙铁头顶住焊盘和元器件引脚然后给元器件 引脚和焊盘均匀预热。 ?移入焊锡丝。焊锡丝从元器件脚和烙铁接触面处引入,焊锡丝应靠在元器件脚与烙铁头之间。 ?移开焊锡。当焊锡丝熔化(要掌握进锡速度)焊锡散满整个焊盘时,即可以 45 0 角方向拿开焊 锡丝。 ?移开电烙铁。焊锡丝拿开后,烙铁继续放在焊盘上持续, ,秒,当焊锡只有轻微烟雾冒出时, 即可拿开烙铁,拿开烙铁时,不要过于迅速或用力往上挑,以免溅落锡珠、锡点、或使焊锡点拉尖等, 12 51 单片机 C 语言应用学习任务书 同时要保证被焊元器件在焊锡 固之前不要移动或受到震动,否则极易造成焊点结构疏松、虚焊等现 象。 ( 1)加热焊件 ( 2)移入焊锡 . ( 4)移开电烙铁 ( 3)移开焊锡 图 3.20 手工焊接步 骤 四、电路调试 1.电路安装完毕后,插上集成电路, 照电原理图和连线图,认真检查接线是否正确,以及焊点 有无虚焊。包括检查集成块有无插反。 2.电源接通之后观察有无异常现象,包括有无冒烟,是否闻到异常气味,手摸元件是否发烫,电 . 源是否有短路现象等。如果出现异常,应立即关闭电源,待排除故障后方可重新通电。 如无异常,则观察下载模块的发光二极管 D12 是否亮,插上 USB 接口后,电脑应能识别硬件, 并利用 AVR_fighter for USBASP 软件完成下载模块的驱动安装。 13 51 单片机 C 语言应用学习任务书 学习情境 1 模拟广告流水灯的制作与调试 1.1 发光 LED 灯 任务描述 使用单片机驱动发光二极管发光。 要求: 1、按照如图所示硬件电路,在单片机最小系统基础上焊接制作发光二极管电路。 2、按要求输入程序并编译生成目标文件,下载到单片机使 P1.0 所接发光二极管亮。 目标: 1、学会使用 Keil C51 编写第一个 C 语言源程序,并编译生成目标文件。 2、学会使用 AVR fighter 下载软件将目标文件下载到单片机中。 3、学会使用程序控制单片机引脚的高、低电平。 4、通过观察程序执行的结果,理解控制单片机引脚输出高、低电平 外围电路所起到的作用。 电路制作 一、单片机驱动发光二极管发光硬件电路原理 1.2 二、元器件清单如下,请补充各元件功能 元器件 序号 名称 号及参数 功能 代号 IC1 1 单片机 AT89S51 2 XTAL 晶振 11.0592M 3 瓷片电容 33pF C11,C12 4 电解电容 10uF C10 5 R19 电阻 10k 6 R20 电阻 200 14 51 单片机 C 语言应用学习任务书 7 D1 发光二极管 ,3 D8 8 A471J 排阻 RP1 三、工具与仪表: 电烙铁、斜口钳、指针万用表、数字万用表等。 四、电路制作 理解原理图,识别各元件,熟悉封装,并根据图纸装配元件,完成电路的焊接。 相关资讯 一、任务分析: 发光二极管具有单向导电性。 单片机的 P1.0 接到发光二极管 D1 的阴极,发光二极管 D1 的阳极通过排阻接上电源。当单片机 的 P1.0 输出低电平,发光二极管的阳极电位高于阴极电位,就会导通发亮;否则,当单片机的 P1.0 输出高电平,发光二极管就会截止,不亮。 当发光二极管导通时,发光二极管的管压降为 1.8 2.2V 咨询,流过二极管的电流 I,3 10mA, 5 , 2 所以限流电阻 R , , 300, 。 10 由于单片机 P1 口的 8 个引脚可以同时输出不同的电平,所以可以控制不同的发光二极管 D1 D8 同时亮灭。 二、相关知识介绍 1、库函数文件 reg51.h 可以帮助我们使用 C51 芯片内部资源。 2、我们可以通过 sbit 定义位变量,表示单片机的一个位地址或者一个二进制的位变量,其值只能 是 0 或者 1,变量的标识符命名时可以使用字母、数字和下划线, 大小写的书写严格区分,不能与 关键词同名,例如不能使用 sbit P1^0=P1.0。 . 3、C 程序由函数构成,其中 main()为程序的主函数,是每个程序执行的起始点。 4、C 语言程序的书写格式:一行可以写几个语句,一个语句也可以写在多行上;每条语句的最后 必须有一个分号"; "表示语句的结束。 5、使用注释可以提高程序可读性,是编程人员的良好习惯。例如使用/* */进行多行注释,或者使 用// 当前行注释。 6、在程序的书写中,我们多用 TAB 键将每一部分的语句 齐,使编写的程序呈现锯齿形,这样 可以帮助我们分清不同的程序体,便于调试。 7、while(1);为一个死循环,可以理解为程序将在此处进入空闲和等待状态。 编程调试 一、经过分析,程序对应的流程 和参考程序 15 51 单片机 C 语言应用学习任务书 #include //包含库函数文件 sbit P10=P1^0; //指定位地址 void main( ) //主程序 { P10=0; while(1); //原地循环 } 二、编程调试 1、使用 Keil uVersion3 软件编写程序。 ( 1)运行 Keil uVersion3,在 c:\mydocument 新建项目 study.uv2 选择 Atmel 公司的 89S51 芯片,点击"否"取消加入库文件 Startup.a51, ( 2)新建 C 源程序文件 prog1-1.c,并保存到 c:\mydocument 下面,将该 C 源文件加入项目。 ( 3)编辑文件,输入程序,并保存。 ,"Output"选项,选中"Create HEX File" 选项,使程序编 ( 4)通过单击 译后产生 HEX 代码 ( 5)单编译全部文件,生成*.hex 文件,study.hex。 击 进入软件调试状态,使用复位、全速运行、停止、单步运行等工具 。 2、使用 AVR fighter 软件下载程序到单片机 AT89S51 ( 1)准备好带有 AVR fighter 编程器模块的单片机实验板,将 USB 下载线从实验板 USB 端口连 接到电脑的 USB 端口,根据提示安装相应的驱动程序。 ( 2)运行 AVR fighter,选择目标芯片 AT89S51,装入程序文件 c:\mydocument\ study.hex,单 击编程,将程序下载到实验板上的单片机 AT89S51。 3、观察程序运行的效果,第一个发光二极管亮了吗, 如果发光二极管正常点亮,测试: 发光二极管阳极和阴极之间的电压 Ud, 流过发光二极管的电流 Id, 4、如果第一次不成功,试通过调试解决问题。 调试成功后,分析故障的原因是: 16 51 单片机 C 语言应用学习任务书 拓展训练 1、编写程序使单片机 P1.2 所接发光二极管 D3 亮。 提示:要使 P1.2 所接发光二极管亮,则 P1.2 输出 电平,其他引脚输出 电平, 编写程序: 完成情况(打,表示):( ) 2、编写程序使单片机 P1 所接所有发光二极管都亮。 提示:要使 P1 所接发光二极管亮,则 P1 全都输出 电平,如果要一次性赋值,用 C 语言程序 如 实现: , 完成情况:( ) 3、编写程序使单片机 P1 所接发光二极管 D1,D3,D5,D7 一起亮。 输出低电平,P1 的状态 提示:要使 P1 所接发光二极管 D1D3D5D7 同时亮,则 ,用 C 语言程序如 实现: 用二进制表示为: , 完成情况:( ) 总结与评价 一、自我总结 你在整个任务完成过程中出现了哪些问题,你是如 解决的,你还有什么问题不能解决,有什么 体会, 二、评价 组长评价: 日期: 教师评价: 日期: 17 51 单片机 C 语言应用学习任务书 1.2 闪烁 LED 灯 任务描述 使用单片机驱动发光二极管闪烁。 要求: 1、按要求输入程序并编译生成目标文件,下载到单片机使 P1.0 所接发光二极管 D1 闪烁发光, 每一秒闪烁一次。 2、完成拓展训练任务,使 P1 口指定发光二极管闪烁发光,并通过修改程序,提高或者降低发 光二极管闪烁速度。 目标: 1、熟练使用 Keil C51 编写 C 语言源程序,并编译生成目标文件,学会使用 Keil C51 调试程序。 2、熟练掌握 AVR fighter 下载软件的使用及使用其自动更新功能提高效率。 3、学会编写程序实现延时和进行延时长短控制。 电路制作 一、单片机驱动发光二极管闪烁硬件电路原理 (同 1.2) 二、元器件清单 (略,同 1.2) 三、工具与仪表: 电烙铁、斜口钳、指针万用表、数字万用表、示波器等。 四、电路制作 (略) 相关资讯 一、任务分析 单片机的指令的执行的时间是很短,数量一般都是 us 级。当我们要求发光二极管每一秒闪烁 1 次,也就是发光二极管亮 0.5s,灭 0.5s,不断循环。 实际操作中我们一般采取软件延时的办法。通过程序使发光二极管亮,然后延时 0.5s;再是发光二 极管灭,再延时 0.5s,然后不断循环这个过程。 二、相关知识介绍 1、使用字符 P1 可以直接调用单片机特殊功能寄存器(SFR)的 P1 端口物理地址,从而操作 P1 端口, 其赋值,就可以控制其每一个引脚输出的电平高低。 2、Keil C51 程序是由函数构成,任 函数必须先定义,再使用。 3、我们可以使用 unsigned int * 定义一个无符号整 变量,表示一个 16bit 的二进制数,其数值 范围为 0 65535,其命名遵循标识符命名原则。 同理,使用 unsigned char 定义一个无符号字符 变量,表示一个 8bit 的二进制数,其数值范围 为 0 255。 变量如果定义在函数的外面,成为全局变量;变量如果定义在函数体内,则只能在函数内部使 用。 4、while(表达式){循环体},表示当表达式的值为真(非 0)时,就执行循环体,表达式为真就 一直执行循环体,其特点是先判断,再确定是否执行。 while(1){},表示程序将循环执行{}中的语句体。 类似的语句体还有 do{循环体}while(表达式),其特点是先执行循环体,再判断表达式是否为真, 以确定是否继续执行循环体。 51 单片机 C 语言应用学习任务书 5、for(表达式 A;表达式 B;表达式 C){循环体},该语句的执行过程为: ( 1)求解表达式 A (; 2 )判断表达式 B,其值为假时退出该语句;其值为真时执行循环体, 然 后继续执行第(3)步。 (3)求解表达式 C; (4)返回第(2)步 6、延时程序可以用一个子函数来表示,可以是一个固定延时时间的函数,例如 delay() ;或者 是一个通过参数控制延时时间的函数,例如 delay(unsigned int m) 通常单片机使用的石英晶振振荡频率为 12MHz,其 应的机器周期为 1us,通过分析和验证, unsigned int n=0;for(n=0;n<124;n++);语句将会执行约 1ms。 for(;m>0;m--){语句};这条语句将把{}内的语句循环执行 m 次。 编程调试 一、经过分析,程序对应的流程 和参考程序 #include 开始 sbit LED0=P1^0; void delay(unsigned int t) { 点亮 D1 unsigned int i,j; for(i=0;i包含该头文件。 math.h,数学运算头文件。 stdio.h,输入输出流函数头文件。 2、循环移位函数 在头文件 intrins.h 中有循环移位函数, _crol_(a,b)表示将一个无符号字符 变量 a 循环左移 b 次, _cror_(a,b)表示将一个无符号字符 变量 a 循环右移 b次, 另外还有无符号的整 变量循环移位函数。 3、数组一种具有固定数目和相同类 成分的的有序集合,常用来表示一些固定表格、数据等。 例如 unsigned char table[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f },表示一个无符号整数 数组, 一共有 8 个元素,分别用 table[0],table[1],??table[7]来表示,我们可以使用 table[i]来使用这个 数组里的数,其中 i,0~7。 4、Keil C 自带有一个位左移和位右移运算符(<<和>>) ,其功能是将一个数的二进制代码全部 同时左移或者右移若干位,移出的数据丢失,空白的地方补"0" 。 位左移运算格式为 a< #include 22 51 单片机 C 语言应用学习任务书 #include//包含_crol_函数所在的 unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 头文件 void delay(unsigned int t) void delay(unsigned int t) { { unsigned int i,j; unsigned int i,j; for(i=0;i>)能否实现单灯流水效果。 分析: 完成情况:( ) 3、编写程序使 8 个发光管演示出开幕式、闭幕式效果。 分析: 完成情况:( ) 4、编写程序使 8 个发光二极管演示单灯流水效果,同时其速度是变化的,逐渐加快,或者逐 渐渐慢。 提示:如果每次调用延时程序的参数是变化的,其延时时间不同,就会出现速度变化的效果。 完成情况:( ) 总结与评价 一、自我总结 你在整个任务完成过程中出现了哪些问题,你是如 解决的,你还有什么问题不能解决,有什 么体会, 二、评价 组长评价: 日期: 教师评价: 日期: 24 51 单片机 C 语言应用学习任务书 1.4 音频报警器 任务描述 使用单片机驱动蜂鸣器或者音频放大电路发出报警声。 要求: 1、单片机 P1.1 驱动有源蜂鸣器发出报警声。 2、单片机 P1.1 输出 1KHz 方波作为报警信号驱动无源蜂鸣器或者音频放大电路发出报警声,并 用示波器精确调整频率。 目标: 1、学会使用单片机控制有源蜂鸣器发声。 2、学会使用单片机的延时程序输出指定频率的音频信号。 3、学会装配 LM386 功率放大电路及调试。 电路制作 一、单片机驱动蜂鸣器发声硬件电路原理 二、元器件清单 序 元器件 号及参数 名称 功能 代号 号 SPEAKER 有源/无源蜂鸣器 1 PNP 8550 Q9 三极管 2 R30 5.1k 3 电阻 J4 sip3 4 跳线 (注:单片机最小系统元件略) 三、工具与仪表: 电烙铁、斜口钳、指针万用表、数字万用表、示波器等。 四、电路制作 理解原理图,识别各元件,熟悉封装,并根据图纸装配元件,完成电路的焊接。 相关资讯 一、任务分析: 如果是驱动有源蜂鸣器发声,单片机只要输出低电平,Q9 就会饱和导通,蜂鸣器流过直流电流 就会发出固定频率的声音。 25 51 单片机 C 语言应用学习任务书 如果是驱动无源蜂鸣器,则单片机必须输出固定频率的方波信号。要得到 1kHz 的方波,则其周 期为 1ms,单片机控制引脚输出高电平和低电平各 0.5ms。 二、相关知识介绍 1、蜂鸣器是一种一体化结构的电子发声器件,采用直流电压供电,分为有源和无源两种。有源 蜂鸣器直接通以额定直流电压就可连续发声,内部发声频率固定;而无源蜂鸣器则和电磁扬声器一样, 需要提供一个固定频率的方波功率驱动它发出固定频率的声音。 2、LM386 是为低电压应用设计的音频功率放大器,静态功耗低,约为 4mA,可用于电池供电。 工 作电压范围宽,4-12V,需要外围元件少,电压增益可调范围为 20-200。 编程调试 一、经过分析,程序对应的流程 和参考程序 P1.1 输出 1KHz 方波驱动无源蜂鸣器发 //P1.1 输出 1KHz 方波作为报警信号驱动无源蜂鸣器发出报 声 警声音 #include 开始 sbit beep=P1^1; void main() { unsigned char n; 延时 0.5ms while(1) { for(n=0;n<150;n++);//延时 0.5ms beep=~beep; P1.1 取反 } } 二、编程调试 1、编程驱动有源蜂鸣器发声 1S。程序如下: 2、编程使 P1.1 输出 1KHz 方波作为报警信号驱动无源蜂鸣器发出报警声音。使用示波器进行精 确调整。 拓展训练 1、焊接调试 LM386 功放电路,编写程序用 P1.1 输出音频信号,并通过 LM386 功放电路驱动扬 声器发出"叮咚"门铃声,要求 700Hz 信号响 500ms,500Hz 信号响 500ms,交替进行。使用示波器 精确调整。 26 51 单片机 C 语言应用学习任务书 3、根据 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 C 大调音阶表精确输出 应频率的音阶 • • • 音 1 2 2 3 4 5 7 5 6 7 1 6 4 • • • • 阶 3 频 175 196 247 262 330 349 440 523 587 220 294 392 494 659 率 4、参考: //1KHz 方波 0.1S 报警子程序 sbit beep=P1^1; void beep100ms() { unsigned char n,m; for(m=0;m<200;m++) { for(n=0;n<150;n++);//延时 0.5ms beep=~beep; } } 27 51 单片机 C 语言应用学习任务书 *1.5PWM 控制可调亮度 LED 灯 任务描述 使用单片机控制发光二极管的亮度。 要求: 1、单片机驱动发光二极管发光。 2、通过按键控制发光二极管的亮度。(辅助功能,关于按键使用后面章节详细介绍) 目标: 1、理解 PWM 调制的概念,了解其应用领域。 2、掌握通过延时程序输出 PWM 波形的方法。 电路制作 一、单片机控制发光二极管亮度硬件电路原理 二、元器件清单(略) 三、工具与仪表(略) : 四、电路制作(略) 相关资讯 . 一、任务分析: 要改变发光二极管的亮度,即要改变流过发光二极管的平均电流。在直流电路中,我们可以通过 改变限流电阻的阻值达到改变电流的目的。但在单片机控制发光二极管时,我们只能通过改变发光二 极管导通(点亮)的时间,来达到改变平均电流和改变亮度。这时,一般采用输出 PWM 波形调光。 二、相关知识介绍 1、PWM(Pulse Width Modulation)脉宽调制技术。通过 脉冲宽的调制,获得所需要的波形(含形 状和幅值)。PWM 是单片机常用的模拟量输出方法,通过外接转换电路,可以将不同占空比的脉冲变成 与之对应的电压(占空比是指正脉冲与整个周期的比值),用其进行调光、调功输出,或者控制直流电机的 转速。 假如需要一个 1V0.6A 的输出,而实际上只有一个 1V1A 的输出,那么只需要把 1V1A 的输出接 通 0.6 秒,再断开 0.4 秒,然后继续接通 0.6 秒断开 0.4 秒,得到的效果和 1V0.6A 输出的效果是一致 的。 PWM 波形的一个周期中,高电平的保持时时间 Ton,低电平的保持时间 Toff,高电平的高电平与低电平保持的总时间为 Ts,Ton,Toff,我们通常把 Ts 为脉冲的周期,f,1/Ts 叫脉冲的频率;当频 率很低的时候, 于发光二极管而言其亮灭变化明显,人能感觉到闪烁,而当我们把频率提高到一定 程度时,人只能感觉到亮度变化,而觉察不到亮灭闪烁了。 于发热、或者电机等感性负载效果类似。 通常,PWM 调光应用中,我们把 PWM 的频率固定,改变其占空比来实现调光。占空比即 Ton/Ts。 当给 LED 通以频率相同,但占空比不同的脉冲电压时,流过 LED 的 RMS 电流是不一样的,所以 LED 的亮度也发生了明显的改变。 28 51 单片机 C 语言应用学习任务书 2、中小功率的电动机以直流电动机为主,具有良好的线性调速特性,简单的控制性能,较高的 效率。近年来,永磁直流电动机和无刷直流电动机得到了广泛的应用,使用全控 开关功率器件进行 脉宽调制(PWM)控制已经成为主流。 编程调试 一、经过分析,程序对应的流程 和参考程序 //延时实现 pwm 输出 #include 开始 sbit s2=P3^3; sbit s3=P3^4;//按键设置 sbit led0=P1^0; //发光二极管端口设置 void delay(unsigned int t) 默认 scale=5 占空比 50, { unsigned int i,j; for(i=0;i typedef unsigned char UINT8; typedef unsigned int UINT16; #define S1 0x38 #define S2 0x34 #define S3 0x2c #define S4 0x1c UINT8 Count,flag,TH,TL; UINT8 ScanKey(void) { UINT8 key; if((P3&0x3c)= =0x3c) return(0xff); Delay(10); if((P3&0x3c)= =0x3c) return(0xff); key=P3&0x3c; while((P3&0x3c)! =0x3c); return(key) } void main(void) void SystemInit(void) { UINT8 c; { TMOD|=0x21; SCON=0x50; SystemInit(); TH1=0xfd; while(1) TL1=0xfd; { c= ScanKey(); TR1=1; switch(c); IE=90; { case S1: } void Send(UINT8 *p) Send("S1"); { while(*P!='\0') break; case S2: { TI=0; SBUF=*p; Send("S2"); while(TI==0); break; p++; case S3: Send("S3"); } TI=0; break; case S4: } Send("S4"); void Receiv(void) interrupt 4 break; { UINT8 temp; If(RI==0) } return; ?? RI=0; temp=SBUF; } if(temp==0x01) } P1=0xf0; else if(temp==0x02) P1=0x0f; } 二、编程调试 1(编写程序并调试下载到实验板 70 51 单片机 C 语言应用学习任务书 2(通过 PC 机串口调试助手调试程序,并观察功能与设计的是否一致。 3(补充中断程序流程图。 拓展训练 编写程序: 在实验板上实现如下功能: 通过键盘输入一个 0—15 的数据,在数码管上低 2 位显示,并发送给 PC 机,PC 机接收到数据, 发回该数的平方值给单片机,单片机接收到数在数码管高 3 位上显示出来。 要求:定义键盘功能,编写程序并调试。 完成情况:( ) 总结与评价 一、自我总结 你在整个任务完成过程中出现了哪些问题,你是如 解决的,你还有什么问题不能解决,有什 么体会, 二、评价 组长评价: 日期: 教师评价: 日期: 71
本文档为【AT89C51单片机程序以及原理图】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_482581
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:142
分类:其他高等教育
上传时间:2017-09-01
浏览量:222