《单片机的原理及的应用》实验报告材料_第1页
《单片机的原理及的应用》实验报告材料_第2页
《单片机的原理及的应用》实验报告材料_第3页
《单片机的原理及的应用》实验报告材料_第4页
《单片机的原理及的应用》实验报告材料_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理与应用实验报告 1 系别计算机学院专业软件工程 授课教师.实验一:流水灯实验1实验目的1学习编译和仿真环境使用2学习P3口的使用方法3学习延时子程序的编写2实验内容1通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的接口;LED灯的点亮与否,通过延时程序控制亮灯时间.3实验运行结果图4源代码/流水灯实验#include /包含单片机存放器的头文件sfrx=0 xb0; /P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机/的所有内部8位特殊功能存放器,对地址x的操作也就是对P1口的操作/*函数功能:延时一段时间*/void delayunsigned ch

2、ar i,j;fori=0;iforj=0;j; /利用循环等待假如干机器周期,从而延时一段时间/*函数功能:主函数*/void main.whilex=0 xfe; /第一个灯亮delay; /调用延时函数x=0 xfd; /第二个灯亮delay; /调用延时函数x=0 xfb; /第三个灯亮delay; /调用延时函数x=0 xf7; /第四个灯亮delay; /调用延时函数x=0 xef; /第五个灯亮delay; /调用延时函数x=0 xdf; /第六个灯亮delay; /调用延时函数x=0 xbf; /第七个灯亮delay; /调用延时函数x=0 x7f; /第八个灯亮delay;

3、/调用延时函数.实验二:中断实验1实验目的1熟悉51单片机中断初始化编程方法.2掌握51单片机外部中断源的设计使用.3中断处理应用程序的设计与调试技巧.2实验内容通过对引脚的电平控制,实现外部中断处理,从而控制输出口P1的输出效果变化.3实验运行结果图4源代码/用外中断0的中断方式进展数据采集和处理#include /包含51单片机存放器定义的头文件sbit S=P32;/将S位定义为P3.2,/*函数功能:主函数*/void mainEA=1; /开放总中断EX0=1; /允许使用外中断IT0=1; /选择负跳变来触发外中断P1=0 xff;while; /无限循环,防止程序跑飞/*函数功能

4、:外中断T0的中断服务程序*/void int0 interrupt 0 using 0 /外中断0的中断编号为0P1=P1; /每产生一次中断请求,P1取反一次./用外中断0的中断方式进展数据采集和处理#include /包含51单片机存放器定义的头文件#define uchar unsigned charvoid Delayuchar j;for0;i-forj=0;j;/sbit S=P32;/将S位定义为P3.2,./*函数功能:主函数*/void mainuchar display9=0 xff,0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0

5、x7f;unsigned int a;whileEA=1; /开放总中断EX0=1; /允许使用外中断EX1=1;IT0=1; /选择负跳变来触发外中断IT1=1;IP=0;fora=0;aDelay;P1=displaya;/*函数功能:外中断T0的中断服务程序*/void int0_isr interrupt 0 using 1 /外中断0的中断编号为1uchar n;forn=0;np1=0 x0f;Delay;P1=0 xf0;Delay;void int1_isr interrupt 2 using 2uchar n;forn=0;np1=0 xff;Delay;P1=0;Delay

6、;.实验三:定时器/计数器实验1实验目的1熟悉51单片机中断初始化编程方法2熟悉51单片机定时计数器的初始化编程方法3掌握定时计数器的应用2实验内容通过使用定时器T0的中断来控制P2.0引脚的的LED的灯闪烁,要求闪烁时间2S,既亮1 S,灭1 S.3实验运行结果图4源代码#include / 包含51单片机存放器定义的头文件sbit D1=P14; /将D1位定义为P1.4引脚unsigned char Countor; /设置全局变量,储存定时器T0中断次数/*函数功能:主函数*/void mainEA=1;ET0=1;/开总中断/定时器T0中断允许/使用定时器T0的模式2TMOD=0 x

7、01;TH0=/256; /定时器T0的高8位赋初值TL0=%256; /定时器T0的高8位赋初值TR0=1;/启动定时器T0Countor=0;/从0开始累计中断次数while/无限循环等待中断;/*函数功能:定时器T0的中断服务程序*/void Time0 interrupt 1 using 0 数/其后的1为定时器T0表示使用第0组工作存放器Countor+; /中断次数自加1if /假如累计满20次,即计时满1sD1=D1;/按位取反操作,将P2.0引脚输出电平取反Countor=0; /将Countor清0,重新从0开始计数TH0=/256; /定时器T0的高8位重新赋初值.TL0=

