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

下载本文档

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

文档简介

1、. 实验报告课程名称 单片机原理及应用 开课学期 2015年秋 班 级 姓 名 学 号 实验目录1、 keil开发环境介绍2、 单片机控制单灯亮灭3、 单片机控制流水灯4、 单片机定时器实验5、 单片机中断实验一6、 单片机中断实验二7、 单片机键盘实验一8、 单片机键盘实验二9、 单片机串口通信实验10、 桂林航天工业学院学生实验报告实验名称单片机实验原理及应用学生姓名学号专业班级实验心得:通过本阶段的实验,让我体会到了单片机的强大,增强了我学习单片机的乐趣。这些实验由简到难,从刚开始对keil软件的了解,自己建立一个工程,并写下对单灯亮灭的程序,下载到单片机上实现了功能,此时内心是非常激动

2、的,因为迈出了学习单片机的第一步。最后通过不断的实验的学习,对单片机的io口控制、中断、定时器与计数器的应用,键盘扫描、led循环闪烁、数码管的静态和动态显示以及i2c串口通行有了进一步的了解和体会。自己也深切体会到,今后要不断的学习,才能正真的掌握单片机。实验一、keil开发环境介绍一、实验目的(1)熟悉keil软件的基本操作(2)建立第一个单片机工程二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理 单片机keil集成开发环境简述kiel软件是目前比较流行的、用于开发51系列单片机的软件。该软件提供了包括c编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方

3、案,通过一个集成开发环境uvisionide,将这些部分组合在一起。通过kiel软件,可以对c语言或宏汇编语言源程序进行汇编,生成.hex文件,对程序进行调试。四、实验操作方法和步骤1、熟悉keil软件的基本菜单,了解一些常用按键的功能2、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定3、单击filenew保存(文件后缀是.c的文本)开始编程五、实验总结 熟悉了keil软件的菜单界面以及基本操作,成功建立了第一个c51单片机工程,编写了第一个单片机c程序。实验二、单片机控制单灯亮灭一、实验目的(1)熟悉keil软件的基

4、本操作(2)通过编写简单程序实现单灯的亮灭(3)了解单片机高低电平的控制方式(4)熟悉程序烧录软件的使用二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理led发光二极管具有单向导通性,通过赋高电平亮,低电平灭,而实验开发板中由于led正向接高电平,所以试验中led低电平亮,即0亮1灭,然后通过延时,0与1交替出现,从而实现led灯的闪烁。4、 实验操作方法和步骤1、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定2、单击filenew保存(文件后缀是.c的文本)开始编程3,单击编译、运行程序生成hex文件下载

5、4、打开烧录软件选择对应的单片机型号选择hex文件单击下载打开开发板烧录完成led闪烁5、 实验总结通过这次实验再次熟悉了keil软件的基本操作以及能够运用烧录软件下载编译好的软件,编写了第一个c51单片机程序,实现了单灯的亮灭,更加深刻的理解了单片机的工作方式,以及i/o口的程序控制方式。七、程序清单:#include void delay10ms(unsigned int c); /延时10mssbit led1=p00;void main() while(1)led1=0; /置p00口为低电平delay10ms(50); led1= 1; /置p00口为高电平delay10ms(50)

6、; / 调用延时程序void delay10ms(unsigned int c) /误差 10us unsigned char a, b; for (;c0;c-)for (b=38;b0;b-)for (a=130;a0;a-);实验三、单片机控制流水灯一、实验目的(1)再次熟悉单片机高低电平的控制方式(2)熟悉i/o口总线的控制方式(3)了解移位操作的的程序实现二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理c51单片机有四组i/o口,每组i/o口有八位,通过0与1的不同状态总共有256种不同的状态,例如1111 1110表示第一位对应的led亮,然后通过移位操作(或者直接包含

7、intrins.h头文件实现移位功能)让0不断以为,从而对应不同的led亮,总体实现流水灯的效果。四、实验操作方法和步骤1、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定2、单击filenew保存(文件后缀是.c的文本)开始编程3,单击编译、运行程序生成hex文件下载调试4、打开烧录软件选择对应的单片机型号选择hex文件单击下载打开开发板烧录完成led移位闪烁五、实验总结通过本次试验,我熟悉了led的闪烁控制,可以运用移位操作“”与“”但是此移位方式是移位后补0,具体操作时需要进行处理;还可以直接将intrins.h头

