为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

01控制一个LED 灯的亮和灭

2010-04-01 13页 pdf 510KB 45阅读

用户头像

is_804831

暂无简介

举报
01控制一个LED 灯的亮和灭 第一课,了解单片机及单片机的控制原理和 DX516的用法,控制一个 LED灯的亮和灭 本章学习内容: 单片机基本原理,如何使用 DX516仿真器,如何编程点亮和灭掉一个 LED灯,如何进入 KEILC51uV 调试环境,如何使用单步,断点,全速,停止的调试方法 聂小猛 2006年 6月 单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需 要学习单片机。可以说,掌握了单片机开发,就多了一个饭碗。 51单片机已经有 30多年的历史了,在中国,高校的单片机课程大多数...
01控制一个LED 灯的亮和灭
第一课,了解单片机及单片机的控制原理和 DX516的用法,控制一个 LED灯的亮和灭 本章学习内容: 单片机基本原理,如何使用 DX516仿真器,如何编程点亮和灭掉一个 LED灯,如何进入 KEILC51uV 调试环境,如何使用单步,断点,全速,停止的调试方法 聂小猛 2006年 6月 单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需 要学习单片机。可以说,掌握了单片机开发,就多了一个饭碗。 51单片机已经有 30多年的历史了,在中国,高校的单片机课程大多数都是 51,而 51经过这么多年的 发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。而国内书店的单片机专架上, 也大多数都是 51系列。可以预见,51单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的 数十年内是不可能会消失的。 作为一个初学者,如何单片机入门?需要那些知识和设备呢?知识上,其实不需要多少东西,会简单 的 C语言,知道 51单片机的基本结构就可以了。一般的大学毕业生都可以快速入门,自学过这 2门课程的 高中生也够条件。 就算你没有学过单片机课程,只掌握了 C 语言的皮毛,通过本系列的教程,您也会逐渐的进入单片机 的大门。当然在学习的过程中,您还是必须多去研读单片机书籍,了解他们的基本结构及工作方式。 下面以 51为例来了解一下单片机是什么东西,控制原理又是什么? 在数字电路中,电压信号只有两种情况,高电平和低电平,用数字来记录就是 1 和 0。单片机内部的 CPU,寄存器,总线等等结构都是通过 1和 0两种信号来运作的,数据也是以 1或者 0来保存的。单片机 的输入输出管脚,也就是 IO口,也是只输出或识别 1和 0两种信号,也就是高电平和低电平。当单片机输 出一个或一组电平信号到 IO口后,外部的设备就可以读到这些信号,并进行相应操作,这就是单片机对外 部的控制。当外部一个或一组电平信号送到单片机的 IO口时,单片机也可以读到这些信号,并进行操 作,这就是单片机对外部设备信号的读取。当然实际的操作中,这些信号可能十分复杂,必须严格地按照 的时间顺序(时序)输入输出。每种设备也都规定了自己的时序,只要都严格遵守,就可以控制任何 设备,做出只要你想象得出的任何事情。 您可能会再问,我如何让单片机去控制和分析外部设备呢?答案是程序,您可以编写相关的程序,并 且把他们烧写到单片机内部的程序空间,单片机在上电时,就会一步一步按照您写的程序去执行指令,做 您想做的事情。 在 51芯片中,有 32个输入输出 IO,分为 4组,每组 8个,分别为 P0口,P1口,P2口,P3口。 P1口的 8条脚就用 P1.0至 P1.7表示,其余类似。51就是用这 32个口来完成所有外部操作的。对于 51的 内部结构,如果您已经了解,那是最好;如果不懂,也可以先放下,在完成了本教程开始的几个章节之后, 您就会大有兴趣,自己去寻找资料阅读了。当然,如果您希望成为一个优秀的单片机开发程序员,还是必 须熟悉单片机的内部结构及工作原理,切不可偷懒! 在这一章,您将用程序去控制一个 LED发光管的亮和灭。你应该知道,LED发光管在通过一定电流时 亮,不通电就灭。为了不让 LED通过太大的电流把它烧坏,我们还要串上限流电阻。51的 IO是弱上拉的 方式,在输出高电平时,只能输出几十微安的电流到地,而在输出低电平时,VCC电源可以输入几十毫安 的电流到 IO。一般 LED需要 10毫安左右电流点亮,我们就将 LED接在电源 VCC和 IO口之间,中间串 上电阻,当 IO输出低电平时,灯就亮了,反之,灯就灭了。我们在这个程序里要控制的是 P1.0。请参考一 下我们将要使用的试验板的电路图,这个试验板是在购买 dx516仿真器是赠送的。 图 1,试验电路图 图 2:试验板外观图 下面介绍一下仿真器和仿真环境。 在实际的单片机学习和开发中,你可以用仿真器模拟一个 CPU芯片,让它按照您编写的程序工作,并 且进行调试,一步步排除程序的 bug,使程序正常工作。程序工作正常后,您就可以用烧写器将您编写的程 序烧入购买来的单片机芯片中,让它自己去运行了。 要使用仿真器,还得有一个编译调试的环境,这个环境是在计算机上运行的,我们就在计算机上编写 和调试程序,计算机和仿真器有连接,仿真器中的各种数据和程序,都可以从计算机上观察到,并可以观 察变量,写入变量的值,单步调试程序,在程序中设置断点调试,全速运行,停止程序运行,等等操作。 我们使用世界上目前最先进的 keilC51编译调试环境,仿真器使用大虾电子网( http://www.daxia.com ) 的 DX516专业版仿真器,这个仿真器功能齐全,性价比最佳,是学习开发的好工具! 您可以在此页 http://www.daxia.com/product/dx58/ 的资料下载栏目里下载到 keilc51 相关的中文说明资 料,这些资料详细地说明了如何使用 C51编程和如何使用 keil uV2环境调试,请在本章试验完成或者试验 过程中,如果遇到不懂的地方,一定要抽时间阅读! 您应该也可以在上面的网页中找到下载破解版本的 keilc51的办法。中国法律规定,在学习和研究工作 中使用有版权的软件是可以的,但是,如果您开发产品时,建议您还是去购买一个正版的软件。 下面是 DX516仿真器的使用介绍: 1。安装 将仿真器和试验板按图 3组装好,串口线按照正确方向插入仿真器,另一端和电脑串口连接,请尽量 使用计算机的硬串口。 仿真器底座左边的跳线,请放在 EMB这边,以进入仿真状态。如果放在 RUN这边,将会进入脱机运 行状态。 晶振选择跳线请放在 IN这边,以使用仿真器内部晶振,内部晶振更加可靠。如果放在 OUT这边,则 会使用外部的用户板晶振。 图 3 仿真器插在试验板上 2。电源 因为用户板使用电流不大,可以使用 usb取电,usb最大电流可以提供 500mA,将 usb取电板插入电脑 的 usb口中。(实际应用中,如果用户板使用电流超过 100mA,我们就建议使用外部电源) 3。启动 在仿真器上电,或者按一下仿真器上面的按钮时,仿真器会发出“嘀-”,表示仿真器正常启动。同时 仿真器上面的灯闪烁一次,表示进入正常仿真状态。 4。仿真设置 第一个设置: C51用户请在您的代码的 main()函数前面,加上一句: char code dx516[3] _at_ 0x003b; 如果以上设置你没有做,在装载过程中,仿真器会发出“嘀嘀嘀” 的三声短声报警,这时的仿真结果将 可能不正确。 在我们的例程中,这句话已经加入了。这句话并不会影响程序的工作,可以一直保留。 第二个设置: 请在硬件仿真设置选项中,选择 serial interrupt,在前面打勾。 如果以上设置你没有做,在装载过程中,仿真器会发出“嘀-” 的一声长声报警,这时的仿真结果将可 能不正确。 其余设置: 请选择 use keil Monitor-51 Driver ,这样才会使用硬件仿真 请选择 load Application at start ,在启动时直接装载程序 请选择 Go till main ,装载后直接运行到 main函数 请在硬件仿真设置选项中,选择 115200bps波特率,所有 cache都可以不选,或者只选 cache code。同 时请选择正确的串口号。 图 4仿真设置 好了,现在可以开始做试验了,我们打开已经建立好的工程和编写好的程序试验。顺便还会学习一下程序调 试的技巧。至于如何建立一个新工程,请参考 C51的帮助文件,或者自己摸索一下,WWW.DAXIA.COM的 DX516 专栏里也有“一步步教你如何第一次做…”的文章可以学习。 请双击 lessoncode01目录下的 lesson1.uv2,打开后界面如下: 图 6:程序界面 这个界面是 uV3的,和 uV2是一样用的。 点一下上图第三排第 2或者第 3个按钮(您的编译器按钮位置不一定在那个位置,自己找找),就可以看 到编译结果了。上面显示是 0errrs,0warnings,这是最佳的编译结果,如果有 error,则无法进行下一步仿真,如果 有 warning,一定要尽量消除,确实无法消除的,也要确认不会对程序造成影响,才进行下一步的仿真。 在编译结果中,我们还可以看到有 data,xdata,code等用了多少字节的报告,要注意您的单片机中是否有 这么多的资源,如果不够,将来烧片运行时就可能出现问。比如 AT89C51的程序空间是 4K,xdata如果没有外 扩就是 0 个,data 是 128 个。超出这些范围,程序就不能在 AT89c51 中运行。不同的芯片有不同的容量,如 SST89E516RD就有 64K程序,内部 768字节 XDATA,还有 256个字节的 data。我们的例程中肯定都考虑了这些 了,肯定不会超出,因为 DX516仿真器是和 SST89E516RD有同样的容量的,将来自己开发时就要注意了。 下面我们故意把第 9行的 P10写成 P11,点编译,因为没有预先定义 P11,所以就报告错误了,如下 图: 双击一下错误报告的那一行,窗口就也会跳到这一行,方便您进行修改。好了,现在请把错误改回去,再编 译一次,出现报告正确了以后,下面开始仿真了。 点一下第二行第 5个一个放大镜里面一个 d字母的按钮,就可以进入仿真了,仿真器要事先连接好哟。进入 仿真后要退出仿真环境也是点这个按钮。注意,等会如果程序在正在全速运行时,仿真环境是不能直接退出的, 得先点停止运行后,再点仿真按钮才可以退出。 点进入仿真按钮,程序开始装载,PC自动运行到了 main()停下,并指向了 main()函数的第一行。 下面是进入了仿真环境的截图: 再顺便把调试界面上的按钮介绍一下: 图 5:按钮说明 进入仿真窗口后,如果出现的不是前面的源代码窗口,而是夹有反汇编代码的窗口,直接关掉这个窗口就会 恢复到代码窗口。下次进入也会直接进入到源代码窗口。 现在先试验单步,点单步(两个单步都可以,一般点单步跨过)。可以看到灯亮了。PC指针也指向了下一个 程序行。 图:照片,灯亮 再点一下单步,PC又走下一步,灯灭了。 再点一次,PC 走到挂起的程序行了,继续点仍然在这一行。这句指令其实就是使程序不断地跳到自己这一 行,别的什么也不做。一般称作程序挂起。 一般的实际应用中的程序是不会挂起的,一般是在 main函数里做一个大循环,程序如下: void main(void) // 主程序 { while(1) { P11=0;//亮灯 P10=1;//灭灯 } } 请将 main函数程序改为上面的代码,我们下一步将试验断点的操作。 编译后结果如下: 图: 进入仿真后 图: 可以看到下面的提示窗口中显示:“connected to Monitor-51 V.DX”,后面的 V.DX就是已经连接到大虾 仿真器的提示了。V.DX是大虾仿真器特有的标识。 在第 15行双击一下,可以看到程序行左边出现了一个红方块,这就是设置断点,再双击一次,断点 就取消了。如果程序在全速运行的过程中遇到断点,就会自动停下来给你分析。注意在进入仿真后,并且 程序是停止状态时,才可以设置或者取消断点。 图:设置了断点 现在点全速运行,可以看到程序在断点处停了下来,并且由于前一句指令刚刚执行了点灯,所以这时灯是 亮着的。 现在在第 14行设置断点,并且取消上一个断点。 图:设置了另一个断点 现在点全速运行,可以看到程序在断点处停了下来,并且由于刚刚执行了灭灯,灯是灭着的。 好,现在试验全速运行和停止。 把断点取消,再点全速运行,可以看到灯是亮着的,但是不是很亮,这是由于程序是循环的,亮灭交替进 行,亮的时间并不是全部的时间。 现在点停止,可以看到程序停止了,重复几次进行全速和停止,可以发现每次停止的地方不一定是同一位 置。 这一课就先结束了,我们学习了如何点灯及一些基本的编译和调试操作,下一课将学习如何使 LED闪烁, 和更多的调试方法,和如何查看运行状态和设置内部寄存器的值。 课后作业: 改为第 2个 LED灯(P1.1)做完本章的试验。
/
本文档为【01控制一个LED 灯的亮和灭】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索