资源描述:
《单片机实验指导书(c语言)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二单片机控制LED灯点亮一、实验目的1.进一步熟悉编程和程序调试2.学习P1口的使用方法3.学习延时子程序的编写和使用二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。三、实验步骤及参考例子实验步骤说明:本实验需要用到单片机最小应用系统和十六位逻辑电平显示模块。用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管点亮。1.使用单片机最小应用系统。用扁平数据线连接单片机P1口与LED灯相连。2.用串行数据通信线连接计算机与仿真器,把
2、仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,输入源程序(实验(一)),进行编译,直到编译无误。生成hex文件。5.打开实验板总电源,将hex文件下载到实验板内,观察发光二极管显示情况。参考例子:1)点亮板子上的第一个灯D02)点亮板子上的D0、D2、D4、D6灯,与D1、D3、D5、D7灯交替闪烁3)流水灯:从D0---D7依次点亮注:在做完实验时记得养成一个好习惯:把相应单元的短路帽和电源开关还原到原来的位置!以下将不再重述。四、参考程序1)#includevoidmai
3、n(){P1=0xfd;}2)#include#defineuintunsignedint#defineucharunsignedcharvoiddelay();voidmain(){while(1){P1=0xaa;delay();P1=0x55;delay();}}voiddelay(){uintx,y;for(x=100;x>0;x--)for(y=600;y>0;y--);}3)#include#include#defineuintunsignedint#defineucharunsignedcharuch
4、artemp;voiddelay(uint);voidmain(){temp=0xfe;while(1){for(num=0;num<8;num++){P1=temp;delay(100);temp=_crol_(temp,1);P1=0xff;delay(100);}}}voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}五、电路图六、实验内容请在keil环境下编写一下程序:1)点亮最后一个LED2)点亮1、2、5、6这四个LED3)让第三个LED闪烁4)设计出流水灯程序,从D7—D0实验四单片机控制
5、数码管实验一、实验目的1.掌握数码管是如何显示出字符2.掌握数码管动态显示原理二、实验原理1.数码管两种接法2.共阴极数码管编码§0x3f,0x06,0x5b,0x4f,0x66,0x6d,§012345§0x7d,0x07,0x7f,0x6f,0x77,0x7c,§6789AB§0x39,0x5e,0x79,0x71,0x00§CDEF无显示3.动态显示原理动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好
6、像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。三、参考例子1)让第一个数码管显示一个8字让第一个数码管显示8字,那么别的数码管的位选就要关闭,即只打开第一个数码管的位选。控制位选的P2口要输出的数据位0xfe(二进制为11111110)。位选确定后,在确定段选,要显示的是8,那么只有dp段为0,其余段为1,所以P0口要输出0x7f(二进制01111111)2)在四个数码管上显示1,2,3,4位选:接P2口左边四个数码管DS3DS2DS1DS0对应的P2口:0x7f0xbf0xdf0xef右边四个数码管DS3DS2
7、DS1DS0对应的P2口:0xf70xfb0xfd0xfe段选:接P0口3)在八个数码管上显示0、1,2……7.4)在8个数码管上显示0---9这十个数字,且从右到左动态变化。具体的现象见单片机的学习板。四、参考程序1)#includevoidmain(void){while(1){P2=0xfe;P0=0x7f;}}2)#include#defineuintunsignedint#defineucharunsignedcharvoiddelay();voidmain(void){while