8、文件包含进去实现移位操作,相对而言更简单一些。6、 程序清单:#include #include void delay10ms(unsigned int c); /延时10msmain()unsigned char led;led = 0xfe; /0xfe = 1111 1110 while (1) p0 = led; delay10ms(50); led = led 0;c-)for (b=38;b0;b-)for (a=130;a0;a-); 4、 单片机定时器实验一、实验目的(1)了解单片机的多个计数器的工作方式(2)熟悉计数器初始化的计算方法(3)了解单位脉冲的实现方式二、实验器材(

9、1)c51开发板一块(2)电脑一台三、实验原理80c51单片机内有两个可编程的定时/计数器t0、t1。它们是一个16位计数器,随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向cpu发出中断请求(定时/计数器中断允许时)。如果计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。四、实验操作方法和步骤1、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定2、单击filenew保存(文件

10、后缀是.c的文本)开始编程3,单击编译、运行程序生成hex文件下载调试打开烧录软件选择对应的单片机型号选择hex文件单击下载打开开发板烧录完成led移位闪烁定时器操作步骤: 1、选择工作方式(设置m1,m0) 2、选择控制方式(设置gate) 3、选择定时器还是计数器模式(设置c/t) 4、给定时/计数器赋初值(设置thx和tlx)开启定时器中断(设置et0或et1)开启总中断(设置ea)打开计数器(设置tr1或tr0)五、实验总结通过本次试验,了解单位脉冲的实现方式,熟悉计数器初始化的计算方法,了解单片机的多个计数器的工作方式,体会到了学习单片机的乐趣。六、程序清单:#include #in

11、cludeunsigned int word=0xxfe;unsigned int t=0;void main()tmod=1;th0=0x3c;tl0=0xb0;tr0=1;et0=1;p1=word;while(1)if(t=20)t=0;word=_crol_(word,1)p1=word;void timer0() interrupt 1th0=0x3c;tl0=0xb0;t+;五、单片机中断实验一一、实验目的(1)了解单片机中断的工作方式(2)熟悉中断初始化的计算方法(3)熟悉数码管的静态显示二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理(p3.2)可由it0(tcon

12、.0)选择其为低电平有效还是下降沿有效。当cpu检测到p3.2引脚上出现有效的中断信号时,中断标志ie0(tcon.1)置1,向cpu申请中断,然后通过段选使数码管显示不同的值四、实验操作方法和步骤1、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定2、单击filenew保存(文件后缀是.c的文本)开始编程3,单击编译、运行程序生成hex文件下载调试4、打开烧录软件选择对应的单片机型号选择hex文件单击下载打开开发板烧录完成一位数码管静态显示五、实验总结通过本次试验,详细的了解了中断的处理方式以及数码管的静态显示6、 程

13、序清单:#include #include unsigned int smg;unsignedcharcodedisp_tab= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0xbf,0xc7,0x8c,0xc1, 0xff, 0xf7 ; void main(void) it0=1; ea=1; ex0=1; while(1) p0=disp_tabsmg%10; void counter(void) interrupt 0 ex0=0; smg+; ex0=1;六、单片机中断实验二一、

14、实验目的(1)了解单片机中断的工作方式(2)熟悉中断初始化的计算方法(3)熟悉数码管的动态显示二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理(p3.2)可由it0(tcon.0)选择其为低电平有效还是下降沿有效。当cpu检测到p3.2引脚上出现有效的中断信号时,中断标志ie0(tcon.1)置1,向cpu申请中断,然后通过段选与位选使数码管显示不同的值四、实验操作方法和步骤1、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定2、单击filenew保存(文件后缀是.c的文本)开始编程3,单击编译、运行程序生成

15、hex文件下载调试4、打开烧录软件选择对应的单片机型号选择hex文件单击下载打开开发板烧录完成四位数码管动态显示五、实验总结通过本次试验,对中断的控制方式又加深了理解,同时学会了数码管的动态显示方法。六、程序清单:#include #include sbit ls138a=p22; sbit ls138b=p23;sbit ls138c=p24; unsigned int lednumval = 0 ,ledout8;unsignedcharcodedisp_tab= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc

16、6,0xa1,0x86,0xbf,0xc7,0x8c,0xc1, 0xff, 0xf7 ; void delay(unsigned int i) char j; for(i; i 0; i-) for(j = 200; j 0; j-);display() unsigned char i; ledout0=disp_tablednumval%10000/1000; ledout1=disp_tablednumval%1000/100&0x7f; ledout2=disp_tablednumval%100/10; ledout3=disp_tablednumval%10; for( i=0; i

17、8; i+) p0 = ledouti; switch(i) case 0:ls138a=0; ls138b=0; ls138c=0; break; case 1:ls138a=1; ls138b=0; ls138c=0; break; case 2:ls138a=0; ls138b=1; ls138c=0; break; case 3:ls138a=1; ls138b=1; ls138c=0; break; case 4:ls138a=0; ls138b=0; ls138c=1; break;case 5:ls138a=1; ls138b=0; ls138c=1; break;case 6:

18、ls138a=0; ls138b=1; ls138c=1; break;case 7:ls138a=1; ls138b=1; ls138c=1; break;delay(150); void main(void) p0=0xff; p1=0xff; p2=0xff; it0=1; ea=1; ex0=1; while(1) display(); void counter(void) interrupt 0 ex0=0; lednumval+; ex0=1;七、单片机键盘实验一一、实验目的(1)了解并熟悉独立键盘的工作方式二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理轻触开关是一种

19、电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开,通过按键使电平发生变化进而发信息给单片机控制数码管的数值显示。四、实验操作方法和步骤1、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定2、单击filenew保存(文件后缀是.c的文本)开始编程3,单击编译、运行程序生成hex文件下载调试打开烧录软件选择对应的单片机型号选择hex文件单击下载打开开发板烧录完成通过按键控制数码管的显示五、实验总结通过本次试验,熟悉了独立键盘的工作方式,同时了解到键盘需要通过延时来去抖进而确保信息的正确传递;再次熟悉了数码

20、管消隐的重要性。7、 程序清单:#include #include #define gpio_key p1 #define gpio_led p0 void delay10ms(unsigned int c); unsigned char key_scan();void main(void)unsigned char ledvalue, keynum;ledvalue = 0x00;while (1)keynum = key_scan(); if (keynum != 0) ledvalue = keynum;gpio_led = ledvalue;unsigned char key_scan

21、()unsigned char keyvalue = 0 , i; if (gpio_key != 0xff)delay10ms(1);if (gpio_key != 0xff)keyvalue = gpio_key;i = 0;while (i0;c-)for (b=38;b0;b-)for (a=130;a0;a-); 八、单片机键盘实验二一、实验目的(1)熟悉矩阵键盘的扫描方式(2)对比行列扫描与反转扫描的不同(3)了解电平触发与边沿触发二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高

22、电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。四、实验操作方法和步骤1、建立工程:双击桌面图标keil单击project选择new uvision project选择at89c52型号单片机确定2、单击filenew保存(文件后缀是.c的文本)开始编程3,单击编译、运行程序生成hex文件下载调试打开烧录软件选择对应的单片机型号选择hex文件单击下载打开开发板烧录完成通过按不同键显示不同的键值5、 实验总结通过本次试验,详细的熟悉矩阵键盘的

23、扫描方法,了解到行列扫描与反转扫描的不同之处,以及外部中断电平触发与边沿触发的实现方式。6、 程序清单:#include#define gpio_dig p0#define gpio_key p1unsigned char code dig_code17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay10ms(unsigned int c); void keydown();void main(void)while(1)keydown();gpio_dig = d

24、ig_codekeyvalue;void keydown(void)char a = 0;gpio_key=0x0f;if(gpio_key!=0x0f)/delay10ms(1);if(gpio_key!=0x0f)gpio_key=0x0f;switch(gpio_key)case(0x07):keyvalue=0;break;case(0x0b):keyvalue=4;break;case(0x0d): keyvalue=8;break;case(0x0e):keyvalue=12;break;gpio_key=0xf0;switch(gpio_key)case(0x70):keyval

25、ue=keyvalue+3;break;case(0xb0):keyvalue=keyvalue+2;break;case(0xd0): keyvalue=keyvalue+1;break;case(0xe0):keyvalue=keyvalue;break;while(a0;c-)for (b=38;b0;b-)for (a=130;a0;a-); 九、单片机串口通信实验一、实验目的(1)了解单片机i2c通信协议(2)波特率的设定(3)数据发送与接受二、实验器材(1)c51开发板一块(2)电脑一台三、实验原理起始和终止信号 :scl线为高电平期间,sda线由高电平向低电平的变化表示起始信号;scl线为高电平期间

温馨提示

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

评论

0/150

提交评论