




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机实验4报告单片机实验4报告全文共11页,当前为第1页。单片机实验4单片机实验4报告全文共11页,当前为第1页。学号19单片机原理与接口技术实验报告实验四动态显示与矩阵式键盘实验单片机实验单片机实验4报告全文共11页,当前为第2页。一、实验目的进一步理解数码管与单片机的接口原理与动态显示原理,理解单片机矩阵式键盘按键识别的原理;掌握单片机动态显示应用和编程方法;掌握单片机矩阵式键盘按键识别的方法。二、实验内容实验内容为3项,其中第1、2项必做。1、动态显示。未按键不显示,按K1键,动态显示“19491001”;按K2键,动态显示“20141210”。2、动态显示与按键识别。矩阵式键盘键值分别是0-F,未按键不显示。每按键一次,键值在最低位显示,原键值向高位移一位。3、可控动态显示与按键识别。矩阵式键盘键值分别是0-9,最下面一排键位功能键,左右两个键分别为“清0键”“C”,和”“回车键”“”,其它键无效。未按键不显示,每按键一次,键值在最低位显示,原键值向高位移一位。按8个键后,再按键无效。按清0键全显示“0”。按“单片机实验4报告全文共11页,当前为第3页。三、单片机实验4报告全文共11页,当前为第3页。图3.4动态显示与矩阵式键盘实验电路原理图动态显示共8个共阴极数码管,采用两片74LS573进行驱动,74LS573与74LS373都是8D锁存器,只是573引脚排列更易于布线。其引脚功能为:D1-D8为数据输入端;Q1-Q8为数据输出端;LE为数据输入锁存端,LE=1数据输入D锁存器,LE=0数据不能输入D锁存器,即LE下降沿锁存当前输入数据;地址输出允许端,=0输出锁存数据,=1输出高阻。电路中,U1输出段码abcdefgdb,控制显示的字形与小数点,U2输出位选码,控制第几个数码管显示。单片机P14、P15分别连接到U1、U2的LE,连接U1、U2的。四、源程序第一项:#include<reg51.h>#defineucharunsignedchardataucharf[8];datauchara,b,num,y,k,g;单片机实验4报告全文共11页,当前为第4页。datauchar单片机实验4报告全文共11页,当前为第4页。table[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //共阴极数码管显示段码(0-F)voiddelay(j)//延时函数dataucharj;{datauchari;while(j--)for(i=0;i<1;i++);} ucharcodesled_bit[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //定义点亮数码管位选码datauchard[]={1,9,4,9,1,0,0,1}; datauchare[]={2,0,1,4,1,2,1,0};sbitoe=P1^3;//2个573的三态使能端sbitdula=P1^4; //段码573控制信号sbitwela=P1^5; //位码573控制信号 //延时函数voidmain(void){ TMOD=0x01; //设置定时器T0为方式1定时TH0=(65536-500)/256; //给T0装入初值TL0=(65536-500)%256; //给T0装入初值ET0=1; //允许T0中断 EA=1; EX0=1;单片机实验4报告全文共11页,当前为第5页。单片机实验4报告全文共11页,当前为第5页。 g=0; P0=0X00; while(1); //CPU开中断}voidEX0_int(void)interrupt0{ TR0=1;y=P2;y=~y;if(y==1){for(g=0;g<8;g++)f[g]=d[g];}if(y==2){for(g=0;g<8;g++)f[g]=e[g];}}voidT0_int(void)interrupt1 //T0中断函数{TH0=(65536-500)/256;TL0=(65536-500)%256; oe=1; //关闭2个573输出,防止送数据时相互影响 k=f[g]; //每次显示disp[j]的数据P0=table[k]; //相应显示数字段码dula=1;dula=0; //锁存段码 P0=~sled_bit[g]; //选择相应数码管位选wela=1;单片机实验4报告全文共11页,当前为第6页。wela=0; //单片机实验4报告全文共11页,当前为第6页。oe=0; g++;if(g>=8)g=0; //打开2个573三态门,输出段码和位码}第二项#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitoe=P1^3; //数码管段选、位选锁存器输出控制信号sbitdula=P1^4; //数码管段选锁存器控制信号sbitwela=P1^5; //数码管位选锁存器控制信号ucharj=0;ucharcodesled_bit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义点亮数码管位选码datauchardisp[8]={16,16,16,16,16,16,16,16};ucharcodetable[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //共阴极数码管显示段码(0-F)voiddelay(n) //延时函数dataucharn;{dataucharm;while(n--)for(m=0;m<1;m++);单片机实验4报告全文共11页,当前为第7页。单片机实验4报告全文共11页,当前为第7页。voidmain(void){ uchara,b,c,i,num; TMOD=0x01; //设置定时器T0为方式1定时TH0=(65536-500)/256; //给T0装入初值TL0=(65536-500)%256; //给T0装入初值ET0=1; //允许T0中断EA=1; //CPU开中断TR0=1; //启动T0 oe=0; P2=0xff; while(1) { P2=0xf0; delay(5); P2=0xf0; a=P2; P2=0x0f; delay(5); P2=0x0f; b=P2; a=a|b; if(a!=0xff)单片机实验4报告全文共11页,当前为第8页。 单片机实验4报告全文共11页,当前为第8页。 switch(a) { case0xee:num=0; break; case0xde:num=1; break; case0xbe:num=2; break; case0x7e:num=3; break; case0xed:num=4; break; case0xdd:num=5; break; case0xbd:num=6; break; case0x7d:num=7; break; case0xeb:num=8; break; case0xdb:num=9; break; case0xbb:num=10; break; case0x7b:num=11; break; case0xe7:num=12; break; case0xd7:num=13; break; case0xb7:num=14; break; case0x77:num=15; } for(i=0;i<7;i++)disp[i]=disp[i+1]; disp[7]=num; }单片机实验4报告全文共11页,当前为第9页。 delay(255);单片机实验4报告全文共11页,当前为第9页。 } }voidT0_int(void)interrupt1{datauchark; TH0=(65536-1000)/256;TL0=(65536-1000)%256; oe=1; //关闭2个573输出,防止在送数据时相互影响 k=disp[j]; //每次显示ar[j]的数据 P0=table[k]; //相应显示数字段码 dula=1; dula=0; //锁存段码 P0=sled_bit[j]; //选择相应数码管位选 wela=1; wela=0; //锁存位码 oe=0; //打开2个573三态门,输出段码和位码 j++; //为下一个显示做准备 if(j>=8)j=0; }单片机实验4报告全文共11页,当前为第10页。五、实验单片机实验4报告全文共11页,当前为第10页。第一项:给单片机上电,未按键不显示,按K1键,动态显示“19491001”;按K2键,动态显示“20141210”。第二项:给单片机上电,未按键不显示,按矩阵式键盘键值从小到大依次按键,依次显示为:0,01,012,0123,01234,012345,0123456,01234567,12345678,23456789,3456789A,456789Ab,56789AbC,6789AbCd,789AbCdE,89AbCdEF。六、实验思考题电路中为什么要用74LS573,不用74LS573,可用什么器件代替?如果U1、U2的都直接接地,应如何编程?答:电路中需要2片74LS573来驱动8个共阴极数码管,所以不能用74LS573,可用74LS373代替。如果U1、U2的都直接接地,即一直为0,74LS573总是输出锁存数据,所以应控制数据输入锁存端LE,使之在需要锁存时置1。为什么要等键弹起,才进行键值分析?答:因为在按键前后都有一个过渡期,在这个阶段电平忽高忽低,最好等这个时期过去再判断是否按键,同样,最好等键弹起,才进行键值分析,这样才能分析准确。如果用简单按键与矩阵式键盘构成组合按键,组合按键如何编程得到键值?答:采用线反转法,将行和列得到的键值相或来得到键
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论