第一篇:单片机原理及应用教学日志(2011暑期)
2011年暑期SST单片机原理及应用教学日志
第一讲
授课内容:
第一章 单片机概述及数字电路基础
单片机基本概念,单片机的发展过程与趋势,51系列单片机简介,单片机应用系统,单片机的应用领域,单片机应用系统开发过程(20分钟);
计算机的嵌入式应用、嵌入式系统的定义及特点、嵌入式系统的应用技术、嵌入式操作系统(10分钟);
模拟、数字电路基础:MOS管、三态门、触发器的基本原理(30分钟)。第五章 SST51 单片机开发板(30分钟)。
第四章 Keil C51及SST单片机调试(讲20分钟、练习30分钟)单片机仿真调试的一般过程介绍,Keil uVision2 IDE简介;以讲义第212页的汇编程序为例练习建立工程、编译文件,汇编,编译,外设仿真;IAP简介及SoftICE介绍,以讲义第212页的汇编程序为例练习将程序下载至开发板。课堂作业(40分钟):
创建一个工程,将第188页的汇编程序添加到该工程,编译、仿真。并将目标代码下载到单片机运行,观察程序执行结果。课后作业:
第35页“思考与练习”的第4、5题,第233页“思考与练习”的第1、4题。
第二讲
授课内容:
第二章
MCS–51单片机原理(讲120分钟)
51单片机功能方框图讲解,存储器结构和地址空间介绍,单片机时序及单片机工作过程介绍。MCS–51单片机的指令系统概述、单片机七种寻址方式的简要介绍,具体指令介绍略;重点讲述MOVX、MOVC、PUSH、POP、DA等指令的应用;汇编语言程序设计概述、汇编语言的语句格式及伪指令。课堂作业(60分钟):
熟悉汇编语言,对第89页例3.2.1和3.2.11中的例程进行调试并仿真。课后作业:
第121页“思考与练习”的第6––13题、14题选做。课后练习(选做):
完成3.2.2汇编语言工具链应用举例实验。
第三讲
/ 6
授课内容:
第三章
C51应用基础(70分钟)第一讲作业的讲评。
重点介绍C51头文件使用及定义规范,C51常用运算符,C51对SFR、可位寻址位、I/O口的定义方法,以及对存储器和外接I/O口的绝对地址访问方法、C语言与汇编语言程序参数的传递方法。课堂练习(110分钟):
调试并仿真第143页的程序,完善第153页的程序并仿真。用KEIL调试工具仿真I/O口输出波形。课后作业:
1、请编写程序,测试C51中int、char、double、float等类型的数据所占的字节数是多少。可以利用Keil中的虚拟串口辅助进行测试。
2、本章介绍了sfr、sbit等数据类型,并介绍了预编译指令的使用方法。请阅读51单片机SST89E58RD的数据手册,根据其在标准51单片机基础上增加的功能,在头文件REG51.H的基础上,编写一个适合SST89E58RD使用的头文件。
3、用至少三种方法编写程序,实现LED的闪烁控制。请尽量运用位运算符,以使程序显得简洁,并且有较高的执行效率。LED发光二极管D1的负极与51单片机的P1.0脚相连。
4、改正下面程序的错误并解释原因。#include
a=c;
int a=7,c;
delay(10);
void delay();
{
char i;
for(i=0;i<=255;i++);
}
第四讲
授课内容:
第六章
单片机I/O口工作原理(70分钟)
/ 6
第二讲作业的讲评。
重点介绍各个I/O口的电路结构和功能特点,读引脚与锁存器的区别,存储器的扩展方法,I/O口的扩展方法。课堂练习(110分钟):
第252页例6.2.1程序仿真并在单片机开发板上完成实验。第261页LED跑马灯实验 课后作业: 第263页“思考与练习”的第1、3题,第265页“思考与练习”的第1、2题。
第五讲
授课内容(60分钟):
第三讲作业的讲评。
第七章
51单片机中断系统及中断实验
介绍单片机中断系统原理,中断系统结构,相关寄存器设置,中断响应过程及时间,中断请求的撤销,中断程序的设计与实现。课堂练习(120分钟): 调试第305页例程7.2.1、第309页例程7.2.3、第310页例程7.2.4。调试第305页例程7.2.2,第 318页“思考与练习”第1题。
第六讲
授课内容(60分钟):
第八章
定时器原理及实验
介绍定时器/计数器T0、T1、T2结构和工作原理,相关寄存器设置和使用,定时器/计数器工作方式及相关程序设计。课堂练习(120分钟):
调试第325页例8.2.3,第328页例8.2.6,第329页例8.2.7。
调试并仿真第339页“简易方波发生器”例程,并将程序下载到单片机开发板,用示波器观察波形。课后作业:
1、THX与TLX(X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满之后才能刷新?
2、采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。
3、编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400µs,占空
/ 6
课后作业:
比为10:1的矩形脉冲。
4、编写一段程序,功能要求为:当P1.0引脚的电平上跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。
5、(选做)第342页定时器应用实验——数字钟。
第七讲
授课内容(60分钟):
第七章
定时器原理及实验
(30分钟)
PCA结构与基本原理,PCA寄存器及设置,PCA的软件定时器模式,PCA的捕获模式,PWM模式,看门狗模式。
第十五章
单片机仿真
(30分钟)
介绍单片机仿真软件Proteus的使用方法,仿真电路的绘制,源代码文件的导入以及Keil与Proteus的联合调试方法。课堂练习(120分钟):
调试第362页PCA综合应用例程。调试第521页实验5.1。课后作业:
第365页“思考与练习”第3题。第526页“思考、练习与提高”第1题。
第八讲
授课内容(60分钟):
第六章 单片机I/O口原理及实——I/O接口实验
介绍独立式按键、行列式按键、串行键盘的接口和相应的单片机编程方法。介绍LED数码管结构,静态显示与动态显示原理以及用单片机控制数码管动态显示的编程方法。介绍字符式液晶模块驱动方法。
注:本节授课可安排3组学生讲,第一组讲键盘、第二组讲数码管、第三组讲液晶。
课堂练习(120分钟):
调试第271页按键驱动例程。第274页“思考、练习与提高”第2题。课后作业:
第274页“思考、练习与提高”第1题。第282页“思考、练习与提高”第1、2题。(选做)第287页实验5.6.2。
第九讲
授课内容(60分钟):
第九章
单片机串行通信原理
/ 6
讲述串行通信的基本概念。介绍MCS-51单片机同步/异步收/发器USART模块。重点讲述4种串行通信工作方式及双机通信原理,串口调试助手软件的使用方法。通信程序中环形缓冲区的原理及作用介绍。课堂练习(120分钟):
第391页例9.1.2、第401页例程仿真并下载到开发板实现通信功能。课后作业:
第393页例9.1.3和第395页例9.1.4。第432页“思考与练习”第13题。
第十讲
授课内容(50分钟):
第九章
单片机串行通信原理
讲述串行接口技术的基本概念。介绍I2C接口的基本知识,信号定义,传送协议以及模拟子程序的设计。介绍SPI串行外设接口的系统结构,控制时序,SST 单片机SPI寄存器设置。
注:本节授课可安排2组学生讲,第一组讲I2C、第二组讲SPI。课堂练习(130分钟):
第432页“思考与练习”第16、17题。
第十一讲
授课内容(40分钟):
第十章
D/A转换器原理及实验
讲述D/A转换的基本原理,D/A转换器的技术参数、分类。以8位串行D/A转换器TLC5620为例说明串行D/A转换器的使用方法,以MAX527为例说明并行D/A转换器的使用方法。
注:本节授课可安排学生讲授。课堂练习(140分钟):
完成第449页的D/A转换基础实验。课后作业:
第456页的“思考、练习与提高”尝试调用math.h文件中sin()函数实现正弦波输出。
第十二讲
授课内容(40分钟):
第十一章
A/D转换器原理及实验
结合图11.1.1和图11.1.2分析A/D转换器的功能和基本原理,结合图11.1.3介绍双积分型A/D转换器的转换原理,结合图11.1.4介绍逐次比较型A/D转换
/ 6
器的转换原理,分析A/D转换器的主要技术参数(分辨率和速度等)指出A/D转换器选型时应注意的问题:
1、A/D转换器的精度
2、采样速率
3、A/D转换器的接口类型
4、电压基准源的选择;分析TLC549芯片的时序图,解释TLC549的驱动例程和A/D转换的例程。以MAX197为例说明并行A/D转换器的使用方法。
注:本节授课可安排学生讲授。
课堂作业(140分钟):
调试运行第469页实验程序。课后作业:
完成第477页A/D转换器应用实验“简易数字电压表” 大作业
授课内容:单片机课程大作业实施要求
学生在规定时间内、在8个可选项目中自由组队选择一个项目并完成。实施时间:2011年12月5日至2012年1月7日。验收时间为2012年1月8日至9日。
项目名称:基于SST51单片机的RFID传输模拟系统 基于SST51单片机的简易数字存储示波器 基于SST51单片机的梦幻摇摇棒 基于SST51单片机的寝室监控系统 基于SST51单片机的音乐播放器 基于SST51单片机的银行门禁系统 基于SST51单片机的智能照明系统 基于SST51单片机网络的应用
组队:学生可根据项目的难易程度及项目建议自由组队完成任务。组队人数最多不超过3人,最少不得少于2人。
物资保障:实验室所有资源皆对学生开放,如项目所需器材中心不能提供,项目组可以向实验室提出要求,或由实验筹措,或经实验批准自行采购。自行采购经费需项目组自行垫付,项目完成后经实验领导批准方可报销。组队完毕的团队,如需SST51最小系统版可向实验提出申请。
注:项目组提供的报销票据必须符合学校财务要求。具体要求见校财务处网站。
/ 6
第二篇:单片机原理及应用课程设计
智能电子钟(LCD显示)
1、设计内容及要求...............................................................................................2 1.1、设计内容..............................................................................................2 1.2、设计要求..............................................................................................2 1.3、撰写设计报告......................................................................................2
2、总体方案设计...................................................................................................2 2.1、方案图................................................................................................2 2.2、面板布置图.........................................................................................2 2.3、方案讨论.............................................................................................3 2.4、明晰任务.............................................................................................4
3、电路原理图......................................................................................................4
4、程序框图.........................................................................................................5 4.1、显示子程序流程图............................................................................5 4.2、实时时钟芯片 1302 读/写数据流程图............................................6
5、编程序................................................................................................................6
6、调试....................................................................................................................6 6.1、软件调试.............................................................................................6 6.2、仿真调试..............................................................................................7
7、自我感想............................................................................................................7
8、参考书目............................................................................................................8 附录:C 语言编程源程序.......................................................................................8 1.设计内容及要求 1.1、设计内容:
以AT89C51 单片机为核心,制作一个 LCD 显示的智能电子钟。1.2、设计要求:
(1)计时:秒、分、时、天、周、月、年。(2)闰年自动判别。
(3)五路定时输出,可任意关断(最大可到16路)。(4)时间、月、日交替显示。(5)自定任意时刻自动开/关屏
(6)计时精度:误差≤1秒/月(具有微调设置)
(7)键盘采用动态扫描方式查询。所有的查询、设置功能均由功能键K1、K2完成 1.3、撰写设计报告
单片机课程设计是以课题或项目设计方式开展的一门课程,具有较强的综合性、实践性,是工科、工程类院校或职业类院校电类专业在校生的必修课,是将单片机原理与应用课程的理论知识转变为应用技术的重要教学环节。这一环节不但能加深对单片机原理的理解,而且还能培养学生的实践动手能力,开发学生的分析、解决问题的能力。单片机课程设计环节的训练能够让学生知道单片机工程项目的制作过程,使学生尽早了解单片机系统的开发过程。
2.总体方案设计 2.1、方案图
2.2、面板布置图
2.3、方案讨论
方案一:采用实时时钟芯片
实时时钟芯片具备年、月、日、时、分、秒计时功能和多点计时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用 CPU 的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性 RAM,可用来存放需长期保存但有时也需变更的数据,由于功能完善,精度高,软件程序设计相对简单,且计时不占用 CPU 时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。
方案二:软件控制
利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时及秒表计时。该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术 MCS-51 汇编语言程序设计方法,因此,本系统设计采用此种软件控制方法来实现计时。而由于 Atmel 公司 的AT89C51 是一种自带 4KB Flash 存储器的低电压、高性能的 CMOS 8 位微处理器。该器件采用 Atmel 高密度非易失存储器制造技术制造,与工业标准 的MCS-51 指令集和输出引脚相兼容。AT89C51 将多功能 8 位 CPU 和闪存集成在单个芯片中,是一种高效的微控制器,使用也更方便,寿命更长,可以反复擦除 1000 次。形成了功能强大、使用灵活和具有较高性能价格比的微控制器。它的功能强大而且也比较容易购买,故本设计中所选的单片机为 AT89C51 单片机。2.4、明晰任务
采用 AT89C51 单片机作为系统的控制核心。时钟数据通过市场上流行的时钟芯片 DS1302 来获取。DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和 31 字节静态 RAM,可以通过串行接口与计算机进行通信,使得管脚数量减少。实时时钟/日历电路能够计算 2100 年之前的秒、分、时、日、星期、月、年的,具有闰年自动判断调整的能力。定时电路能够实现自定任意时刻自动开/关屏,采用 LCD LM016L 显示年、月、周、天、时、分、秒。通过按键开关实现微调,确保计时精度:误差≤1 秒/月。DS1302 时钟芯片的主要功能特性:
(1)能计算 2100 年之前的年、月、日、星期、时、分、秒的信息;每月的天数
和闰年的天数可自动调整;时钟可设置为 24 或 12 小时格式。(2)31B 的 8 位暂存数据存储 RAM。(3)串行 I/O 口方式使得引脚数量最少。
(4)DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需 3 根线。
(5)宽范围工作电压 2.0-5.5V。
(6)工作电流为 2.0A 时,小于 300nA。
(7)功耗很低,保持数据和时钟信息时功率小于 1mW。
3.电路原理图
4.程序框图
4.1、显示子程序流程图
4.2、实时时钟芯片 1302 读/写数据流程图
5.编程序 源程序见附录部分 6.调试 6.1、软件调试
目前设计过程中容易造成元件和仪器仪表的损坏,而借助 Keil 和 Proteus进行单片机系统的开发,可以节省设计成本,提高设计速度。Keil 软件包是一个功能强大的开发平台,它包括项目管理器、CX51 编译器、AX51 宏汇编器、BL51/LX51 连接定位器、RTX51 实时操作系统、Simulator 软件模拟器及 Monitor51 硬件目标调试器。它是一种集成化程度高的文件管理编译环境,主要功能为编译 C 语言源程序,汇编程序或混合语言源程序,连接和定位目标文件和库,创建 HEX 文件,调试目标程序等。Keil 是目前最好的 51 单片机开
发工具之一。Keil 支持软件模拟仿真(Simulator)和用户目标调试(Monitor51)两种工作模式。前者不需要任何单片机硬件即可完成用户程序仿真、调试,后者利用硬件目标板中的监控程序可以直接调试目标硬件系统。Proteus 是一个完整的嵌入式系统软件、硬件设计仿真平台,它包括原理图输入系统 ISIS、带扩展的 Prospice 混合模型仿真器、动态元件库、高级图形分析模块和处理器虚拟系统仿真模型 VSM。ISIS 是 Proteus 系统的中心,具有超强的控制原理设计环境。ProteusVSM 最重要的特点是能把微处理器软件作用在处理器上,并和该处理器的任何模拟和数字元件协同仿真,仿真执行目标码就像在真正的单片机系统上运行一样,VSM CPU 模型能完整仿真 I/O 接口、中断、定时器、通用外部设备口及其他与 CPU 有关的外部设备,甚至能仿真多个处理器。6.2、仿真调试 Proteus 仿真
7.自我感想
经历过这么多天不间断的课程设计,我们有挺多感触的,从最基本上说我们看到了,也意识到了自己的不足,对于不断克服的各种阻碍也让我们体会到了课程设计的意义所在。对于只接触课本只动笔杆的我们,面临实际的设计尺寸,让我们很是尴尬,都说理论联系实际,真正到联系的时候才发现挺困难的,不过正是理论知识的各种补充才让我们能最终完成任务,然后深深地体会到理论对现实的指导作用。我们现在最缺乏的就是实际工作经验,而理论联系实践并不像我们想象的那么简单,他需要坚实的理论基础和实际工作经验。坚实的理论基础决定了我必须坚持学习新的知识新的理论,完善了自己的知识结构,才能在以后的实际中轻松面对,才能设计出更好的更有益于人们生活与工作的机械,才能跟上时代的步伐,不被淘汰。在这个一边忙着复习忙着考试又要准备课程设计的日子里,真真正正的体会到了时间的宝贵,有点像高中忙忙碌碌的生活,不过能按时完成课程设计对我们来说也是一个莫大的安慰。严谨和细心是做机械设计的必要态度,要想做好一件事,就必须一丝不苟、态度认真。俗话说:“失之毫厘,谬之千里。”在机械设计上尤其应该注意。在以后的工作中,你的很小的一个疏忽将会造成一个公司很大的损失,甚至给用户带去生命危险,而自己也会为自己的不负责任行为付出代价。再者就是设计中要严谨和细心,对于机械是不能出差错的,任何的微小误差都可能产生不可预计的后果,当然对于我们来说就是设计中要走一些弯路,而且在这个严重缺少时间又惦记回家问题的我们来说也是一个很严重的后果。不过,困难虽是难免的,但我们有信心就能并且已经战胜了困难,完成了这个无比揪心的课程设计。因为时间等各种关系设计中难免有些不足还请老师助教给予批评和帮助。
8.参考文献
《MCS-51 系列单片机原理及应用》 孙涵芳 主编 《新概念 51 单片机 C 语言教程》 郭天祥 主编 《51 单片机课程设计》 周向红 主编 《单片机原理及其应用教程》 张元良 主编 附录:C 语言编程源程序
#include
uint year_data,t;//-----sbit SCLK=P3^5;//DS1302 通讯线定义 sbit DIO=P3^6;sbit RST=P3^7;sbit speak=P0^0;sbit DS=P2^0;//595 通讯线定义 sbit SH_CP=P2^1;sbit ST_CP1=P2^2;sbit ST_CP2=P2^3;sbit ST_CP3=P2^4;sbit ST_CP4=P2^5;sbit ST_CP5=P2^6;sbit ST_CP6=P2^7;sbit ST_CP7=P3^0;sbit ST_CP8=P3^1;sbit OE1=P1^0;sbit OE2=P1^1;sbit OE3=P1^2;sbit OE4=P1^3;sbit OE5=P1^4;sbit OE6=P1^5;sbit OE7=P1^6;sbit OE8=P1^7;sbit K1=P3^2;//按键接口定义 sbit K2=P3^3;sbit K3=P3^4;sbit K4=P0^1;sbit K5=P0^2;//-----void write_595(uchar temp)//写 74HC595 一个字节 { uchar temp_595,i;temp_595=temp;for(i=0;i<8;i++)
{
SH_CP=0;
_nop_();_nop_();_nop_();if(temp_595&0x80){ DS=1;} else { DS=0;} _nop_();_nop_();_nop_();SH_CP=1;temp_595<<=1;} } //--------------void delay(uint z)//Nms 延时 { uint x,y;for(x=z;x>0;x--)for(y=112;y>0;y--);} //-------------void delaynus(uint z)//ums 延时 { uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);} //---------------void write(uchar date)//写入 DS1302 一个字节 { uchar temp,i;RST=1;SCLK=0;temp=date;for(i=0;i<8;i++){ SCLK=0;if(temp&0x01)DIO=1;else DIO=0;SCLK=1;temp>>=1;} } //-----uchar read()//读出 DS1302 一个字节 { uchar a,temp;RST=1;for(a=8;a>0;a--){ temp>>=1;SCLK=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();SCLK=0;if(DIO){ temp=temp|0x80;} else { temp=temp|0x00;} } return(temp);} //---void write_1302(uchar add,uchar dat)//写 DS1302 数据 { RST=0;SCLK=0;RST=1;write(add);write(dat);SCLK=1;RST=0;} //----------uchar read_1302(uchar add)// 读 DS1302 数据 { uchar temp;RST=0;SCLK=0;RST=1;write(add);temp=read();SCLK=1;RST=0;return(temp);} //------------void display()//显示子程序 { miao=read_1302(0x81);//读秒 fen=read_1302(0x83);//读分
shi=read_1302(0x85)&0x3f;//读时 date=read_1302(0x87);//读日 month=read_1302(0x89);//读月 year=read_1302(0x8d);//读年 day=read_1302(0x8B);//读星期 write_595(miao);//显示秒 ST_CP1=0;ST_CP1=1;ST_CP1=0;delaynus(10);write_595(fen);//显示分 ST_CP2=0;ST_CP2=1;ST_CP2=0;delaynus(10);write_595(shi);//显示时 ST_CP3=0;ST_CP3=1;ST_CP3=0;delaynus(10);write_595(date);//显示日 ST_CP4=0;ST_CP4=1;ST_CP4=0;delaynus(10);write_595(month);//显示月 读 ST_CP5=0;ST_CP5=1;ST_CP5=0;delaynus(10);write_595(year);//显示年 ST_CP6=0;ST_CP6=1;ST_CP6=0;delaynus(10);write_595(xingqi[day]);//显示星期 ST_CP7=0;ST_CP7=1;ST_CP7=0;delaynus(10);} //----------void ds1302_init()//1302 初始化 { RST=0;SCLK=0;/* write_1302(0x80,0x00);//设置初始值 SEC write_1302(0x82,0x00);//设置初始值 MIN write_1302(0x84,0x00);//设置初始值 HR write_1302(0x86,0x00);//设置初始值 DATE write_1302(0x88,0x00);//设置初始值 MONTH write_1302(0x8A,0x00);//设置初始值 DAY */ write_1302(0x8C,0x10);//设置初始值 YEAR } //--------------void PORT_INIT()//端口初始化 { P0=0XFE;P1=0X00;P2=0X00;P3=0XFC;} void time_init()//定时器初始化 { TMOD=0x11;//设置定时 器 01 都为工作方式 1 TH0=(65536-50000)/256;//装入初值 TL0=(65536-50000)%256;TH1=(65536-10000)/256;//装入初值 TL1=(65536-10000)%256;PT0=1;//T0 定时器优先级最高 EA=1;//开总中断
ET0=1;//开定时器 0 中断 ET1=1;//开定时器 1 中断 TR0=1;//启动定时器 0 TR1=1;// 启动定时器 1 } //--------------void main(void)//主程序 { PORT_INIT();ds1302_init();time_init();year=read_1302(0x8d);//读年数据 year_data=0x2000|year;write_595(year_data>>8);//显示 2010 年的 20 字样 ST_CP8=0;ST_CP8=1;ST_CP8=0;set_shi=0x09;//闹钟初始值设定 set_fen=0x39;time_flag=0;//标志位 set=0;while(1){ switch(set){ case 0: //设置秒 { display();// 显 示 子 程 序
if((shi==set_shi)&&(fen==set_fen)&&(time_flag==0))小时和分钟 { speak=~speak;if((K2==0)&&(time_flag==0))//按键 K2 停 止闹钟响 { P0&=0XFE;time_flag=1;} delay(10);} } break;} if(fen==set_fen+1)// 当 不 按 下 闹 钟 停止按键,一分钟后自动停止闹 钟 { P0&=0XFE;time_flag=0;} } } //--------void time0()interrupt 1 // 定时 器 0 中断 { TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;mun++;if(mun==15){ mun=0;switch(set){ case 1: //设置秒闪烁 {OE1=1;delay(300);OE1=0;} break;case 2: //设置分闪烁 { OE2=1;delay(300);OE2=0;} break;case 3: //设置时闪烁 { OE3=1;delay(300);OE3=0;} break;case 4: //设置日闪烁 { OE4=1;delay(300);OE4=0;} break;case 5: //设置月闪烁 { OE5=1;delay(300);OE5=0;} break;case 6: //设置年闪烁 { OE6=1;OE8=1;delay(300);OE6=0;OE8=0;} break;case 7: //设置星期闪烁 { OE7=1;delay(200);OE7=0;} break;case 8: //设置闹钟闪烁 { OE2=1;OE3=1;delay(200);OE2=0;OE3=0;} break;} } TR0=1;} //-----------void time1()interrupt 3 // 定时器 1 中断 { TR1=0;//先关定时器 TH1=(65536-20000)/256;TL1=(65536-20000)%256;//-if(K1==0){ delay(10);if(K1==0){ set++;if(set==9){ set=0;write_1302(0x80,miao);//设置初始值 SEC write_1302(0x82,fen);//设置初始值 MIN write_1302(0x84,shi);//设置初始值 HR write_1302(0x86,date);//设置初始值 DATE write_1302(0x88,month);// 设置初始值 MONTH write_1302(0x8A,day);//设置初始值 DAY write_1302(0x8C,year_data);//设置初始值 YEAR } t=50000;while((!K1)&&t){ t--;} } } //-------if(K2==0){ delay(10);if(K2==0){ switch(set){ case 1: { miao++;if((miao&0x0f)>0x09){ miao+=0x10;miao&=0xf0;} if(miao==0x60){ miao=0x00;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen++;if((fen&0x0f)>0x09){ fen+=0x10;fen&=0xf0;} if(fen==0x60){ fen=0x00;} ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi++;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x24)//24 小时制 { shi=0x00;} } else { shi=(shi|0x80)+1;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x12)//12 小时制 { shi=0X80;} } write_595(shi);//显示时 ST_CP3=0;ST_CP3=1;ST_CP3=0;} break;case 4: { date++;if((date&0x0f)>0x09){ date+=0x10;date&=0xf0;} if((date==0x32)&&((month==0x01)||(month==0x03)||(month==0x05)||(month ==0x07)||(month==0x08)||(month==0x10)||(month==0x12))){ date=0x01;} else if((date==0x31)&&((month==0x04)||(month==0x06)||(month==0x09)||(month ==0x11))){ date=0x01;} else if((date==0x29)&&(month==0x02)&&((year_data|read_1302(0x8d))%100!=0)& &((year_data|read_1302(0x8d))%400!=0)){ date=0x01;} else if((date==0x30)&&(month==0x02)&&((year_data|read_1302(0x8d))%100==0)& &((year_data|read_1302(0x8d))%400==0)){ date=0x01;} write_595(date);ST_CP4=0;ST_CP4=1;ST_CP4=0;} break;case 5: { month++;if((month&0x0f)>0x09){ month+=0x10;month&=0xf0;} if(month==0x13){ month=0x01;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data++;if((year_data&0x000f)==0x0a){ year_data+=0x0010;year_data&=0xfff0;} if((year_data&0x00ff)==0xa0){ year_data+=0x0100;//向前进 1 year_data&=0xff00;//后面尾数归 0 } write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day++;if((day&0x0f)==0x08){ day=0x01;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K2)&&t){ t--;} } } //-------------------------if(K3==0){ delay(10);if(K3==0){ switch(set){ case 1: { miao--;if((miao&0x0f)==0x0F){ miao&=0xf9;//减到 0 后,再减一次就归 0, } if(miao==0xF9)//当全部减到 00 时,再 减一次就为 59 { miao=0x59;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen--;if((fen&0x0f)==0x0F){ fen&=0xf9;} if(fen==0xF9){ fen=0x59;} write_595(fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi--;if((shi&0x0f)==0x0F){ shi&=0xf9;} if(shi==0xF9)//24 小时制 { shi=0x23;} } else { shi=(shi|0x80)-1;if((shi&0x0f)==0x0F){ shi&=0xf9;} ST_CP4=0;} break;case 5: { month--;if((month&0x0f)==0x0F){ month&=0xf9;} if(month==0x00){ month=0x12;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data--;if((year_data&0x000f)==0x0F){ year_data&=0xfff9;} if((year_data&0x00f0)==0xF0){ year_data&=0xf999;} write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day--;if((day&0x0f)==0x00){ day=0x07;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K3)&&t)//松手检测 { t--;} } } //---switch(set){ case 8: { if(K4==0){ delay(10);if(K4==0){ if((read_1302(0x85)&0x80)==0x00){ set_shi++;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x24)//24 小时制 { set_shi=0x00;} } else { set_shi=(set_shi|0x80)+1;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小时制 { set_shi=0X80;} write_595(set_shi);// 显示闹 钟的时 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}
if(set_fen==0x60)
{
set_fen=0x00;
} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小时制 { set_shi=0X80;} write_595(set_shi);// 显示闹 钟的时 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}
if(set_fen==0x60)
{
set_fen=0x00;
} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } } } } //------------------------if(((K4==0)||(K5==0))&&(set==0)){ delay(10);if(((K4==0)||(K5==0))&&(set==0)){ write_595(set_shi);//显示闹钟的时 ST_CP3=0;ST_CP3=1;ST_CP3=0;write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;P1=0XF9;while((!K4)||(!K5));P1=0X00;} } //----------TR1=1;//退出时开定时器 } } //----------
第三篇:《单片机原理及应用》课程
《单片机原理及应用》课程
自评报告
陕西理工学院电气工程系《单片机原理及应用》课程组 二○一○年三月
目 录
第一部分 课程简介
第二部分
课程内容与体系的改革 第三部分 实验教材
第四部分 自评结果和评分依据 第五部分 存在的主要问题及整改措施 附件:自评评分依据 《单片机原理及应用》课程自评报告
第一部分 课程简介
单片机技术广泛地应用于工业控制、智能仪器仪表、机电一体化产品、家用电器等各个工业领域。因此,单片机原理及应用是工科院校各专业学生的一门重要的应用技术课程,对电类学生尤为重要,通过该课程可以了解工业高新技术,培养综合的工程设计能力。学生在课程设计、毕业设计、科研项目中会广泛应用到单片机知识,而且,进入工作后,更会广泛接触到单片机的工程项目。近几年,一些用人单位直接把单片机应用技术测试作为人才选用的条件。显然,提高该门课程的教学质量,对培养学生的综合应用能力,提升学生在人才需求市场中的竞争能力,具有重要意义。
《单片机原理及应用》课程是自动化、电气工程及其自动化、计算机科学与技术等专业的一门专业技术基础课。单片机应用技术包含着广泛的内容(基本原理、接口技术、开发方法、开发工具、控制技术等),而且构成完整的知识体系。也就是说,缺少某一个方面或某一个环节的知识,将会影响实践应用能力。再者,单片机产品及其应用技术发展日新月异。在一门课程的有限教学时间内,如何让学生比较系统全面的掌握单片机应用知识,同时能反映比较新的应用技术,培养学生的工程设计能力,必须加强课程建设力度,在课程内容与课程体系上进行重大改革。
《单片机原理及应用》课程在自动化、电气工程及其自动化、计算机科学与技术3个本、专科专业中开设学时为40-60学时。多年来,该课程组师资队伍建设稳步提高,教学和实验条件逐步完善,现已形成了相对稳定的较高教学水平的师资队伍和完全满足实验教学条件的实验平台。
目前,《单片机原理及应用》课程组共有6名课程主讲教师和多位实验技术人员,其中教授1人、副教授2人、讲师3人,研究生5人,实验师多人,承担校内相关3个专业本、专科学生的单片机原理及应用课程教学与实验任务。
《单片机原理及应用》课程组在多年的具体教学与实践过程中,在课程建设和教学改革方面取得了较为显著的成效。从2000年开始,课程改革小组注重教育思想和教学观念的转变,开展了课程教学内容、课程体系、教学方法及教学手段的改革研究与实践,对课程的教学内容与体系进行了优化。目前已初步建立了以培养学生工程素质和综合应用能力为教学目标的新的课程体系,在教材建设、实践性教学环节建设方面取得了可喜的成果。李建忠教授把课程组研究的理论成果变成了现实成果,编著的《单片机原理及应用》(第二版被评为国家十一五规划教材)一书被全国30多个省市的100多所高校采用,在国内产生较大影响。组织的实践教学环节在本院多届学生中也取得了显著的成效。
《单片机原理及应用》教学仪器设备丰富,实验开出率100%,同时开设一定的设计性、综合性实验。实验室规章制度健全,管理人员到位,教学服务及时,为实验课程教学提供了有力保障。
随着“单片机原理及应用”课程内容和课程体系改革的进行,课程教学质量逐步明显提高。伴随着教学质量的提高,浮现出了许多科研项目。例如,智能型家用有毒气体探测语音报警呼救装置、机车防带电过分相装置、消失模浇注充型速度的微机化测试的研制,科研项目的进行又推动了教学质量的进一步提高。教师在教学中,结合自己的科研生动地讲解原理、方法、技术。近几年课程组成员结合自己的科研项目,在单片机应用技术方面发表论文多篇。
第二部分 课程内容与体系的改革
教材是教育思想、教育理念体现的载体,是一门课程教学内容与体系、教学方法及手段的集中表现。一本好的教材不能局限在知识的传递上,还应表现在科学思维方法、获取知识的方法、综合能力和创新设计能力培养方法的传递上,便于运用新的教学方法和手段组织实施教学。这是课程组改革研究的一个理论成果。
在理论研究的指导下,确定以教材建设为龙头进行课程内容与体系的优化。由于单片机应用技术知识包含的内容广泛,单片机产品及其应用技术发展速度快,如何在有限的计划课时内让学生比较完整的掌握单片机应用技术知识体系,同时了解一些比较新应用技术,吸取了国内外先进的教学思想和教学经验,广泛收集和查阅国内外优秀教材和有关教学资料,又结合我们多年积累的教学经验和教训,比较全面地考虑了各种因素,对课程内容与课程体系进行整体优化,编著了《单片机原理及应用》(第二版被评为国家十一五规划教材)、《单片机原理及应用实践教程》,形成了一套新的课程教学体系。教材内容体系进行了优化组合。既体现了系统全面,包含了基本原理、接口技术、开发方法、开发工具、控制技术等,又进行了浓缩精练,论述严谨透彻。教材内容的组织上采用“以点见面,触类旁通”的精练浓缩方法。例如,在每一章节前都概述出相关的一般性内容和方法,然后再以具体的内容或典型的实例进行说明。始终贯穿应用观点。例如,在单片机原理的讲解中,着重强调站在应用角度,掌握单片机的功能特性和配置结构。即用户站在单片机芯片外部看它所提供给用户的使用功能和资源,达到正确、合理的使用单片机所提供的硬、软件资源。这不仅给学生强调了达到应用的学习目标,而且给学生树立了一个学习掌握应用知识的正确学习方法界面。这一点经教学实践检验,取得了良好的教学效果。又例如,在应用技术的讲解中,大多数选自生产和科研中的应用实例,使学生学后就能用。注重科学思维方法、获取知识的方法、综合能力和创新设计能力的培养方法的传递。掌握一门学科知识的学习方法,其实质是找出并抓住学科知识的内在联系,形成一个完整体系。该书突出了这方面的特色。例如,在指令系统的讲述中,大多数教材采取按功能类逐条指令罗列讲解,使初学者很难理解记忆。其实,指令系统中有一些操作指令的子集合是具有特征规律的,不同操作指令的子集合之间也具有一些可比性特征规律,在该书的讲述中用归纳、类推、类比方法进行纵向归类,横向类推、比较。这不仅能使学生掌握知识,而且学习了科学思维方法和学习方法。在讲解基础知识的基础上,反映新的应用技术成果。例如,紧密结合基础知识讲解了单片机应用程序开发设计方法。
第三部分 实验教材
在广泛调研现有实验教材经验与问题的基础上,引入新的教育理念,针对现代工程人才的培养模式、人才素质及能力的要求,课程组认为实验教材不能局限在对基础知识的验证上、不能局限在基本实验的操作指导上、不能局限在某一门课程知识的动手实践能力的培养上、不能局限在理论教材的辅助功能作用上,还应给学生提供广阔的、自由灵活的动手实践空间,要培养学生在基本理论知识的基础上能够吸收、使用新技术方法,培养学生一般的工程实践能力和创新设计能力,使实验教材成为相对独立的综合实践能力培养的指导书。在这样的思想指导下,组织编写了《单片机原理及应用实践教程》的,于2001年5月在本院内部印刷使用。在多年的使用中取得了良好的效果。
《单片机原理及应用实践教程》一书主要具有以下特色:(1)知识的系统完整性与实践过程的系统完整性并重 实验内容的编写上紧密结合理论教学,按照单片机原理及应用课程知识的内在联系,保持了知识的系统完整性。从宏观结构上,实验内容分为单片机系统功能、单片机系统扩展、单片机系统配置和综合应用四大实验组。在每个实验组中又按照基础→综合→工程应用的方式安排了多个实验项目,每个实验项目中又按照基本原理、知识提要、基本技术、方法论证、实验结果分析的方式进行组织。这样,使该书成为学习、掌握单片机原理及应用知识的很有价值的参考书。从实践应用过程看,该书宏观上反映了单片机应用系统的开发环境、开发方法、开发过程。在每一个实验项目中,又反映出了一个单片机应用系统立题概要分析、功能结构论证分析、器件选择、硬软件设计、系统调试、性能分析与测试、文档收集与整理的全过程。使学生能够学习、掌握到一个单片机应用系统开发设计过程中各个环节的技术方法。
(2)知识掌握和科学思维能力培养并重
在每个实验项目中都提示出所依据的基本原理知识,所采用的方法和技术,通过实验来加深对基本知识的理解,达到熟练掌握。在每个实验项目后,提出一些很有价值的思考问题,主要围绕实验现象观察与分析,培养学生科学细致地观察与分析问题的方法和能力。每个实验既给出了参考方案,又要求学生在参考方案的基础上自行设计、调试,充分发挥学生的主观能动性和创造力、有意识地培养学生对工程问题的分析与设计方法。每个实验都要求学生按照严格的格式写出实验报告,在实验报告中深入细致地分析、论证有关实验现象与结果,通过实验报告的书写,培养学生严谨求实的科学方法和态度。
(3)既面向验证性实验又面向开放性、设计性实验
根据单片机原理与应用的知识结构,实验内容分为单片机系统功能、单片机系统扩展、单片机系统配置和综合应用四个实验组。每个实验组又按照基本原理、技术、方法的应用,综合应用、工程设计的思路方式安排了多个实验项目,为学生提供了广泛的实验内容,即可以供课程实验使用,也可以供开放实验、设计实验使用。
(4)实验教学的目标确定在以下几个方面:
验证基本理论、方法和技术。通过验证性实验,使学生加深对基本理论、方法和技术理解,能够熟练应用,并使学生进一步认识到:基本理论、方法和技术来源于实践,又对实践有强大的推动作用,在实践中得到发展,得到创新。
基本实践能力的培养。基本实践能力包含:掌握小型单片机应用系统开发研制所采用的基本环境、方法、手段及所使用的仪器设备。
综合工程实践能力的培养。综合工程实践能力包含:掌握复杂单片机工程应用系统开发研制所采用的先进的环境、方法、手段及所使用的仪器设备,并能进行工程决策分析。
创新设计能力的培养。创新设计能力包含:在一些关键的技术环节上能够激发出超常的思想方法或采用前沿性的技术手段分析解决问题。
(5)实验教学的实施方式
根据现代工程人才的培养模式、人才素质及能力的要求,我们设计出了形式多样的实验教学方式。
指导型实验。这类实验纳入单片机原理及应用课程的教学计划和教学大纲,在老师的指导下,进行规定要求实验,实验后要写出实验报告。实验目标是基本实践能力的培养。
开放型实验。这类实验是学生根据自己的要求自发地进行实验,实验室必须随时满足学生的实验要求。在这种实验中,学生可根据自己的情况实现多种目标。
设计型实验。这类实验学生带着自己的设计问题,进入实验室进行调试或测试,一般结合课程设计、毕业设计、大学生科技活动项目进行。实验要有明确的目标,主要培养学生综合工程实践能力和创新设计能力。
第四部分 自评结果和评分依据
为了进一步提高课程教学质量,努力做好课程建设与评估,电气工程系专门成立了院系、教研室(课程组)两级评估领导小组,负责对申报课程的指导、监督和审查。课程组全体任课教师认真学习、领会相关课程建设与评估精神,认真对照精品课程建设评估指标体系的各项要求,总结多年来课程建设的成果,结合课程建设过程中存在的实际问题,进行了认真细致地资料整理、自查自评。通过本次自查自评活动,真正达到了“以评促改,以评促建”的目的。
自评结果:Q=102分(≥100),符合并达到了校级精品课程的条件。详见附件:课程自评表。
第五部分 存在的主要问题及整改措施
1.网络教学和资源共享方面还需进一步的丰富和完善。实现与本课程相关的信息查询、辅导答疑、作业练习等多种功能,方便学生网上学习。
2.实验教学设备更新不够,试验教学手段还不够丰富、不够先进,理论教学内容和体系还需要进一步整合、优化;
3.进一步加大教学改革力度,转变教育教学理念,探索高教理论,不断改进和提高教师的理论与实践教学方法和手段。
同时还需要认清形势,剖析自我,虚心向兄弟院校学习先进的课程建设经验,弥补自己的差距和不足,加快课程建设步伐,使《单片机原理及应用》课程教学全面上台阶、上水平。
附件:自评评分依据 师资结构:19分/20 1.1师资结构:A级,4分/4 课程组职称结构合理,有教授、副教授、讲师、高级实验师、实验师共8人,主要由教授、副教授、讲师上课。
1.2教学水平:A级,5 分/6 教学水平高,高、中级职称教师均开课2门以上;教学工作量饱满,教案齐全;有教改及科研项目。
1.3学术水平:A级,6 分/6近3年发表论文篇,人均6篇;主编、参编教材9部;完成省厅级科研项目3项,校级科研基金项目3项,院教改项目7项。
1.4教风建设:A级,4分/4 教风良好;教研室制度健全,坚持教学研究活动,每年教研活动大于18次,有记录;能坚持相互听课、评教;能收集学生对教学的反馈信息,并改进教学;教学组无任何教学事故。教学条件:24分/25 2.1教学大纲:A级,6分/6 教学大纲符合专业培养目标和教学计划的基本要求,并能结合教学计划适时修订、完善;大纲能反映课程体系结构,项目完整,层次清晰,重点、难点突出,要求明确;教学过程中能够严格执行大纲。
2.2教材及教学参考书:A级,7 分/7 选用学校自编国家级规划教材及相应教学参考书,满足不同专业的培养计划要求,使用效果好。
2.3课程教学管理及教学文件:A级,5分/6 教学参考资料丰富、齐全,能反映本课程发展现状;课程有完整的教学工作总结,教师有教学日历和教案。
2.4教学设备和手段:A级,6分/6 使用多媒体、板书讲解和现场教学等手段;与实验室共同开发研制有相应的实验教学设备,且符合本校学生情况,使用效果好,完全能满足正常的教学需要。3 考核:15分/17 3.1考试说明:A级,3分/3 在教学大纲的指导下,能按要求进行命题考试工作,命题质量高,考分分布合理。3.2题库(卷库)建设:B级,4分/5 有与教材配套使用的高质量的试题库,试题库完全符合教学要求。3.3命题与评分:A级,4分/4 考试命题形式多样,有外校试题、教研室组织命题、试题库组题等,全部为考教分离;有评分标准,流水阅卷,有效控制了评分误差。3.4试卷分析:B级,3分/5 试题内容体现教学大纲的基本要求,难度适中,有一定的可信度和区分度;成绩分布基本合理。4 教学改革:分/13 4.1教改方案:A级,4分/5 在切实可行的教改计划,且能运用在教学过程中,有一定的总结。4.2教改效果:A级,7分/8 有专业教改项目的实施,完成教改项目7项,教改效果比较显著,获校教学成果奖二等奖3项。5 教学效果:21分/25 5.1讲课质量:A级,9分/10 根据师生对讲课质量的综合评价,课程组总体讲课水平较高。5.2课外指导:A级,5分/6 对学生课外学习有明确具体的要求,并认真落实、检查;坚持课外辅导、答疑,效果较好。
5.3教学获奖情况:A级,4分/4近几年获院级以上教学成果奖、讲课大赛奖、教案评比奖的人数占课题组人数的70%;有毕业生调查信息表,毕业生反映本课程教学效果优良。
5.4学习质量:B级,3分/5 在严格组织考试、评分的情况下,学生考试成绩真实,客观反映了学生学习的现状;学生基本知识掌握较扎实,但综合解题能力一般。6 特色指标:A级,16分/20(1)兼顾教学的典型性和技术先进性
教学内容的典型性有利于学生理解相关基础知识,掌握基本原理和方法,触类旁通。随着单片机应用技术日异月新的发展,在未来的实际工作中又会广泛接触到新技术、新器件。在理论教学和实践充分考虑了典型性问题,同时在每个实验的实现方案中又提示学生在典型性问题的基础上采用一些新器件、新方法自行设计,让学生接触一些先进性技术、方法。
(2)基础训练与实际应用相结合
在注重单片机原理、实用接口技术的基础上、还突出教学内容的实践性和实用性。大多数实验内容都取材于生产和科研实际。综合应用实验集中锻炼学生了解实际系统要求,设计应用系统的能力。有助于开拓视野,强化工程观念,培养创新能力和协作精神,提高综合素质。
(3)注重综合工程实践能力和创新设计能力的培养
大多数实验内容都取材于生产和科研实际,使学生所学就能所用。
每一个实验项目的实验过程都突出一个单片机工程应用系统开发设计的各个关键技术环节,尤其突出调试方法和手段。每一个实验项目中都设置了若干问题,让学生充分发挥主观能动力和创新思维能力进行调试。每一个实验项目除给出参考实验方案外,还提示采用不同的方案、不同的器件、不同的方法自行设计、调试,给学生留下创新发挥的空间。
电气工程系
《单片机原理及应用》课程组
2010.3
第四篇:《单片机原理及应用》课程教案
《单片机原理及应用》课程教案
第三次课 2学时 主要内容: 第二部分 单片机的原理与结构(3)2.5 并行I/O端口 2.6 时钟电路与时序 2.7 复位操作和复位电路 重点: P0~P3端口功能及使用中应注意的问题 机器周期、时钟周期、指令周期的定义,及时钟周期、频率的计算 复位后,特殊功能寄存器的初值 难点: P0端口的功能 2.5 并行I/O端口 4个双向的8位并行I/O端口(Port),记作P0~P3 属于特殊功能寄存器,还可位寻址。2.5.1 P0端口(讲解时强调端口完成的功能)P0口某一位的电路包括:(1)一个数据输出锁存器,用于数据位的锁存(2)两个三态的数据输入缓冲器。(3)一个多路转接开关MUX,设置多路转接开关的目的:P0口既作通用I/O口,又可作为系统的地址/数据线口。(4)数据输出的驱动和控制电路,由两只场效应管(FET)组成,上面的场效应管构成上拉电路。P0口传送地址或数据时,CPU发出控制信号为高电平,打开上面的与门,使多路转接开关MUX打向上边,使内部地址/数据线与下面的场效应管处于反相接
通状态。这时的输出驱动电路由于上下两个FET处于反相,形成推拉式电路结构,大大提高负载能力。P0口作通用的I/O口使用。这时,CPU发来的“控制”信号为低电平,上拉场效应管截止,多路转接开关MUX打向下边,与D锁存器的Q*端接通。(1)作输出口使用 来自CPU的“写入”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。注意:由于输出电路是漏极开路(因为这时上拉场效应管截止),必须外接上拉电阻才能有高电平输出。(2)作输入口使用 应区分“读引脚”和“读端口”(或称“读锁存器”)。“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。2.5.2 P1端口 字节地址90H,位地址90H~97H。P1口只作为通用的I/O口使用,在电路结构上与P0口有两点区别:(1)因为P1口只传送数据,不再需要多路转接开关MUX。(2)由于P1口用来传送数据,因此输出电路中有上拉电阻,这样电路的输出不是三态的,所以P1口是准双向口。因此:(1)P1口作为输出口使用时,外电路无需再接上拉电阻。(2)P1口作为输入口使用时,应先向其锁存器先写入 “1”,使输出驱动电路的FET截止。2.5.3 P2端口 字节地址为A0H,位地址A0H~A7H。在实际应用中,因为P2口用于为系统提供高位地址,有一个多路转接开关MUX。但MUX的一个输入端不再是“地址/数据”,而是单一的“地址”,因为P2口只作为地址线使用。当P2口用作为高位地址线使用时,多路转接开关应接向“地址”端。正因为只作为地址线使用,口的输出用不着是三态的,所以,P2口也是一个准双向口。
P2口也可以作为通用I/O口使用,这时,多路转接开关接向锁存器Q端。2.5.4 P3端口 P3口的字节地址为B0H,位地址为B0H~B7H。P3口的第二功能定义,应熟记。P3口的第二功能定义: 口引脚 第二功能 P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0*(外部中断0)P3.3 INT1*(外部中断1)P3.4 T0(定时器0外部计数输入)P3.5 T1(定时器1外部计数输入)P3.6 WR*(外部数据存储器写选通)P3.7 RD*(外部数据存储器读选通)2.5.5 P0~P3端口功能总结 使用中应注意的问题:(1)P0~P3口都是并行I/O口,都可用于数据的输入和输出,但P0口和P2口除了可进行数据的输入/输出外,通常用来构建系统的数据总线和地址总线,所以在电路中有一个多路转接开关MUX,以便进行两种用途的转换。而P1口和P3口没有构建系统的数据总线和地址总线的功能,因此,在电路中没有多路转接开关MUX。由于P0口可作为地址/数据复用线使用,需传送系统的低8位地址和8位数据,因此MUX的一个输入端为“地址/数据”信号。而P2口仅作为高位地址线使用,不涉及数据,所以MUX的一个输入信号为“地址”。(2)在4个口中只有P0口是一个真正的双向口,P1~P3口都是准双向口。原因:P0口作为系统的数据总线使用时,为保证数据的正确传送,需要解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。为此,要求P0口的输出缓冲器是一个三态门。在P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。而其它的三个口P1~P3中,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的,因此不是真正的双向口,只能称其为准双向口
(3)P3口的口线具有第二功能,为系统提供一些控制信号。因此在P3口电路增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。2.6 时钟电路与时序 时钟电路用于产生MCS-51单片机工作所必需的时钟控制信号。2.6.1 时钟电路 时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。2.6.2 机器周期、指令周期与指令时序 单片机执行的指令的各种时序均与时钟周期有关
一、时钟周期 单片机的基本时间单位。若时钟的晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc。如fosc=6MHz,Tosc=166.7ns。
二、机器周期 CPU完成一个基本操作所需要的时间称为机器周期。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-51单片机每12个时钟周期为一个机器周期,一个机器周期又分为6个状态:S1~S6。每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、„、S6P2。
三、指令周期 执行任何一条指令时,都可分为取指令阶段和指令执行阶段。取指令阶段,PC中地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。指令执行阶段,对指令操作码进行译码,以产生一系列控制信号完成指令的执行。ALE信号是为地址锁存而定义的,以时钟脉冲1/6的频率出现,在一个机器周期中,ALE信号两次有效(但要注意,在执行访问外部数据存储器的指令MOVX时,将会丢失一个ALE脉冲)2.7 复位操作和复位电路 2.7.1 复位操作 单片机的初始化操作,摆脱死锁状态。
引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就可使MCS-51复位。复位时,PC初始化为0000H,使MCS-51单片机从0000H单元开始执行程序。除PC之外,复位操作还对其它一些寄存器有影响,见表2-6(P34)。SP=07H,P0-P3的引脚均为高电平。在复位有效期间,ALE脚和PSEN*脚均为高电平,内部RAM的状态不受复位的影响。2.7.2 复位电路 片内复位结构:
复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路:
按键手动复位,有电平方式和脉冲方式两种。电平方式:
脉冲方式:
两种实用的兼有上电复位与按钮复位的电路。
图2-19中(b)的电路能输出高、低两种电平的复位控制信号,以适应外围I/O接口芯片所要求的不同复位电平信号。74LS122为单稳电路,实验表明,电容C的选择约为0.1mF较好。第四次课 2学时 主要内容: 第三部分 寻址方式,指令系统(1)3.1 指令系统概述 3.2 指令格式 3.3 指令系统的寻址方式 3.4.1 数据传送类指令 重点:指令系统的寻址方式 数据传送类指令
难点:指令系统的寻址方式 第三部分 寻址方式,指令系统(1)介绍MCS-51汇编语言的指令系统。3.1 指令系统概述 MCS-51的基本指令共111条,按指令所占的字节来分:(1)单字节指令49条;(2)双字节指令45条;(3)三字节指令17条。按指令的执行时间来分:(1)1个机器周期(12个时钟振荡周期)的指令64条;(2)2个机器周期(24个时钟振荡周期)的指令45条;(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。12MHz晶振:机器周期为1ms。3.2 指令格式 两部分组成,即操作码和操作数。操作码用来规定指令进行什么操作,操作数则是指令操作的对象,有单字节指令、双字节指令、三字节不同长度的指令,格式不同。(1)单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。(2)双字节指令:一个字节为操作码,另一个字节是操作数。(3)三字节指令:操作码占一个字节,操作数占二个字节。其中操作数既可能是数据,也可能是地址。3.3 指令系统的寻址方式 寻址方式就是在指令中说明操作数所在地址的方法。共7种寻址方式。1.寄存器寻址方式 操作数在寄存器中 MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A 寻址范围包括:(1)4组通用工作寄存区共32个工作寄存器。(2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器DPTR等。
2.直接寻址方式 操作数直接以单元地址的形式给出: MOV A,40H 寻址范围:(1)内部RAM的128个单元(2)特殊功能寄存器。除了以单元地址的形式外,还可用寄存器符号的形式给出。例如: MOV A,80H 与 MOV A,P0是等价的。直接寻址方式是访问特殊功能寄存器的唯一寻址方式 3.寄存器间接寻址方式 寄存器中存放的是操作数的地址,在寄存器的名称前面加前缀标志“@” 访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间址寄存器。例如:MOV A,@Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM中40H单元的内容送到A。寻址范围:(1)访问内部RAM低128个单元,其通用形式为@Ri(2)对片外数据存储器的64K字节的间接寻址,例如: MOVX A,@DPTR(3)片外数据存储器的低256字节,例如: MOVX A,@Ri(4)堆栈区,堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器。4.立即寻址方式 操作数在指令中直接给出,需在操作数前面加前缀标志“#”。例如: MOV A,#40H 5.基址寄存器加变址寄存器间址寻址方式 本寻址方式是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器。例如:指令 MOVC A,@A+DPTR 其中A的原有内容为05H,DPTR的内容为0400H,该指令执行的结果是把程序存储器0405H单元的内容传送给A。说明:(1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围可达到64KB。(2)本寻址方式的指令只有3条:
MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR 6.位寻址方式 MCS-51有位处理功能,可以对数据位进行操作,例如MOV C,40H 是把位40H的值送到进位位C。寻址范围包括:(1)内部RAM中的位寻址区。位有两种表示方法,例如,40H;另一种是单元地址加上位,例如,(28H).0,指的是28H单元中的最低位。它们是等价的。(2)特殊功能寄存器中的可寻址位 可寻址位在指令中有如下4种的表示方法: a.直接使用位地址。例如PSW.5的位地址为0D5H。b.位名称的表示方法。例如:PSW.5是F0标志位,可使用F0表示该位。c.单元地址加位数的表示方法。例如 :(0D0H).5。d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。7.相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址: 目的地址=转移指令所在的地址 + 转移指令的字节数+ rel 偏移量rel是一带符号的8位二进制数补码数。范围是:–128 ~ +127。向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。3.4 MCS-51指令系统分类介绍 111条指令,按功能分类,可分为下面5大类:(1)数据传送类(28条)(2)算术操作类(24条)(3)逻辑运算类(25条)(4)控制转移类(17条)(5)位操作类(17条)指令中符号的意义: Rn 当前寄存器区的8个工作寄存器R0~R7(n=0~7)。Ri 当前选中的寄存器区中可作间接寻址寄存器的2 个寄存器R0、R1(i=0,1)。
Direct 直接地址,即8位的内部数据存储器单元或特殊功能寄存器的地址。#data 包含在指令中的8位立即数。#data16 包含在指令中的16位立即数。rel 相对转移指令中的偏移量,为8位的带符号补 码数 DPTR 数据指针,可用作16位的地址寄存器。bit 内部RAM或特殊功能寄存器中的直接寻址位。C(或Cy)进位标志位或位处理机中的累加器。addr11 11位目的地址 addr16 16位目的地址 @ 间接寻址寄存器前缀,如@Ri,@A+DPTR(X)X中的内容。((X))由X寻址的单元中的内容。→ 箭头右边的内容被箭头左边的内容所取代。3.4.1 数据传送类指令 使用最频繁的一类指令,通用格式: MOV <目的操作数>,<源操作数> 属“复制”性质,而不是“搬家”,数据传送类指令不影响标志位, CyOV,但不包括奇偶标志位P。1.以累加器为目的操作数的指令 MOV A,Rn;(Rn)→A,n=0~7 MOV A,@Ri;((Ri))→A,i=0,1 MOV A,direct;(direct)→A MOV A,#data;#data→A 例如: MOV A,R6;(R6)→A,寄存器寻址 MOV A,70H;(70H)→A,直接寻址 MOV A,@R0;((R0))→A,间接寻址 MOV A,#78H;78H→A,立即寻址 2.以Rn为目的操作数的指令、Ac和
MOV Rn,A;(A)→Rn,n=0~7 MOV Rn,direct;(direct)→Rn,n=0~7 MOV Rn,#dat;#data→Rn,n=0~7 功能:是把源操作数的内容送入当前一组工作寄存器区的R0~R7中的某一个寄存器。3.以直接地址direct为目的操作数的指令 MOV direct,A;(A)→direct MOV direct,Rn;(Rn)→direct, n=0~7 MOV direct1,direct2;MOV direct,@Ri;((Ri))→direct MOV direct,#data;#data→direct 功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。4.以寄存器间接地址为目的操作数的指令 MOV @Ri,A;(A)→((Ri)),i=0,1 MOV @Ri,direct;(direct)→((Ri))MOV @Ri,#data;#data→((Ri))5.16位数传送指令 MOV DPTR,#data16;#data16→DPTR 唯一的16位数据的传送指令 ,立即数的高8位送入DPH,立即数的低8位送入DPL。6.堆栈操作指令 MCS-51内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈.堆栈指针SP指出堆栈的栈顶位置。(1)进栈指令 PUSH direct 先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内部RAM单元中。例如: 当(SP)=60H,(A)=30H,(B)=70H时,执行下列指令
PUSH ACC;(SP)+1=61H→SP,(A)→61H PUSH B;(SP)+1=62H→SP,(B)→62H 结果:(61H)=30H,(62H)=70H,(SP)=62H(2)出栈指令 POP direct SP指示的栈顶(内部RAM单元)内容送入direct字节单元中,栈指针SP减1.例如: 当(SP)=62H,(62H)=70H,(61H)=30H,执行下列指令: POP DPH;((SP))→DPH,(SP)-1→SP POP DPL;((SP))→DPL,(SP)-1→SP 结果:(DPTR)=7030H,(SP)=60H 7.累加器A与外部数据存储器传送指令 MOVX A,@DPTR;((DPTR))→A,读外部RAM/IO MOVX A,@Ri;((Ri))→A,读外部RAM/IO MOVX @DPTR,A;(A)→((DPTR)),写外部RAM/IO MOVX @Ri,A;(A)→((Ri)),写外部RAM/IO 功能:读外部RAM存储器或I/O中的一个字节,或把A中一个字节的数据写到外部RAM存储器或I/O中。注意:RD*或WR*信号有效。采用DPTR间接寻址,高8位地址(DPH)由P2口输出,低8位地址(DPL)由P0口输出。采用Ri(i=0,1)间接寻址,可寻址片外256个单元的数据存储器。Ri内容由P0口输出。8位地址和数据均由P0口输出,可选用其它任何输出口线来输出高于8位的地址(一般选用P2口输出高8位的地址)。MOV后 “X”表示单片机访问的是片外RAM存储器或I/O。8.查表指令 共两条,用于读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存器间接寻址方式。(1)MOVC A,@A+PC
以PC作基址寄存器,A的内容作为无符号整数和PC中的内容(下一条指令的起始地址)相加后得到一个16位的地址该地址指出的程序存储单元的内容送到累加器A。注意:PSEN*信号有效。例如:(A)=30H,执行地址1000H处的指令 1000H: MOVC A,@A+PC 本指令占用一个字节,执行结果将程序存储器中1031H的内容送入A。优点:不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。缺点:表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。(2)MOVC A,@A+DPTR 以DPTR作为基址寄存器,A的内容作为无符号数和DPTR的内容相加得到一个16位的地址,把由该地址指出的程序存储器单元的内容送到累加器A.例如(DPTR)=8100H(A)=40H 执行指令 MOVC A,@A+DPTR 本指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。两条指令是在MOV的后面加C,“C”是CODE的第一个字母,即代码的意思。9.字节交换指令 XCH A,Rn XCH A,direct XCH A,@Ri 例如:(A)=80H,(R7)=08H,(40H)=F0H(R0)=30H,(30H)=OFH 执行下列指令: XCH A,R7;(A)与(R7)互换
XCH A,40H;(A)与(40H)互换 XCH A,@R0;(A)与((R0))互换 结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H 10.半字节交换指令 XCHD A,@Ri 累加器的低4位与内部RAM低4位交换。例如:(R0)=60H,(60H)=3EH,(A)=59H执行完
指令,则(A)=5EH,(60H)=39H。XCHD A,@RO
第五篇:单片机原理及应用课程设计教学大纲
《单片机原理及应用》课程设计教学大纲
课程编号:13033070 课程类别:必修课
适用专业:电气信息类
学时:10 教研室主任:姜志成大纲执笔人:李春华
大纲审批人:付家才
一、课程设计的性质及目的
1.了解并掌握单片机的原理、结构、指令、接口及应用。
2.提高综合运用所学的理论知识独立分析和解决问题的能力。3.掌握汇编语言程序设计和调试。4.掌握C-51语言的设计和调试。
二、课程设计的要求
1. 根据设计要求,画出硬件接线图及程序的总体流程图,然后进行各控制模块的硬件设计及软件设计。
2.掌握如何应用单片机仿真器来开发应用系统及仿真调试的过程。
三、参考题目
题目一 校园作息时间控制系统
设计要求:
1.作息时间要求实现对上下课打铃、教学楼照明、学生宿舍灯、校园路灯四个开关量的精确控制。月时间累计误差≤1分钟。
2.能实时显示时间,并方便定期进行时间校准。
3.根据应用系统的要求,初步掌握总体结构设计的方法和构思,从中选择一种最佳设计方案。
4.根据应用系统结构规模的要求,掌握单片机外部扩充系统硬件设计的基本过程。
题目二 交通信号灯控制系统
设计要求:
1.设有一个南北(SN)向和东西(WE)向的十字路口,两方向各有两组相同交通控制信号灯,每组各有四盏信号灯,分别为直行信号灯(S)、左拐信号灯(L)、红灯(R)和黄灯(Y),交通控制信号灯布置如图1所示。
2.根据交通流量不同,交通信号灯的控制可实现手动、自动两种控制。平时使用自动控制,高峰区可使用手动控制。手动控制时,用户通过键盘对交通信号灯进行人工控制;自动控制时,交通信号灯控制规律用图2状态转换图来描述。
图1十字路口交通控制信号灯示意图
图2交通控制信号灯控制规律示意图
题目三 环境温度监测系统
设计要求:
1.可以监测8点环境温度信号,可以扩充;
2.测量范围为0.00℃~99.9℃,可以扩充到-55℃~+125℃,精度为±0.5℃; 3.用4位数码管进行循环显示,其中最高位显示通道提示符A~H,低3位显示实际温度值,每秒切换一个通道进行轮流显示;
4.可以随时查看指定通道的温度值(扩充功能)。
四、教学参考文件与教学形式
教学参考文件: 〔1〕付家才,《单片机控制工程实践技术》,化学工业出版社,2003年 〔2〕胡汉才,《单片机原理及接口设计》,清华大学出版社,2002年 〔3〕康华光,《模拟电子技术》,高等教育出版社,2004年 教学形式:根据课程设计大纲的要求,采取指导的形式。
五、考核方式及成绩评定标准
考核方式采取设计报告与实际操作,根据设计的情况和实际操作效果给出成绩,其中设计报告占60%,日常管理(包括迟到、旷课、卫生等)占10%,实际操作占30%。成绩采用优、良、中、及格和不及格五级分制评定。
六、其他必要的说明
课程设计教师可根据专业特点选做相应题目。