单片机与CPLD综合课程设计_第1页
单片机与CPLD综合课程设计_第2页
单片机与CPLD综合课程设计_第3页
单片机与CPLD综合课程设计_第4页
单片机与CPLD综合课程设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单片机与CPLD综合课程设计 学院 电子信息工程学院 专业 生物医学工程 学号 100421101 姓名 陈 俊 日期 2014年1月4日 摘 要基于单片机与C P L D 设计了一个键值采集、显示及与PC通信的综合应用系统。系统硬件由单片机、CPLD 及外围电路组成,软件采用C 语言和硬件描述语言VHDL 编程。可实现上行键值采集、显示,并将采集到的键值数据通过串口送给PC;下行PC发送数据由系统接收,数码管可以显示接收到的数据。该系统工作可靠,在实际设计应用中有一定的参考价值。引 言随着电子、计算机技术的飞速发展,单片机与CPLD技术都得到了越来越广泛的应用。单片微型计算机(单片机)自问

2、世以来,因其小巧灵活、成本低、控制能力强、易于产品化等优势,在各领域中得到广泛的应用;但纯单片机系统也有弱点:如低速、低可靠性等。可编程逻辑器件CPLD含有数量众多的可编程逻辑宏单元或逻辑块,能够任意组合,可以根据需要设计成功能各异的逻辑电路;并且可采用VHDL语言编程,加速了产品的开发过程,使逻辑电路的设计变得简单、易于实现;器件的现场可编程,大大地缩短了产品开发周期及方便更新换代;但在信息处理、逻辑分析、决策判断等方面CPLD 比不上单片机。因此,可以将单片机与CPLD器件结合,优势互补,组成软硬件都可灵活编程的系统,以适应不断改变的市场需求。一、设计任务了解单片机与CPLD综合实验板及资

3、源,实现如下功能:检测按键输入:判断按键键值,点亮相应发光二极管,同时数码管显示键值,并通过串口将键值发给PC。由PC的串口向实验板发送19数据,通过数码管能将PC发送的数据正确显示出来。二、相关知识介绍 1.单片机技术 P89C60X2 器件采用高性能的静态80C51 设计,以先进的CMOS 工艺制造 并包含非易失性Flash。程序存储器可通过并行编程或在系 统编程(ISP)的方法进行编程。支持6 时钟模式。 P89C60X2 包含512 字节RAM ,64K字节Flash,32 个I/O 口,3 个16 位定时/计数器6 中断源,4 中断优先级,嵌套的中断结构,1 个增强型UART ,看门

4、狗定时器以及片内振荡器和时钟电路。 此外器件的静态设计使其具有非常宽的频率范围甚至可低至零。具有两个软件可选的节电模式,空闲模式和掉电模式,空闲模式冻结CPU 的运行,但允许RAM 、定时器、串口和中断系统继续保持其功能,掉电模式保持RAM 的内容,但冻结振荡器,这样使其它片内功能都停止工作。由于是静态设计,时钟停止而不会使用户数据丢失,操作可从时钟停止点恢复运行。 2.CPLD技术 EPM7128S: ALTERA的EPM7128S系列CPLD是基于第二代MAX结构体系地高性能EEPROM结构的CPLD。完全符合IEEE1149.1 JTAG边界扫描标准,具有5V ISP的功能。具有最小5n

5、s的引脚到引脚的逻辑时延,最高可175.4MHz的计数频率。引脚可配置为开漏输出。每个宏单元都有独立的可编程电源控制,最多可以节省50%的功耗。宏单元内的寄存器具有单独的时钟和复位等信号。支持多种电压接口。实验板上使用的是一个PLCC84封装的EPM7128S ,EPM7128S内部有128个宏单元、8个逻辑阵列块和2500个门电路。 3.综合实验板介绍 本综合实验板采用的是ATMEL公司的ATF1508AS芯片作为目标CPLD。 ATF1508AS 与Altera公司的EPM7128S芯片完全兼容,但是可以擦写的次数可以上万次,方便同学们的练习。采用PHILIPS公司的最新的内置ISP下载功

