ImageVerifierCode 换一换
格式:DOC , 页数:27 ,大小:235.36KB ,
资源ID:837328      下载积分:10 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-837328.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理实验指导书.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

单片机原理实验指导书.doc

1、说明单片机原理及应用课程是计算机专业的一门重要专业课程,也是一门理论性、实践性和实用性都很强的课程。本课程的主要教学任务是通过理论教学与实验环节,使学生掌握单片机系统的基础知识,认识单片机系统的结构,掌握单片机系统的设计思路和流程,能够设计简单的单片机系统。本实验指导是为单片机原理及应用方面的课程需要而编写的,完成本实验指导中的实验,可使学生基本掌握MCS5l单片机的结构原理、接口技术、程序设计技巧。书中详细叙述了各实验的目的、内容,列出了接线图、程序结构框图和清单。免除了主讲教师和实验辅导老师为设计、准备调试实验线路和实验程序所需的工作量,节约了宝贵的时间。一、采用联机调试实验程序时,需双击

2、桌面上“DICE-51仿真开发系统”银环图标,打开仿真调试软件,设置仿真模式。具体步骤如下:点击菜单栏的“设置(S)”项,在弹出下拉菜单中选择“仿真模式(M).”,此时此时将弹出“仿真模式”对话框,在此进行相关设置CPU:8031/8032;RAM:用户RAM;ROM:系统ROM。二、实验接线图上的粗实线表示用户在实验时要用导线连接起来。三、所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据学院的教学要求选择相应实验。由于编者水平有限,本书中必然存在着不少缺点,在此恳请大家给予批评和指正,我们将尽力纠正。在此特对关心支持编写本书的院系领导表示感谢。目录第一部分

3、 单片机仿真实验1实验一:流水灯实验1实验二:中断实验4实验三:定时器/计算器实验6实验四:串行口实验8实验五:键盘扫描识别实验12实验六:LCD循环显示设计18实验七:简易计算器2525第一部分 单片机仿真实验实验一:流水灯实验一、 实验目的:通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。二、 实验原理图实验参考电路图如下:三、 参考实验程序/流水灯实验#include /包含单片机寄存器的头文件sfr x=0xb0; /P3口在存储器中的地址是b0H, 通过sfr可定义8051内核单片机 /的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作/*函数功能

4、:延时一段时间*/void delay(void) unsigned char i,j; for(i=0;i250;i+) for(j=0;j250;j+) ; /利用循环等待若干机器周期,从而延时一段时间 /*函数功能:主函数 */void main(void) while(1) x=0xfe; /第一个灯亮 delay(); /调用延时函数 x=0xfd; /第二个灯亮 delay(); /调用延时函数 x=0xfb; /第三个灯亮 delay(); /调用延时函数 x=0xf7; /第四个灯亮 delay(); /调用延时函数x=0xef; /第五个灯亮 delay(); /调用延时函数

5、x=0xdf; /第六个灯亮 delay(); /调用延时函数x=0xbf; /第七个灯亮 delay(); /调用延时函数x=0x7f; /第八个灯亮 delay(); /调用延时函数 四、 实验思考题:修改程序使LED灯为18灯亮27灯亮36灯亮45灯亮,再将LED灯亮的顺序倒过来既:45灯亮36灯亮27灯亮18灯亮,连续运行。调试后的程序代码: 实验二:中断实验一、 实验目的:通过对P3.2、P3.3引脚的电平控制,实现外部中断处理,从而控制输出口P1的输出效果变化。二、 实验原理图实验参考电路图如下:三、 参考实验程序/用外中断0的中断方式进行数据采集和处理#include /包含51

6、单片机寄存器定义的头文件sbit S=P32; /将S位定义为P3.2,/*函数功能:主函数*/void main(void) EA=1; /开放总中断 EX0=1; /允许使用外中断 IT0=1; /选择负跳变来触发外中断P1=0xff;while(1) ; /无限循环, 防止程序跑飞 /*函数功能:外中断T0的中断服务程序*/void int0(void) interrupt 0 using 0 /外中断0的中断编号为0 P1=P1; /每产生一次中断请求,P1取反一次。 四、 实验思考题:根据指导书中提供的原理图,自行设计一个外部中断实验,要求:1. 两个外部中断全部用上;2. 实验能体

