南邮设计报告_第1页
南邮设计报告_第2页
南邮设计报告_第3页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计实验报告实验题目:基于8255的LCD温度显示设计学院:通信工程专业:学号:姓名:指导老师:第一部分 实验目的及要求1. 实验目的本课程设计是在理论课程的基础上, 重点培养学生的动手能力, 通过理论计算、 实 际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正 常工作,为下一部结合实际的硬件系统设计准备条件。2. 实验基本要求:根据提供的参考工程,在 proteus 平台自己重新画出实验所需要的电气原理图,并 在此基础上编写相对应的程序,实现其功能,学习 proteus 软件的使用,其中包括原理 图器件的选取、原理图的电气连接、程序的编写编译以及运行,并能查出

2、其错误等。第二部分 实验工具及实验器件1.Proteus 7.5 以及 Keil 4 软件的使用Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。 它不仅具有 其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单 片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片 机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus 是世界上著名的 EDA 工具 (仿真软件 ),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切 换到 PCB 设计,真正实现了从概念到产品的完整设计

3、。是目前世界上唯一将电路仿真 软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持 8051、HC11 、 PIC10/12/16/18/24/30/DsPIC33、 AVR、 ARM、 8086 和 MSP430 等, 2010 年即将增加 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。在编译方面, 它也支持 IAR 、 Keil 和 MPLAB 等多种编译器。在 PROTEUS 绘制好原理图后,调入已编译好的目标代码文件: *.HEX ,可以在 PROTEUS的原理图中看到模拟的实物运行状态和过程。而*.HEX文件则由Keil软件编译后生成。Kei

4、l 软件是目前最流行开发 MCS-51 系列单片机的软件, 这从近年来各仿真机厂商 纷纷宣布全面支持 Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管 理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU 16MB或更多RAM 20M以上空闲的硬盘空间、WIN98 NT、WIN2000 WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么 Keil 几乎就是你的不二之选(目前在国内你只能买到该软件,而你买的仿

5、 真机也很可能只支持该软件),即使不使用 C语言而仅用汇编语言编程,其方便易用的 集成环境、强大的软件仿真调试工具也会令你事半功倍。有了 proteus 和 keil 软件我们就需要在这两个软件中建立我们所需要的工程进行 实验,具体步骤如下:第一步:在 Keil4 中建立一个新的工程,命名为“软件实验” ,如图 2-1 。陌 Create Nev/ Project彳占*学习F炊母工程试脸* kril打令p图2-1第二步:选择使用的单片机芯片,我们选择ATMEL公司生产的89C51,如图2-2。第三步:将新创建的.c文件添加到Target 1中,如图2-3。图2-2E:証Target 1固 ST

6、AR1Source園XjQgtkons for Group Source Group r.Alt*F7Q.ipen FileOpen yst FileOpen Map FileRebuild all target filesBuild targetF7Translate FileStop buildAdd Group.Add Files to Group Source Group 1.Remote Group 'Source Group 1 arid Its Flile$厶 Manage ompgnents-*.图2-3# Show Include File DepernJendes这

7、样我们就可以在 keil4的环境下对单片机的程序进行编译和运行了。2.51 单片机 AT89C5151单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了 长足的进展,成为目前应用最广泛的 8位单片机之一,其代表型号是 ATMEL公司的AT89 系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。当前常

8、用的51系列单片机主要产品有:*1 ntel 的:80C31、80C51、87C51,80C32、80C52、87C52 等;*ATMEL的:89C51、89C52、89C2051 等;XTAL1I30-壬一亠亠亠一亠XTAL2RSTPSENALE EAu W E 7 1 1 1 1 1.1 .11 PPPPPPPPPO.O/ADO PO 1/AD1 PO.2/AD2 PO.3/AD3 PO.4JAD4 PO.5/AC6 PG 引AD6 PO.7/AD7P2.WA8P2.1/A9 P2.2/A10 R2 3/A11 P2 AIM2 P2.5/A1I3 P2.6/A14 P2.7/

9、A15P3.0/RXD Pa.IlfTXD P3.2/NT0 P3.3WTP3.4JT0 P15/T1 F3E極 P3.7WadiFiHiHi遥diHi_l£JiHI3H一AT80C5189C51单片机的内部结构为:单一 +5V电源供电;CPU由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM用以存放可以读写的数据,如运算的中间结果、 最终结果以及欲显示的数据;ROM用以存放程序、一些原始数据和表格;I/O 口:四个8位并行I/O 口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一对

