EDA与单片机综合实验.docx
- 文档编号:9215713
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:107
- 大小:2.94MB
EDA与单片机综合实验.docx
《EDA与单片机综合实验.docx》由会员分享,可在线阅读,更多相关《EDA与单片机综合实验.docx(107页珍藏版)》请在冰豆网上搜索。
EDA与单片机综合实验
EDA与单片机综合实验
实
验
指
导
书
长春工业大学计算机与信息技术实验中心
目录
第一章实验箱说明
1.1功能介绍
1.2核心处理器简介
1.3硬件布局
1.4资源端口分配
第二章实验环境及工具介绍
2.1MAX+plus-Ⅱ安装及使用
2.2KeilC51安装及使用
2.3USB驱动安装及下载软件的使用
第三章实验指导
4.1EDA基础实验
实验一独立按键与拨动开关控制实验
实验二矩阵按键与蜂鸣器控制实验
实验三七段译码器的设计
实验四数码管的扫描显示实验
实验五LCD并行接口控制显示实验
4.2单片机基础实验
实验一循环彩灯
实验二动态数码显示
实验三4×4矩阵键盘
实验四液晶显示
实验五D/A转换
实验六A/D转换
实验七LED点阵显示
实验八串口通信
附录1常见问题解答
第一章实验箱说明
1.1功能介绍
JSJDZ-Ⅱ型实验箱是一款具有实验仪、编程器、ISP下载线三种功能合一的综合学习开发系统,适用于《EDA技术及应用》和《单片机原理》课程的基础实验及其他有关EDA和单片机设计的综合实验。
实验箱的特点有:
●集成ISP编程功能,支持USB2.0在线下载编程
●可以支持EDA与单片机两种芯片的编程与开发
●模块种类丰富多样,适用于课本上的所有实验
●使用74LS244外扩I/O口,驱动能力强
●用三档开关控制各模块与MCU的连接与断开,电路连接方便
●外扩引脚,适用于其他各种电子设计
●各模块之间可同时启用,方便综合调试
●内置开关电源
在传统的控制系统中,人们常用单片机作为控制核心,单片机在端口数目、内部定时器和中断源的个数都有限,在实际工程应用中不得不外部扩展其它芯片才能满足需要,这就使得硬件电路连线的复杂度增加,出现问题的概率增加。
随着电子工艺和技术的迅猛发展,可编程逻辑器件越来越来多的出现子在人们的生活中,它将复杂的数字电路集中于一块芯片上,通过不同的配制文件使其产生不同的控制逻辑,FPGA和CPLD就是典型的可编程器件,虽然在结构上不同,但是在实际中的作用很相似。
现在许多系统采用可编程器件作为控制核心,与传统设计相比较,它被称为数字系统设计,由于内部有丰富的数字逻辑单元,芯片的I/O引脚也较多,方便了电路的接口控制,提高了系统的整体性能及工作可靠性,也为系统的集成创造了条件。
对于时序要求较高的电路采用FPGA作为控制器能使电路工作在较高的频率,而CPLD则适合控制组合逻辑电路。
CPLD/FPGA工作方式与单片机的相比,单片机的指令有固定的执行方式,至少需要四个时钟周期且时钟频率,而CPLD/FPGA的运算执行方式会根据实现该运算的硬件电路方式的不同而不同,采用硬件描述语言以并行的方式来控制外围器件,在同一时刻实现对多个器件的控制,工作完全由硬件完成不需要顺序执行软件指令,所以其运算的速度会远高于单片机。
由于可编程器件与单片机在应用中各有优点和不足,为了能将两者的优点结合起来,ALTERA公司提出了一种SOC的解决方案,它将处理器、存储器、I/O、LVDS等系统设计需要的功能模块集成到一个可编程的器件上,构成了一个可编程的片上系统,SOPC是PLD和ASIC技术结合的结果,有人认为SOPC代表了半导体产业的未来发展方向,但是该项新技术的发展有着不足,目前能够实现SOPC技术的FPGA芯片价格仍然很高,通过SOPC技术把FPGA芯片配制成单片机实现C语言对器件的编程控制,虽然避免了大量VHDL代码的编写,编程的工作量减少了很多,却占用了大量的硬件资源用于各种形成不同功能的寄存器不能有效的去完成更多的工作,C语言的顺序执行使得芯片无法发挥同一时刻并行完成多项任务的优点。
在实际应用中完成相同功能的单片机的价格却相当便宜,在市场中想使自己的产品有优势,性价比是一个必须要考虑的因素。
在价格和开发难度上来说,SOPC并不适合大多数人的要求,我们需要一种经济、实用的解决方案。
可编程器件与单片机构成的双核控制器采用价格较低的EPM7128和AT89S52实现联合设计开发,既利用了两类控制器件的优势,还降低开发的技术难度,适应不同的开发人员。
在设计中开发人员可以单独使用单片机或CPLD来控制外围器件,也可以相互通信配合使用来完成工作。
通过该双核控制器来实现一些基础实验和高级实验,基础实验包括:
独立按键控制、阵列按键控制、LED灯的控制、蜂鸣器的控制;高级实验包括:
温度采集实验、光照度采集实验、存储器EEPROM的使用。
在通信方面完成RS232串口通信、RS485通信、红外通信、无线数字通信实验。
现在许多开发板都将程序下载器单独作为一部分,一头是通过排线将它们与开发板连在一起,另一头通过并口线或串口线与PC机相连。
不仅使用时插拔比较麻烦,还可能由于多次的连接损坏电路连接部分造成开发板无法被写入程序,而该双核控制器的程序下载由并口线来完成,CPLD和单片机的下载电路都做在开发板上,开发人员只需要用一根并口线将开发板和PC机连接在一起就能顺利实现程序的写入,下载程序时只要通过跳冒连接就可以工作,平时可以作为普通的I/O引脚使用。
现在许多外围器件的工作速度很高,使用CPLD来控制就能使其有效的工作,既实现了高速,还可以利用CPLD的丰富I/O引脚实现多个外围器件的同时控制,充分发挥了CPLD的优势,得到的数据会有8位、10位、12位、16位等。
同过串行线将数据送给单片机,由单片机内有特殊功能的寄存器,在数据传输和数据的算术运算优于CPLD,适合完成对工作频率要求不高的整体任务分配和数据后期处理,这样就能发挥双方的优势更好的完成设计和实验。
图1单片机与CPLD芯片
图2实验开发板
CPLD与单片机的双向串行通信原理
1.1单片机到CPLD的串行通信
单片机到CPLD的串行通信接口电路是利用VHDL语言在CPLD设计一个串行输入并行输出的八位移位寄存器,其端口与单片机的P01-P03相连,如图2所示。
CS为片选信号,当其为低电平时使能八位寄存器,当DCLOCK的信号的上升沿到达CLK端口时,八位移位寄存器就会将单片机输出到EXIN的一位数据移入;当单片机A寄存器中的八位数据欲传给CPLD时,就在P02连续产生八次上升沿,单片机便顺次将数据移到EXIN,八次后A中的数据段就会出现在CPLD的CXOUT中。
图2单片机到CPLD的串行通信接口电路
1.2CPLD到单片机的串行通信
CPLD到单片机的串行通信与单片机到CPLD串行通信类似,只不过八位寄存器改为并入串出,其端口入图3所示。
当单片机的CS=1时,待发的数据被加载到BXIN上,当CLK上升沿到来时,将数据一位一位移出至BXOUT上,与此同时,单片机一位一位地接收来自BXOUT上的数据。
在CLK八个上升沿后,加载到BXIN的数据便被传送至单片机的A寄存器中。
图3由CPLD到单片机的并入串出移位寄存器
由于单片机端口有限,所以大部分外围器件连线靠CPLD来连接,而对时序要求较高的确那些外围器件则靠单片机来间接控制。
所谓间接控制就是指应用者自定义很多命令字,每个命令字对应着CPLD的一项或多项操作。
当单片机想让某外部器件实现某种功能时,可以通过串行通信把命令字传送给CPLD;CPLD接收到命令后并判断该命令字,便在EN上升沿到来后执行相应的工作,值得注意的是:
命令字送到CPLD后,只有在EN的上升沿到来后,CPLD才能执行相应的操作。
这是为了防止命令字在传送其间使CPLD引起误动作。
当外部器件有中断信息反馈到控制器时,也可将特定的命令字由CPLD传送至单片机,使单片机产生产生中断进行处理,。
但无论有多少个外围器件需产生中断控制,都应由CPLD在单片机的INT0处产生中断。
在单片机的中断子程序中,运行由CPLD向单片机的串行通信子程序,将特定的命令字读到A寄存器中,从而可知是那个外围器件产生中断(由应用者自行定义),进而可知需何种外部操作。
本双核控制器开发板将控制芯片CPLD和单片机的I/O引脚都引出来,与外围器件的连接由跳冒短接,开发人员如果想利用该芯片完成外部其它的模块控制,可以使用杜邦线将相应的引脚相连,大大方便了用户的创新开发。
在项目训练和应用开发中非常灵活方便,这里采用的是八位命令字,最多可定义256个命令字。
由于同时采用了单片机和CPLD,因此编程非常方便灵活,工程人员可根据自身特点而相应选择。
例如,有些人的单片机的编程能力要比VHDL语言的编程要好一些,那他便可在VHDL语言中把对命令字的操作定义的简单一些;若是想简化单片机的编程,则可使VHDL语言编程中特定的命令字对应的操作复杂一些。
单片机的编程过程就是对A寄存器写不同的命令字,然后调用串行通信子程序的过程。
若是VHDL的命令字对应的程序简单些,则要完成对某特定外围器件的操作所需要的命令字调用就会多一些。
反之亦然。
总之,用单片机与CPLD构成的双控制器,在学习与项目开发中要比用它们各自独立开发项目要容易的多。
1.2核心处理器简介
二.实验板上的单片机芯片简介
本实验板采用的是AT89s52单片机,它是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得at89s52单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89s52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
1.3硬件布局
图1JSJDZ-Ⅱ型实验箱各模块布局
1.4资源端口分配
表一:
单片机端口分配
端口
资源1
资源2
资源3
资源4
资源5
P0.0
彩灯D0
数码管段a
LCDD0
点阵LOAD
D/AD0
P0.1
彩灯D1
数码管段b
LCDD1
点阵CLK
D/AD1
P0.2
彩灯D2
数码管段c
LCDD2
点阵DI
D/AD2
P0.3
彩灯D3
数码管段d
LCDD3
点阵MX
D/AD3
P0.4
彩灯D4
数码管段e
LCDD4
点阵HX
D/AD4
P0.5
彩灯D5
数码管段f
LCDD5
D/AD5
P0.6
彩灯D6
数码管段g
LCDD6
D/AD6
P0.7
彩灯D7
数码管段h
LCDD7
D/AD7
P1.0
4*4键盘L4
A/DOUT
PWMP2+
P1.1
4*4键盘L3
A/DEOC
PWMP2
P1.2
4*4键盘L2
A/DCLK
PWMP2-
P1.3
4*4键盘L1
A/DES
PWMP1+
P1.4
4*4键盘H4
A/DCS
PWMP1
P1.5
4*4键盘H3
18B20
PWMP1-
P1.6
4*4键盘H2
独立按键
P1.7
4*4键盘H1
独立按键
P2.0
数码管A
LCDRS
点阵A
P2.1
数码管B
LCDR/W
点阵B
P2.2
数码管C
LCDE
点阵C
P2.3
P2.4
P2.5
P2.6
独立按键
蜂鸣器
P2.7
独立按键
P3.0
串口RO
PTR2000RO
P3.1
串口RI
PTR2000DI
P3.2
串口DI
P3.3
P3.4
PTR2000TX
电机测速
D/ACS
P3.5
P3.6
P3.7
第二章实验环境及工具介绍
2.2KeilC51安装及使用
2.2.1安装
1)打开Keil,双击setup文件夹,再双击Setup.exe。
2)选择
。
3)之后按默认的即可。
4)安装成功。
2.2.2 建立您的第一个项目
开始程序运行KeiluVision2几秒后,出现如图3-1的屏幕。
图3-1 启动时的屏幕
接着按下面的步骤建立您的第一个项目:
(1)新建工程。
点击Project菜单,选择弹出的下拉式菜单中的NewProject,如图3-2。
接着弹出一个名为“CreateNewProject”的对话框,如图3-3,先选择一个合适的文件夹准备来存放工程文件,如“C51”是新建的文件夹。
在"文件名"中输入您的第一个程序项目名称,这里我们用"test","保存"后的文件扩展名为uv2,这是KEILuVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。
我们建议:
今后每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理,并养成良好的习惯。
图3-2 NewProject菜单
图3-3 文件窗口
(2)选择单片机。
紧接着,KeilC51提示您选择CPU器件。
8051内核单片机最早是由鼎鼎大名的Intel公司发明的,后来其他厂商如Philips、Atmel、Winbond等先后推出其兼容产品,并在8051的基础上扩展了许多增强功能。
在这里我们选择Atmel公司的AT89S51。
此时屏幕如图3-4所示。
图1-4选取芯片
接下来弹出一个如图3-5所示的对话框。
该对话框提示您是否要把标准8051的启动代码添加到工程中去。
KeilC51既支持C语言编程也支持汇编语言编程。
如果打算用汇编语言写程序,则应当选择“否(N)”;如果打算用C语言写程序,一般也选择“否(N)”,但是,如果用到了某些增强功能需要初始化配置时,则可以选择“是(Y)”。
在这里,我们选择“否(N)”,即不添加启动代码。
图3-5选择是否要添加启动代码
至此,一个空的KeilC51工程建立完毕。
(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。
点击图3-6中1的新建文件的快捷按钮,在2中出现一个名为“Textn”(其中n表示序号)的文档,或通过菜单File-New或快捷键Ctrl+N来实现。
图1-6新建程序文件
点击图3-6中的3保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存。
因是新文件所以保存时会弹出如图3-7的文件操作窗口,我们把第一个汇编语言编写的程序命名为test1.asm,保存在项目所在的目录中。
注意:
扩展名“.asm”不可省略。
图3-7保存新建的源程序文件
(4)添加源程序文件到工程中。
现在,一个空的源程序文件“test1.asm”已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系。
我们需要把它添加到工程中去。
单击KeilC51软件左边项目工作窗口“Target1”上的“+”,将其展开。
然后右击“SourceGroup1”文件夹,会弹出如图3-8所示的选择菜单。
单击其中的“AddFilestoGroup'SourceGroup1'”项,将弹出如图3-9所示的对话框。
图3-8把文件加入到项目文件组中
图3-9选择文件
请在文件类型下拉列表中选择Asmsourcefile源文件,再选择刚刚保存的文件“test1.asm”
,按ADD按钮(请不要多次点击“Add”按钮),最后按“Close”按钮,程序文件已加到项目中了。
这时可以点击SourceGroup1文件夹图标左边的“+”展开后查看。
(5)现在开始输入源程序。
先最大化“test1.asm”源程序窗口,然后请按实验一程序清单输入程序代码。
;----------------入口程序-------------------
ORG0000H;程序执行开始地址
LJMPSTART;跳到标号START执行
;---------------主程序-------------------
START:
MOVP0,#01111111B;点亮最下面的LED,即P1_7口低电平
LCALLDELAY50;延时50毫秒
MOVP0,#10111111B;点亮下面第二个LED,即P0_6口低电平
LCALLDELAY50;延时50毫秒
MOVP0,#11011111B;LED依次点亮(以下省略)
LCALLDELAY50;延时50毫秒
MOVP0,#11101111B
LCALLDELAY50;延时50毫秒
MOVP0,#11110111B
LCALLDELAY50;延时50毫秒
MOVP0,#11111011B
LCALLDELAY50;延时50毫秒
MOVP0,#11111101B
LCALLDELAY50;延时50毫秒
MOVP0,#11111110B
LCALLDELAY50;延时50毫秒
MOVP0,#11111111B;完成第一次循环点亮,延时约0.25秒
LCALLDELAY50;延时50毫秒
AJMPSTART;反复循环
;-----------延时子程序,12M晶振延时约50毫秒---------------
DELAY50:
MOVR4,#5
L3:
MOVR2,#20
L1:
MOVR3,#248
DJNZR3,$
DJNZR2,L1
DJNZR4,L3
RET
END
(6)单击KeilC51工具栏的“
”图标,弹出名为“OptionsforTarget‘Target1’”的对话框。
单击“Output”标签页,选中“CreateHEXFile”项,然后“确定”。
参见图3-10。
图3-10编译环境设置
(7)我们先来看图3-11,图中1、2、3都是编译按钮,不同是1是用于编译单个文件;2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的;3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。
在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。
5是菜单中的它们。
这个项目只有一个文件,你按123中的一个都可以编译。
在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。
单击工具栏的按钮“
”编译当前源程序。
编译结果会显示在输出窗口4内。
如果是“0Error(s),0Warning(s).”就表示程序没有问题了(至少是在语法上不存在问题了)。
如果存在错误或警告,双击错误,在源程序的错误行前会出现
,修改后,再编译,直到通过为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 单片机 综合 实验