7、现不同中断优先级的中断源的相应情况;3. 不同中断处理程序能输出不同的响应效果实验三:定时器/计数器实验实验目的:通过使用定时器T0的中断来控制P2.0引脚的的LED的灯闪烁,要求闪烁时间2S,既亮1 S,灭1 S。一、 实验原理图实验参考电路图如下(注释,下图只有D1等闪烁,既亮1 S,灭1 S):二、 参考实验程序/用定时器T0的中断实现长时间定时,单片机晶体振荡器周期为12MHZ, 机器/周期为1us#include / 包含51单片机寄存器定义的头文件sbit D1=P20; /将D1位定义为P2.0引脚unsigned char Countor; /设置全局变量,储存定时器T0中断次

8、数/*函数功能:主函数*/void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式2TH0=(65536-15536)/256; /定时器T0的高8位赋初值TL0=(65536-15536)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0Countor=0; /从0开始累计中断次数while(1)/无限循环等待中断 ; /*函数功能:定时器T0的中断服务程序*/void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的1为定时

9、器T0的中断编号;0表示使用第0组工作寄存器 Countor+; /中断次数自加1if(Countor=20) /若累计满20次,即计时满1s D1=D1; /按位取反操作,将P2.0引脚输出电平取反Countor=0; /将Countor清0,重新从0开始计数 TH0=(65536-15536)/256; /定时器T0的高8位重新赋初值TL0=(65536-15536)%256; /定时器T0的高8位重新赋初值 三、 实验思考题:修改程序使用定时器T1的中断方式来控制P2.0 、P2.1引脚的LED灯分别以200mshe 800ms的周期闪烁调试后的程序代码: 实验四:串行口实验一、 实验目

10、的:本实验要求单片机U1通过其串行口TXD向计算机发送一个数据“oxab”。利用集成电路MAX232将单片机的输出信号转化成计算机能够识别的信号。针对发送的实例,再设计一个单片机接受计算机送出数据的过程二、 实验原理图单片机发送数据实验参考电路图如图(1):图(1)单片机接受数据实验参考电路图如下:图(2)三、 参考实验程序/单片机向PC发送数据#include /包含单片机寄存器的头文件unsigned char code Tab =0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F;/流水灯控制码,该数组被定义为全局变量/*函数功能:向PC发送一个字节数据*/v

11、oid Send(unsigned char dat) SBUF=dat; while(TI=0) ; TI=0;/*函数功能:延时约150ms*/ void delay(void) unsigned char m,n; for(m=0;m200;m+) for(n=0;n250;n+) ; /*函数功能:主函数*/void main(void) unsigned char i; TMOD=0x20; /TMOD=0010 0000B,定时器T1工作于方式2 SCON=0x40; /SCON=0100 0000B,串口工作方式1 PCON=0x00; /PCON=0000 0000B,波特率9

12、600 TH1=0xfd; /根据规定给定时器T1赋初值 TL1=0xfd; /根据规定给定时器T1赋初值 TR1=1; /启动定时器T1 while(1) for(i=0;i8;i+) /模拟检测数据 Send(Tabi); /发送数据i delay(); /150ms发送一次数据 四、 实验思考题:根据参考原理图图(2)设计一个单片机接受计算机送出数据的过程。调试后的程序代码: 实验五:键盘扫描识别实验一、 实验目的:设计一个4X4的矩阵键盘,键盘的号码015,要求编写出一个键盘输入扫描程序,要求单片机能根据键盘排列顺序,能将按下去键盘号正确识别出来,并采用两个数码管分别键盘号码的个位和十

13、位。二、 实验原理图实验参考电路图如下:三、 参考实验程序#include /包含51单片机寄存器定义的头文件sbit P14=P14; sbit P15=P15; sbit P16=P16; sbit P17=P17; unsigned char code Tab =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数字09的段码unsigned char keyval; /*函数功能:数码管动态扫描延时*/void led_delay(void) unsigned char j;for(j=0;j200;j+) ; /*函数功能:按键值