10、全双工UART(通用异步接收发送器)的串行 I/O 口,用于实现单片机之间或 单片机与微机之间的串行通信;片内振荡器和时钟产生电路, 石英晶体和微调电容需要外接。最高振荡频率为12MoU2MAX2S2 <TEXT>3. RS-232电平转换芯片 MAX232C1 +C1-T1INT1OUTR1OUTR1INT2INT2OUTR2OUTR2INVS+VS-C2+C2-145211w第一部分是电荷泵电路。 由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v 和-12v两个电源,提供给 RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、1

11、4脚构成两个数据通道。其中 13 脚(R1IN)、12 脚(R1OUT、11 脚(T1IN )、14 脚(T1OUT 为第一数 据通道。8 脚(R2IN)、9 脚(R2OUT、10 脚(T2IN )、7 脚(T2OUT 为第二数据通道。TTL/CMOS数据从 T1IN、T2IN输入转换成 RS-232数据从T1OUTT2OUT送到电脑 DB9 插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成 TTL/CMOS数据后从R1OUTR2OUT 输出。第三部分是供电。15脚GND 16脚VCC( +5v)o完成连接之后的电路图如图2-4所示。T1IN R1OUTT2IN R20UT09

12、22pF Mp-C2+T1 OUT RUNT20UTR2IN丄CIOMAX23Z . jjuF <TiEXr>灯图2-411和12 口分别连接 51单片机的 RxD( P3.0 )、TxD( P3.1 )。4. 三态输出的8D透明锁存器74HC373U23DOQ02A5D1CM"761D2Q289D3Q31312D4Q41415D5Q51716D6Q61819D7Q71OELE74HC373uTEXTa74HC373的输出端Q0Q7可直接与总线相连。当三态允许控制端 OE为低电平时,Q0Q7为正常逻辑状态,可用来驱动负 载或总线。当 OE为高电平时, Q0Q7呈高阻态,即

13、不驱动总线,也不为总线的负 载,但锁存器内部的逻辑操作不受影响。当锁存允许端 LE为高电平时,Q随数据D而变。当LE为低电平时,Q被锁 存在已建立的数据电平。5. 二线制 I 2C CMOS串行 EEPROM 24C08U224CO8B笛卿描述功能AOx Ah A2at件地址选择SDAstrife 18/地址SCL車行对it1WP写保护Vcc+1.8VF5OV 1Vgs地6.8255引脚以及功能。采用8255 A扩展并行I/O 口一、8255A的内部结构三口、两組概念与外设接口的引脚:最多可以接3个外设与三总线接 U的引脚:1)与 CB 接口 的脚: RD. WR. RESETS2)与AB接口

14、的脚:来0时选屮本片,然后A1A0选中的寄存器00PA01 PB00PC11控制口3)与DB接U的脚7.LED液晶显示器件 7seg-mpx8-ca7SEG-MPX8-CA八个共阳二极管显示器 12345678 是阳公共端图三LED液晶显示器件7seg-mpx8-ca数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的 数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。段码都有个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要 5*8=4

15、0跟I/O端口来驱动,要知道一个 89S51单片机可用 的I/O端口才32个,实际应用时需要增加译码驱动进行驱动,增加了硬件电路的复 杂性。(2)动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的八个显示比划“a,b,c,d,e,f,g,h”的同名端连在一起,另外为每个数码管的公共极 COM增加位选通控制电路,位选通由各自独立I/O线控制,当单片机输出字形码时,所有数码管都接受到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通 COM端电路的控制,所以我们只要将需要显示的数码管的选通恐慌只 打开,该位就显示出字形,没有选通的数码

16、管就不会亮。通过分时轮流控制各个数码管的 COM端,就使各个数码管轮流受控显示,这就是动态驱动,在轮流显示过程中,每位数码 管的点亮时间为1 2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各 位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就使一组稳定的显示数据, 不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。第三部分实验原理图及程序代码1.硬件部分电路设计电路图如图:口2<EBJL宜:A - 3 t 5 XTWXTALZBSfrstiMJPUJVNKl pn -i'b r> i pg. 丄二 FDJfAUP

17、QK FD.tfAM D.TMDFP2IS.AC #7U» fliAH FZ.-tfAfZP2A*Mf3 F2£TA1-i. FJMtf30曲 pg.mfD FUIITO PliJiTT*a.*TnP3JZT1 F3JWST PirrWTlBCTJ; «.:""1 r -|'11e - o-l=kBCDEFG DP123456763>7137 JSSZsT1口貫ALE前 wn_ DAT ns:T|lP>MD.7|F«P-Ti"iP-flFHTI9 2.软件部分设计这部分的程序如下:#in elude &l

18、t;reg51.h>#i nclude <stdio.h>#in elude <absacc.h>#in elude <stri ng.h>定义8155 口地址#defi ne uchar un sig ned char #defi ne uint un sig ned int#defi ne pa XBYTEOxOOO1/#defi ne pb XBYTE0x0002#defi ne con trol8155 XBYTE0x0000 sbit SCK=P1A0;sbit SDA=P"1;sbit E=P3A7;sbit SEND=P3A1;

19、sbit REV=P3A0;sbit K仁 P3A2;sbit K2=P3A3;sbit K3=P2A3;uchartable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ;/0123456789存码表uchar pos8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/ 位选,选中数码管data unsigned char str116="Starting"data unsigned char str216="Recieved:"data unsigned cha

20、r send16="test number"uchar temp;int i;void delay(unsigned int t)unsigned int i,j;for(i=0;i<t;i+)for(j=0;j<10;j+)Jvoid delayXus(uchar x) /微秒延时while(-x);void delayXms(uchar x) /毫秒延时uchar i;while(x-)for(i=250;i>0;i-)Jvoid start ()SDA=1;delay(3);SCK=1;delay(3);SDA=0;delay(3);SCK=0;de

21、lay(3);void stop ()SDA=0;delay(3);SCK=1;delay(3);SDA=1;delay(3);void U4_init()SCK=1;delay(3);SDA=1;delay(3);void responds()uchar i;i=0;SCK=1;SDA=1;delay(3);while(SDA=1&&i<250) i+;SCK=0;delay(3);写一个字节void write_dat (uchar dat) /uchar i,temp;temp=dat;for(i=0;i<8;i+)temp=temp<<1;SDA

22、=CY; delay(3); SCK=1;delay(50);SCK=0;void write(uchar add,uchar dat) /start(); write_dat(0xa0); responds(); write_dat(add); responds(); write_dat(dat); responds();stop();uchar read_dat () /uchar a,r,temp;SDA=1; delay(3); for(a=0;a<8;a+) 写一个字节 dat 到地址 add读一个字节/接收前记得释放数据线,即拉高循环八次以此接收一字节数据sda。SCK=1;

23、delay(3); r=r<<1;temp=SDA; r=r|temp; SCK=0; delay(3);/sck 置高,使接收数据稳定。/接收数据处理,存入i2c_r 变量中。/sck 置低,准备接受下个数据位。return r;uchar read (uchar add) /uchar dat;start(); write_dat(0xa0);从地址 add 中读取一个字节responds();write_dat(add);responds();start();write_dat(0xa1);responds();dat=read_dat();delayXus(2);stop(

24、);return dat; void writedata()uchar i;uchar str8=0xf9,0xa4,0xb0,0xc0,0xf9,0xa4,0xb0,0xc0;for(i=0;i<8;i+)write(i,stri); str0=0xa4;str1=0xb0;str2=0x99;str3=0xf9;str4=0xa4;str5=0xb0 ;str6=0x99;str7=0xf9;for(i=8;i<16;i+)write(i,stri-8);str0=0x4f;str1=0x5b;str2=0x4f;str3=0x66;str4=0x66;str5=0x4f ;s

25、tr6=0x5b;str7=0x06;for(i=16;i<24;i+)write(i,stri-16); str0=0x99;str1=0x92;str2=0x82;str3=0xb0;str4=0x99;str5=0x92 ;str6=0x82;str7=0xb0;for(i=24;i<32;i+)write(i,stri-24);str0=0x92;str1=0x82;str2=0xf8;str3=0x99;str4=0x92;str5=0x82 ;str6=0xf8;str7=0x99;for(i=32;i<40;i+)write(i,stri-32); str0=0

26、x82;str1=0xf8;str2=0x80;str3=0x92;str4=0x82;str5=0xf8 ;str6=0x80;str7=0x92;for(i=40;i<48;i+)write(i,stri-40); str0=0xf8;str1=0x80;str2=0x90;str3=0x82;str4=0xf8;str5=0x80 ;str6=0x90;str7=0x82;for(i=48;i<56;i+)write(i,stri-48);str0=0x80;str1=0x90;str2=0xc0;str3=0xf8;str4=0x80;str5=0x90 ;str6=0xc

27、0;str7=0xf8;for(i=56;i<64;i+)write(i,stri-56);str0=0x90;str1=0xc0;str2=0x88;str3=0x80;str4=0x90;str5=0xc0 ;str6=0x88;str7=0x80;for(i=64;i<72;i+)write(i,stri-64); str0=0xc0;str1=0x88;str2=0x83;str3=0x90;str4=0xc0;str5=0x88 ;str6=0x83;str7=0x90;for(i=72;i<80;i+)write(i,stri-72);void send_char

28、(uchar temp1)SBUF=temp1;while(!TI);TI=0;void MAX232_init()TMOD=0x20;TH1=252;TL1=252;TR1=1;PCON=0x80;void main()int i,j,set;char b,t;uchar word16,recv8;U4_init();writedata(); delay(50);set=0;while(1)control8155=0x03;for(i=0;i<8;i+)pa=posi; pb=0x88;/pb=sendi;delay(5);while(1)while(K2)while(!K1)if(!

29、K2)break;while(K1)if(!K2)break;if(!K2)break;delay(30);set+;if(set>10)set=0;MAX232_init();while(!K2);control8155=0x03;delay(30);switch(set)case 1:for(i=0;i<8;i+)sendi=read(i);for(i=0;i<8;i+) send_char(sendi); delay(50);if(RI=1) RI=0;temp=SBUF;recvi=temp;delay(100);/showwhile(K3)for(i=0;i<

30、8;i+)pa=posi; pb=sendi; delay(5);delay(5);delay(5); while(!K3);pa=0x00; pb=0xff;break; break;case 2: for(i=8;i<16;i+) sendi-8=read(i); for(i=0;i<8;i+)send_char(sendi); delay(50);if(RI=1) RI=0; temp=SBUF; recvi=temp; delay(100);break;case 3:for(i=16;i<24;i+)sendi-16=read(i);for(i=0;i<8;i+

31、) send_char(sendi); delay(50);if(RI=1) RI=0;temp=SBUF;recvi=temp;delay(100);break;case 4:for(i=24;i<32;i+)sendi-24=read(i);for(i=0;i<8;i+) send_char(sendi); delay(50);if(RI=1) RI=0;temp=SBUF;recvi=temp;delay(100);break;case 5:for(i=32;i<40;i+)sendi-32=read(i);for(i=0;i<8;i+) send_char(se

32、ndi); delay(50);if(RI=1) RI=0;temp=SBUF;recvi=temp;delay(100);break;case 6:for(i=40;i<48;i+)sendi-40=read(i);for(i=0;i<8;i+) send_char(sendi); delay(50);if(RI=1) RI=0;temp=SBUF;recvi=temp;delay(100);break;case 7:for(i=48;i<56;i+)sendi-48=read(i);for(i=0;i<8;i+) send_char(sendi); delay(50

33、);if(RI=1) RI=0;temp=SBUF;recvi=temp;delay(100); break;case 8:for(i=56;i<64;i+)sendi-56=read(i);for(i=0;i<8;i+) send_char(sendi); delay(50);if(RI=1) RI=0;temp=SBUF;recvi=temp;delay(100);break;case 9:for(i=64;i<72;i+)sendi-64=read(i);for(i=0;i<16;i+) send_char(sendi); delay(50);if(RI=1) R

34、I=0;temp=SBUF;recvi=temp;delay(100);break;case 10:for(i=72;i<80;i+)sendi-72=read(i);sen d_char(se ndi); delay(50);if(RI=1) RI=0; temp=SBUF; recvi=temp; delay(100); break; delay(2000);第四部分 实验测试结果程序启动后,先执行写入数据,我们可以看到存入24C08中的10组数据。K2按键是用于发出传送数据的指令,随后自动接收并显示在屏幕上,系统初始时,我设置 了一个特殊的状态,通过选择键K1来控制输出的字符串,这个选择键可以按下多次,执行: 跳过/循环的功能,K3键是擦除屏幕,其中,在选择字符串时,特地在屏幕中显示序号。具体过程由以下图片详解。初始化时,屏幕会显示这样的样子。当选择按键按下三次后,屏幕显示第三个字符串的序号3这是第三个字符串。第五部分实验小结和体会1知识点用到才学,不用的暂时丢一边。厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合

温馨提示

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

最新文档

评论

0/150

提交评论