单片机教学工作总结共3篇(单片机实用技术课程总结)

上传人:cl****1 文档编号:563431119 上传时间:2023-07-19 格式:DOCX 页数:14 大小:18.97KB
返回 下载 相关 举报
单片机教学工作总结共3篇(单片机实用技术课程总结)_第1页
第1页 / 共14页
单片机教学工作总结共3篇(单片机实用技术课程总结)_第2页
第2页 / 共14页
单片机教学工作总结共3篇(单片机实用技术课程总结)_第3页
第3页 / 共14页
单片机教学工作总结共3篇(单片机实用技术课程总结)_第4页
第4页 / 共14页
单片机教学工作总结共3篇(单片机实用技术课程总结)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《单片机教学工作总结共3篇(单片机实用技术课程总结)》由会员分享,可在线阅读,更多相关《单片机教学工作总结共3篇(单片机实用技术课程总结)(14页珍藏版)》请在金锄头文库上搜索。

1、单片机教学工作总结共3篇(单片机实用技术课程总结)一段时间的工作已经结束了,这段时间里,相信大家面临着许多挑战,也收获了许多成长,好好地做个梳理并写一份工作总结吧。下面是我分享的单片机教学工作总结共3篇(单片机实用技术课程总结),供大家参考。单片机教学工作总结共151单片机串口总结有句话说“尽信书不如无书”,要学好单片机就要不断的、大胆的实验,要多怀疑,即使我们的怀疑最终被证明是错误的那么这也是进步(人们认识事物很多情况下来源于怀疑),当怀疑出现时就要去实践。有很多东西如果不通过实践是不可能掌握其中隐藏的奥秘,就拿51单片机串口通讯这一块,我认为掌握很好了,可以很轻松的实现数据的接收 、发送,

2、但这段时间当我重新学习串口时,我才发现里面还有很多小细节从没注意,更别说研究了。对于接收发送程序永远是按照别人的模式来编写程序,并没有真真正正的挖掘深层次的内容。我身边太多的人在临摹别人的程序,当然我不反对,但是希望自己多问几个问什么,单纯的会编程是学不好单片机的,毕竟单片机有自己独特的硬件结构。开讲之前先简要说一下同步、异步通信:同步通信:发送方时钟对接收方时钟控制,使双方达到完全同步。异步通信:发送与接受设备使用各自的时钟控制数据的发送和接受过程(虽然时钟不同,但一般相差不大)。51单片机串行口结构从上图中我们看到,51单片机有两个物理上独立的接收、发送缓冲器SBUF,它们共用同一个地址9

3、9H,但是请注意:接收缓冲器只能读而不能写,发送缓冲器只写不读。单片机可以同时实现数据的发送与接收功能。特别注意:接收器是双缓冲结构:当前一个字节从接收缓冲区取走之前,就已经开始接收第二个字节(串行输入至移位寄存器),此时如果在第二个字节接收完毕而前一个字节还未被读走,那么就会丢失前一个字节。51单片机串口控制寄存器关于51单片机的控制寄存器各个位表示的含义在这里我只谈SM2。SM2为多机控制位,主要用于工作方式2和3,当接收机的SM2=1时,可以利用接收到的RB8来控制是否激活RI(RB8=0不激活RI,收到的数据丢失;RB8=1时收到的数据进入SBUF,并激活RI ,进而在中断服务程序中将

4、数据从SBUF中读走)。当SM2=0时,不论收到的RB8为何值都将使接收到的数据进入SBUF,并激活RI,通过控制SM2实现多机通信。51单片机串口通讯方式51串口通讯方式有3种,方式0、方式1、方式2与方式3,他们的工作模式不尽相同。 首先他们的波特率很容易忽视。方式0与方式2的波特率固定,而方式1和3的波特率由T1的溢出率决定。方式0的波特率=f/12 系统晶振的12分频,换句话说12M晶振的情况下,其波特率可达1M,速度是很高的(当我们在选用串行器件并采用方式0时需要特别注意器件所能允许的最大时钟频率)。 方式2 =f/64或f/32(当SMOD=1时为f/32,SMOD=0时为f/64

5、)。曾经我用方式2进行MODBUS通信时,总是通讯失败,我仔细检查程序,没有发现逻辑错误,特别是当我参考别人的程序时,发现很少有人用方式2进行MODBUS通讯,所以当时自己妄下结论51单片机的串行方式2不可用,直到有一天夜里我突然想起方式2的波特率是固定的,试想晶振/32或/64怎么也不可能是9600啊,怎么可能通信成功。这才恍然大悟,看来还是自己太武断了,没有认真看书啊。有时我们认为我们犯这样的错误很低级,其实我们很多次都是因为这样的小细节导致我们整个系统不正常,正所谓“千里之堤毁于蚁穴”,这些细节真的伤不起啊。方式1、3波特率=(2smod/32)*T1的溢出率,其中TI的溢出率=f/12

