公文素材库 首页

51单片机知识点总结

时间:2019-05-29 07:17:24 网站:公文素材库

51单片机知识点总结

51单片机知识点总结

第二章:

存储器空间组成,各区间特点及访问方式,工作寄存器区的设定,程序状态字的位结构及其功能,堆栈的操作,P0-P3各端口的功能,特点,使用方法,单片机复位信号的产生及复位之后的状态,振荡周期、状态周期、机器周期及指令周期的关系及计算方法。第三章:

寻址方式,各类指令(如一般传送类指令五种操作数之间的数据传递,特殊传送类指令的使用方法,算术运算类指令对PSW各标志位的影响,逻辑运算类指令的功能及其使用,控制转移类指令的转移范围等),简单程序的编写与识读(如数据块的搬移,延时程序的实现及如何设定循环次数,查表程序),包括简单C语言程序的识读(如数据传送,数据排序等)。第四章:

中断系统:包括中断源有哪些,如何进行中断允许控制,中断优先级控制,各自的中断入口地址是多少,中断得到CPU服务(即中断响应)的基本条件,中断响应延迟的原因。

定时器:定时器的各种工作方式及其使用方法,定时器的初始化,如何使用定时器实现周期信号的输出。以及相应的简单编程。

串行口:串行口的各工作方式及其使用,接收如何使能,多机通信第五章:

三总线结构及其实现,片外扩展芯片的编址方式及其特点,片外程序及数据存储器的扩展实现并分析其地址区间,片外IO扩展的实现及其器件编址,简单编程。第六章:

键盘,主要是行列式编码键盘的实现方法,识别方法,扫描法的工作原理,按键去抖动。LED段码实现方法,动态LED显示与静态LED显示的比较。

扩展阅读:51单片机初学知识点总结

51单片机初学知识点总结

经过这半个月的学习,我对于单片机的定时器、对I/O口的随意操作、输入检测、中断(定时器的中断、单片机的外部中断)、串口通信等几大学习模块有了一定了解和掌握。

1.软件。我主要是在keiluvision3实现用C语言进行编程和调试。使用keil时,新建或者打开已有文件,按步骤一步步来,漏掉哪一步都会影响最后程序是否能顺利写入单片机中。其中应注意保存C文档、添加文件到工程中和建立hex文档这几个关键步骤。

2.发光二极管和数码管的显示。发光二极管的静态显示是学习单片机的入门路标。分析相关模块的电路图,弄清楚引脚连接情况,根据电路图直接控制LED引脚电位的高低就能实现对相应LED亮灭的控制。了解后完成走马灯(流水线)或更多其他规则的LED显示。数码管的显示较LED稍微复杂一点点,它分位选和段选,位选控制整个数码管的亮灭,段选控制各数码管以何种形式亮或灭。数码管的显示分三步:(1).全部数码管显示一样的字符;(2).选定的数码管以规定的形式亮;(3).数码管的动态显示。其中利用定时器或者延时程序控制数码管动态显示的频率,以调节其显示亮度和视觉稳定度。

用延时函数完成动态扫描:while(1){D1=nn/100;D2=nn%100/10;D3=nn%10;P1=0x01;P0=tab[D1];delay(10);P1=0x02;P0=tab[D2];delay(10);P1=0x04;P0=tab[D3];delay(10);}

延时子程序:voiddelay(x)//延时1ms子程序

{unsignedchary;while(x--){for(y=110;y>0;y--);}

}

3.定时/计数器。编号中断源0外部中断0(INT0)中断标志位终端服务程序入口优先级IE00003H最高1234定时/计数器0(T0)TF0外部中断1(INT1)串口IE1RI或TI定时/计数器1(T1)TF1000BH0013H001BH0023H次之次之次之最低关于定时/计数器的两个特殊功能寄存器TMOD用于T1GATETCON用于定时/计数器TF1TR1TF0TR0IE1说明13位T/C16位T/C8位自动重装T/CT0分成两个独立的8位T/C,T1停止M1M0:工作方式设置位M1M0工作方式001101010123用于中断IT1IE0IT0C/TM1M0GATE用于T0C/TM1M0GATE:门控位。GATE=0,用软件使TR0或TR1为1,就能启动定时/计数器;GATE=1,用软件使TR0或TR1为1,同事外部中断引脚也为高,启动。我们一般置GATE=0。C/T=0,位定时器;C/T=1,位计数器。

