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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机实验指导书专科黄大君.docx

1、单片机实验指导书专科黄大君单片机原理(专科)实验指导书系别 班级 姓名 学号 计算机科学与技术系2012年8月实验一:流水灯实验一、 实验目的:通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。实验原理图实验参考电路图如下:二、 参考实验程序/流水灯实验#include /包含单片机寄存器的头文件sfr x=0xb0; /P3口在存储器中的地址是b0H, 通过sfr可定义8051内核单片机 /的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作/*函数功能:延时一段时间*/void delay(void) unsigned char i,j; for(i=0;i

2、250;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(); /调用延时函数 x=0xdf; /第六个灯亮 delay(); /调用延时函数 x=0xbf; /第七个灯亮 delay

3、(); /调用延时函数 x=0x7f; /第八个灯亮 delay(); /调用延时函数 三、 实验思考题:修改程序使LED灯为18灯亮27灯亮36灯亮45灯亮,再将LED灯亮的顺序倒过来既:45灯亮36灯亮27灯亮18灯亮,连续运行。实验二:数码显示实验(LED)一、实验目的:掌握共阳极、共阴极7段LED数码管的显示方法。二、实验原理图实验参考电路图如下:步骤三、参考实验程序/数码秒表设计#include unsigned char code tab10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void delay(void) un

4、signed char i,j; for(i=0;i250;i+) for(j=0;j250;j+) ;void main(void) unsigned char i=0; P2=0x00; while(1) P2=tabi; i=(i+1)%10; delay(); 实验三:播放声音实验一、实验目的:学习如何让单片机播放简单的音乐。二、实验原理图实验参考电路图如下:三、参考实验程序/*/ /*我这有一个程序,你参考一下 */ /* function:唱生日快乐 */ / */ /*/ #include #include #include #define uint unsigned int #

5、define uchar unsigned char #define led RD #define key_rec T1 sbit BUZZER=P37;/发声音口 uchar code T0_H16=0xFF,0xFB,0xFB,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE; uchar code T0_L16=0xF1,0x4,0x90,0xC,0x44,0xAC,0x9,0x34,0x82,0xC8,0x06,0x22,0x56,0x85,0x9A,0xC1; uchar code music32=8,0

6、,8,9,8,0xB,0xA,0,8,0,8,9,8,0xC,0xB,0,8,0,8,0xF,0xD,0xB,0xA,9,0xE,0,0xE,0xD,0xB,0xC,0xB,0x0; uchar code music_L32=2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4,2,1,1,4,4,4,4,4; uchar a,b; uint second,minute; long t0count; void delay_music(uint v) while(v!=0) v-; void delay_music1(uint j) while(j!=0

7、)j-;delay_music(200); void delay_music2(uint j) while(j!=0)j-;delay_music1(80); main() /uint i; uchar k,n,m; delay_music(100); TMOD=0x11; TH0=0xfc; TL0=0x66; t0count=0; EA=1; ET0=0; TR0=0; ET1=0; TR1=0; while(1) ET1=1; TR1=1; for(k=0;k32;k+) n=musick; m=music_Lk; a=T0_Hn; b=T0_Ln; delay_music2(m); t

8、ime0() interrupt 1 using 1 TH0=0xFC; TL0=0x66; t0count=t0count+1; if (t0count=1000) second+; if (second=60) minute+; if (minute=60) minute=0; second=0; t0count=0; time1 () interrupt 3 using 3 TH1=a; TL1=b; BUZZER=!BUZZER; 实验四:键盘扫描一、 实验目的、要求设计一个4X4的矩阵键盘,键盘的号码015,要求编写出一个键盘输入扫描程序,要求单片机能根据键盘排列顺序,能将按下去键盘

9、号正确识别出来,并采用两个数码管分别键盘号码的个位和十位。二、 实验原理三、源程序清单或实验步骤1.设计电路,并按照电路接线2.编写调试程序:#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) uns

10、igned char j; for(j=0;j200;j+) ; /*函数功能:按键值的数码管显示子程序*/ 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; TH

11、0=(65536-500)/256; TL0=(65536-500)%256; TR0=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

12、=3; if(P17=0) keyval=4; P1=0xfd; if(P14=0) keyval=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; TR

13、0=1; TH0=(65536-500)/256; TL0=(65536-500)%256; 四、实验结果经过调试:矩阵键盘上的输入按键的键号能够正常显示在LED数码管上。实验五:定时器中断实验一、 实验目的、要求目的:通过对P3.2、P3.3引脚的电平控制,实现外部中断处理,从而控制输出口P1的输出效果变化。要求:自行设计一个外部中断实验,要求:两个外部中断全部用上;实验能体现不同中断优先级的中断源的相应情况;不同中断处理程序能输出不同的响应效果二、 实验原理三、源程序清单或实验步骤1.设计电路,并按照电路接线2.编写调试程序:#include /包含51单片机寄存器定义的头文件sbit S

