微机原理(单片机)课程设计报告
srem=95; break;
case 0x08:key5=0;display();break; //按key5则退出计时设置功能
case 0x04: //按key6则确定计时设置 mcnt=0; scnt=19;
for(i=1;i<=4;i++) mcnt=mcnt*10+inset[4-i]; key5=0; display(); }
}else{ //如果没按下key5,则为调速功能
switch((~keynow)&keypast){ //key1~key4分别对应停止、低速、中速、高速,在LED屏幕上分别以0、1、2、3显示 case 0x80:speed_regulation(0);break; case 0x40:speed_regulation(1);break; case 0x20:speed_regulation(2);break; case 0x10:speed_regulation(3);break; case 0x08: key5=1; srem=100; sdig=0;
for(i=0;i<=3;i++) inset[i]=0; } }
keypast=keynow; }else{
keylast=keynow; }
if(scnt!=0){ scnt--; }else{
scnt=19;
if(mcnt!=0){ mcnt--;
if(mcnt==0) speed_regulation(0); else if(!key5) display(); } }
if(key5){ //按下key5进入计时设置功能时,被选中的位会闪烁20次,若20次内没有其他操作,则退出计时设置功能 srem--;
13
微机原理(单片机)课程设计报告
if(srem==0){ key5=0; display(); }else{
if(srem%5==4) display(); } } }
void uart () interrupt 4 //串口发送接收函数 {
static unsigned char rxbuf[3]={0x00}; static unsigned char rbi=0,tbi=0; unsigned int temp; if(RI){ //下位机从上位机接收数据 rxbuf[rbi]=SBUF; rbi++; RI=0;
switch(rxbuf[0]){ //检测收到的是调速还是计时信息 case 0xff: //调速信息 if(rbi<2) break;
if(rxbuf[1]<=3) speed_regulation(rxbuf[1]); rbi=0; break;
case 0xfe: //计时信息 if(rbi<3) break;
temp=rxbuf[1]*256+rxbuf[2]; if(temp<=9999){ mcnt=temp; scnt=19; display(); key5=0; }
rbi=0; break;
default:rbi=0; }
}else{ // 下位机给上位机发送数据 TI=0;
tbsize--;
if(tbsize==0) tbi=0; else{
14
微机原理(单片机)课程设计报告
tbi++;
SBUF=txbuf[tbi]; } }
}
B.上位机程序图
15
附录
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能电扇(4)在线全文阅读。
相关推荐: