Autoleaders控制组——叶睿 第三次任务

目录

模块化编程:

        1.1 模块化编程

        1.2模块化编程框图

        1.3模块化编程的注意事项

        1.4C预编译

        2.LCD1602调试工具

矩阵键盘:

        1.1矩阵键盘的介绍

        1.2扫描的概念

        1.3STC89C52的输出模式

定时器:

        1.1定时器介绍:

        1.2定时器作用:

        2.STC89C52定时器资源

        3.1定时器框图

        3.2定时器工作模式

        3.3定时器时钟

        4.1中断系统

        4.2STC89C52中断资源

        5.定时器相关寄存器

        6.相关概念

串口通信

        1.串口介绍

        2.硬件电路

        3.电平标准

        4.接口及引脚定义

        5.1常见的通信接口比较

        5.2相关术语

        6.51单片机的UART

        7.1串口参数及时序图

        7.2串口模式图

        7.3串口和中断系统

        7.4串口相关寄存器

        8.数据显示模式

LED点阵屏

        1.1LED点阵屏介绍

        1.2显示原理

        2.74HC595

        3.C51的sfr、sbit

DS1302实时时钟:

        1.1DS1302介绍

        1.2引脚定义和应用电路

        1.3内部结构框图

        1.4寄存器定义

        1.5时序定义                        


模块化编程:

        1.1 模块化编程

        •传统方式:所有的函数均放在main.c里,若使用的模块较多,则一个文件内会有很多代码,不利于代码的组织和管理,而且很影响编程者的思路。

        •模块化编程:各个模块的代码放在不同的.c文件里,在.h文件提供外部调用函数的声明,其他.c文件想使用其中的代码时,只需要#include"XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等。

                .h文件称为头文件)

        1.2模块化编程框图

        Delay函数模块化:

                •#ifndef__DELAY_H__  与  #define__DELAY_H__是预编译语句

        1.3模块化编程的注意事项

                •.h文件:函数、变量的定义

                •.h文件:可被外部调用的函数、声明的变量

                •任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)

                        P.S. 实际上,也可以不定义就声明,编译器不会报错。

                •使用到的自定义的.c文件必须添加到工程参与编译

                •使用到的.h文件必须放到编译器可寻找到的地方(工程文件夹根目录、安装目录、自定义)

        1.4C预编译

                •C语言的预编译以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)

                 •此外还有#ifdef,#if,#else,#undef等

        2.LCD1602调试工具

                •使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实现观察单片机内部数据的变换情况便于调试和演示。

矩阵键盘:

        1.1矩阵键盘的介绍

                •在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式

                •采用逐行或逐列的"扫描",就可以读出任何位置按键的状态

        1.2扫描的概念

                •数码管扫描(输出扫描)

                        原理:显示第1位 → 显示第2位 → 显示第3位 → ······,然后快速循环这个过程,最终实现所有数码管同时显示的效果

                •矩阵键盘扫描(输入扫描)

                        原理:读取第1行(列) → 读取第2行(列) → 读取第3行(列) → ······,然后快速循环这个过程,最终实现所有按键同时检测的效果

                •以上两种扫描方式的共性:节省I/O口

        1.3STC89C52的输出模式

                •弱上拉,高下拉模式,即:输入1时,对I/O口的驱动能力弱,而输入0,驱动能力强.

定时器:

        1.1定时器介绍:

                51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机的内部完成

        1.2定时器作用:

                •用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作

                •代替长时间的Delay,提高CPU的运行效率和处理速度

        2.STC89C52定时器资源

                •定时器个数:3个(T0、T1、T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源

                •N.B.定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有的51单片机共有的

        3.1定时器框图

                •定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔一段固定的时间,计数单元的数值就增加一,当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行

        3.2定时器工作模式

                •STC89C52的T0和T1均有四种工作模式:

                        模式0:13位定时器/计数器

                        模式1:16位定时器/计数器

                        模式2:8位自动重装模式

                        模式3:两个8位计数器

                •工作模式1框图:

                 •计数系统的最大值是65535,溢出的话就会重置为零,激活中断系统

        3.3定时器时钟

                •SYSclk:系统时钟,即晶振周期,本开发板上的晶振为12MHz

                •时钟可以有两个来源:系统时钟 / 外部引脚

        4.1中断系统

                •中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。

                •请示CPU中断请求的请求源成为中断源,中断源有不同的优先级别,CPU总是优先响应级别较高的中断请求

        4.2STC89C52中断资源

                •中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、外部中断2、外部中断3)

                •中断优先级个数:4个

                •中断号:

                 •N.B. 中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同、中断优先级个数不同等等

        5.定时器相关寄存器

                •寄存器是连接软硬件的媒介

                •在单片机中寄存器就是一段特殊的RAM存储器,一方面,寄存器可以存储和读取数据,另一方面,每一个寄存器背后都连接了一根导线,控制着电路的连接方式

                •寄存器相当于一个复杂机器的“操作按钮”

        6.相关概念

                •可位寻址:可位寻址的寄存器能够对其中的每一位单独赋值

                •不可位寻址:不可位寻址的寄存器只能够整体赋值

                •1 & x = x ; 0 & x = 0

                •1  |  x = 1 ; 0  |  x = x

                •与或式负责法:通过与、或的计算方式操作一个整体中的某些位而不影响其他位

                •全局变量:可由多个函数应用,且每次使用完回到初值

                 局部变量:只能某些函数使用,但是每次使用完后会对变量进行销毁

                 静态局部变量:使用完后不会清除,仍然占据内存,可以保证退出函数后不丢失变量的值

                •cror:循环右移

                 crol:循环左移

                        e.g. unsigned char a=0x01

                               a=_crol_(a,1);                //a=0x02

                循环移位的函数不需要进行移位的越界判断

串口通信

        1.串口介绍

                •串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的相互通信

                •单片机的串口可以是单片机与单片机、单片机与电脑、单片机与各式各样的模块相互通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力

                •51单片机内部自带UART(Universal Asynchroncus Receiver Transmitter,通用异步收发器),可实现单片机的串口通信

        2.硬件电路

                •简单双向串口通信有两根通信线(发送端TXD和接收端RXD)

                •TXD与RXD要交叉连接

                •当只需单向的数据传输时,可以直接一根通信线

                •当电平标准不一致时,需要加电平转换芯片

        3.电平标准

                •电平标准是数据1和数据0的表达方式,是传输线揽中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

                •TTL电平:+5V表示1,0V表示0

                •RS232电平:-3~-15V表示1,+3~+15V表示0

                •RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)

        4.接口及引脚定义

        5.1常见的通信接口比较

                 •此外还有:CAN、USB等

        5.2相关术语

                •全双工:通信双方可以在同一时刻互相传输数据

                •半双工:通信双方可以互相传输数据,但必须分时复用一根数据线

                •单工:通信只能有一方发送到另一方,不能反向传输(例如:电视和遥控器)

                •异步:通信双方各自约定通信速率

                •同步:通信双方靠一根时钟线来约定通信速率

                •总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,是住户可以相互交流)

        6.51单片机的UART

                •STC89C52有1个UART

                •STC89C52的UART有4种工作模式

                        模式0:同步移位寄存器

                        模式1:8为UART,波特率可变(常用)

                        模式2:9位UART,波特率固定

                        模式3:9位UART,波特率可变

        7.1串口参数及时序图

                •波特率(以数据字符为单位):串口通信的速率(发送和接收各数据位的间隔时间)

                •比特率(以bit位单位):串口通信的速率(发送和接收各数据位的间隔时间)

                •检验位:用于数据检验

                        常见校验方法有:奇校验、偶校验、0校验、1校验

                •停止位:用于数据帧间隔

                •串口通信是把数据一个一个发出,从低位开始发出,直至停止位,接收也是一位一位的法

        7.2串口模式图

                 •SBUF:串口数据缓存寄存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器,读操作时,读出的是接收寄存器

        7.3串口和中断系统

        7.4串口相关寄存器

        8.数据显示模式

                •HEX模式/十六进制模式/二进制模式:以原始数据的形式显示

                •文本模式/字符模式:以原始数据编码后的形式显示(即以ASCII码的形式显示)