对于定时时间的计算:t计数值N机器周期TN121focs或:要定时时间t=(65536-x)*(12/晶振频率)

定时/计数器初始化步骤:

(1)根据上面的信息,对TMOD赋初值,确定T0、T1的工作方式。(2)计算初值,将其写入TH0、TL0或TH1、TL1。(3)为中断方式时,对IE赋值,开放中断。(4)使TR0或TR1置高,启动定时/计数器。例:

TMOD=0x01;//T0处于工作方式1,为十六位定时/计数器TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;

TR0=1;//T0初始化完毕定时子程序:

voidtimer0()interrupt1//定时子程序{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==10)

{}

aa=0;

}

4.键盘。单片机键盘分独立键盘和矩阵键盘两类,矩阵键盘涉及键盘扫描程序。而与键盘按下有关的程序就要注意到消除抖动和松手检测两个重要的细节。松手检测原理是,当键按下时,key2为低,!key2=1,此时程序一直在while语句里面循环,无法跳出来,一旦松手,key2为高,程序即可跳出while循环,执行下面接下来的语句。

if(key2==0)

{delay(5);//延时5msif(key2==0)//确定key2键的确按下,,消抖{while(!key2);//松手检测}}

5.串口通信。串行通信的传输速率用波特率表示。波特率定义为:每秒发送二进制数码的位数,单位为“bps”。波特率的计算公式:

方式0的波特率=12SMOD方式1的波特率=(2方式2的波特率=(2SMODfosc)(T1溢出率)32)f64osc)(T1溢出率)32SMOD2方式3的波特率=(其中,T1溢出率=fosc12256-TH17698H。

串行口控制寄存器SCONSCON

其中SM0与SM1为串行口工作方式选择位SM0SM1工作方式功能0011010101238位同步移位方式波特率543210(98H)RISM0SM1SM2RENTB8RB8TIfosc1210位异步收发器(UART)可变11位异步收发器(UART)fosc32或fosc6412位异步收发器(UART)可变

(1)51单片机串行口工作方式0实质是并行的工作方式,为同步的移位输出和输入,但要实现工作方式0必须要借助外接移位寄存芯片,实际应用中常用作并行I/O口得扩展。它的波特率固定,且数据传送是以8位数为一帧,没有起始和停止位。。

(2)我主要研究学习了串行口工作方式1,它的数据格式是:一个起始位,8个数据位和一个停止位。设fosc=11.0592MHz,波特率为9600,则根据上面的公式,SMOD=0时,TH1=TL1=0xfd;SMOD=1时,TH1=TL1=0xfa。

(3)工作方式2和3的帧格式一样,与工作方式1的类似,只是在原基础上多加了一位内容由用户决定的数据位。工作方式2的波特率与PCON个SMOD位有关。SMOD=1时,波特率为

fosc32,SMOD=0时,波特率为

fosc64。

电源控制寄存器PCON(它不能位寻址)PCON797H6543210SMODSMOD为波特率倍增位。SMOD=1时,波特率增加一倍;复位时,SMOD=0。

REN是允许接收控制位:REN=1时允许接收数据;REN=0时禁止接收数据。

TI是发送中断标志位:当发送完一帧数据后,该位由单片机自动置1,向CPU发送中断请求信号。在中断服务程序中,必须用软件将其清0.

RI是接收中断标志位:与TI类似,接收完一帧后自动被置1,需由软件置0.6.液晶显示。常见的单片液晶显示屏分16引脚和20引脚两种,我使用的是16引脚的YJD1602A-2。安装LCD时按如下三步走:(1)关闭开发板电源。(2)下载一个关闭数码管个流水灯的程序进单片机。(3)顺时针旋转相应电位器以调节LCD的对比度,知道看到5*7点阵。功能读状态读数据写数据输入RS=L,RE=H,E=HRS=H,RW=H,E=HRS=H,RW=L,D0~D7=数据,E=高脉冲输出D0~D7=状态字无D0~D7=数据无写指令RS=L,RW=L,D0~D7=指令码,E=高脉冲这四种功能里面,读状态与读数据实用性不大,我们学习单片机时主要联系写指令和写数据,所以我们对RW置高,给E高脉冲,5引脚直接接地。

关于数据指针:显示模式:0x38控制信号RS0控制位DLR/W0指令代码D70D60D51D4D3D2FD10说明D00DLN具体设置表为:控制信号功能DL=0DL=1NFN=0N=1F=0接口总线为4位长度(仅D7~D4有效),8位数据与指令代码按先高后低位的方向分两次传输显示1行字符行显示2行字符行5*7字符体LCD与单片机接口形式。(数据的传输方式)接口总线为8位长度(D7~D0有效)F=15*10字符体显示开关及光标:00001DCB

D1开显示0关显示C显示光标不显示光标B光标闪烁光标不闪烁

00001NS10当读/写一个字节后地址指针减一,且光标减一N当读/写一个字节后地址指针加一,且光标加一S当写一个字符,(N=1)整屏左移,当写一个字符,整屏显示不(N=1)整屏左移移动清屏:指令代码0x01。执行此指令,HD44780将DDRAM的数据全部写入“空白”

的代码,清除所显示的内容,同事光标移到左上角。

光标归位:指令代码0x02或0x03。AC(地址计数器)的值被清“0”,但是DDRAM(显示数据存储器)的逐句不变,光标移到左上角。

移动光标:

控制信号0

其中S/C和R/L的取值控制光标或字符的左右移动:控制位S/C0011写指令函数:

voidwrite_com(ucharcom){

rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}

写数据函数:

voidwrite_date(uchardate){

R/L01010x100x140x180x1c指令代码说明光标左移光标右移字符左移字符右移0000指令代码D2D1D01S/CR/L------RSR/WD7D6D5D4Drs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}

7.IIC总线。

IIC总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。IIC总线在数据传送过程中有四种类型信号,他们分别是:起始信号、终止信号、应答信号和非应答信号。

起始信号:SCL为高时,SDA有一个下降跳变。起始信号由主机产生。voidstart()//起始信号{

sda=1;

delay();//5us就够了,所以这里只需一个指令周期scl=1;delay();sda=0;delay();}

终止信号:SCL为高时,SDA有一个上升跳变。终止信号也只能由主机产生。voidstop()//终止信号{

sda=0;delay();scl=1;delay();sda=1;delay();}