6、*256-(TH1).关于3种通讯方式其中有几点特别容易出错:1、无论采用哪种通讯方式,数据发送和接受都是低位在先,高位在后。2 、3种方式作为输出,由于输出是CPU主动发送,不会产生重叠错误,当数据写入SBUF后,发送便启动(通过单片机内部逻辑控制,与程序无关),当该字节发送结束(SBUF空),置TI。不要理解为当数据一写入SBUF就置位TI,如果中断允许则在中断中发送数据,这就大错特错了。3 同样作为输入,可能会产生重叠错误(主要依赖于特定的环境),当一个字节的数据接收完毕(SBUF满)置位RI,表示缓冲区有数据提示CPU读取。接下来通过一些实验具体说明串口通信中需要注意的地方1 方式0输

7、出方式0主要功能是作为移位寄存器,将数据从SBUF中逐位移出,最常见的用法就是外接串入并出的移位寄存器,如74LS164。之前在做这一部分实验时总是利用单片机I/O端口模拟实现,现在想想在串口未被占用的情况下,方式0是最好的实现方式。利用串口方式0,向74LS164输出字符“0”的编码,程序如下:该程序采用了中断方式实现,结果是通过74LS164使数码管显示“0”。 实验结果如下:这里我说明几点:1 如果采用查询方式,并且只发送一遍,那么程序最后的while(1);不可以省略,否则会出现数码管闪烁的现象(在KEIL环境下,main()函数也是作为一个调用函数,最后也有返回RET,它不像C中的m

8、ain()函数,当执行完毕后就停止,而是重新复位执行,如此反复,这一点要特别注意)这是查询方式下不加while(1);的现实效果2 如果采用中断方式发送,请记得中断中清除TI,仅仅是为了解除中断标志,而不是等待发送结束,因为此时数据早已离开了SBUF跑到外边去了。 3 74LS164最高25MHZ,采用方式0,没有问题。方式0作为输入模式以74ls165(最高时钟25MHZ)为例,可以满足要求。对应结果如下:(注意:74ls165线传送高位,而串口通信低位在先,所以显示的数据和实际数据高低位正好相反对应D0-D7)。本程序只接收一次,也许有人会问,中断程序中REN=0,表示什么意思?可不可以改

9、成ES=0?这个问题很好,首先REN=0表示接收禁止,即不允许串口接收数据;ES=0是禁止中断和单片机是否接收数据没有关系,不接收数据自然中断允许也是徒劳,这两者有很大的区别。我们在很多接收程序中经常可以看到在判断RI标志后紧跟着清除标志位,我想问一下,为什么?) 如果我们也按照这种模式改写会怎样呢? 实验结果如下两次结果差异怎么这么大?为什么会这样子?为了便于理解,也为了说明问题方便,对中断程序做了如下处理:结果又变了是不是感觉很奇怪,究竟咋回事呢?首先中断程序中当判断RI置位标志后紧跟着清零是为了接收下一个字节的数据,也为了避免单片机重复中断。当51单片机串口方式0作输入时,在REN=1且

10、RI=0的条件下就启动了单片机串口接收过程。如果有一个条件不满足就不能启动接收过程,以上出现的错误正式由于忽略了这个重要的因素造成的。在RI清零后由于REN仍然为1,单片机已经开始接收第二字节的数据,由于串口速度很快,RI仍会置位,而紧接着将REN清零只能阻止单片机接收数据,但是却不能阻挡第二次中断。由于只接收了部分外部引脚数据(此时外部引脚为高电平,即逻辑1,其实单片机只接收了一位,对于12M晶振而言,方式0大约8us接收一个字节数据)。相反在RI=0与REN=0之间加上适当的延迟,就可以保证一个字节的数据全部接收完毕,故此时我们读上来的一个字节为0xff。我在中断程序中添加了一个中断计数器

