资源描述:
《at89s51单片机试验及实践教程之模拟计算器数字输入及显示》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、AT89S51单片机试验及实践教程之模拟计算器数字输入及显示
2、第11.实验任务 1.开机时,显示“0” 2.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。2.电路原理图500)this.style.ouseg(this)">3.系统板上硬件连线(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPKIN端口上;(2.把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4R1-R4端口上;(3.把“单片机系统”区域中
3、的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;(4.把“单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;4.相关程序设计内容(1.行列式键盘输入及按键功能设定;(2.动态数码显示;(3.数码显示方式处理;5.汇编源程序(略)6.C语言源程序#includeunsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsignedcha
4、rcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedchardispbuf[8]={0,16,16,16,16,16,16,16};unsignedchardispbitcount;unsignedchartemp;unsignedchari,j;unsignedcharkey;unsignedcharkeypos;bitalarmflag;voidchange(unsignedchar*p,unsignedcharcount){ain(void){TMOD=0x01;TH0=(65536-4000
5、)/256;TL0=(65536-4000)%256;TR0=1;ET0=1;EA=1;p=P3;temp=temp0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp0x0f;if(temp!=0x0f){temp=P3;temp=temp0x0f;sp){case0x0e:key=7;break;case0x0d:key=8;break;case0x0b:key=9;break;case0x07:key=10;break;}if((key>=0)(key<10))
6、{keypos++;if(keypos<8){change(dispbuf,keypos);dispbuf[0]=key;}else{keypos=8;alarmflag=1;}}temp=P3;P1_0=~P1_0;temp=temp0x0f;p!=0x0f){temp=P3;temp=temp0x0f;}alarmflag=0;}}P3=0xff;P3_5=0;temp=P3;temp=temp0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp0x0f;if(temp
7、!=0x0f){temp=P3;temp=temp0x0f;sp){case0x0e:key=4;break;case0x0d:key=5;break;case0x0b:key=6;break;case0x07:key=11;break;}if((key>=0)(key<10)){keypos++;if(keypos<8){change(dispbuf,keypos);dispbuf[0]=key;}else{keypos=8;alarmflag=1;}}temp=P3;P1_0=~P1_0;temp=temp0x0f;p!=0x0f){temp=P3;temp=t
8、emp0x0f;}alarmflag=0;}}P3=0xff;P3_6=0;temp=P3;temp=temp0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp0x0f;if(temp!=0x0f){temp=P3;temp=temp0x0f;sp){case0x0e:key=1;break;case0x0d:key=2;break;case0x0b