应答信号:IIC总线传送时每字节为8位,从机在接收到一个字节的数据后,在第9位以低电平作为应答信号,,同时要求主机在第9个时钟脉冲位上释放SDA线,以便从机发出应答信号,将SDA拉低,表示接收数据的应答

voidrespons()//应答信号{

sda=0;delay();scl=1;delay();scl=0;delay();}非应答信号:主机在第9位接收到非应答信号,则表示停止数据的发送或接收。

voiddisrespons()//非应答信号{

sda=1;delay();scl=1;delay();scl=0;delay();}移位操作:

左移:最低位补0,最高位移入PSW的CY位右移:最高位补0,最低位移除

器件地址:高四位固定,最低位决定读/写,另外A0~A2位与从机和总线的接法有关。

1010A2A1A0R/W=0,写R/E=1,读主机进行写操作时,首先由主机发送起始信号,接着是高四位固定为1010而最低位位0的写器件地址,从机发送应答信号后,主机发送写数据地址,从机再次应答之后主机就可以发送数据了,接着从机发送应答信号或者非应答信号之后主机发送终止信号,如下图所示。

主机进行读操作时,首先由主机发送起始信号,接着是高四位固定为1010而最低位位0的写器件地址,从机发送应答信号后,主机发送写数据地址,从机再次应答之后主机再次发送起始信号,接着是高四位固定为1010而最低位位1的读器件地址,从机应答之后就可以读数据了,接着主机发送应答信号或者非应答信号之后主机发送终止信号,如下图。

心得体会:

以上是我根据这半个月学习的单片机知识和编写程序时的程序文档笔记整理的重要知识点和一些经常会用到的基本子函数。学习单片机的这半个月里,我由开始时想一口吃成胖子的急躁心理慢慢调整为了平心静气,循序渐进的学习心态。我是跟着单片机相关的学习视频在学习,而只是跟着视频里面老师的讲解听的话,理解的总不会那么透彻,记忆也不会很深刻,只有举一反三的学习视频资料里面的内容加上自己亲手进行编程与调试后才能更好地掌握所学的知识。在进行C语言编程过程中一定要认真仔细,并注意养成良好的变成习惯,尽量保持程序工整明了,这也方便在出现问题时进行纠错和改错。

友情提示:本文中关于《51单片机知识点总结》给出的范例仅供您参考拓展思维使用,51单片机知识点总结:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


51单片机知识点总结
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/673037.html
相关阅读
最近更新
推荐专题