




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2013/2014学年 第一学期课程设计II 实验报告 模 块 名 称 关于51单片机设计(proteus) 专 业 通信工程 学 生 班 级 学 生 学 号 学 生 姓 名 指 导 教 师 设计题目基于的显示简易电压表设计任务要求数字电压表(AC/DC)设计 基本要求:了解电压表的工作原理。设计一个直流电压测量器,测量范围0.01V-3V,用LED数码管/LCD屏显示测量值,显示精度0.001用键盘选择测量范围(分档) 发挥部分:交流电压测量,被测频率1KHz-10KHz (0.1-3V)考虑交流测量的附加电路。 显示格式: LED数码管/LCD屏显示参数 基于8255口是指显示和键盘都由8255的IO口控制实验设备及软件PC机,proteus同组人员学号及姓名参考文献1胡健.单片机原理及接口技术M.北京:机械工业出版社,2004年10月2王毓银.数字电路逻辑设计M.高等教育出版社,2005年12月3于殿泓、王新年.单片机原理与程序设计实验教程M.西安电子科技大学出版社,2007年5月4谢维成、杨加国.单片机原理与应用及C51程序设计实例M.电子工业出版社,2006年3月5李广弟.单片机基础M.北京航空航天大学出版社,2007年5月.报告内容第一部分 实验目的和要求本课程设计是在理论课程的基础上,重点培养学生的动手能力,通过理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作,为下一部结合实际的硬件系统设计准备条件。实验要求:数字电压表(AC/DC)设计 基本要求:了解电压表的工作原理。设计一个直流电压测量器,测量范围0.01V-3V,用LED数码管/LCD屏显示测量值,显示精度0.001用键盘选择测量范围(分档) 发挥部分:交流电压测量,被测频率1KHz-10KHz (0.1-3V)考虑交流测量的附加电路。 显示格式: LED数码管/LCD屏显示参数 基于8255口是指显示和键盘都由8255的IO口控制根据提供的参考工程,在proteus平台自己重新画出实验所需要的电气原理图,并在此基础上编写相对应的程序,实现其功能,学习proteus软件的使用,其中包括原理图器件的选取、原理图的电气连接、程序的编写编译以及运行,并能查出其错误等。第二部分 实验工具及实验器件1. Proteus软件 Proteus是英国Labcenter公司开发的电路及单片机系统设计与仿真软件。Proteus可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能。Proteus是目前唯一能对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原型时就可对系统进行调试、测试和验证。Proteus软件大大提高了企业的产品开发效率,降低了开发风险。由于Proteus软件逼真、真实的协同仿真功能,它也特别适合于作为配合单片机课堂教学和实验的学习工具。Proteus软件提供了30多个元器件库、7000余种元器件。元器件涉及电阻、电容、二极管、三极管、变压器、继电器、各种放大器、各种激励器、各种微控制器、各种门电路和各种终端等。Proteus软件还提供有交直流电压表、逻辑分析仪、示波器、定时/计数器和信号发生器等测试信号工具用于电路测试。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存建立工程并添加源文件设置工程编译/汇编、连接,产生目标文件程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单File-New,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-New Project,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group Source Group1”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-Option for TargetTarget1(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“Creat Hex Fi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。成功编译/汇编、连接后,选择菜单Debug-Start/Stop Debug Session(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-Step Over)、全速执行等多种运行方式进行程序调试。如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-Inline Assambly),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/Remove Breakpoint或Debug-Breakpoints等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。2.51单片机AT89C51 51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。当前常用的51系列单片机主要产品有:*Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;*ATMEL的:89C51、89C52、89C2051等;89C51单片机的内部结构为:单一+5V电源供电;CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一对全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。3.LCD液晶显示器件LM016LLM016L是一个2*16的点阵式字符液晶显示模块,每个字符由5*7个点组成的;内部带有HD44780控制器;采用5V电源供电;内建有192个字符,8个用户自建字符。4.可编程并行I/O接口芯片8255A8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。特点:(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口. (2)具有24个可编程设置的I/O口,即3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4PC7),B组包括B口及C口(低4位,PC0PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输. RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。 D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器. 当A1=0,A0=0时,PA口被选择; 当A1=0,A0=1时,PB口被选择; 当A1=1,A0=0时,PC口被选择; 当A1=1.A0=1时,控制寄存器被选择.5.8位 A/D转换器TLC549TLC549是 TI公司生产的一种低价位、高性能的8位 A/D转换器,它以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大转换速率为 40000HZ,4MHZ典型内部系统时钟,电源为 3V至 6V。它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。TLC549引脚图REF+:正基准电压输入 2.5VREF+Vcc+0.1。 REF:负基准电压输入端,-0.1VREF-2.5V。且要求:(REF+)(REF-)1V。 VCC:系统电源3VVcc6V。 GND:接地端。 /CS:芯片选择输入端,要求输入高电平 VIN2V,输入低电平 VIN0.8V。 DATA OUT:转换结果数据串行输出端,与 TTL 电平兼容,输出时高位在前,低位在后。ANALOGIN:模拟信号输入端,0ANALOGINVcc,当 ANALOGINREF+电压时,转换结果为全“1”(0FFH),ANALOGINREF-电压时,转换结果为全“0”(00H)。 I/O CLOCK:外接输入/输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。TLC549 器件工作时当/CS变为低电平后, TLC549芯片被选中, 同时前次转换结果的最高有效位MSB (A7)自 DATA OUT 端输出,接着要求自 I/O CLOCK端输入8个外部时钟信号,前7个 I/O CLOCK信号的作用,是配合 TLC549 输出前次转换结果的 A6-A0 位,并为本次转换做准备:在第4个 I/O CLOCK 信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个 I/O CLOCK 信号的下降沿使片内采样/保持电路进入保持状态并启动 A/D开始转换。转换时间为 36 个系统时钟周期,最大为 17us。直到 A/D转换完成前的这段时间内,TLC549 的控制逻辑要求:或者/CS保持高电平,或者 I/O CLOCK 时钟端保持36个系统时钟周期的低电平。由此可见,在自 TLC549的 I/O CLOCK 端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次 A/D转换开始。第三部分 实验原理图及程序代码1.硬件部分电路设计 本次试验要求设计简易电压表,因此用一个滑动变阻器代替被测电阻,由滑动变阻器的组织改变,加一个能够测量实际电压的电压表测量其电压。电阻电压经过TLC549模数转换为数字信号-电流大小,送至51单片机,51单片通过检查相应的档位是否在合法范围内,如果在合法范围内,则通过8255A芯片显示在LCD上,右侧图为要求的4X4小键盘用来改变档位。2.实验原理图如下:2.软件部分设计在程序中后面注释了我对程序功能的理解,所以就没有分块分析。下面是整个设计代码和我对设计的认识和理解。#include#include#include /*宏定义*/#define uint unsigned int#define uchar unsigned char/*芯片端口地址定义*/#define COM8255 XBYTE0X7FFF /8255的命令口#define PA8255 XBYTE0X1FFF /8255的PA#define PB8255 XBYTE0X3FFF /8255的PB#define PC8255 XBYTE0X5FFF /8255的PC/*按键编码查表,可得到键值*/const unsigned char Key_code=0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77;uchardeda;uchar flang, jishu,num;unsigned char KeyValue=0;uchar display_data_1=Gear:X2.0V 0;uchar display_data_2=Voltage:0.000V 0;bit done;bit xianshi;uint dianya;uint sheding=2000;uchar flag_v=20;/*系统引脚定义*/sbit RS=P30; /1602的数据/命令控制口口sbit RW=P31; /1602的读写控制端sbit EN=P32; /1602的使能控制端sbit CLK = P15;/7脚sbit DAT = P17; /脚sbit CS = P16; /5 脚unsigned char TLC549_AD(void)/TLC549转换函数 unsigned char i,x; CLK = 0; DAT = 1; CS = 0; for(i = 0;i8;i+) CLK = 1; x=1; if(1 = DAT) x+; CLK = 0; CS = 1; for(i=0;i8;i+) _nop_();return (x);/*延时函数*/static void SoftDelay(unsigned int time)unsigned char n;while(time-)for(n=0;n0;x-)for(y=110;y0;y-) ;void delayus(uint x) /us延时函数while(x-);/*按键编码和键值转换函数*/unsigned char Key_code_value(unsigned char key_code)unsigned char i;for(i=0;i16;i+)if(Key_codei=key_code)return i;/return key_code;return 0xff;/*按键扫描程序,返回按键键值,采用翻转法*/unsigned char Key_Scan(void)unsigned char temp;temp= PC8255;temp&=0x0f;/Set8255_Mode(0x90);/模式0,PA口输入,下PC口输出(PA为矩阵键盘的行,下PC口为列)COM8255=0x82;PB8255 = 0x0f;/PC8255 = temp;temp |=(PB82554);/形成按键编码,PA(低位)值为高4位,PC(低位)值为低4位return (Key_code_value(temp);/*功能:判断是否有键按下,如有返回键值*/unsigned char KeyRead(void)/Set8255_Mode(0x81);/模式0,PA口输出,下PC口输入(PA为矩阵键盘的行,下PC口为列)COM8255=0x89;PB8255 = 0x00;/PA口输出低电平PC8255 = 0x0f;/if(PC8255&0x0f)!=0x0f)/读取8255的下PC口,即读取矩阵按键的列状态SoftDelay(1);/软件延时去抖if(PC8255&0x0f)!=0x0f)/如果矩阵按键列状态不为0x0f,则说明有键按下return (Key_Scan();/按键键值扫描/return 5;else return 0xff;elsereturn 0xff;/*1602液晶驱动程序*/1602写命令程序void WriteCom(uchar COM)RS=0;EN=0;PA8255=COM;delayms(5);EN=1;delayms(5);EN=0;/1602写数据程序void WriteData(uchar x,uchar y,uchar DATA)if(x=1)WriteCom(0x80+y-1);if(x=2)WriteCom(0x80+0x40+y-1); /向1602写坐标信息RS=1;EN=0;PA8255=DATA;delayms(5);EN=1;delayms(5);EN=0;/*1602液晶显示时间程序*/void display() uchar i;for(i=0;i=sheding)display_data_28=-;display_data_210=-;display_data_211=-;display_data_212=-; void key()/按键检测 uchar key_temp;key_temp=KeyRead();if(key_temp!=0xff)if(key_temp=12)sheding=1000;flag_v=10;if(key_temp=13)sheding=2000;flag_v=20; if(key_temp=14)sheding=2500;flag_v=20;if(key_temp=15)sheding=3000;flag_v=30;while(KeyRead()!=0xff); /*主程序*/void main()Initial(); /系统初始化while(1)dianya=TLC549_AD()*11.764706;timetoseg();/转换 key(); /按键检测 display();第四部分 仿真测试显示结果1. 当调节变阻器,使真实电压值为0V时,测量误差为 0.显示结果如下图所示: 2.当调节变阻器,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家居服饰创新创业项目商业计划书
- 水果垃圾分类宣传创新创业项目商业计划书
- 数字演出制作创新创业项目商业计划书
- 智能交通指挥创新创业项目商业计划书
- 屠宰场废弃物无害化处理技术创新创业项目商业计划书
- 企业资产盘点流程与策略
- 粤教版初中地理期末测验题库
- 文学知识点最佳归纳与记忆方法
- 小学生暑期安全教育活动方案设计
- 2025年吉安县退役军人事务局面向社会公开招聘工作人员考前自测高频考点模拟试题及答案详解(历年真题)
- 2025山东东营公安招录辅警392人考试参考试题及答案解析
- 2025四川宜宾市退役军人事务局招聘临聘人员2人考试参考题库及答案解析
- 高考语文 热点04 现代文阅读II之理论与文本互证类题(解析版)
- 预制混凝土检查井采购合同模板
- 2025年中小学《国庆节、中秋节》放假通知及安全提示
- 致敬 9.3:一场阅兵一部民族精神史诗
- (完整版)室外散水专项方案
- 智能物流行业智能化运输装备应用前景研究报告
- 2025云南黄金矿业集团股份有限公司第二次招聘8人笔试备考试题及答案解析
- 三级眼科医院评审标准实施要点
- 化疗药物使用顺序课件
评论
0/150
提交评论