理论教育 单片机程序设计:实现LED点亮规律与控制信号

单片机程序设计:实现LED点亮规律与控制信号

时间:2023-10-20 理论教育 版权反馈
【摘要】:表2.2子函数及其功能表单片机I/O口的控制信号与8LED的亮灭状态的关系,根据电路可知,只要从P2口线输出0,则相应的灯就会被点亮。表2.3LED点亮规律如此看来,只要分析出项目所要求的LED点亮规律,就可排列出P2口的控制顺序。图2.4主函数流程图源程序如下:二、各功能子函数1.函数once()编程思路:函数采用顺序结构,直接给出输出码并顺序输出。程序如下:知识链接:2.3相关知识→2.3.1存储器组织、2.3.3 C语言程序设计基础

单片机程序设计:实现LED点亮规律与控制信号

本项目要实现6个特定功能的选择,由6个按键组成的独立式键盘按下对应按键来完成,这里主函数采用选择结构,功能模块分别由子函数once( )、lr( )、lfun( )、ary( )、cpl( )和inc( )组成。子函数及其功能和实现方法见表2.2。

表2.2 子函数及其功能表

单片机I/O口的控制信号与8LED的亮灭状态的关系,根据电路可知,只要从P2口线输出0,则相应的灯就会被点亮。以8LED依次点亮一次为例,其控制规律如表2.3所示。

表2.3 LED点亮规律

如此看来,只要分析出项目所要求的LED点亮规律,就可排列出P2口的控制顺序。

一、主函数的编写

独立按键的软件常采用查询式结构。即先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序,由于此处是6分支构成的选择结构,故选用switch语句。流程图如图2.4所示。

图2.4 主函数流程图

源程序如下:

二、各功能子函数

1.函数once( )

编程思路:函数采用顺序结构,直接给出输出码并顺序输出。

2.函数lr( )

编程思路:总结8LED依次点亮的规律可知,设定初始显示码,每次P2口输出后均将其移位后再输出,共需移位8次,则程序采用循环结构,点亮灯的时间控制由延时函数完成。程序流程图如图2.5所示。程序如下:

图2.5 左移点亮流程图

3.函数lfun( )(www.daowen.com)

编程思路:C语言中没有循环移位运算符,故循环移位需编写如lr( )的程序段完成。但C语言的函数库的头文件intrins.h中有函数_crol_( )和_cror_( ),可完成左右循环移位。lfun( )就用此方法。

unsigned char_crol_(unsigned char c,unsigned char b);//字符循环左移

unsigned char_cror_(unsigned char c,unsigned char b);//字符循环右移

调用形式:变量=_crol_(变量名,移动位数)

程序如下:

4.函数ary( )

编程思路:建立一字符数组,将8LED的显示数据作为数组元素,按规定的显示顺序一一列出,通过循环程序依次读出后送P2口。

程序如下:

5.函数cpl( )

编程思路:设定初始显示码,利用C语言逻辑运算中取反操作实现。

程序如下:

6.函数inc( )

编程思路:设二极管亮表示1,二极管灭表示0,计数初值为0。分析可知,用循环做加法运算完成。

程序如下:

知识链接:2.3相关知识→2.3.1存储器组织、2.3.3 C语言程序设计基础

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