单片机原理实验讲义电信 CDIO 版30课时Word文档格式.docx
《单片机原理实验讲义电信 CDIO 版30课时Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理实验讲义电信 CDIO 版30课时Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
3.熟悉课堂讲授的使用keil软件开发环境的方法。
实验预习问题:
1.Keil编译器适用的单片机类型。
(实验课堂提问)
二、实验目的
掌握在keil编译器下建立自己的工程,并进行调试。
三、演示实验
1.典型51单片机开发系统
2.51单片机应用实例2个:
智能温度计、简易电力监视仪
演示实验关注点:
1.掌握51单片机的典型开发流程。
2.学会使用仿真器、烧写器。
3.了解单片机开发过程的关键技术点。
四、KeilC51简介:
KeilC51是Keilsoftware公司开发的用于51系列单片机的C51语言开发软件。
KeilC51在兼容ANSIC的基础上,又增加很多与51单片机硬件相关的编译特性,使得开发51系列单片机程序更为方便和快捷,程序代码运行速度快,所需存储器空间小,完全可以和汇编语言相媲美。
它支持众多的51单片机架构的芯片,同时集编辑、编译、仿真等功能于一体,具有强大的软件调试功能,是众多的单片机应用开发软件中最优秀的软件之一。
经常用到KeilC51和Keilµ
Vision这两个术语。
KeilC51一般简写为C51,指的是51单片机编程所用的C语言;
而Keilµ
Vision,可简写为µ
Vision,指的是用于51单片机的C51程序编写、调试的集成开发环境(IDE)。
五、keil编译器的简单应用
1.在任意路径下建议项目文件夹,文件夹的名字任意(一般做到见名知意)。
2.单击图标
(此图标为Keilµ
Vision2),启动Keil,如下图:
3.选择菜单Project->
NewProject,新建一个工程,如下图:
4.输入工程名“流水灯”,然后保存,如下图:
5.选择器件型号为Atmel的AT89S51,然后确定,如下图:
6.是否加入启动文件到工程,这时不加入选“否”,这样一个工程就建立完成,如下图:
注:
此处的启动文件为STARTUP.A51。
在KEIL中,汇编是从ORG000H开始启动,那么它在C51中是如何启动MAIN()函数的呢?
实际上是C51中有一个启动文件STARTUP.A51,它总是和C程序一起编译和链接的。
所以做汇编程序可以不加载该启动文件,而C51会自动加载这个文件(虽然我们看不到)。
有关于这个文件的详细解释请参考“电信单片机实验/实验参考资料”文件夹的PDF文档《STARTUP.A51解读》,这里建议同学们作为初学者可以先不做添加。
7.选择菜单File->
New新建一个文件,如下图:
8.选择菜单,File->
Save,保存文件,输入文件件名为“流水灯.asm”,(C程序为.C文件)然后保存,如下图:
9.点Target1前面的“+”号,展开Target1,击SourceGroup1,在弹出菜单中选择,AddFilesToGroup'
SourceGroup1'
,如下图:
10.选择Allfiles,找到刚才的“流水灯.asm”,然后点Add,然后就Close,如下图:
11.可以看到工程里多了一个“流水灯.asm”文件,双击在里面输入下面程序,如下图:
ORG0X0000
LJMPSTART
START:
MOVA,#0XFE
LOOP:
RLA
MOVP1,A
LCALLDELAY
SJMPLOOP;
延时程序
DELAY:
MOVR5,#200
OUT:
MOVR6,#250
OUT1:
MOVR7,#250
IN:
DJNZR7,$
DJNZR6,OUT1
DJNZR5,OUT
RET
END
12.选择Project->
Buildtarget,或点击
图标进行编译。
13.编译结果,看到错误(语法错误)和警告(情况较多,须具体分析)情况,如下图:
14.如果没有错误,选择
生成目标文件(机器码)。
15.选择菜单Debug->
Start/StopDebugSession,进入调试状态(此状态为默认的模拟调试,还可选择仿真器调试,proteus联机调试等),如下图:
16.进入到调试状态后,选择菜单Peripherals->
I/O-Ports->
Port1,打开端口1,下图为打开后的画面。
17.选择菜单Debug->
Run,运行,就可以看到端口1的变化。
如下图:
18.如果端口变化缓慢,可以缩短延时程序,如果变化快,可以加长延时程序。
注意:
Keil编译器的使用细节可参考\电信单片机原理实验\实验参考资料\keil编译器的使用下的4个文档。
六、实验内容
1.熟悉keil编译器的安装,设置。
2.熟悉keil编译器各菜单的功能。
3.在keil编译环境下。
调试一个自行编写的程序。
(程序可以参考教科书)
七、思考题
如何建立一个用户自己的汇编程序文件,并进行编译、连接、运行,写出详细步骤。
实验二LED数码管动态扫描实验
1.熟悉LED数码管的内部机构,共阴极与共阳极数码管的区分。
2.熟悉LED数码管动态扫描原理。
3.C51程序的基本结构。
1.LED数码管的内部结构,如何区分共阴极或者共阳极数码管。
2.共阳极及共阴极数码管动态显示驱动电路。
3.论述LED大屏幕技术要点。
(以上3个问题总结成书面小论文,需打印提交)
4.C51程序的基本结构。
(由同学课堂讲解,教师总结)
二、预备知识
1.Proteus是一款流行的EDA工具(仿真软件),可完成原理图布图、代码调试、单片机与外围电路协同仿真,PCB设计,可实现从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
我们在实验中主要应用proteus的单片机与外围电路协同仿真功能。
2.C51是在标准C的基础上,根据单片机存储器硬件结构及内部资源,扩展了相应的数据类型和变量,而C51在语法规定、程序结构与设计方法上,都与标准C相同。
关于C51的基础知识,可参考教材《单片机原理及应用(第二版)》第14章。
三、实验目的
1.掌握LED数码管动态扫描电路及其编程方法。
2.熟悉proteus软件的基本操作。
3.学习实验参考资料中《Keil与proteus完美结合教程》中P6-P7页的keil与proteus联机部分知识。
(实验室电脑已经完成联机设置)
4.开始练习C51程序,能够完成简单的C51编程。
四、演示实验
C51工程实例演示实验
演示实验关注点:
C51工程实例的程序结构
五、实验内容
1.掌握LED数码管动态驱动电路原理。
(电路图已给出,如下图所示)
该电路采用共阳极数码管,显示方式为动态显示。
其显示原理如下所述:
51单片机的P0口线作为数码管的字形码输出口,单片机的P1.0、P1.1、P1.2、P1.3、P1.4、P1.5分别作为LED1-LED6六个数码管(从右到左)的字位口输出。
当P0口输出某个字形时,LED1字位口的电平为低时,其他数码管字位口电平为高,LED1数码管对应三极管导通,LED1数码管被点亮。
延时一定时间后,对LED2-LED6数码管重复以上操作,由于人眼的视觉暂留特性,数码管看起来都被点亮了。
2.编写程序,在数码管上显示固定“654321”字形。
六、实验步骤
1.编写程序。
建议采用C51语言程序。
2.调试,验证程序。
七、注意事项
Proteus仿真图允许在没有电源、晶振、复位电路、EA悬空的情况下工作,但实际电路不允许。
实验三汇编语言程序设计
(一)
1.熟练掌握51单片机汇编语言。
2.熟练掌握采用循环结构编写程序。
3.熟悉软件开发环境的调试手段。
1.叙述51单片机的程序、数据存储器体系结构。
(书面预习,写在实验报告上)
1.掌握汇编语言设计,重点掌握单片机对外部RAM的操作。
2.掌握程序调试方法,熟练运用单步、断点等调试手段。
3.能够编写简单的循环程序。
三、实验内容
1.清零:
把外部RAM2000H~20FFH的内容清零。
(演示)
2.拆字:
把外部RAM2000H的内容拆开,高位送外部RAM2001H低位,低位送外部RAM2002H低位,外部RAM2001H、外部RAM2002H高位清零。
(当堂完成)
3.拼字:
把外部RAM2000H、外部RAM2001H的低位分别送入外部RAM2002H高低位。
(课后完成)
4.在内部RAM的20~2FH中查出有几个字节是零,把个数放在内部RAM30H中。
5.编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。
数据排序功能:
把RAM空间50H~5AH中放入不等的数据,运行本实验程序后检查50H~5AH中数据是否按从小到大排列。
四、实验步骤
1.参考如下程序流程图编写程序。
清零:
拆字:
拼字:
实验内容4、5的程序流程图请自己画出。
2.调试,验证程序
用连续、单步、断点方式运行程序,并观察实验结果。
五、注意事项
1.建议一个keil工程只编译一个asm汇编程序,并且把一个工程的所有文件保存到一个文件夹下。
2.外部RAM的验证需要进入调试状态——打开memorywindows窗口——输入X:
0000H(代表外部RAM0000H空间)。
此单元的内容可以手工改变(将鼠标移到该单元,并右键单击,弹出下拉菜单),如下图所示。
3.内部RAM的验证需要进入调试状态——打开memorywindows窗口——输入D:
00H(代表内部RAM00H空间)。
此单元的内容可以手工改变,如下图所示。
4.程序运行后,观察这些单元的改变情况。
实验四汇编语言程序设计
(二)
1.熟练掌握51单片机汇编语言。
2.熟练掌握采用循环结构编写程序。
3.熟悉软件开发环境的调试手段。
4.熟练掌握51单片机的数据区、程序区的数据查找,搬移操作。
外部RAM数据块搬移程序,双字节无符号乘法程序的难点各在什么方面。
1.进一步掌握单片机对内部RAM和外部RAM的数据操作。
2.熟悉51指令系统,掌握较为复杂的程序设计方法。
键盘、LED显示器专用驱动芯片HD7279演示实验。
1.了解专用芯片(以HD7279为例)的使用和工作原理。
2.初步掌握串行接口芯片与单片机的连接电路及程序。
四、实验内容
1.外部RAM数据块搬移程序:
将外部RAM中R2、R3为源地址的N个字节数据传送到R4、R5为目的地址的外部RAM区中,字节个数存放在R6、R7中。
数据区传送功能:
在R2、R3中输入源地址(例如0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如2000H),运行程序,检查0000~1FFFH中内容是否和2000H~3FFFH中内容完全—致。
2.双字节无符号乘法程序:
将R2R3(R2为高8位)和R6R7(R6为高8位)中双字节无符号整数相乘,积送R4R5R6R7中。
五、实验步骤
1.自己画出程序流程图。
实验五中断优先级实验
1.熟悉keil软件开发环境的调试手段。
2.熟悉protues软件的开发使用。
3.自行设计实验,验证单片机的中断自然优先级与优先级。
1.练习根据实验目的,自行设计实验方法。
2.进一步熟悉keil软件与protues的联机操作。
1.设计实验,验证单片机优先级的几个原则:
先高后低、同级不断、高可断低。
2.设计实验建议以外部中断0和外部中断1为验证对象。
1.在protues下画出验证用电路原理图。
2.验证“先高后低”:
验证自然优先级的“先高后低”、验证优先级设置情况下的“先高后低”。
3.验证“同级不断”:
建议可将外部中断1的中断服务程序设计成死循环,外部中断0中断条件成立后,观察是否可以打断外部中断程序1的运行。
此时,两个外部中断的优先级设置成同一优先级。
4.验证“高可断低”:
此时,外部中断1设置成低优先级,外部中断0设置成高优先级。
自行设计实验电路及验证方法,建议:
1.采用按键模拟中断事件。
2.采用keil与proteus联机调试方式。
实验六定时/计数器实验
1.熟悉51单片机的定时器/计数器的硬件结构。
2.熟悉51单片机的定时器/计数器工作方式和工作模式的选择。
3.熟练掌握对51单片机的定时器/计数器的编程。
定时/计数器的区别点是什么?
1.熟悉51单片机定时/计数功能。
2.进一步掌握C51的编程方法。
1.SOC单片机演示实验
了解片上系统单片机(SOC)与基本51单片机的异同点。
2.AVR单片机演示实验
了解其他类型(以AVR为例)与基本51单片机的异同点。
1.将定时/计数器0外部输入的脉冲进行计数。
用proteus软件仿真的电路原理图如下所示。
P3.4(T0)引脚有脉冲输入,脉冲频率可调,幅值设为5V,请注意此测量脉冲的上限如何确定?
2.计数结果送显示器显示。
3.在完成实验内容2的基础上,要求采用单片机定时器定时功能,完成24~0倒计数器设计,计数间隔要求为1S。
4.在完成实验内容2的基础上,完成简易秒表的设计。
要求秒表精度为0.01秒,从0.00秒开始显示。
1.编写程序,建议采用C51语言编写程序。
实验七串行通信实验
一、实验目的
1.掌握51单片机的串行接口的初始化方法。
2.掌握51单片机与PC机串口采用RS-232通信的方法。
二.预备知识
1.51单片机串行口的结构如下图所示。
串行口的初始化与串行口控制寄存器SCON、特殊功能寄存器PCON、定时计数器模式控制寄存器TMOD、T1时间常数寄存器TH1、TL1、定时计数器开关TR1及中断使能,优先级等寄存器有关。
2.RS-232串行通信电路图如下图所示。
串口摄像头实验。
了解RS-232串行设备的使用。
1.采用C51或者汇编语言,对单片机串行口进行初始化,要求串口初始化为方式1、2、3都可,波特率自定。
2.在初始化的基础上,完成51单片机向PC机发送固定字符,字符自定。
3.完成51单片机的接收操作,接收到争取字符后,应能在实验板上以显示字符(通过HD7279驱动LED,HD7279程序以.h文件的形式给出)或其他适当形式予以提示。
1.在自制电路板上安装好仿真器并完成设置。
2.自制电路板与PC联机采用RS-232电缆,PC机端采用串口调试工具监控单片机发送的信息或给单片机发信息。
3.编写程序代码,完成实验内容的要求。
自制实验板串行口布局。
实验八D/A转换实验X5045实验(二选一)
1.熟悉单片机串行扩展技术中几种主要的总线。
2.熟悉单片机仿真器的应用。
3.熟悉烧写器的应用。
1.MAX531D/A转换器的转换位数、极性、与单片机的数据传输采用并行还是串行方式?
2.X5045在单片机系统中起到哪些作用,eeprom的作用是什么,x5045与单片机的数据传输采用并行还是串行方式?
二、实验目的
1.具备自学芯片资料(datasheet)的能力。
2.具备单片机最小系统电路图的分析能力。
3.能够在硬件电路上调试程序。
128*64液晶显示器演示实验。
了解较为复杂C51程序的编写及设备驱动程序的编写。
自制实验开发板布局如上图所示。
单片机部分最小系统电路原理图如下。
图中P3~P6为单排针,将单片机的P0~P3口引出。
MAX531部分电路原理图如下。
X5045部分电路原理图如下。
注意以上电路原理图网络标号的用法。
仔细阅读原理图,记录单片机与max531、单片机与X5045的连接关系,完成:
1.选择max531,完成输出三角波的功能。
2.选择X5045,完成对eeprom的功能验证。
1.选择max531,编写程序,编译排除语法错误,接仿真器调试,产生三角波,周期,幅值,起始相位可自定。
2.选择X5045,编写程序,编译排除语法错误,接仿真器调试,完成对X5045的写、读操作,程序可说明eeprom是否正常工作。
实验九A/D转换实验DS18B20实验(二选一)
1.熟悉51单片机与A/D转换器的接口设计。
2.熟悉ADC0809芯片的时序。
3.熟悉DS18B20芯片的时序。
1.ADC0809转换器的转换频率上限是多少?
2.基于51单片机的ADC0809转换电路如何设计?
3.DS18B20的优缺点有哪些?
1.掌握A/D转换芯片ADC0809与单片机的接口方法。
2.了解A/D转换芯片ADC0809转换性能及编程方法。
3.通过实验了解单片机如何进行数据采集。
4.通过实验了解传感器的优缺点。
嵌入式系统演示实验
嵌入式系统与51单片机系统的异同点。
选择A/D转换实验的实验内容:
A/D转换器大致分有三类:
一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;
二是逐次逼近式A/D转换器,精度、速度、价格适中;
三是并行A/D转换器,速度快,价格也昂贵。
实验用ADC0809属第二类,是8位A/D转换器。
每采集一次一般需100μs。
ADC0809部分电路原理如下图。
图中74373锁存器锁存地址信号,选择ADC0809通道,7474D触发器对ALE信号2分频,给ADC0809做CLK信号。
7402为与非门芯片。
仔细阅读原理图,了解A/D转换芯片ADC0809转换性能及编程方法。
采用ADC0809,由电位器提供模拟量输入。
编写程序,将模拟量转换成数字量,并通过HD7279的LED显示转换结果。
(HD7279程序以.h文件的形式给出)
选择BS18B20实验的实验内容:
DS18B20是广泛使用的数字温度传感器,测温范围-55℃~+125℃。
采用独特的一线制接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现双向通讯,支持多点组网功能。
DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路(常见的三引脚封装)内。
仔细阅读DS18B20的芯片资料,设计其与单片机的接口电路图,完成焊接,编写程序,完成温度测量功能,并通过HD7279的LED显示测量结果。
(HD7279程序已.h文件的形式给出)
选择A/D转换实验的实验步骤:
1.编写ADC0809程序,编译排除语法错误,接仿真器调试,可采用延时、中断、查询任何一种方法读取AD转换结果,利用变量观察窗口观察转换结果(必须在程序停止运行才可观察)。
2.将转换结果显示在LED数码管上,利用hd7279.h头文件,直接调用write_hd7279函数就可将转换结果显示在LED上。
3.在完成以上第二步的基础上,设基准电压为5V,将转换结果量化为电压值显示在实验板LED上,如实际电压为4.32V,显示432即可。
选择BS18B20实验的实验步骤:
1.阅读BS18B20芯片资料,完成电路设计与焊接。
2.编写BS18B20程序,编译排除语法错误