8、%256; /定时器T0的高8位重新赋初值.实验四:串行口实验1实验目的1掌握单片机的串行口的工作原理2掌握单片机串行口收发数据的方法2实验内容本实验要求单片机U1通过其串行口TXD向单片机U2发送数据.单片机U1的P1口接8个开关,U2的P1口接8个发光二极管.U1设置为只能发送不能接收,U1读入P1口的8个开关状态后,通过串行口发送到U2,U2将接收到的数据送入P1口,由P1口上连接的8个发光二极管显示8个开关的状态.3实验运行结果图4源代码/*发送单片机的发送程序*/#include/包含存放器的头文件/*向PC发送一个字节数据*/void SendSBUF=date;while;TI=

9、0;/*延时约150ms*/void delayunsigned char m,n;form=0;mforn=0;n;/*函数功能:主函数*/void mainunsigned char temp;.TMOD=0 x20; /定时器T1工作于方式2SCON=0 x40; /串口工作方式1PCON=0 x00; /波特率9600TH1=0 xfd; /根据规定给定时器T1赋初值TL1=0 xfd; /根据规定给定时器T1赋初值TR1=1;/启动定时器T1P1=0 xff; /读取P1端口数据whiletemp=P1;Send;/发送数据idelay; /50ms发送一次检测数据/*接收单片机的接

10、收程序*/#include/包含单片机存放器的头文件/*接收一个字节数据*/unsigned char Receiveunsigned char date;while ; /只要接收中断标志位RI没有被置1/等待,直至接收完毕RI=1RI=0;date=SBUF; /将接收缓冲器中的数据存于datreturn date;/为了接收下一帧数据,需将RI清0/*主函数*/void main.TMOD=0 x20; /定时器T1工作于方式2SCON=0 x50; /SCON=0101 0000B,串口工作方式1,REN=1PCON=0 x00; /PCON=0000 0000B,波特率9600TH1

11、=0 xfd; /根据规定给定时器T1赋初值TL1=0 xfd; /根据规定给定时器T1赋初值TR1=1;REN=1;while/启动定时器T1/允许接收P1=Receive; /将接收到的数据送P1口显示.实验五:输入接口实验1实验目的1掌握共阴极、共阳极LED的使用方法2掌握矩阵键盘输入扫描和识别程序编写2实验内容设计一个4X4的矩阵键盘,键盘的015,要求编写出一个键盘输入扫描程序,要求单片机能根据键盘排列顺序,能将按下去键盘号正确识别出来,并采用两个数码管分别键盘的个位和十位.3实验运行结果图4源代码#include /包含51单片机存放器定义的头文件sbit P14=P14;sbit

12、 P15=P15;sbit P16=P16;sbit P17=P17;unsignedcharcodeTab =0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;09的段码/数字unsigned char keyval;/*函数功能:数码管动态扫描延时*/void led_delayunsigned char j;forj=0;j;/*函数功能:按键值的数码管显示子程序*/void displayP2=0 xbf;P0=Tabk/10;led_delay;P2=0 x7f;P0=Tabk%10;led_delay;/*函数功

13、能:软件延时子程序*/.void delay20msunsigned char i,j;fori=0;iforj=0;j;/*函数功能:主函数*/void mainEA=1;ET0=1;TMOD=0 x01;TH0=/256;TL0=%256;TR0=1;keyval=0 x00;whiledisplay;/*函数功能:定时器0的中断服务子程序,进展键盘扫描,判断键位*/void time0_interserve interrupt 1 using 1TR0=0;P1=0 xf0;if!=0 xf0delay20ms;if!=0 xf0P1=0 xfe;ifkeyval=1;ifkeyval=

14、2;ifkeyval=3;ifkeyval=4;.P1=0 xfd;ifkeyval=5;keyval=6;keyval=7;keyval=8;ifififP1=0 xfb;ifkeyval=9;ifififP1=0 xf7;keyval=10;keyval=11;keyval=12;ifkeyval=13;keyval=14;keyval=15;ifififkeyval=16;TR0=1;TH0=/256;TL0=%256;.实验六:LCD循环显示实验1实验目的1掌握单片机驱动显示屏的方法2掌握LCD1602的使用方法2实验内容采用1602型LCD循环显示字符串Wele to Heifei

15、Normal University.其中LCD位数据口;显示开、有光标开且光标闪烁;光标右移,字符不移.3实验运行结果图4源代码#include/包含单片机存放器的头文件#include /包含_nop_函数定义的头文件sbit RS=P20;sbit RW=P21;sbit E=P22;sbit BF=P07;/存放器选择位,将RS位定义为P2.0引脚/读写选择位,将RW位定义为P2.1引脚/使能信号位,将E位定义为P2.2引脚/忙碌标志位,将BF位定义为P0.7引脚unsigned char code string =Wele to China ;/*函数功能:延时1ms*i=10=101

16、0,可以认为是1毫秒*/void delay1msunsigned char i,j;fori=0;iforj=0;j;/*函数功能:延时假如干毫秒入口参数:n*/void delayunsigned char i;fori=0;idelay1ms;/*函数功能:判断液晶模块的忙碌状态返回值:result.result=1,忙碌;result=0,不忙*/unsigned char BusyTest.bit result;RS=0;RW=1;/根据规定,RS为低电平,RW为高电平时,可以读状态/E=1,才允许读写E=1;_nop_; /空操作_nop_;_nop_;_nop_; /空操作四个机

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