11、(不加延迟),发现中断服务程序的确执行了两次 结果如下 加上延迟结果这就验证了刚才的结论。至于说可不可以换做ES=0,回答是可以的,尽管同样可以实现数据的读取,但是实质不同,当禁止中断后,单片机仍在接收外部数据,只是不再请求中断,自然的不再读取第2、3。字节的数据,那么P1将保留第一次中断时从SBUF中读出的数据。如果某一时刻打开中断发现结果不正常,如果理解了上面的机制就不会觉得惊讶了。 建议:单次接收时,中断服务程序中REN清零放在RI之前。 还有一个问题非常重要: 如果我在中断服务程序中不清除RI,会怎样?很少有人会这样用,但是经常有人忘记了(包括我)。课本上写得很清楚,务必在中断中用软件

12、清除RI,为什么要这样呢?难道仅仅是为了接收下一次数据并且避免单片机不断的响应中断?的确如此,如果对于一个小系统而言,不清除中断标志,那么单片机将不停的中断,影响接下来任务的执行,系统必然瘫痪,而且不能正常的接收数据。 总结:方式0作为发送方,只要向SBUF中写入数据就启动了发送过程;方式0在座位接收模式时,REN=1、RI=0的情况下就已经启动了接收过程。在中断程序中要注意两者清零的顺序。还有一种情况要特别注意:单片机复位时SCON自动清零,如果单片机不工作在方式0,那么如果采用位操作SCON时也要注意REN=1与SM0、SM1的书写顺序,总之切记方式0启动发送、接收数据的条件。方式1 方式

13、1为10位异步通信模式。作为输出和方式0没有本质的区别,不同的是数据帧的形式,但是对于接受模式则有点不同,当REN=1且RI=0时,单片机并不启动接收过程。而是以已选择波特率的16倍速率采样RXD引脚的电平,当检测到输入引脚发生1-0负跳变时,则说明起始位有效,才开始接受本帧数据。 方式1模式下 单片机可以工作在全双工以及半双工方式。 下面举两个例子半双工主机发送某一字符,从机接收到数据后返回数据加1的值 比如 主机发送“1“,从机收到后回复主机”2“。 实验结果如下:方式1工作方式主要注意: 1 波特率可变。2 数据接收以起始位为标志,停止位结束。3 当RI=0且SM2=0或接收到有效停止位

14、时,单片机将接收到的数据移入SBUF中,两个条件缺一不可。方式2和方式3 方式2和3不同的只是波特率,这里以方式3为例作为输出模式同方式1没有区别,只是增加了第八位数据位,第八位数据可以用作校验位或在多机通信中用作数据/地址帧的判别位。 首先我们来做模拟主从奇偶校验模式 主机发送一帧数据,并发送奇偶校验位,从机接收数据后,判断数据是否正确,如果正确,接收指示灯亮,并且回送主机数据加1,反之回送0;主机接收从机信息,如果校验正确点亮LED指示灯.(从机、主机接收数据无论校验正确与否,均显示接收到的字节数据)。 奇校验模式 演示结果如下:(注:从接接收不正确,返回0)主从机接收正确效果之前我们已经

15、介绍了SM2的具体用法,主要用于多机通信,将SM2作为数据/地址帧的判别位,在接收地址时令SM2=1,当接收到的第八位数据为1时激活RI产生中断,然后比较地址,如果地址符合则清除SM2准备接受数据信息,反之不理睬。特别注意 当RI=0且SM2=0(或SM2=1时接收到第9位数据为1)时,单片机将接收到的数据移入SBUF中,两个条件缺一不可。在这里我只举一个简单的例子 一个主机,两个从机1 起始时,主机从机的SM2均置位,所有的从机等待主机发送地址帧,主机令TB8=1,发送地址帧。2 所用的从机将接受到的地址和自己的地址比较,如果符合,点亮LED指示灯,清除SM2(准备接受主机发送的数据帧),并将自己的地址发送到主机。3 主机接收从机发送的地址信息,如果地址符合则数码管显示从机地址并开始准备发送数据,反之发复位信号,TB8=1。4 从机接收数据先判断RB8,如果RB8=1,则复位,重新开始接收主机发送的地址帧,反之通过P1口外接数码管显示接收到的数据。 实验结果如下:注意:如果主机没有得到正确的地址,则将按照一定的速率

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号