AutoLeaders控制组——51单片机学习笔记(二)

一、模块化编程

简介

模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。

传统的编程方式将所有的函数放在main函数之中,当时用的代码数量增多时会极大的影响编码者的效率和思路,为了提高效率和思路采用模块化编程的方式。

模块化编程便是将那些常使用且变化不大的函数整合打包放在<xxx.h>的头文件中,当我们需要使用某段代码时只需要声称include<xxx.h>即可。使用这样的方法可以让我们在编码中更简洁,高效,清晰的编写代码。
文件格式(可作为模板套用)

#ifndef __XXX_H__
#define __XXX_H__ //防止重复定义出错,对代码进行选择;
>
>//给出函数的定义(执行预编译)
>
>#endif

预编译的部分代码与作用

#include <REGX52.H> 把REGX52.H文件的内容搬到此处
#define PI 3.14 定义PI,将PI替换为3.14
#define ABC 定义ABC
#ifndef xx_H 如果没有定义__XX_H__
#endif 与**#ifndef,#if** 匹配,组成“括号”
此外还有#ifdef,#if,#else,#elif,#undef等

举例

例如,当我们想要对Delay函数进行模块化编程

void Delay(unsigned int xms)		
{  while(xms--)
	{
	unsigned char i, j;
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
 }
}
#ifndef __Delay_H__
#define __Delay_H__

void Delay(unsigned int xms);

#endif

二、LCD1602

简介

它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法都是一样的。为了降低成本,绝大多数制造商都直接将裸片做到板子上。
LCD液晶屏有两行,十六列
(1). LCD1602液晶屏作为调试窗口,提供类似printf函数的功能 可实时观察单片机内部数据的变换情况,便于调试和演示。
(2) . 相比于数码管和串口 (数码管显示的内容太少并且需要不断扫描,容易闪烁。)(串口则需要使用电脑来不断打开。操作相对复杂笨重)

显示原理

点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成。显示屏上64×16个显示单元与显示RAM区的1024字节相对应,每一字节的内容与显示屏上相应位置的亮暗对应。例如显示屏第一行的亮暗由RAM区的000H~00FH的16字节的内容决定,当(000H)=FFH时,屏幕左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,屏幕右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H…,(00EH)=00H,(00FH)=00H时,在屏幕的顶部显示一条由8条亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。

字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式LCD,常用16×1,16×2,20×2和40×2等的模块。一般的LCD1602字符型液晶显示器的内部控制器大部分为HD44780,能够显示英文字母、阿拉伯数字、日文片假名和一般性符号。

在这里插入图片描述

三、矩阵键盘

简介

矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
当键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,矩阵键盘由此而来。采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。如下图:16个按键只需要8个I/O口
在这里插入图片描述
扫描:
数码管扫描(输出扫描)原理: 显示第1位一>显示第2位一>显示第3位然后快速循环这个过程,最终实现所有数码管同时显示的效果
矩阵键盘扫描(输入扫描原理:
读取第1行(列)一>读取第2行(列)一>读取第3行(列)然后快速循环这个过程,最终实现所有按键同时检测的效果
以上两种扫描方式的共性:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值