6、能的64 KB大容量Flash存储器和特大RAM的P89C60X2单片机做为目标单片机。三、设计工具简介 1.keilC51Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具。C51工具包的整体结构,如图所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编

7、辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 2.MaxplusII Max+plus是Altera公司上一代的PLD开发软件,提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉Max+plus是

8、Altera公司上一代的PLD开发软件,提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。目前Altera已经停止开发MaxplusII,而转向QuartusII软件平台。四、设计过程 1.单片机软件设计.过程.程序#include <reg51.h>unsigned char a,jieshou;void

9、 send_char(unsigned char shuzi);void delay(unsigned int x);sbit P00=P00; /即定义P00为P0口的第1位,以便进行位操作。sbit P01=P01;sbit P02=P02;sbit P03=P03;sbit p04=P04;sbit P05= P05;main() p04=0; /蜂鸣器 delay(100); P05=0; delay(100); P05=1; delay(150); P05=0; delay(100); P05=1; delay(150); P05=0; delay(100); P05=1; TMOD

10、 = 0x20; / 将定时/计数器1设置为工作方式2,用于产生波特率,定时器 1不相应外部中断,定时器1处于定时方式,定时器1定时方式为"8位自动充值定时" TH1= 0xFD; /给定时/计数器1装初值,确定定时时长. TL1=0xFD; / 波特率9600 SCON = 0x50; / 01010000,串行口控制寄存器设置为工作方式1并允许中断接收数据。 PCON = 0x00; / 波特率不倍增 TR1 = 1; / 启动定时器1 IE = 0x0; / 禁止任何中断 a=0; while(1) unsigned char n; /n; P2=0xff; n=P2

11、; if(n!=0xff) /判断键值 delay(20); if(n!=0xff) switch(n) case(0xfe):P03=0;P02=0;P01=0;P00=0;send_char(0x0);P05=0;delay(300);P05=1;delay(200);break;/0 case(0xfd):P03=0;P02=0;P01=0;P00=1;send_char(0x1);P05=0;delay(300);P05=1;delay(200);break;/1 case(0xfb):P03=0;P02=0;P01=1;P00=0;send_char(0x2);P05=0;delay

12、(300);P05=1;delay(200);break;/2 case(0xf7):P03=0;P02=0;P01=1;P00=1;send_char(0x3);P05=0;delay(300);P05=1;delay(200);break;/3 case(0xef):P03=0;P02=1;P01=0;P00=0;send_char(0x4);P05=0;delay(300);P05=1;delay(200);break;/4 case(0xdf):P03=0;P02=1;P01=0;P00=1;send_char(0x5);P05=0;delay(300);P05=1;delay(200

13、);break;/5 case(0xbf):P03=0;P02=1;P01=1;P00=0;send_char(0x6);P05=0;delay(300);P05=1;delay(200);break;/6 case(0x7f):P03=0;P02=1;P01=1;P00=1;send_char(0x7);P05=0;delay(300);P05=1;delay(200);break;/7 if(RI) / 是否有数据到来,由PC的串口向实验板发送19数据 RI = 0; jieshou = SBUF; / 暂存接收到的数据 switch(jieshou) case(0x0):P03=0;P0

14、2=0;P01=0;P00=0;P05=0;delay(300);P05=1;break; case(0x1):P03=0;P02=0;P01=0;P00=1;P05=0;delay(300);P05=1;break; case(0x2):P03=0;P02=0;P01=1;P00=0;P05=0;delay(300);P05=1;break; case(0x3):P03=0;P02=0;P01=1;P00=1;P05=0;delay(300);P05=1;break; case(0x4):P03=0;P02=1;P01=0;P00=0;P05=0;delay(300);P05=1;break

