单片机的学习与应用doc.doc

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

PAGE12 / NUMPAGES12 单片机的学习与应用 学院:信息工程学院 专业:电子信息科学与技术 班级:07级2班 学号:20078002059 姓名:李水秀 单片机的学习与应用 确定任务 开发单片机的最小系统 明确任务 具有8个二极管实现各种流水灯; 蜂鸣器与数码管的测试; 利用单片机控制直流电机的正反转; 功能实现 流水灯实验 主要运用程序控制流水灯的交替工作;利用P0及P2.0口八个端口控制流水灯的操作; 直流电机的正反转实验 在该过程中,电动机安装在小车上,其最终目的是实现小车的运转。电动机的正反转可以实现小车的前进后退以及加速减速问题。电动机的正反转完全由单片机控制,包括直流电机的前进后退,左转右转以及直流电动机的速度控制问题。其中选择P0.0,P0.1两端口控制一个电动机??完成小车的前进后退问题,P0.2,P0.3两端口控制另一个电动机,P3.6端口输出脉冲波,利用其占空比实现对小车的速度控制。 解决步骤 单片机最小系统的焊接与调试 单片机最小系统的组成:单片机外接电源,晶振电路,复位电路, 输入电路及显示电路即可构成单片机的最小系统。 (1)电源电路 通过计算机的USB口供给电源,计算机USB端口能够提供的电压为5V,能够承受的最高电流通常为500mA。为了保证USB口不会因为开发板意外断路而损坏,在5V输入线上串入了自恢复保险丝(实际操作过程中以保险丝电容代替),起到保护作用。 在电源电路中接入了电源指示LED,使用330Ω电阻限流。并提供两个测试点来测量5V电是否正常。 电源部分的原理图如图1所示。 图1 电源接口 (2)复位及振荡电路 复位电路由按键复位和上电复位两部分组成,如图2所示。AT89S系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为8.2K和10uF。 按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。 图2 复位及振荡电路 (3)按键及LED电路 开发板上提供了8个独立LED,由P2口控制,同样采用共阳级接法,所以只有当P2口输出低电平时LED才会点亮。这样做的主要原因是因为单片机的低电平驱动能力高电平强。 4个独立按键使用10K电阻上拉后连接到单片机的P3.2-P3.5口,中间串接的330Ω电阻起到限流作用。按键没有按下时口线上因为上拉而呈现高电平,当某个按键按下时对应口线会被连接到GND而变成低电平。 另外由于LED的反向截止特性以及按键上拉较弱,P2口及P3.2-P3.5口亦可以兼做通用IO口使用,用来连接外部器件。。 图3 按键及LED显示电路 了解了单片机的最小系统,我们根据电路图焊接开发板,完成后对开发板进行调试,结果一切一切正常。接下来的工作就是完成两大任务。 流水灯实验的完成 流水灯的程序如下: #includereg51.h??? //51系列单片机定义文件 #define uchar unsigned char //定义无符号字符 #define uint unsigned int //定义无符号整数 void delay(uint);??? //声明延时函数 void main(void) { uint i; uchar temp; P2.0=0; while(1) ?? { temp=0x01; for(i=0;i8;i++)?? //8个流水灯逐个闪动 ?? { ?? P0=~temp; ?? delay(100);??? //调用延时函数 ?? temp=1; ?? } temp=0x80; for(i=0;i8;i++)?? //8个流水灯反向逐个闪动 ?? { ?? P0=~temp; ?? delay(100);??? //调用延时函数 ?? temp=1; ?? } ??? temp=0xFE; for(i=0;i8;i++)?? //8个流水灯依次全部点亮 ?? { ?? P0=temp; ?? delay(100);??? //调用延时函数 ?? temp=1; ?? } temp=0x7F; for(i=0;i8;i++)?? //8个流水灯依次反向全部点亮 { ?? P0=temp; ?? delay(100);??? //调用延时函数 ?? temp=1; ?? } } } void delay(uint t)??? //定义延时函数 { register uint bt; f

文档评论(0)

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

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

1亿VIP精品文档

相关文档