




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 MCS-51单片机内部资源应用实验3.1 MCS-51并行口实验一、实验目的1. 学习KEIL软件的程序调试方法。2. 学会KEIL C程序设计及调试,重点学会预处理命令、数据类型的定义。二、实验内容1.单片机P2口的P20和P21各接一个开关K1、K2,P34、P35、P36和P37各接一只发光二极管。由K1和K2的不同状态来确定发光二极管的点亮。K2K1亮的二极管00L101L210L311L42.设计一个二进制加1计数器,按一次键,加1,并用4个LED显示计数结果,加至16时清零重新计数。三、实验步骤1.设计实验电路,画出电路原理图2.按照 KEIL软件的使用步骤,建立工程。3.
2、编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4. 用STC-ISP下载软件下载HEX文件到单片机系统。5.运行、调试程序,观察实验结果。四、实验参考电路及参考程序1.实验1#include<reg51.h>sbit k1 = P20;sbit k2= P21;void main()while(1)if(k1 = 0&k2 = 0) P3 = 0xef; if(k1 = 1&k2 = 0)P3 = 0xdf;if(k1 = 0&k2 = 1)P3 = 0xbf;if(k1 = 1&k2 = 1)P3 = 0x7f;2.实
3、验2#include<reg52.h>sbitkey = P32;unsigned char a ;unsigned char count = 0;void delay(unsigned int xms)unsigned int i,j;for(i=xms;i>0;i-)for(j=110;j>0;j-);void main()while(1)if( key=0 )delay(10);if( key=0)count+;while(!key);if( count=16)count = 0;a = count;a = a<<4; a = a;P3 = a; 五、
4、思考题1.设计一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。2.用1个按键控制LED的显示,要求显示3种以上的不同模式。3.2 MCS-51中断系统实验一、实验目的1.掌握单片机的中断系统,学会单片机中断系统的初始化。2.学会单片机外部中断的应用。二、实验内容1.采用外部中断的方式实现按键控制1个LED的亮灭。2.采用外部中断的方式实现4个LED的轮流亮灭。三、实验步骤1.设计实验电路,画出电路原理图2.按照 KEIL软件的使用步骤,建立工程。3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4.用STC-ISP下
5、载软件下载HEX文件到单片机系统。5.运行、调试程序,观察实验结果。四、实验参考电路和参考程序1. 实验1#include <reg52.h>sbit P34=P34;void main() IT0=1;/外部中断0连沿触发方式 EX0=1;/使能外部中断0 EA=1;/开部中断 P34=0;/指示灯初始为亮 while(1) ;void int0() interrupt 0/外部中断0程序入口 P34=!P34;2. 实验2#include <reg52.h>sbit P32=P32;void main() IT0=1;/外部中断0连沿触发方式 EX0=1;/使能外部
6、中断0 EA=1;/开部中断 while(1);void int0() interrupt 0/外部中断0程序入口static unsigned char Bit=0;if(Bit>=4)Bit =0;switch(Bit)case 0:P3 = 0xef; break;case 1:P3 = 0xdf; break;case 2:P3 = 0xbf; break; case 3:P3 = 0x7f; break; Bit+;五、思考题1. 采用外部中断的方式实现一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。2. 采用外部中断的方式实现用
7、1个按键控制LED的显示,要求显示3种以上的不同模式。3.3 MCS-51定时器/计数器实验一、实验目的1.掌握单片机的中断系统、定时器的工作原理。2.学会单片机中断系统、定时器的应用。二、实验内容1.采用单片机定时器实现1个LED的亮灭,周期为1s。2. 采用单片机定时器实现实现4个LED的轮流亮灭,每个LED点亮时间为1s。三、实验步骤1.设计实验电路,画出电路原理图2.按照 KEIL软件的使用步骤,建立工程。3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4.用STC-ISP下载软件下载HEX文件到单片机系统。5.运行、调试程序,观察实验结果。四、实验参考
8、电路和参考程序1. 实验1#include<reg51.h>#define THC0 0xee#define TLC0 0x00sbit led0=P34;void main() TMOD=0x01; TH0=THC0; TL0=TLC0; TR0=1; ET0=1; EA=1; while(1); void timer0_ISR(void) interrupt 1static unsigned char count=0;TL0=TLC0;TH0=THC0;count+;if(count>=200)count=0;led0=!led0;2. 实验2#include<re
9、g51.h>#define THC0 0xee#define TLC0 0x00void main()TMOD=0x01;TL0=TLC0;TH0=THC0;TR0=1;ET0=1;EA=1;while(1);void timer0_ISR(void) interrupt 1static unsigned char count=0,Bit=0;TL0=TLC0;TH0=THC0;count+;if(count>=200)count=0;if(Bit>=4)Bit=0;P2=P2|0x78;switch(Bit)case 0:P3 = 0xef; break;case 1:P3
10、 = 0xdf; break;case 2:P3 = 0xbf; break; case 3:P3 = 0x7f; break;Bit+;五、思考题1.设计1个秒计数器,每秒计1次数,在LED上显示出来,计至16清零后重新计数。2.在上题基础上用按键控制秒计数器的启停,按一次键开始计数,按2次停止计数,按3次又开始计数。3.4 基于RS232串行口通信实验1、 实验目的1.通过串口实现单片机与PC机的数据通信。2.了解下位机与上位机通讯过程。二、实验内容使用串口实现单片机与PC机的数据通信。运用串口中断,在PC机的“串口调试助手”上向单片机发送共阴极数码管的段码,在数码管上显示出对应的数值或字
11、母,并将段码返回到PC机的“串口调试助手”显示出来。三、实验步骤1.设计实验电路,画出电路原理图2.按照 KEIL软件的使用步骤,建立工程。3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4.用STC-ISP下载软件下载HEX文件到单片机系统。5.运行、调试程序。6.运行“串口调试助手”观察实验结果。四、串行口的概述串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据
12、被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。单片机串行接口是一个可编程的全双工串行通信接口。它可用作异步通信方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存
13、器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。串行口内部结构:串行口控制寄存器SCON:scon控制寄存器,它是一个可位寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:SCONSM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H各控制位功能介绍如下:1 .SM0、SM1:串行口工作方式控制位工作方式选择:SM0SM1工作方式00方式001方式110方式211方式32. SM2:多机通信控制位多机通信工作于方式2和方式3,故SM2位主要用于方式2和
14、方式3。在接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入sbuf,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都得将数据送入sbuf,并发出中断申请。即此时RI是否置位由SM2和RB8共同决定。工作于方式0时,SM2必须为0。3 .REN:允许接收位REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。4 .TB8:发送接收数据位8在方式2和方式3中,TB8是要发送的即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据
15、,TB8=0为数据,TB8=1时为地址。5 .RB8:接收数据位8在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。6 .TI:发送中断标志位可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件置0。7. RI:接收中断标志位可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。特殊功能寄存器PCON:PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,在51单片机中单元地址是87H,PCON特殊功能寄存器结构:PC
16、OND7D6D5D4D3D2D1D0位符号SMODSMOD0LVDFPOFGF1GF0PDIDLSMOD:该位与串口通信有关。SMOD=0; 串口方式1,2,3时,波特率正常。SMOD=1; 串口方式1,2,3时,波特率加倍。五、实验参考电路和参考程序1.参考电路2. 参考程序#include<reg52.h>unsigned char flag,a;sbit P24=P24;sbit P25=P25;sbit P26=P26;sbit P27=P27;void main()TMOD=0x20;/设置定时器1为工作方式2TH1=0xfd;TH1=0xfd;TR1=1;REN=1;S
17、M0=0;SM1=1;EA=1;ES=1;while(1)if(flag=1)ES=0;flag=0;SBUF=a;while(!TI);TI=0;ES=1;void ser() interrupt 4RI=0;P2=0xf0;P0=SBUF;a=SBUF;P24=0;P25=0;P26=0;P27=0;flag=1;六、思考题4.1 独立式按键和数码管显示实验一、实验目的1.掌握单片机的按键、数码管显示器的工作原理。2.学会单片机独立式按键、数码管显示器的应用。二、实验内容1.在一个数码管上显示字符“1”。 2.在4个数码管上显示字符“1”、“2”、“3”、“4”。3.设计一个2位10进制计
18、数器,每秒加1,在LED上显示。三、实验步骤1.设计实验电路,画出电路原理图2.按照 KEIL软件的使用步骤,建立工程。3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4.用STC-ISP下载软件下载HEX文件到单片机系统。5.运行、调试程序,观察实验结果。四、实验参考电路和参考程序1.参考电路2.参考程序#include "reg52.h"#define THCO 0xee#define TLCO 0x0unsigned char code Duan=0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F
19、,0x6F;/共阴极数码管,0-9段码表unsigned char Data_Buffer4=1,2,3,4;/四个数码管显示数值,数组变量定义sbit P24=P24;/四个数码管的位码口定义sbit P25=P25;sbit P26=P26;sbit P27=P27;void main()TMOD=0x11;/定时器0初始化TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EA=1;while(1) ;void timer0() interrupt 1static unsigned char Bit=0;/静态变量,退出程序后,值保留TH0=THCO;TL0=TLCO;Bit+;
20、if(Bit>=4)Bit=0;P2=0xf0;/先关位码P0=DuanData_BufferBit;/开段码switch(Bit)/送位码case 0: P24=0;break;case 1: P25=0;break;case 2: P26=0;break;case 3: P27=0;break;五、思考题用按键进行显示模式选择键,实现上述实验中3个显示画面的切换。4.2 矩阵键盘实验一、实验目的1.掌握单片机的矩阵键盘的工作原理和使用方法。2.认识单片机独立按键与矩阵键盘的区别。二、实验内容1.独立按键 独立按键与单片机连接时,每一个按键都需要一个独立的I/O口,若某单片机系统需要较
21、多按键,如果使用独立按键便会占用较多的I/O口资源。单片机系统中I/O口资源往往比较宝贵,当用到多个按键时,为了节省I/O口,我们引入矩阵键盘。 2.矩阵键盘 我们以4x4矩阵键盘为例讲解其工作原理和检测方法。将16个按键排成4行4列,第一行将每个按键的一段连接在一起构成行线,第一列将每个按键的另外一段连接在一起构成列线,这样一共有4行4列共8根线,我们将这8根线连接到单片机的8个I/O上,通过程序扫描键盘就可以检测到16个键。通过这种方法我们也可以实现5行5列25个键、6行6列36个键等。 3.按键的特点与去抖 机械式按键在按下或释放时,由于机械弹性性作用的影响,通常伴随有一定时间的机械抖动
22、,然后其触点才稳定下来。在抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键机械抖动所导致的检测错误,必须采取去抖动措施,可从硬件、软件两方面予以考虑。一般来说,在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。4、 实验参考电路和参考程序1. 参考电路2. 参考程序#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit P24=P24;/四个数码管的位码口定义sbit P25=P25;sbit P26=
23、P26;sbit P27=P27;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint xms)uint i,j;for(i=xms;i>0;i-)for(j=110;j>0;j-);void display(uchar num)P0=tablenum;P24=1;P25=1;P26=1;P27=1;void matrixkeyscan()uchar temp,key;P3=0xfe;temp=P3;temp=t
24、emp&0xf0;if(temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xee:key=0;break;case 0xde:key=1;break;case 0xbe:key=2;break;case 0x7e:key=3;break;while(temp!=0xf0)/等待并确认按键释放temp=P3;temp=temp&0xf0;display(key);/显示按键所表示的数字/第一排按键检测P3=0xfd;temp=P3;temp=temp&am
25、p;0xf0;if(temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xed:key=4;break;case 0xdd:key=5;break;case 0xbd:key=6;break;case 0x7d:key=7;break;while(temp!=0xf0)/等待并确认按键释放temp=P3;temp=temp&0xf0;display(key);/显示按键所表示的数字/第二排按键检测P3=0xfb;temp=P3;temp=temp&0xf0
26、;if(temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xeb:key=8;break;case 0xdb:key=9;break;case 0xbb:key=10;break;case 0x7b:key=11;break;while(temp!=0xf0)/等待并确认按键释放temp=P3;temp=temp&0xf0;display(key);/显示按键所表示的数字/第三排按键检测P3=0xf7;temp=P3;temp=temp&0xf0;if(
27、temp!=0xf0)delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xe7:key=12;break;case 0xd7:key=13;break;case 0xb7:key=14;break;case 0x77:key=15;break;while(temp!=0xf0)/等待并确认按键释放temp=P3;temp=temp&0xf0;display(key);/显示按键所表示的数字/第四排按键检测void main()P0=0;P24=0;P25=0;P26=0;P27=0;
28、while(1)matrixkeyscan();五、思考题4.3 LCD液晶显示实验一、实验目的1.学习LCD液晶显示的编程方法,了解LCD液晶显示模块的工作原理。2.掌握LCD液晶显示模块显示数字与英语的C语言编程方法。二、实验内容1.编写程序,实现字符的静态和动态显示。液晶的初始化、字符显示程序可参考STC官网上的程序文件。2.编写程序,利用功能键实现字符的纵向滚动和横向滚动等效果显示。三、实验步骤1.设计实验电路,画出电路原理图2.按照 KEIL软件的使用步骤,建立工程。3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4.用STC-ISP下载软件下载HEX
29、文件到单片机系统。5.运行、调试程序,观察实验结果。四、LCD12864概述并行接口:管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC+3V/+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/
30、L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 控制器接口信号说明:1、 1、
31、RS,R/W的配合选择决定控制界面的4种模式: RSR/W功能说明LLMPU写指令到指令暂存器(IR)-LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据 2、E信号E状态执行动作结果高>低I/O缓冲>DR配合/W进行写数据或指令高DR>I/O缓冲配合R进行读数据或指令低/低>高无动作 忙标志:BF BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据. 利用ST
32、ATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态. 字型产生ROM(CGROM) 字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。 DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。 显示数据RAM(DDRAM)模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字
33、型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。 字型产生RAM(CGRAM) 字型产生RAM提供图象定义(造字)功能, 可以提供四组16×16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义
34、到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。 地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。 光标/闪烁控制电路 此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。五、实验参考电路和参考程序1.参考电路:2.参考程序:#include <reg52.h>#in
35、clude <intrins.h>#define uchar unsigned char#define uint unsigned intuchar table1="zhangsan"uchar table2="2013123456"uchar table3="重庆科技大学"uchar table4="电气与信息工程"sbit RS=P35;sbit RW=P36;sbit E=P37;sbit PSB=P15;void write_com(uchar com);void write_dat(uchar
36、 dat);void init(void);void display(void);void delay(uint ms)uint i,j;for(i=ms;i>0;i-)for(j=110;j>0;j-); void main()init();display();while(1);void write_com(uchar com)RW=0;RS=0;delay(5);P0=com;E=1;delay(5);E=0;delay(5);void write_dat(uchar dat)RW=0;RS=1;delay(5);P0=dat;E=1;delay(5);E=0;delay(5)
37、;void init(void)delay(10);write_com(0x30);delay(10);write_com(0x30);delay(10);write_com(0x0f);delay(10);write_com(0x01);delay(10);write_com(0x06);delay(10);void display(void) uchar i; write_com(0x80); for(i=0;i<8;i+) write_dat(table1i);delay(10); write_com(0x90); for(i=0;i<10;i+) write_dat(tab
38、le2i);delay(10); write_com(0x88); for(i=0;i<12;i+) write_dat(table3i);delay(10); write_com(0x98); for(i=0;i<14;i+) write_dat(table4i);delay(10); 六、思考题4.4 开关量输入/输出实验4.5 并行接口扩展实验一、实验目的1.了解并行I/O接口的扩展方法;2.了解并掌握可编程接口芯片8255A的工作原理、编程方式和使用方法。二、实验内容1.编写程序,利用可编程接口芯片8255A实现流水灯的控制。三、实验步骤1.设计实验电路,画出电路原理图2.
39、按照 KEIL软件的使用步骤,建立工程。3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4.用STC-ISP下载软件下载HEX文件到单片机系统。5.运行、调试程序,观察实验结果。四、8255A芯片概述8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B
40、、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。各引脚功能如下:RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写
41、入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。方式0基本输入输出方式;方式1选通输入/出方式;方式2双向选通输入/输出方式;PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 工作于三种方式中的任何一种;PB0PB7:端口B输入输出线,一个8
42、位的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时,控制寄存器被选择.五、实验参考电路和参
43、考程序1. 参考电路:2. 参考程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit A0=P20;sbit A1=P21;uchar pdata in_reg;void delay(uchar ms)uint i,j;for(i=ms;i>0;i-)for(j=220;j>0;j-);void main()uchar temp;uchar i;A0=1; /设置控制寄存器A1=1;in_reg=0x80; /控制字 工作方式操作 80表示PA为输出口A0=0;A1=0;
44、 /设置PA寄存器while(1)temp=0x01;for(i=8;i>0;i-)in_reg=temp;temp=temp<<1;delay(1000);temp=0x80;for(i=8;i>0;i-)in_reg=temp;temp=temp>>1;delay(1000);六、思考题4.6 并行模/数转换器接口实验一、实验目的1.掌握A/D转换与单片机的接口方法;2.了解A/D芯片ADC0809转换性能及编程方法;3.通过实验了解单片机如何进行数据采集。二、实验内容1.利用ADC0809做A/D转换器,电位器提供模拟电压信号,编写程序,将模拟量转换为
45、数字量,同时用数码管显示模拟量转换结果;2.用万用表测量输入的模拟电压,与转换后的数字量进行比较。三、实验步骤1.设计实验电路,画出电路原理图2.按照 KEIL软件的使用步骤,建立工程。3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。4.用STC-ISP下载软件下载HEX文件到单片机系统。5.运行、调试程序,观察实验结果。四、ADC0809模数转换器概述ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。各引脚功能如下:IN0IN7:8路模拟量输入端。
46、2-12-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。ALE:地址锁存允许信号,输入端,高电平有效。START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC: A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。REF(+)、REF(-):基准电压。
47、Vcc:电源,单一+5V。GND:地。五、实验参考电路和参考程序3. 参考电路:4. 参考程序:#include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar aa,qian,bai,shi,ge; uint temp; sbit clock=P13; sbit start=P12; sbit eoc=P11; sbit oe=P10; sbit ale=P12; sbit adda=P14;sbit P24=P24; sbit P25=P25;sbit P26=P26;sbit P27=P
48、27;uchar code table=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 ; void delay(uint z); void main() TMOD=0x01; /设置定时器0为工作方式1 TH1=(65535-50000)/256; TL1=(65535-50000)%256; EA=1; /开总中断 ET0=1; /开t1中断 TR0=1; start=0; /复位 oe=0; /输出 adda=0; eoc=0; ale=0; /关闭地址选择 while(1) start=0; delay(10); start=1; / 复位 ale=1; / 打开地址选择 adda=0; delay(10); start=0; / 开始转换 ale=0; / 关地址 while(eoc=0); / 等待eoc变为1 oe=1; / 打开输出 temp=P2; oe=0; / 关输出 temp=temp*50; temp=temp/256; qian=temp/1000; bai=temp%1000/100; shi=temp%100/10; ge=temp%10; P24=1; P0=tableqian;P24=0; delay(50); P25
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全员资格证考试题库及答案详解
- 司法考试题库及答案详解
- 2025年安全生产安全管理评价测试题及答案
- 2025年安全管理技能考核复习题库
- 水环境监测期末考试题库及答案
- 2025年智能电网技术创新应用场景分析报告:20250-2030年投资战略规划
- 2025年农机驾驶员考试模拟题库
- 省卫校中医考试题及答案
- 水泥行业节能减排与区域市场竞争环境改善趋势研究报告
- 2025年城市污水处理厂扩建项目社会稳定风险评估与风险评估效果评估报告
- 《导游业务》课程标准
- 山东省青岛市城阳区2024-2025学年下学期期中考试七年级数学试题(含部分答案)
- 呼吸道吸入剂应用科普
- 2025年高考真题-化学(河南卷) 含答案
- 2025至2030中国手持式云台稳定器行业项目调研及市场前景预测评估报告
- 2025至2030年中国紫外线LED行业发展现状及发展趋势预测报告
- 2025年+贵州省中考英语核心高频690词+++
- JG/T 155-2014电动平开、推拉围墙大门
- T/YNIA 003.1-2021面膜护肤用非织造布第1部分:水刺法
- T/CASTEM 1013-2023高校人才代表性科技成果评价指南
- GB/T 18867-2025电子气体六氟化硫
评论
0/150
提交评论