14、=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取反一次。 /*函数功能:延时一段时间*/void delay(void) unsigned char i,j; for(i=0;i250;i+) for(j=

15、0;j250;j+) ; /利用循环等待若干机器周期,从而延时一段时间 四、实验结果、实验过程原始记录(数据、图表、计算等)经过调试:在外部中断输入信号的控制下,P1口的灯能够按照要求闪烁修改程序和电路后,能够反映出两个外部中断之间的优先级和中断屏蔽等功能,并能按照中断处理程序的要求完成显示。1.通过改变外部中断源输入信号能够控制P0P3口。2.89C51的两个外部中断源能够按照控制字的要求实现屏蔽和优先级显示。实验六:串行口实验一、 实验目的、要求通过实验掌握89C51的工作原理,学会串行通信程序的编写要求:完成单片机U1通过其串行口TXD向计算机发送一个字节数据“,将单片机的输出信号转化成

16、计算机能够识别的信号。二、 实验原理图(1)单片机发送和接受数据实验参考电路图三、源程序清单或实验步骤1.设计电路,并按照电路接线2.编写调试程序:数据发送程序:#include /包含单片机寄存器的头文件unsigned char code Tab =0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F;/流水灯控制码,该数组被定义为全局变量/*函数功能:向PC发送一个字节数据*/void Send(unsigned char dat) SBUF=dat; while(TI=0); TI=0;void init()TMOD=0x20; /TMOD=0010 0000

17、B,定时器T1工作于方式2 SCON=0x40; /SCON=0100 0000B,串口工作方式1 PCON=0x00; /PCON=0000 0000B,波特率9600 TH1=0xfd; /根据规定给定时器T1赋初值 TL1=0xfd; /根据规定给定时器T1赋初值 TR1=1;/*函数功能:延时约150ms*/ void delay(unsigned char z) unsigned char m,n; for(m=0;mz;m+) for(n=0;n250;n+) ; /*函数功能:主函数*/void main(void) unsigned char i; init(); while(

18、1) for(i=0;i8;i+) /模拟检测数据 Send(Tabi); /发送数据i delay(200); /50ms发送一次检测数据 数据接收程序:#include /包含单片机寄存器的头文件/*函数功能:接收一个字节数据*/ unsigned char Receive(void) unsigned char dat; while(RI=0) /只要接收中断标志位RI没有被置“1” ; /等待,直至接收完毕(RI=1) RI=0; /为了接收下一帧数据,需将RI清0 dat=SBUF; /将接收缓冲器中的数据存于dat return dat;/*函数功能:主函数*/void main(

19、void) TMOD=0x20; /定时器T1工作于方式2 SCON=0x50; /SCON=0101 0000B,串口工作方式1,允许接收(REN=1) PCON=0x00; /PCON=0000 0000B,波特率9600 TH1=0xfd; /根据规定给定时器T1赋初值 TL1=0xfd; /根据规定给定时器T1赋初值 TR1=1; /启动定时器T1 REN=1; /允许接收 while(1) P1=Receive(); /将接收到的数据送P1口显示 四、实验结果、实验过程原始记录(数据、图表、计算等)经过调试:通过发送的单片机送出的字符能按要求正常在接收的机器上显示。实验七:数码秒表实

20、验一、 实验目的、要求通过实验掌握89C51的工作原理,学会LED动态扫描程序的编写要求:用单片机控制一个秒表的显示二、 实验原理三、源程序清单或实验步骤1.设计电路,并按照电路接线2.编写调试程序:#include / 包含51单片机寄存器定义的头文件 /将D1位定义为P2.0引脚unsigned char second,Countor;sbit gewei=P20;sbit shiwei=P21; /设置全局变量,储存定时器T0中断次数/*函数功能:主函数*/unsigned char Tab =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x

21、6f,0x00;/共阴极段码void delay(void) unsigned char i; for(i=0;i200;i+) ;void main(void) second=0; EA=1; /开总中断 ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式1 TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 TR0=1; /启动定时器T0 Countor=0; /从0开始累计中断次数 while(1)/无限循环等待中断 shiwei=1; gewei=0; P0=Tabsecond/10; delay(); gewei=1 ; shiwei=0; P0=Tabsecond%10; delay(); /*函数功能:定时器T0的中断服务程序*/void Time0(void) interrupt 1 using 0 /interrupt声明函数为中断服务函数 /其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1