14、的数码管显示子程序*/ void display(unsigned char k) P2=0xbf; P0=Tabk/10; led_delay(); P2=0x7f; P0=Tabk%10; led_delay(); /*函数功能:软件延时子程序*/ void delay20ms(void) unsigned char i,j;for(i=0;i100;i+) for(j=0;j60;j+) ; /*函数功能:主函数*/ void main(void) EA=1; ET0=1; TMOD=0x01; TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=

15、1; keyval=0x00; while(1) display(keyval); /*函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位*/ void time0_interserve(void) interrupt 1 using 1 TR0=0; P1=0xf0; if(P1&0xf0)!=0xf0) delay20ms(); if(P1&0xf0)!=0xf0) P1=0xfe; if(P14=0) keyval=1; if(P15=0) keyval=2; if(P16=0) keyval=3; if(P17=0) keyval=4; P1=0xfd; if(P14=0) k

16、eyval=5; if(P15=0) keyval=6; if(P16=0) keyval=7; if(P17=0) keyval=8; P1=0xfb; if(P14=0) keyval=9; if(P15=0) keyval=10; if(P16=0) keyval=11; if(P17=0) keyval=12; P1=0xf7; if(P14=0) keyval=13; if(P15=0) keyval=14; if(P16=0) keyval=15; if(P17=0) keyval=16; TR0=1; TH0=(65536-500)/256; TL0=(65536-500)%25

17、6; 四、 实验思考题:修改实验电路图和实验程序和设计电路,改成静态显示调试后的程序代码:实验六:LCD循环显示设计一、 实验目的:采用1602型LCD循环显示字符串“Welcome to Heifei Normal University”。其中LCD显示模式为:16*2显示、5*7点阵、8位数据口;显示开、有光标开且光标闪烁;光标右移,字符不移。二、 实验原理图实验参考电路图如下:三、 参考实验程序/用LCD循环右移显示 Welcome to Heifei Normal University #include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件s

18、bit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚unsigned char code string = Welcome to Heifei Normal University ; /*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for

19、(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/ void delay(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); /*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/ unsigned char BusyTest(void) bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /

20、空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给resultE=0; return result; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期

21、,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:指定字符显示的实际地址入口参数:x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /显示位置的确定方法规定为80H+地址

22、码x /*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_()

23、; _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对LCD的显示模式进行初始化设置*/void LcdInitiate(void) delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38); /显示模式设置:162显示,57点阵,8位数据接口delay(5); /延时5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruct

24、ion(0x0f); /显示模式设置:显示开,有光标,光标闪烁delay(5);WriteInstruction(0x06); /显示模式设置:光标右移,字符不移delay(5);WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除delay(5); void main(void) /主函数 unsigned char i; LcdInitiate(); /调用LCD初始化函数 delay(10); while(1) WriteInstruction(0x01);/清显示:清屏幕指令 WriteAddress(0x00); / 设置显示位置为第一行的第5个字 i

25、= 0;while(stringi != 0)/ 显示字符WriteData(stringi);i+;delay(150); for(i=0;i4;i+) delay(250); 四、 实验思考题:试编写LCD12864显示初始化程序,设计电路,采用汉字取模,使LCD循环显示字符串hefei normal university和个人学号、姓名。要求:1. 字符分为两行,居中显示2. 字符从左向右缓慢移动调试后的程序代码: 实验七 简易计算器一、 实验目的掌握89C51单片机开发应用系统的方法和应用程序的编写和调试要求:由P1口输出字形码,P0口输出字位码。先将存放于30H单元的数值个位七段码由P1口输出,同时P0口输出使数值个位显示数码管点亮的字位码。由于采用的是共阳数码管,所以只有该位数码管对应的P0.0为1,其他位P0.1-P0.3位0,点亮延时10MS。然后P1口输出数值十位七段码,P0.1位1,数值十位数码管点亮,延时10MS。接着P1口输出数值百位七段码,P0.2为1,数值百位数码管点亮,延时10MS。最后P1口输出数值千位七段码,P0.3为1,数值千位数码管点亮,延时10MS。二、 实验原理图

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922