LED点阵屏

        1.1LED点阵屏介绍

                •LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等,LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等

                •LED点阵屏的分类

                        按颜色:单色、双色、全彩

                        按像素:8x8、16x16等(大规模的LED点阵通常由很多个小点阵拼接而成)

        1.2显示原理

                •LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已

                •LED点阵屏与数码管一样,有共阴和共阳两种解法,不同的接法对应的电路结构不一样

                •LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示

                •LED点阵屏和数码管类似,无法对不同的LED分别进行赋值,只能够通过扫描的方法来进行LED的同时显示

                

        2.74HC595

                •74HC595是串行输入并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于I/O口扩展

                •串行数据:一个一个的输入或输出

                 并行数据:多个同时输入或输出

                •SER:串行数据

                 SERCLK:串行时钟,每接收到一个上升沿,数据就会向下移一位

                 RCLK:寄存器时钟,当RCLK有上升沿的时候会将8位数据一起搬运到输出缓存

                •多片级联则可以通过QH这个引脚将数据传输到下一片74HC595,当数据储存完毕后,给RCLK上升沿,即可实现输出nx8位数据的效果

        3.C51的sfr、sbit

                •sfr(special function register):特殊功能寄存器声明

                        例:sfr P0 = 0x80;

                        声明P0口寄存器,物理地址为0x80

                •sbit(special bit):特殊声明

                        例:sbit P0_1 = 0x81; 或   sbit p0_1 = P0^1; 

                        声明P0寄存器的第一位

                •可位寻址/不可位寻址:在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量时寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以可位寻址的。对不可位寻址的寄存器,若只操作其中一位而不影响其他位时,可用“&=”、“|=”、“^=”的方法进行位操作

DS1302实时时钟:

        1.1DS1302介绍

                •DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能

                •RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片

                •单片机自带定时器与时钟芯片的区别:定时器的精度比时钟芯片低,它会占用单片机CPU的空间,并且不可以掉电运行;实时时钟芯片拥有备用电源,掉电之后它仍可保持进行

        1.2引脚定义和应用电路

                •直插封装:

                •贴片封装 :

                 •两种封装方式只是外表不一样,其内部芯片的集成电路和引脚定义是完全相同的

                •应用电路:

        1.3内部结构框图

        1.4寄存器定义

                •1~6行:分别代表秒、分、时、日、月、年 

                •WP:“写保护”        打开后则只能读出无法写入

                •应用的关键:在哪 写入 什么

                                       在哪 读出 (什么)

                •通过地址命令字来操作:第7位:默认为1       

                                                         第6位:0:操作RAM;1:操作时钟

                                                         第5~1位:地址位

                                                         第0位:0:写入;1:读出

        1.5时序定义                        

                 •单字节写:

                        1.CE置为高电平

                        2.I/O口写:命令字节+数据字节

                           命令字节:先发R/W 1还是0

                                             将时钟置为0,然后再给一个上升沿,每一位都如此操作,直至8位全部发完

                           数据字节:从D0位开始,写一个给一个上升沿,每写完一个都要将时钟置0直至D7位写完

                        3.最后写完后将SCLK和CE置0

                •单字节读:

                        1.CE置为高电平

                        2.给8个上升沿将命令字节发送给单片机

                           后面单片机会在紧跟着的一个时钟的下降沿将数据放在线上,这是单片机会将I/O 这个口释放掉,单片机不会再操作I/O这根线,开始读出数据

                        3.单片机继续控制时钟,在每一个下降沿读出一个数据,直至8个数据全部读出

                        4.最后将SCLK和CE置0

        2.BCD码

                •BCD码(Binary Coded Decimal),用4位二进制数来表示1位十进制数

                        •例:0001 0011表示13,1000 0101表示85,0001 1010不合法

                •在十六进制中的体现:0x13表示13,0x85表示85,0x1A不合法

                •BCD码转十进制:DEC=BCD/16*10+BCD%16;(2位BCD)

                •十进制转BCD码:BCD=DEC/10*16+DEC%10;(2位BCD)

                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值