论坛» 高校专区» 坤创E-Geek/天科大新电社

03. 单片机I/O口的操作1-LED灯篇

高工
2019-01-22 23:59 1楼

在经过上一帖中对如何进行备赛以及开发板进行简要了解后,接下来就要上代码了。本系列中每个训练题目帖内,都会同时发布蓝桥板和普通开发板(这里也称作小红板,详细介绍及原理图下载见02.竞赛所使用开发板介绍及相关资源下载)的代码,供大家参考学习。如果大家有更好的代码也希望能够发帖分享出来。我们共同学习,共同进步~!

对于学习单片机来说,首先常规操作,不管什么板卡,上来肯定是要先点灯的,点亮一个LED灯,是建立玩转该板卡信心的必经之路。首先一起来看一下本节的题目要求,本节中共有三道题目,要求分别如下,你做出来了么?

题1、点亮发光二极管LED0

题2、闪烁发光二极管LED1

题3、LED0-LED7流水灯

好了闲话不多说,下面分别奉上相关代码,并在文末给出所有代码压缩包的下载链接,欢迎大家下载查看。

-----------------------蓝桥板代码---------------------

蓝桥板题1代码:

/************************************************* 题1、点亮发光二极管LED0 **************************************************/ #include #define uchar unsigned char #define uint unsigned int uchar temp,i; void delayms(uint z); void init(); void main() { init(); P2=0x80; while(1) { P0=0xfe; } } void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=845;y>0;y--); } void init() { P2=0xa0; P0=0x00; //关闭继电器蜂鸣器 P2=0x80; P0=0xff; //关闭led灯 P2=0xc0; P0=0xff; //选择数码管 P2=0xff; P0=0xff; //关闭数码管 }

蓝桥板题2代码:

/********************************************************* 2、闪烁发光二极管LED1 **********************************************************/ #include #define uchar unsigned char #define uint unsigned int uchar temp,i; void delayms(uint z); void init(); void main() { init(); P2=0x80; while(1) { P0=0xfd; delayms(500); P0=0xff; delayms(500); } } void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=845;y>0;y--); } void init() { P2=0xa0; P0=0x00; //关闭继电器蜂鸣器 P2=0x80; P0=0xff; //关闭led灯 P2=0xc0; P0=0xff; //选择数码管 P2=0xff; P0=0xff; //关闭数码管 }

蓝桥板题3代码:

/***************************************************** 3、LED0-LED7流水灯 ******************************************************/ #include #include"intrins.h" #define uchar unsigned char #define uint unsigned int uchar temp,i; void delayms(uint z); void init(); void main() { init(); while(1) { P2=0x80; { temp=0xfe; P0=temp; delayms(1000); for(i=0;i<8;i++) { temp=_crol_(temp,1); P0=temp; delayms(500); } } } } void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=845;y>0;y--); } void init() { P2=0xa0; P0=0x00; //关闭继电器蜂鸣器 P2=0x80; P0=0xff; //关闭led灯 P2=0xc0; P0=0xff; //选择数码管 P2=0xff; P0=0xff; //关闭数码管 }

-----------------------小红板代码----------------------

小红板题1代码:


/****************************************** 题1、点亮发光二极管LED0 *******************************************/ #include"reg52.h" #define uchar unsigned char #define uint unsigned int void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { while(1) { P1=0xfe; } }

小红板题2代码:


/************************************** 题2.闪烁发光二极管LED1 ***************************************/ #include"reg52.h" #define uchar unsigned char #define uint unsigned int void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { while(1) { P1=0xfd; delayms(1000); P1=0xff; delayms(1000); } }

小红板题3代码:

/*************************************** 题3、LED0-LED7流水灯 ****************************************/ #include"reg52.h" #include"intrins.h" #define uchar unsigned char #define uint unsigned int void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { uchar temp,i; while(1) { temp=0xfe; //左移 P1=temp; delayms(1000); for(i=0;i<8;i++) { temp=_crol_(temp,1); P1=temp; delayms(1000); } // temp=0x7f; //右移 // P1=temp; // delayms(1000); // for(i=0;i<8;i++) // { // temp=_cror_(temp,1); // P1=temp; // delayms(1000); // } } }

----------------所有代码打包下载链接------------------

03.单片机IO口的操作1-LED灯篇_全部代码打包.zip


全部做完的同学们,可以接着往下进行04. 单片机I/O口的操作2-数码管篇的题目练习哦~~对代码有问题,欢迎回帖哦~

希望每天都能看到努力追梦的自己!加油!!


高工
2019-01-23 09:33 2楼

谢谢楼主分享

助工
2019-01-23 11:21 3楼

去年的题目就是“精通各种点灯”,很有用!!

菜鸟
2019-01-23 11:24 4楼

结合着电路图不难发现,蓝桥杯的电路决定了它的程序要有P27 P26 P25的操作(138译码器的使用)再结合与非门和锁存器就可以按时间选择要操作的外围设备了

菜鸟
2019-01-23 16:56 5楼

主要就是38译码器控制573锁存器,只要理解这,再加上一些数字电路的知识就行啦

菜鸟
2019-01-23 18:33 6楼

为什么蓝桥杯板子的代码要有init()这个初始化函数,问题就在573锁存器上,估计一开始很多使用者也会对这儿感到匪夷所思,与一般的51开发板不同的是,蓝桥杯板子有一层包装,就是573锁存器,而当拆开这层包装之后,它就跟普通的51开发板没什么不一样,所有的问题都会迎刃而解。

菜鸟
2019-01-23 19:53 7楼

给力

高工
2019-01-23 20:01 8楼
刚开始探索蓝桥杯板子绝对是一件很容易挨打的事情(可能被室友的无情殴打),蜂鸣器的声音会督促你赶紧摸透这块板子,尽快脱离挨打的苦海,刚开始也就是38译码器和锁存器的配合来控制io口,当然最主要的就是我们最喜欢的点灯环节,刚开始看到小灯blingbling的,一定会让自己很有成就感,并迫切的进入下个环节——按键点灯环节!期待大Z老师的下一个按键环节。
高工
2019-01-25 00:00 9楼
来拜读一下大佬的帖子,支持
菜鸟
2019-01-27 18:56 10楼

点灯就是开启了单片机的大门

共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]