技能抽考试题..docVIP

  • 41
  • 0
  • 约9.6千字
  • 约 19页
  • 2019-01-14 发布于湖北
  • 举报
试题3.21 按键控制彩灯软件开发 一、任务 在下列开发板硬件(原理图见pdf文档)基础上,编写完整程序实现如下模拟彩灯,开发板从左至右4个按键分别为S1-S4,从上至下8个灯为L1-L8,按下S1键8只LED小灯以1HZ频率闪烁,按下S2键8只灯奇偶交替点亮,间隔0.5S,按下S3键,L1-L4与L5-L8灯交替点亮,间隔0.5s,按下S4键熄灭所有灯。 试题3.22 计数器软件开发 一、任务 在下列开发板硬件(原理图见pdf文档)基础上,编写完整程序实现如下模拟计数器功能,开发板4个按键从左至右分别为S1-S4,开发板上电复位后显示0,按下S3显示数据加1,按下S4数据显示减1,当计数小于0时显示0,大于9时,显示9。 #includereg51.h sbit speak=P1^6; unsigned char seg_dm [10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char bit_line[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char data_display[5]; int dat_count=0; void delay(unsigned char time) { unsigned char i,j; for(i=0;itime;i++) { for(j=0;j120;j++) {} } } void data_change(void) { data_display[0]=dat_count%10; } void INT0_init(void) { IT0=1; EA=1; EX0=1; } void INT1_init(void) { IT1=1; EA=1; EX1=1; } void display(unsigned char dat,unsigned char bit_code) { P2=0xff; P0=seg_dm[dat]; P2=bit_code; delay(5); } main() { unsigned char i; INT0_init(); INT1_init(); while(1) { data_change(); for(i=0;i1;i++) display(data_display[i],bit_line[i]); } } void Init0() interrupt 0 using 0 { EX0=0; if(dat_count9) { dat_count++; speak=1; } else { dat_count=9; speak=0; } EX0=1; } void Init1()interrupt 2 using 1 { EX1=0; if(dat_count0) { dat_count--; speak=1; } else { dat_count=0; speak=0; } EX1=1; } 试题3.23 按键控制组合灯软件开发 一、任务 在下列开发板硬件(原理图见pdf文档)基础上,编写完整程序实现如下功能,4个按键分别控制2个灯,4个按键从左至右分别称为S1-S4,单片机引脚1、2所接灯分别为LED1、LED2,按下S1控制LED1亮灭变化(当前灭则点亮,当前亮则变灭),S2控制LED2亮灭变化,S3开所有灯,S4关闭所有灯。 #includereg51.h sbit LED1=P1^0; sbit LED2=P1^1; sbit S1=P3^0; sbit S2=P3^1; sbit S3=P3^2; sbit S4=P3^3; unsigned char key; void key1(); void key2(); void key3(); void key4(); void delay(unsigned char x) { int i,j; for(i=0;ix;i++) for(j=0;j120;j++); } void main() { while(1) { if(P3!=0xff) { delay(10); if(P3!=0xff) { key=~P3; while(P3!=0xff); } } switch(key) { case 0x01:key1();key=0xff;break; case 0x02:key2();key=0xff;break;

文档评论(0)

1亿VIP精品文档

相关文档