15、; case(0x5):P03=0;P02=1;P01=0;P00=1;P05=0;delay(300);P05=1;break; case(0x6):P03=0;P02=1;P01=1;P00=0;P05=0;delay(300);P05=1;break; case(0x7):P03=0;P02=1;P01=1;P00=1;P05=0;delay(300);P05=1;break; case(0x8):P03=1;P02=0;P01=0;P00=0;P05=0;delay(300);P05=1;break; case(0x9):P03=1;P02=0;P01=0;P00=1;P05=0;de

16、lay(300);P05=1;break; void send_char(unsigned char shuzi) /传送一个字符,串口将键值发给PC SBUF = shuzi; while(!TI); / 等特数据传送 TI = 0; / 清除数据传送标志 void delay(unsigned int x) unsigned char j; while(x-) for (j=0;j<125;j+) ; 2.cpld软件设计.过程.程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY li IS PORT( A: IN STD_LOGIC_

17、VECTOR(3 DOWNTO 0); Y:Out STD_LOGIC_VECTOR(7 DOWNTO 0); KEYIN:in STD_LOGIC_VECTOR(7 DOWNTO 0); LEDOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); KEYOUT:out STD_LOGIC_VECTOR(7 DOWNTO 0); SPKIN:in STD_LOGIC; SPKOUT:OUT STD_LOGIC; W4IN:in STD_LOGIC; -位选 W4OUT:out STD_LOGIC); END li;ARCHITECTURE lili OF li IS SI

18、GNAL TEMP: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL TEMP3: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN W4OUT<=W4IN; SPKOUT<=SPKIN;PROCESS(A,KEYIN)VARIABLE COMB:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE COMB3:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINCOMB:=A(3)&A(2)&A(1)&A(0);COMB3:=KEYIN(7)&KEYIN(6)&am

19、p;KEYIN(5)&KEYIN(4)&KEYIN(3)&KEYIN(2)&KEYIN(1)&KEYIN(0);CASE COMB ISWHEN"0000"=>TEMP<="11000000" -0WHEN"0001"=>TEMP<="11111001"WHEN"0010"=>TEMP<="10100100"WHEN"0011"=>TEMP<="1011000

20、0"WHEN"0100"=>TEMP<="10011001"WHEN"0101"=>TEMP<="10010010"WHEN"0110"=>TEMP<="10000010"WHEN"0111"=>TEMP<="11111000"WHEN"1000"=>TEMP<="10000000" -8WHEN"1001"

21、=>TEMP<="10010000" -9WHEN OTHERS=>TEMP<="ZZZZZZZZ"END CASE;CASE COMB3 ISWHEN"11111110"=>TEMP3<="11111110" -采集的键值WHEN"11111101"=>TEMP3<="11111101"WHEN"11111011"=>TEMP3<="11111011"WHEN"11

22、110111"=>TEMP3<="11110111"WHEN"11101111"=>TEMP3<="11101111"WHEN"11011111"=>TEMP3<="11011111"WHEN"10111111"=>TEMP3<="10111111"WHEN"01111111"=>TEMP3<="01111111"WHEN OTHERS=>T

23、EMP3<="ZZZZZZZZ"END CASE;END PROCESS;Y(0)<=TEMP(0);Y(1)<=TEMP(1);Y(2)<=TEMP(2);Y(3)<=TEMP(3);Y(4)<=TEMP(4);Y(5)<=TEMP(5);Y(6)<=TEMP(6);Y(7)<=TEMP(7);-CPLD采集的键值数据通过keyout0keyout7送给单片机的A8A15输入KEYOUT(0)<=TEMP3(0); KEYOUT(1)<=TEMP3(1);KEYOUT(2)<=TEMP3(2);KEYOUT(3)<=TEMP3(3);KEYOUT(4)<=TEMP3(4);KEYOUT(5)<=TEMP3(5);KEYOUT(6)<=TEMP3(6);KEYOUT(7)<=TEMP3(7);LEDOUT(0)<=TEMP3(0);LEDOUT(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论