单片机实验一报告.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机实验一报告

实 验 报 告1 实验项目名称: I/O口实验 同组人: 实验时间: 实验室: K2-407单片机室 指导教师: 一、实验目的: (l)学习P1口的结构及使用方法; 熟悉Proteus软件电路设计和Keil软件程序调试方法。 (2)学习软件延时程序的编写。 重点:延时程序,P1口结构 二、实验预备知识: (l)Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。 (2)Proteus软件应用,Keil软件程序调试应用。 三、实验内容: ㈠ 模拟开关灯的Proteus仿真及C语言程序设计 1、设计要求:监视开关K1(接在P3.0端口上),用发光二级管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。 2、仿真电路原理图(预习) 元器件选取:① AT89C52:单片机;② RES:电阻;③ CRYSTAL:晶振;④ CAP、CAP-ELEC:电容、电解电容;⑤ LED-GREEN:绿色发光二级管;⑥ SWITCH:开关。 模拟开关灯的电路原理图 3、程序设计内容(预习) 开关状态的检测过程 单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨动开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用if(K1= =1)或者if(K1= =0)指令来完成对开关状态的检测。 输出控制 当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二级管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二级管L1亮。 4、程序清单(预习) #includereg52.h sbit K1=P3^0; sbit L1=P1^0; void main(void) { while(1) { if(K1!=1) L1=0; else L1=1; } } 5、实验结果及分析: 实验结果:C52加载HEX文件进行仿真运行之后,通过鼠标操控开关闭合可以达到控制发光二极管明灭的效果。 实验分析:通过位定义P3.0和P1.0口分别赋给K1和L3,二极管通过灌电流点亮,电阻R2为限流电阻,防止电流过大烧坏二极管,因此,只有P1.0为低电平时二极管点亮。开关如果闭合,K1=1,程序显示P3.0低电平,则控制P1.0输出低电平,二极管顺利点亮。 ㈡ 广告灯(利用查表方式)的Protues仿真及程序设计 1、设计要求:利用查表的方法,使单片机端口输出电平控制灯光的变化。(例如:左移,右移,闪烁等等)延时的时间0.2 s。 2、仿真电路原理图(预习) 元器件选取:① AT89C52:单片机;② RES:电阻;③ CRYSTAL:晶振;④CAP、CAP-ELEC:电容、电解电容;⑤ LED-GREEN:绿色发光二级管。 广告灯的电路原理图 3、程序设计内容(预习) 查表法是单片机程序设计中常用的一种方法,它多用于一些较复杂的控制场合,如判断键盘按键的键值、利用I/O口控制外部设备作一些预先设定好的复杂动作(本题是其简单的示意)、输出正余弦、三角、梯形或更复杂的波形,甚至可以利用查表法实现一些复杂的算法。 C语言步骤如下: 定义一维数组TABLE[ ](复杂情况也可以用二维数组,另外,为节省单片机的RAM 资源,数组一般放在代码段中); 把控制码按顺序放入数组TABLE[ ]中; 定义变量i,改变i的值,就可以取出数组中对应的控制码。 4、程序清单(预习) #includereg52.h unsigned char code table[]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xdb, 0xbd,0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e, 0xbd,0xdb,0xaa,0x55,0xaa,0x55,0xaa,0x55, 0xaa,0x55,0xaa,0x55,0x0f,0xfe,0xfc,0xf8, 0xf0,0x00,0xf0,0x7f,0x3f,0x1f,0x0f,0x00,0x5a}; unsigned char i=0; void delay(void) {unsigned int a,b; for(a=0;a=1000;a++) for(b=0;b=110;b++); } void main(void) { while(1) { if(table[i]!=0x5a) { P3=tabl

文档评论(0)

docindpp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档