1、单片机实验报告册剖析电子科技大学成都学院实验报告册 课程名称: 单片机实验 姓 名: 陈 强 学 号: 1240720119 院 系: 微电子技术系 专 业: 电子科学与技术 教 师: 林国伟 2015 年 6 月 2 日实验二 LED流水灯一、实验目的:1.掌握并口的使用2.掌握移位指令的使用二、实验原理和内容:实验原理:1.共阳LED (1)位移指令 左移 (2)循环移位指令 _crol_(A,B), _cror_(A,B)函数,在头文件intrins.h中实验内容:实现LED灯左右流水显示效果三、实验步骤:1.创建工程;2.编写程序; 3.调试程序 ; 4.下载验证 四、实验数据和结果:
2、1、功能:此程序实现的是LED左右流水灯的显示效果。将P0口的某位依次变为低电平时,由于编程中运用的intrins.h中的_crol_(A,B), _cror_(A,B)函数,所以就能够实现循环移动。2、程序:#include #include#define uchar unsigned char #define uint unsigned int void Delay(uint del) uint i,j; for(i=0; idel; i+) for(j=0; j1827; j+) ;void Main()uchar i; P0=0xff; /关闭所有LED while(1) P0=0xf
3、e; for(i=0;i8;i+) Delay(100); P0=_crol_(P0,1); P0=0x7f; for(i=0;i8;i+) Delay(100); P0=_cror_(P0,1); 五、实验总结: 通过此实验的学习,我掌握了实现流水灯的原理,也掌握了对intrins.h这个C51头文件的内部函数的运用,即如何使用循环移位指令等指令。在此编程的过程中,我最开始没有运用intrins.h下的循环位移指令,所以程序中的语句比较多。但是后来对程序进行了改进,使用了循环位移指令,使得程序中的语句更加简洁明了。而且,实现同一个功能可以有很多种编程方法,我们需要在这个过程中不断地摸索,不断
4、地学习,以此找到更加简单的方法。实验四:数码管显示一、实验目的:1.掌握LED数码管显示2.掌握数组使用二、实验原理和内容:实验原理:1.LED 8段显示器2. 共阴极数码管电路图(1)LED静态显示方式静态显示就是当显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。静态显示器的亮度较高,这种显示方式编程容易,管理也较简单,但占用口线资源较多。在显示位数较多的情况下,一般都采用动态显示方式。(2)LED动态显示方式在多位LED显示时,将所有位的段选线并联在一起,由一个8位口控制。而共阴(或共阳)极公共端分别由相应的线控制,实现各位的分时选通。因人眼的视觉暂留
5、时间为0.1 s(100 ms),所以显示间隔要受到此条件的约束。实验内容:用8位LED数码管显示自己学号三、 实验步骤:1.创建工程;2.编写程序; 3.调试程序 ; 4.下载验证四、实验数据和结果:1.功能:此实验中,实现的是8位LED数码管上同时显示学号后8位,即40720119.2.程序:#include#define uchar unsigned char #define uint unsigned int uchar code table =0x66,0x3f,0x07,0x5b,0x3f,0x06,0x06,0x6f;uchar code LED8=0,1,2,3,4,5,6,7
6、;void Delay(uint m) uint i,j; for(i=m; i0; i-) for(j=100; j0; j-); void Main(void)uchar i=0;while(1) P0=tablei; P2=LEDi; Delay(1); i+; if(i=8) i=0; P0=0x00;五、实验总结:在这个实验当中,从最开始的单个数码管显示,一直到最后的学号显示。其实这个实验是一个相对比较简单的实验,只需要利用单片机的I/O口输出相应的信号,选通要点亮的数码管,同时输出字段驱动的控制字,就可以显示相应的数字或字母。但是,数码管的位选是通过74HC138连接,所以在实验前
7、必须要先了解三八译码器的工作原理。当然,程序虽然比较简单,但是还是很需要耐心与细心。实验八 定时器/计数器使用一、实验目的:1.掌握定时函数使用2.学习配置工作模式寄存器 TMOD、控制器寄存器 TCON二、实验原理和内容:实验原理:1.MCS-51单片机 定时/计数器的工作原理 2. 模式控制寄存器TMOD 3.控制寄存器TCON 实验内容:根据课堂要求内容进行实验三、实验步骤:1.创建工程;2.编写程序; 3.调试程序 ; 4.下载验证四、实验数据和结果:1.功能:用8位数码管的后两位进行显示结果的显示,显示的结果是数由0定时到59。2.程序:#include#define uint un
8、signed int#define uchar unsigned charunsigned char i=200; unsigned int num=0;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void Delay(uint m) uint i,j; for(i=m; i0; i-) for(j=100; j0; j-); void main() TMOD=0x10; TH1=0xee; TL1=0x00; EA=1; ET1=1; TR1=1; while(1) P0=0x00; P2=7; P0=
9、tablenum%10; Delay(1) ;P0=0x00; P2=6; P0=tablenum/10; Delay(1) ;if(num=60) num=0; void T1_int(void) interrupt 3 TH1=0xee; TL1=0x00; i-; if(i=0) num=num+1; i=200; 五、实验总结:通过这次实验的学习,对于上学期所学的单片机所学的部分知识得到了回顾,更加深层次的了解了定时器和计数器的工作原理,初学单片机时不会计算初值,对于一些指令也不够熟悉,但是通过此次实验的学习,使得这些问题都得到了解决。实验九: 点阵LED显示一、实验目的:1.掌握8*
10、8-LED点阵的结构原理2.掌握8*8-LED点阵的使用二、实验原理和内容:实验原理:1. 8X8点阵LED等效电路8 X 8 点阵LED工作原理说明 :8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置0电平,某一行置1电平,则相应的二极管就亮;一根竖柱:对应的列置0,而行则采用扫描的方法来实现。一根横柱:对应的行置1,而列则采用扫描的方法来实现。LP00 LP07图1-8,P2.0P2.7图A-H。 实验内容:显示心形和自己姓名拼音首字母三、实验步骤:1.创建工程;2.编写程序; 3.调试程序 ; 4.下载验证四、实验数据和结果:1、功能:
11、用8*8点阵显示自己姓名的首字母2、程序:#include#define uint unsigned int#define uchar unsigned charuchar code tableP2=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar code tableP0=0x00,0x00,0x3E,0x41,0x41,0x41,0x22,0x00; /点阵结果显示Cvoid Delay(uint m) uint i,j; for(i=m; i0; i-) for(j=100; j0; j-); void main() uint i=0; whil
12、e(1) for(i=0;i8;i+) P0=0x00; P2=tableP2i; P0=tableP0i; Delay(1); 五、实验总结: 在这个实验中,我学会了8*8点阵LED的工作原理,也了解了点阵LED的扫描方式。但是在编程的过程当中,由于不太清楚它的扫描顺序,所以在定义数组的时候出现了错误而导致没有得到想要的结果,尽管自己试着修改了很多次,但是还是没有调试出来L的显示。但是后来在老师的帮助下,我才能完成这个实验的任务。 实验十:矩阵按键一、实验目的:1.掌握矩阵键盘原理2.矩阵式键盘的按键识别方法二、实验原理和内容:实验原理:在键盘中按键数量较多时,为了减少I/O口的占用,通常将
13、按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。矩阵式键盘的按键识别方法:扫描法,线反法扫描法:又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。(1)判断键盘中有无键按下: 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 (2) 判断闭合键所在的位置: 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平
14、后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。线反法:先找按下的按键在那一行(或列),然后在找在那一列(或行),从而可以找到按下按键的具体位置。2.实验内容:编写按键扫描程序,识别按键。三、实验步骤:1.创建工程;2.编写程序; 3.调试程序 ; 4.下载验证四、实验数据和结果:1、功能:在矩阵键盘中,当按下相应的按键时,数码管会显示对应的数字。2、程序:#include#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P20;sbit LSB=P21;sbit LSC=P22;unsigned c
15、har code DIG_CODE =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char KeyValue;/用来存放读取到的键值void Delay10ms(); /延时10msvoid KeyDown(); /检测按键函数 void main(void) LSA=0; /给一个数码管提供位选 LSB=0; LSC=0; while(1) KeyDown(); GPIO_DIG=DIG_
16、CODEKeyValue; void KeyDown(void) char a=0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f)/读取按键是否按下 Delay10ms();/延时10ms进行消抖 if(GPIO_KEY!=0x0f)/再次检测键盘是否按下 /测试列 GPIO_KEY=0Xf0; switch(GPIO_KEY) case(0Xe0): KeyValue=0;break; case(0Xd0): KeyValue=1;break; case(0Xb0): KeyValue=2;break; case(0X70): KeyValue=3;break; /测试
17、行 GPIO_KEY=0X0f; switch(GPIO_KEY) case(0X0e): KeyValue=KeyValue;break; case(0X0d): KeyValue=KeyValue+4;break; case(0X0b): KeyValue=KeyValue+8;break; case(0X07): KeyValue=KeyValue+12;break; while(a0;c-) for(b=38;b0;b-) for(a=130;a0;a-);五、实验总结:通过这个实验的学习,我了解了矩阵键盘的按键识别方法。这是本门科目的最后一个实验,也是相对其他实验而言是相对较难的一个实验。所以在编程的过程遇到了不少的困难,但是在老师和同学们的帮助下还是成功的完成了这个实验,得到了想得到的结果。在这门科目的学习当中,我明白了自己在编程方面比较薄弱,对于单片机的工作原理也不是足够的了解,对之前所学习的一些知识的遗忘程度比较严重。所以,在以后的时间里,我会查漏补缺,会利用课余时间复习并掌握更多知识,使自己的专业知识更加扎实,以达到自我提升的目的。并且此门科目让我,让我明白了仔细的重要性,在程序运行的过程当中是不允许任何问题出现的。所以,以后不管是工作还是学习,我一定会加倍仔细,让工作和学习更加完美。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1