18、将数据送入P0口,即写入指令或地址/空操作四个机器周期,给硬件反响时间/E置高电平_nop_;_nop_;_nop_;_nop_;E=0;/空操作四个机器周期,给硬件反响时间/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:指定字符显示的实际地址.入口参数:x*/void WriteAddressWriteInstruction; /显示位置确实定方法规定为80H+地址码x/*函数功能:将数据写入液晶模块入口参数:y*/void WriteDatawhileBusyTest=1;RS=1;RW=0;E=0;/RS为高电平,RW为低电平时,可以写入数据/E置低电平根据表8-6,写指

19、令时,E为高脉冲,/ 就是让E从0到1发生正跳变,所以应先置0/将数据送入P0口,即将数据写入液晶模块P0=y;_nop_;_nop_;_nop_;_nop_;E=1;/空操作四个机器周期,给硬件反响时间/E置高电平_nop_;_nop_;_nop_;_nop_;E=0;/空操作四个机器周期,给硬件反响时间/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:对LCD的显示模式进展初始化设置*/void LcdInitiatedelay;响时间/延时15ms,首次写指令时应给LCD一段较长的反WriteInstruction; /显示模式设置:162显示,57点阵,8位数据接口del

20、ay; /延时5msWriteInstruction;delay;WriteInstruction;delay;WriteInstruction; /显示模式设置:显示开,有光标,光标闪烁.delay;WriteInstruction; /显示模式设置:光标右移,字符不移delay;WriteInstruction; /清屏幕指令,将以前的显示内容去除delay;void main/主函数unsigned char i;LcdInitiate;delay;while/调用LCD初始化函数WriteInstruction;/清显示:清屏幕指令WriteAddress; / 设置显示位置为第一行的

21、第5个字i = 0;while / 显示字符WriteData;i+;delay;fori=0;idelay;.实验七:简易计算器设计实验1实验目的1学会将单片机的输入、输出和内部定时计数器等功能综合应用2掌握各局部功能综合调试能力2实验内容设计一个简易计算器,能够进展加减乘除运算.3实验运行结果图4源代码#include/包含单片机存放器的头文件#include /包含_nop_函数定义的头文件/#includesbit P0_4 = 0 x84;sbit P0_5 = 0 x85;sbit P0_6 = 0 x86;sbit P0_7 = 0 x87;void delay10msunsig

22、ned char a,b;for0;a-for0;b-;void delay1msunsigned char a,b;for0;a-for0;b-;unsigned char code tab=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;void mainunsigned char m,i,j,k,l,p,cc2,cc3,cc4,cc5,o;unsigned long c1,c2,cc;unsigned int cc1;unsigned char

23、aa0,aa1,aa2,aa3,bb0,bb1,bb2,bb3;unsigned char a0,a1,a2,a3,b0,b1,b2,b3;bit q,n;whilestatic dian=0 x80,fuhao=0;.for j=0;jk=0 xfe;P0=k|l;ifdelay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2

24、=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;.P2=dian;P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;delay1ms;P2=0;ifn=1;i=3;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j;elseifpb3=b2;b2=b1;b1=b0;b0=tab4*j;bb3=bb2;bb2=bb1;bb1=bb0;bb0=4*j;p+;.

25、ifdelay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;P2=dian;P1=0 xef;delay1ms;.P2=0;P2=fuhao;P1=0 xef

26、;delay1ms;P2=0;ifi=4;n=1;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j+1;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j+1;elseifpb3=b2;b2=b1;b1=b0;b0=tab4*j+1;bb3=bb2;bb2=bb1;bb1=bb0;bb0=4*j+1;p+;if.delay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay

27、1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;P2=dian;P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;.delay1ms;P2=0;ifi=1;n=1;elseifq=1;n=1;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j+2;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j+2;elseifpb3=b2;

28、b2=b1;b1=b0;b0=tab4*j+2;bb3=bb2;bb2=bb1;bb1=bb0;bb0=4*j+2;p+;.ifdelay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;d

29、elay1ms;P2=0;P2=dian;.P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;delay1ms;P2=0;ifi=6;n=1;elseifi=2;n=1;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j+3;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j+3;elseifpb3=b2;b2=b1;b1=b0;b0=tab4*j+3;bb3=bb2;bb2=bb1;bb1=bb0;.bb0=4*j+3;p+;if/复位a0=a1=a2=a3=b0=b1=b2=b3=0;dian=0 x80;fuhao=0;

30、m=i=j=k=l=n=p=q=0;aa0=aa1=aa2=aa3=bb0=bb1=bb2=bb3=0;c1=c2=cc=cc1=cc2=cc3=cc4=cc5=0;ifP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;.P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;P2=dian;P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;delay1ms;P2=0;elseq=0;c1=aa0+

温馨提示

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

评论

0/150

提交评论