文档详情

第四章23模拟计算器数字输入及显示.doc

发布:2016-05-21约6.62千字共7页下载文档
文本预览下载声明
模拟计算器数字输入及显示 实验任务 开机时,显示“0” 第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。 电路原理图 图4.23.1 系统板上硬件连线 #include AT89X51.H unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char dispbuf[8]={0,16,16,16,16,16,16,16}; unsigned char dispbitcount; unsigned char temp; unsigned char i,j; unsigned char key; unsigned char keypos; bit alarmflag; void change(unsigned char *p,unsigned char count) { while(count0) { *(p+count)=*(p+count-1); count--; } } void main(void) { TMOD=0x01; TH0=(65536-4000) / 256; TL0=(65536-4000) % 256; TR0=1; ET0=1; EA=1; while(1) { P3=0xff; P3_4=0; temp=P3; temp=temp 0x0f; if (temp!=0x0f) { for(i=50;i0;i--) for(j=200;j0;j--); temp=P3; temp=temp 0x0f; if (temp!=0x0f) { temp=P3; temp=temp 0x0f; switch(temp) { case 0x0e: key=7; break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key=10; break; } if ((key=0) (key10)) { keypos++; if(keypos8) { change(dispbuf,keypos); dispbuf[0]=key; } else { keypos=8; alarmflag=1; } } temp=P3; P1_0=~P1_0; temp=temp 0x0f; while(temp!=0x0f) {
显示全部
相似文档