单片机让C语言PO.0~P0.7js每隔1s执行一次函数亮一个,这样循环3次后P1口LED灯全亮 拜托了

下次自动登录
现在的位置:
& 综合 & 正文
第01课 了解单片机的原理控制一个LED灯的亮和灭—–51单片机C语言试验教程
第一课,了解单片机及单片机的控制原理和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 编译调试环境,仿真器使用大虾电子网(
)设计的DX516 专业版仿真器,这个仿真器功能齐全,性价比最佳,是学习开发的好工具!您可以在此页 的资料下载栏目里下载到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 的帮助文件,或者自己摸索一下, 的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)做完本章的试验。
【上篇】【下篇】单片机,c语言编程实现:当遮住光敏开关时一个led灯亮同时蜂鸣器响,...
单片机,c语言编程实现:当遮住光敏开关时一个led灯亮同时蜂鸣器响,没遮住时灯不亮,蜂鸣器不响。
提问者:网友
这个很简单的啊,比如你的光敏开关接在P1.0,LED和蜂鸣器接在P1.2上,那程序就这样写if(P1^0 == 0){ P1^2 = 1;}else { P1^2 = 0;}
回答者:网友
相关已解答问题
在移动端查看:
还没有汽配人账号?豆丁微信公众号
君,已阅读到文档的结尾了呢~~
单片机C语言LED灯点亮程序完全版,c语言点亮led,单片机c语言,单片机c语言教程,宁波单片机c语言培训,南通单片机c语言培训,单片机c语言应用100例,单片机c语言入门,c51单片机c语言教程,单片机c语言编程
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
单片机C语言LED灯点亮程序完全版
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口用C语言编写,单片机控制LED灯并用定时器延时,每隔一秒使LED依次点亮,8 个灯_百度知道
用C语言编写,单片机控制LED灯并用定时器延时,每隔一秒使LED依次点亮,8 个灯
我有更好的答案
我再帮你补一课,看了你的标题,我写了一个用定时器0来控制一个LED灯第隔1秒钟亮灭一次的程序,希望对你有用,另外我也写了一个你说的那个程序,一起发上来吧****************这个是用定时器0控制一个灯的亮和灭******************************#include&reg52.h&#define uchar unsigned char#define uint unsigned int/**************************************/sbit d=P1^0;/******************主程序入口********************/void main(){ TMOD=0x01; TH0=()/256; TL0=()%256; TCON=0x10;
while(1) {
if(num==20)
} }void timer() interrupt 1{
TH0=()/256; TL0=()%256; num++;} ****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)***********************#include&reg52.h&#define uchar unsigned char#define uint unsigned int/**************************************/uchar num,//sbit d=P1^0;/******************主程序入口********************/void main(){ TMOD=0x01; TH0=()/256; TL0=()%256; TCON=0x10;EA=1; ET0=1;tt=255; while(1) {
if(num==20)
} }void timer() interrupt 1{
TH0=()/256; TL0=()%256; num++; }
采纳率:34%
} }void timer() interrupt 1{
TH0=()/256; TL0=()%256; TCON=0x10;EA=1我再帮你补一课,看了你的标题;
} }void timer() interrupt 1{
TH0=()/ TH0=()/256; TL0=()%256.h&#define uchar unsigned char#define uint unsigned int/sbit d=P1^0,/ TL0=()%256; num++!
while(1) {
if(num==20)
tt=; ET0=1;tt=255;**************************************/bit tt,希望对你有用,另外我也写了一个你说的那个程序,一起发上来吧****************这个是用定时器0控制一个灯的亮和灭******************************#include&/******************主程序入口********************/void main(){ TMOD=0x01;/******************主程序入口********************/void main(){ TMOD=0x01; TH0=()/256; TL0=()%256,我写了一个用定时器0来控制一个LED灯第隔1秒钟亮灭一次的程序;/sbit d=P1^0;256; TCON=0x10;
tt=255; num++;} ****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)***********************#include&reg52.h& while(1) {
if(num==20)
P1=#define uchar unsigned char#define uint unsigned int/**************************************/reg52
本回答被网友采纳
每隔一秒使LED依次点亮’,其实我没看懂这句话。是每隔一秒亮一个灯,还是。
每隔一秒亮一个灯,亮完8个灯就停止,不亮了
二楼那个就是了呀
C语言编写的有没有啊
#include&reg52.h&#include&intrins.h&#define uchar unsigned char#define uint unsigned intuchar a=0,i=8;void main(){
//初始化定时器0 TH0=()/256;
//设定50ms计时初值 TL0=()%256; EA=1;
//开总中断 ET0=1;
//开T0中断 TR0=1;
//启动T0定时器
t=0X P1=t; while(i) {
t=_crol_(t,1);
} } while(1) P1=0
//8个led灯为共阳接法}void time0() interrupt 1{
TH0=()/256;
//设定50ms计时初值 TL0=()%256; a++;}
本回答被提问者采纳
!几句话的事!;
/&#47:T0中断服务程序void time0() interrupt 1{
中断20次向下执行I/O移位就可以了
TH0=0x3c;&#47!!void main(){
TMOD=0x21;
//名称;/定时器重新赋值就可以了
TL0=0xb0;/初始化定时器T0为工作方式 TH0=0x3c;
//设定50ms计时初值 TL0=0xb0; EA=1;
/启动T0定时器
while(1);
}//开总中断 ET0=1;开T0中断 TR0=1很简单的
其他1条回答
为您推荐:
其他类似问题
led灯的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Configuration-->Colors &Fonts 里边,可以进行字体类型、颜色、大小的设置,如图 1-8所示。图1-8 字体设置(一)因为我们用的是 C语言编程,所以我们在 Window 栏中选择 8051:Editor C Files,然后在右侧 Element 栏目里可以选择要修改的内容,一般我们平时用到的,只是其中几项而已,比如:Text——普通文本Text Selection——选中的文本Number——数字/*Comment*/——多行注释//Comment——单行注释Keyword——C 语言关键字String——字符串Keil本身都是有默认设置的,可以直接使用默认设置,但如果你觉得不合你的口味,那就在这里更改一下,改完后直接点 OK 看效果就可以了。图1-9 字体设置(二)用单片机点亮LED灯C语言教程一、使用Keil uVision新建一个工程对于单片机程序来说,每个功能程序,都必须要有一个配套的工程(Project),即使是点亮 LED 这样简单的功能程序也不例外,因此我们首先要新建一个工程,打开我们的 Keil 软件后,点击:Project-->New uVision Project...然后会出现一个新建工程的界面。以我们在硬盘上建立了一个 lesson2 的目录,然后把 LED 这个工程的路径指定到这里,这样方便今后管理程序,不同的功能程序放到不同的文件夹下,并且给这个工程起一个名字叫做 LED,软件会自动添加扩展名.uvproj。如图 2-9 所示。图2-9 保存工程直接点保存就可以了,工程会自动保存成 LED.uvproj 文件,下次要打开 LED 这个工程时,可以直接找到文件夹,双击这个.uvproj 文件就可以直接打开了。保存之后会弹出一个对话框,这个对话框让我们选择单片机型号。因为 Keil 软件是外国人开发的,所以并没有国内的 STC89C52,但是只要选择同类型号就可以了。51内核是由 Intel 公司创造的,所以这里直接选择 Intel 公司名下的 80/87C52 来代替,这个选项的选择对于后边的编程没有任何的不良影响。如图 2-10 所示。图2-10 单片机型号选择点击OK 之后,会弹出一个对话框,如图 2-11 所示,每个工程都需要一段启动代码,如果点“否”,编译器会自动处理这个问题,如果点“是”,这部分代码会提供给我们用户,按需要自己去处理这部分代码。那这部分代码在初学 51 的这段时间内,一般是不需要去修改的,但是随着技术的提高和知识的扩展,我们就有可能会需要了解这块内容,因此这个地方我们选一下“是”,让这段代码出现,但是我们暂时不需要修改它,大家知道这么回事就可以了。图2-11 启动代码选择这样工程就建立好了,如图 2-12 所示,如果我们点击 Target 1 左边的加号,会出现我们刚才加入的初始化文件 STARTUP.A51,这个我们先不管。图2-12 工程文件工程有了之后,我们要建立编写代码的文件,点击 File-->New,如图 2-13,新建一个文件,也就是我们编写程序的平台。然后点 File-->Save 或者直接点击那个 Save 的快捷键,可以保存文件,保存时我们把它命名为 LED.c,这个地方必须加上.c,因为如果写汇编语言,这个地方的扩展名是.asm,头文件就是.h 等等,我们编写的是 C 语言程序,这个地方必须自己添加文件的扩展名.c,如图 2-14 所示。图2-13 新建文件图2-14 保存文件现在就可以在建立好的文件中输入我们的程序代码了,在编写之前还有个工作要做。我们每做一个功能程序,必须要新建一个工程,一个工程代表了单片机要实现的一个功能。但是一个工程,有时候我们可以把我们的程序分多个文件写,所以每写一个文件,我们都要添加到我们所建立的工程中去,鼠标右键点 Source Group 1,点 Add Files to GroupSource Group 1...,如图 2-15 所示。图2-15 添加文件(一)在弹出的对话框中,单击 LED.c 选中它,然后点 Add,或者直接双击 LED.c 都可以将文件加入到这个工程下,然后单击 Close,关闭添加。这个时候大家会看到在 Source Group 1下边又多了一个 LED.c 文件。图2-16 添加文件(二)二、用C语言编写单片机程序准备工作做了那么多,终于要编写程序代码了。第一个单片机程序:#include
//包含特殊功能寄存器定义的头文件sbit LED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!void main(){ //任何一个 C 程序都必须有且仅有一个 main 函数LED = 0; //分号表示一条语句结束先从程序语法上来分析一下:main是主函数的函数名字,每一个 C 程序都必须有且仅有一个 main 函数。void是函数的返回值类型,本程序没有返回值,用 void 表示。{ }在这里是函数开始和结束的标志,不可省略。每条C 语言语句以结束的。逻辑上来看,程序这样写就可以了,但是在实际单片机应用中,存在一个问题。比如我们的程序空间可以容纳 100 行代码,但是我们实际上的程序只用了 50 行代码,当运行完了50 行,再继续运行时,第 51 行的程序不是我们想运行的程序,而是不确定的未知内容,一旦执行下去程序就会出错从而可能导致单片机自动复位,所以我们通常在程序中加入一个死循环,让程序停留在我们希望的这个状态下,不要乱运行,有以下两种写法可以参考:参考程序一:#include sbit LED = P0^0;void main(){while(1){LED = 0;参考程序二:#include sbit LED = P0^0;void main(){LED = 0;while(1);程序一的功能是程序在反复不断的无限次执行 LED = 0;这条语句,而程序二的功能是执行一次,然后程序直接停留下来等待,相对程序一来说程序二更加简洁一些。我们的开发板上,还有一个 74HC138 作为 8 个 LED 小灯的总开关,而 P0.0 仅仅是个分开关。如同我们家里总是有一个供电总闸,然后每个电灯又有一个专门的开关,我们刚才的程序仅仅打开了那个电灯的开关,但是没有打开那个总电闸,所以程序需要加上这部分代码。因为要介绍的内容比较多,所以我们把 74HC138 的原理以及为什么要加额外的代码在以后统一介绍,这次小瓦君直接加上这部分代码,大家知道有这么一回事就可以了。#include
//包含特殊功能寄存器定义的头文件sbit LED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ENLED = 0;ADDR3 = 1;ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;LED = 0; //点亮小灯while (1); //程序停止在这里程序编好了,我们要对程序进行编译,生成需要的可以下载到单片机里的文件,在编译之前,我们先要勾选一个选项,Project-->Options for Target Target1...,或者直接点图 2-17 中红框内的快捷图标:图2-17 工程选项图标在弹出的对话框中,点击 Output 选项页,勾选其中的“Create HEX File”复选框,然后点 OK,如图 2-18 所示。图2-18 创建 HEX 文件设置好以后呢,点击“Project-->rebuild all target files”,或者鼠标点击图 2-19 中红框内的快捷图标,就可以对程序进行编译了。图2-19 编译程序编译完成后,在 Keil 下方的 Output 窗口会出现相应的提示,大家注意看图 2-20,这个窗口告诉我们编译完成后的情况data=9.0 ,指的是程序使用了单片机内部的 256字节 RAM 资源中的 9 个字节,code=29 的意思是使用了 8K 代码 Flash 资源中的 29 个字节。当提示“0 Error(s), 0 warning(s)”表示我们的程序没有错误和警告,就会出现“creating hex file from “LED”...,意思是从当前工程生成了一个 HEX 文件,我们要下载到单片机上的就是这个HEX 文件。如果出现有错误和警告提示的话,就是 Error 和 warning 不是 0,那么我们就要对程序进行检查,找出问题,解决好了再进行编译产生 HEX 才可以。图2-20 编译输出信息到此为止,程序就编译好了,下边我们就要把编译好的程序文件下载到单片机里了。三、将程序下载到单片机首先,要把硬件连接好,把板子插到电脑上,打开设备管理器查看所使用的是哪个 COM 口,如图 2-21 所示,找到“USB-SERIAL CH340(COM5)”这一项,这里最后的数字就是开发板目前所使用的 COM 端口号。图2-21 查看COM口然后STC 系列单片的下载软件——STC-ISP,如图 2-22 所示。图2-22 程序下载设置下载软件列出了 5 个步骤:第一步,选择单片机型号,我们现在用的单片机型号是STC89C52RC,这个一定不能选错了;第二步,点击“打开程序文件”,找到我们刚才建立工程的那个 lesson2 文件夹,找到 LED.hex 这个文件,点击打开;第三步,选择刚才查到的 COM口,波特率使用默认的就行;第四步,这里的所有选项都使用默认设置,不要随便更改,有的选项改错了以后可能会产生麻烦。第五步,因为 STC 单片机要冷启动下载,就是先点下载,然后再给单片机上电,所以先关闭板子上的电源开关,然后点击“Download/下载”按钮,等待软件提示你请上电后,如图 2-23 所示,然后再按下板子的电源开关,就可以将程序下载到单片机里边了。当软件显示“已加密”就表示程序下载成功了,如图 2-24 所示。图2-23 程序下载过程图2-24 程序下载完毕程序下载完毕后,就会自动运行,大家可以在板子上看到那一排 LED 中最右侧的小灯已经发光了。那现在如果我们把 LED = 0 改成 LED = 1,再重新编译程序下载进去新的 HEX 文件,灯就会熄灭。至此,点亮一个 LED 的实验已经完成,终于迈出了第一步,是不是还挺好玩的呢!点击“学学”菜单栏!获取更多机器人和单片机的相关知识,还有DIY教程哦~回复“单片机”,获取51单片机电子教案(C语言完整版)为您提供:【前沿资讯】跟踪国内外机器人领域前沿最新动态【萝卜知识】完整的机器人专业知识学习路径,人人都可以成为创客【实践通道】提供机器人相关的产品、爱好者社区,以及工作实践机会本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。生命科技百家号最近更新:简介:传递最新信息,执著玩机动脑,普及使用技巧作者最新文章相关文章

我要回帖

更多关于 cron每隔一小时 的文章

 

随机推荐