1、实验题目:基于简单CPU LCD的录音显示回放设计目录第一部分 实验目的和要求3第二部分 实验工具及实验器件31.Proteus以及Keil软件的介绍32.51单片机AT89C5143.LCD/MAX721954.三态输出的8D透明锁存器74HC37365. DAC083266. 74LS3737第三部分 实验原理图及程序代码81.硬件部分电路设计82.软件部分设计10第四部分 仿真测试26第五部分 实验小结和体会28第一部分 实验目的和要求本课程设计是在理论课程的基础上,重点培养学生的动手能力,通过理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作
2、,为下一部结合实际的硬件系统设计准备条件。1、 录音机类 实验中需要录取的信源,可以用单片机或者信号发生器产生。基本要求:1 把需要录取的信号用AD转换器采样并存储在SRAM中。2 在一组数码管或LCD上显示采样速率和录音时间(秒),以及信号相关参数。3 用D/A转换器回放录音信号,通过喇叭过模拟示波器显示。4 在一组数码管或LCD上显示回放的播放时间或信号强度。发挥部分:1 用功能键可分别设定录音和放音的采样速率。2 多段录音管理。3 任意组合播放。根据提供的参考工程,在proteus平台自己重新画出实验所需要的电气原理图,并在此基础上编写相对应的程序,实现其功能,学习proteus软件的使
3、用,其中包括原理图器件的选取、原理图的电气连接、程序的编写编译以及运行,并能查出其错误等。第二部分 实验工具及实验器件1.Proteus以及Keil软件的介绍Proteus是英国Labcenter公司开发的电路及单片机系统设计与仿真软件。Proteus可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能。Proteus是目前唯一能对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原型时就可对系统进行调试、测试和验证。Proteus软件大大提高了企业的产品开发效率,降低了开发风险。由于Proteus软件逼真、真实的协
4、同仿真功能,它也特别适合于作为配合单片机课堂教学和实验的学习工具。Proteus软件提供了30多个元器件库、7000余种元器件。元器件涉及电阻、电容、二极管、三极管、变压器、继电器、各种放大器、各种激励器、各种微控制器、各种门电路和各种终端等。Proteus软件还提供有交直流电压表、逻辑分析仪、示波器、定时/计数器和信号发生器等测试信号工具用于电路测试。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的
5、仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存建立工程并添加源文件设置工程编译/汇编、连接,产生目标文件程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的
6、方法非常易于掌握。首先选择菜单File-New,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-New Project,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group S
7、ource Group1”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-Option for TargetTarget1(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选
8、中“Creat Hex Fi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。成功编译/汇编、连接后,选择菜单Debug-Start/Stop Debug Session(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-Step Over)、全速执行等多种运行方式进行程序调试。如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-Inline
9、Assambly),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/Remove Breakpoint或Debug-Breakpoints等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。2.51单片机AT89C51 51单
10、片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。当前常用的51系列单片机主要产品有:*Intel的:80C31、80C51、87C51,80C32、80C52、87C
11、52等;*ATMEL的:89C51、89C52、89C2051等;89C51单片机的内部结构为:单一+5V电源供电;CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一对全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶
12、体和微调电容需要外接。最高振荡频率为12M。3.LCD /MAX7219MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。 只有一个外部寄存器用来设置各个LED的段电流。 MAX7221与SPI、 QSPI以及 MICROWIRE相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。 一个方便的四线串行接口可以联接所有通用的微处理器。 每个数据可以寻址在更新时
13、不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。 整个设备包含一个150A的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。 在应用时要求3V的操作电压或segment blinking,1 三态输出的8D透明锁存器74HC37374HC373 的输出端 Q0Q7可直接与总线相连。 当三态允许控制端 OE 为低电平时,Q0Q7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,Q0Q7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。 当锁存允许端 L
14、E 为高电平时,Q随数据D而变。当 LE为低电平时,Q被锁存在已建立的数据电平。2.DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。3 LM016L是一个2*16的点阵式字符液晶显示模块,每个字符由5*7个点组成的;内部带有HD44780控制器;采用5V电源供电;内建有192个字符,8个用户自建字符。74LS373为三态输出的八 D 透明锁存器,共有 54S373 和 74LS373 两种线路 结构型式
15、,其主要电器特性的典型值如下(不同厂家具体值有差别): 型号 tPd PD 54S373/74S373 7ns 525mW 引脚图54LS373/74LS373 17ns 120mW 373 的输出端 O0O7 可直接与总线相连。 当三态允许控制端 OE 为低电平时,O0O7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,O0O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,O 被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善
16、400mV。 引出端符号: D0D7 数据输入端 OE 三态允许控制端(低电平有效) LE 锁存允许端 O0O7 输出端 真值表: DnLEOEOnHHLHLHLLXLLQ0XXH高阻态第三部分 实验原理图及程序代码1. 硬件部分电路设计 由于本次实验设计的是一个单片机的串口通信实验,所以我们应当使用51单片机的通信串口进行数据的收发,51单片机的通信串口主要是P3.0和P3.1两个端口。在实验要求中提出了使用RS-232标准进行通信,因为单片机的输出电平为TTL标准,所以我们要使用一个芯片将TTL标准转换成RS-232标准,即MAX232芯片。通过MAX232芯片的接收端和发送端相连来构成自
17、发自收电路。因为实验要求要能够通信10组数据,所以我们使用了基于I2C总线的EEPROM存储器24C08B,该存储器具有1K的存储空间,我们需要对这种串行存储器进行读写操作,我们采用单片机上的P1.0与P1.1进行读写操作,通过程序的编写,我们在仿真开始时向存储器中输入10组预先设定好的数据,然后要传输进行通信时从存储器中按照存储地址将需要的数据串提取出来进行传输。对于电路的输出部分,我们使用了简单的I/O口 ,即使用74HC373芯片,并将该芯片用作锁存器,即把该芯片的LE口连接到单片机的ALE口作为控制口,通过该芯片驱动总线,来完成该电路的显示部分。该电路的显示部分按要求则使用型号为LM0
18、16的LCD液晶显示器,通过P0口传送数据然后由LCD显示出来。另外,电路中还设计了两个按键,分别是选择和发送键,选择键用来选择要发送的数据串,发送键则用来发送数据。基于8255口是指显示和键盘都由8255的I/O口控制,使用8255可编程并行口芯片,设定为工作方式0, PC口做输入,PA口做输出,使得达到控制通过按键选择发送,显示正确的数据串。完整电路原理图如下:(补充一下,由于验收的时候发现了问题,没有在8255上设置按键,所以改正了电路图和程序,已经达到了键盘的要求。上图就是改正以后的图,下面的程序也是改正后的程序。)2.软件部分设计在程序中后面注释了我对程序功能的理解,所以就没有分块分
19、析。下面是整个设计代码和我对设计的认识和理解。第四部分 仿真测试第五部分 实验小结和体会 本次课程设计的题目是基于简单CPU8LED录音显示回放的设计。因为我们前面的课程没有学习过单片机,所以这次课程设计对我的挑战很大。拿到题目以后,通过在图书馆的书籍查阅和网上资料阅读,初步了解了单片机的基础知识以及单片机通信功能的使用,学到了许多平时课程上没有学到的知识。这次设计的重点在于数据的发送与接收,通过对单片机中的通信寄存器SBUF的读写来进行数据传输。通过发送函数和main函数中的接收函数将数据存储并显示出来。另一个实验的重点就是录音回放的设计。当然在实验中遇到了不少难题,尤其是在第一次检查的时候老师对波形的要求我们没有达到。经过思考、修改、调试,终于实现了波形完全输出的要求,这种锻炼是有很意义的,很让人成长的。我希望自己不管在以后的学习还是实验设计中都要有这种不懈改正自己错误的态度。谢谢软件课程设计(proteus)的老师的指点和帮助。 .12