技能抽考试题复习进程.docx
《技能抽考试题复习进程.docx》由会员分享,可在线阅读,更多相关《技能抽考试题复习进程.docx(26页珍藏版)》请在冰豆网上搜索。
技能抽考试题复习进程
技能抽考试题
试题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。
#include
sbitspeak=P1^6;
unsignedcharseg_dm[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsignedcharbit_line[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedchardata_display[5];
intdat_count=0;
voiddelay(unsignedchartime)
{
unsignedchari,j;
for(i=0;i{for(j=0;j<120;j++){}}}voiddata_change(void){data_display[0]=dat_count%10;}voidINT0_init(void){IT0=1;EA=1;EX0=1;}voidINT1_init(void){IT1=1;EA=1;EX1=1;}voiddisplay(unsignedchardat,unsignedcharbit_code){P2=0xff;P0=seg_dm[dat];P2=bit_code;delay(5);}main(){unsignedchari;INT0_init();INT1_init();while(1){data_change();for(i=0;i<1;i++)display(data_display[i],bit_line[i]);}}voidInit0()interrupt0using0{EX0=0;if(dat_count<9){dat_count++;speak=1;}else{dat_count=9;speak=0;}EX0=1;}voidInit1()interrupt2using1{EX1=0;if(dat_count>0){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关闭所有灯。#includesbitLED1=P1^0;sbitLED2=P1^1;sbitS1=P3^0;sbitS2=P3^1;sbitS3=P3^2;sbitS4=P3^3;unsignedcharkey;voidkey1();voidkey2();voidkey3();voidkey4();voiddelay(unsignedcharx){inti,j;for(i=0;ifor(j=0;j<120;j++);}voidmain(){while(1){if(P3!=0xff){delay(10);if(P3!=0xff){key=~P3;while(P3!=0xff);}}switch(key){case0x01:key1();key=0xff;break;case0x02:key2();key=0xff;break;case0x04:key3();break;case0x08:key4();break;}}}voidkey1(){LED1=!LED1;}voidkey2(){LED2=!LED2;}voidkey3(){LED1=0;LED2=0;}voidkey4(){LED1=1;LED2=1;}试题3.24计数器软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序,实现如下功能:对外部的方波信息进行0~99循环计数,每来一个脉冲计数加1,并将计数结果显示在数码管上。试题3.25小型电子产品软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,单片机开发板上从左至右4个按键分别为S1-S4,按下S1从单片机第1个引脚上输出频率为1KHz的方波,再按下S1则停止输出方波;方波频率误差小于2%。试题3.26秒表软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序如下功能,开发板上4键从左至右为S1-S4,上电后,开始时显示“00”;利用S1按键后启动计时;S2按键后停止计时;S3按键后计时归零;最大计时为99秒。计时误差小于0.5秒,显示稳定。试题3.27倒计时秒表软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序,使秒表在上电/复位后,具有:开始时显示“99”并开始倒计时,当计时到0S时,数码管显示“00”,同时蜂鸣器报警长鸣,倒计时误差小于0.5秒。#includeunsignedcharduanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchardat_display[2];unsignedcharbit_array[2]={0xfe,0xfd};unsignedcharseconds=99,count;sbitspeak=P1^6;voiddelay(unsignedinttime){inti,j;for(i=0;ifor(j=0;j<120;j++);}voidT0_init(void){TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;TR0=1;}voidint_init(void){EA=1;ET0=1;}voiddat_change(void){dat_display[1]=seconds/10;dat_display[0]=seconds%10;}voiddisplay(){P2=0xff;P2=~0x01;P0=duanma[seconds%10];delay(2);P2=~0x02;P0=duanma[seconds/10];delay(2);}voidseconds_01(void){if(count==10){count=0;seconds--;}}voidseconds_99(void){if(seconds==0){TR0=0;}}voidmain(){T0_init();int_init();while(1){seconds_01();seconds_99();dat_change();if(seconds==0){P2=0xff;delay(4000);speak=0;delay(3000);speak=1;}display();}}voidtime_t0()interrupt1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;count++;}试题3.28游客流量计数器设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序,实现游客流量计数器功能,要求如下:用数码管理显示3数组2位数,分别表示进入人数、出去人数、滞留人数,当按下S1键进入人数加,S2键按下出去人加1,同时出入人数有变化对应的滞留人数也应更新,数值显示结果要与实际应用相结合。试题3.29单片机与PC机通信软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编程实现如下功能:利用给定的初始化串口程序,编程实现在单片机上以9600的波特率循环向串口发送字符’0’~’9’,并利用USB转232串口线和电脑串口调试助手软件,在电脑上显示接收数据。试题3.30单片机与PC机通信软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编程实现如下功能:利用给定的初始化串口程序,编程实现单片机接收电脑串口发送的数字(0~9),并开发板上用一位数码管显示当前接收到的数据,波特率为9600。试题3.31多种特效流彩灯设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,利用P1口的8个LED灯,编写程序实现3种特效的彩灯,采灯效果分别为:LED单灯流水左移、LED单灯流水右移、LED从左至右逐个点亮,3种特效循环循环切换。试题3.32按键发音程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,利用2个按键S1、S2,在开发板上编写程序实现如下功能,当按下S1、S2时蜂鸣器发出“哆”、“唻”的声音。试题3.33温度计程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读温度函数,编写程序在数码管上显示实时温度,当温度大于35度时,开启蜂鸣器报警(长响)。试题3.34时钟程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为整点时,开启蜂鸣器响3S。试题3.35简易计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现简易计算器功能,具体功能如下:利用开发板上的矩阵键盘的2个按键实现0~99的加减计数,当按下1号键时计数值加1,计数值为99时加操作无效;按下2号键时计数值减1,计数值为0时减操作无效;计数结果显示在数码管上。试题3.36简易闹钟设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为12:30:00时,LED发光二极管闪烁5S,闪烁频率2HZ。。试题3.37啤酒生产计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计一个啤酒生产计数器,具体要求如下:利用实验板平台,通过P3.4检测并计数,计数时啤酒检测信号可以通过P3.4对应的按键模拟,每计一瓶显示加1,当一箱12瓶满时,蜂鸣器响3S,当再次按键时重新循环计数。#include#defineucharunsignedchar#defineuintunsignedintuintBoxNum=0;//ÏäÊýucharnum=0;//Æ¿Êýsbitled=P1^0;//¹â±¨¾¯sbitbell=P1^6;//Éù±¨¾¯//sbitkey=P3^4;voiddelay(unsignedchart);voidSounder();voidDisplay();ucharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidmain(){EA=1;ET0=1;ET1=1;//¿ªT0¡¢T1ÖжÏPT0=1;TMOD=0x26;//00100110T1¼Æʱ·½Ê½2£»T0¼ÆÊý·½Ê½£¬·½Ê½2TH0=255;TL0=255;TH1=0x06;TL1=0x06;//¶¨Ê±250usTR1=1;TR0=1;//Æô¶¯T1¡¢T0while(1){if(num==12)Sounder();}}voidDisplay(){P2=0xdf;//´Ó×ó±ß¿ªÊ¼×î¸ßλP0=table[BoxNum/1000];//ǧλdelay(1);P2=0xff;P2=0xef;P0=table[(BoxNum%1000)/100];//°Ùλdelay(1);P2=0xff;P2=0xf7;P0=table[((BoxNum%1000)%100)/10];//ʮλdelay(1);P2=0xff;P2=0xfb;P0=table[((BoxNum%1000)%100)%10];//¸öλdelay(1);P2=0xff;P2=0xfd;P0=table[num/10];//ʮλdelay(1);P2=0xff;P2=0xfe;P0=table[num%10];//¸öλdelay(1);P2=0xff;}voiddelay(unsignedchart){unsignedchari;while(t--){for(i=0;i<125;++i);//ÑÓʱԼ1ms}}voidSounder(){uchari;for(i=0;i<30;i++){bell=~bell;led=~led;delay(20);}}voidINT_T0(void)interrupt1{if(num<12){num++;}else{BoxNum++;num=1;}}voidINT_T1(void)interrupt3//±ÜÃâÊýÂë¹ÜÉÁ˸{staticuchari;i++;if(i==40){Display();i=0;}//10msµ÷ÓÃÒ»´ÎÏÔʾ¸üгÌÐò}试题3.38投票计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个投票计数器,用2组2数码管分别实时显示A、B的投票票数,LED发光二极管D1、D2分别指示A、B的投票结果,S1~S3分别为A投票键、B投票键、票数比较键。具体功能如下:当按下S1键,A的票数加1;当按下S2键,B的票数加1;当按下S3键票数多的指示灯点亮,同时AB票数清0,当票数相等时S3键操作无效,且AB的投票数值不超过99试题3.39按键时间间隔记录仪程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个反映时间测试仪,具体功能如下:测试连续2次按键的时间,按下第1次键时,发光二极管D1点视,按下第2次按键时间D2点亮,同时用数码管显示前后两次的时间间隔,精确到0.1S。#includeunsignedcharcodeled_seg_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchardat_display[2];unsignedcharbit_array[2]={0xfe,0xfd};unsignedcharseconds=0,count;unsignedcharcs=0;voiddelay(unsignedintz){while(z--);}voidT0_init(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=0;}voidint_init(){EA=1;ET0=1;}voiddat_change(void){dat_display[1]=seconds/10;dat_display[0]=seconds%10;}voiddisplay_1bit(unsignedcharseg_code,unsignedcharbit_code){P2=0xff;P0=seg_code;P2=bit_code;delay(200);}voiddisplay(){unsignedchari;for(i=0;i<2;i++)display_1bit(led_seg_code[dat_display[i]],bit_array[i]);}voidseconds_01(void){if(count==10){count=0;seconds++;}}voidcs_1(void){if(cs==1){TR0=1;}}voidcs_2(void){if(cs==2){TR0=0;}}unsignedcharkey_scane(void){unsignedcharkey_value;P3=0xff;key_value=P3;if(key_value!=0xff){delay(10);P3=0xff;key_value=~P3;while(P3!=0xff);returnkey_value;}}voidkey1(void){cs++;}voidkey_change(unsignedcharval){if(val==0x01){key1();}}voidmain(){T0_init();int_init();while(1){key_change(key_scane());dat_change();display();cs_1();cs_2();seconds_01();display();if(seconds==0){P2=0xff;delay(4000);}P0=0x80;}}voidtime_t0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}#include#includeunsignedcharduan_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};unsignedcharwei_code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsignedcharwei[4];intcount,temp,num;voidDelay2ms();voiddisplay();inti;voidmain(){EA=1;ET0=1;TMOD=0x08;TH0=7192/32;TL0=7192%32;TR0=1;while(1){if(pclse==1){P2=0xF0;num=temp;}else{temp=0;display();}}}voidTimer0()interrupt1{TH0=7192/32;TL0=7192%32;count++;if(count>=10){temp++;count=0;}}voiddisplay(){wei[0]=num%10;wei[1]=num/10%10;wei[2]=num/100%10;wei[3]=num/1000;for(i=0;i<4;i++){P2=~wei_code[i];P0=duan_code[wei[i]];Delay2ms();}}voidDelay2ms()//@12.000MHz{unsignedchari,j;_nop_();_nop_();i=24;j=84;do{while(--j);}while(--i);}试题3.40简易减法器设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现一位数简易减法器功能,具体功能如下:使用开发板上的矩阵键盘依次输入被减数、减号、减数、等于号,并将输入数字和运算符及运算结果,分别5位数码管从左至右依次显示出来。减号用数码管G笔断表示、等于号用A、G笔段表示,程序不考虑容错处理,即输入时被减数必须大于被减数。
for(j=0;j<120;j++)
{}
}
voiddata_change(void)
data_display[0]=dat_count%10;
voidINT0_init(void)
IT0=1;
EA=1;
EX0=1;
voidINT1_init(void)
IT1=1;
EX1=1;
voiddisplay(unsignedchardat,unsignedcharbit_code)
P2=0xff;
P0=seg_dm[dat];
P2=bit_code;
delay(5);
main()
unsignedchari;
INT0_init();
INT1_init();
while
(1)
data_change();
for(i=0;i<1;i++)
display(data_display[i],bit_line[i]);
voidInit0()interrupt0using0
EX0=0;
if(dat_count<9)
dat_count++;
speak=1;
else
dat_count=9;
speak=0;
voidInit1()interrupt2using1
EX1=0;
if(dat_count>0)
dat_count--;
dat_count=0;
试题3.23按键控制组合灯软件开发
在下列开发板硬件(原理图见pdf文档)基础上,编写完整程序实现如下功能,4个按键分别控制2个灯,4个按键从左至右分别称为S1-S4,单片机引脚1、2所接灯分别为LED1、LED2,按下S1控制LED1亮灭变化(当前灭则点亮,当前亮则变灭),S2控制LED2亮灭变化,S3开所有灯,S4关闭所有灯。
sbitLED1=P1^0;
sbitLED2=P1^1;
sbitS1=P3^0;
sbitS2=P3^1;
sbitS3=P3^2;
sbitS4=P3^3;
unsignedcharkey;
voidkey1();
voidkey2();
voidkey3();
voidkey4();
voiddelay(unsignedcharx)
inti,j;
for(i=0;ifor(j=0;j<120;j++);}voidmain(){while(1){if(P3!=0xff){delay(10);if(P3!=0xff){key=~P3;while(P3!=0xff);}}switch(key){case0x01:key1();key=0xff;break;case0x02:key2();key=0xff;break;case0x04:key3();break;case0x08:key4();break;}}}voidkey1(){LED1=!LED1;}voidkey2(){LED2=!LED2;}voidkey3(){LED1=0;LED2=0;}voidkey4(){LED1=1;LED2=1;}试题3.24计数器软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序,实现如下功能:对外部的方波信息进行0~99循环计数,每来一个脉冲计数加1,并将计数结果显示在数码管上。试题3.25小型电子产品软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,单片机开发板上从左至右4个按键分别为S1-S4,按下S1从单片机第1个引脚上输出频率为1KHz的方波,再按下S1则停止输出方波;方波频率误差小于2%。试题3.26秒表软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序如下功能,开发板上4键从左至右为S1-S4,上电后,开始时显示“00”;利用S1按键后启动计时;S2按键后停止计时;S3按键后计时归零;最大计时为99秒。计时误差小于0.5秒,显示稳定。试题3.27倒计时秒表软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序,使秒表在上电/复位后,具有:开始时显示“99”并开始倒计时,当计时到0S时,数码管显示“00”,同时蜂鸣器报警长鸣,倒计时误差小于0.5秒。#includeunsignedcharduanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchardat_display[2];unsignedcharbit_array[2]={0xfe,0xfd};unsignedcharseconds=99,count;sbitspeak=P1^6;voiddelay(unsignedinttime){inti,j;for(i=0;ifor(j=0;j<120;j++);}voidT0_init(void){TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;TR0=1;}voidint_init(void){EA=1;ET0=1;}voiddat_change(void){dat_display[1]=seconds/10;dat_display[0]=seconds%10;}voiddisplay(){P2=0xff;P2=~0x01;P0=duanma[seconds%10];delay(2);P2=~0x02;P0=duanma[seconds/10];delay(2);}voidseconds_01(void){if(count==10){count=0;seconds--;}}voidseconds_99(void){if(seconds==0){TR0=0;}}voidmain(){T0_init();int_init();while(1){seconds_01();seconds_99();dat_change();if(seconds==0){P2=0xff;delay(4000);speak=0;delay(3000);speak=1;}display();}}voidtime_t0()interrupt1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;count++;}试题3.28游客流量计数器设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序,实现游客流量计数器功能,要求如下:用数码管理显示3数组2位数,分别表示进入人数、出去人数、滞留人数,当按下S1键进入人数加,S2键按下出去人加1,同时出入人数有变化对应的滞留人数也应更新,数值显示结果要与实际应用相结合。试题3.29单片机与PC机通信软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编程实现如下功能:利用给定的初始化串口程序,编程实现在单片机上以9600的波特率循环向串口发送字符’0’~’9’,并利用USB转232串口线和电脑串口调试助手软件,在电脑上显示接收数据。试题3.30单片机与PC机通信软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编程实现如下功能:利用给定的初始化串口程序,编程实现单片机接收电脑串口发送的数字(0~9),并开发板上用一位数码管显示当前接收到的数据,波特率为9600。试题3.31多种特效流彩灯设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,利用P1口的8个LED灯,编写程序实现3种特效的彩灯,采灯效果分别为:LED单灯流水左移、LED单灯流水右移、LED从左至右逐个点亮,3种特效循环循环切换。试题3.32按键发音程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,利用2个按键S1、S2,在开发板上编写程序实现如下功能,当按下S1、S2时蜂鸣器发出“哆”、“唻”的声音。试题3.33温度计程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读温度函数,编写程序在数码管上显示实时温度,当温度大于35度时,开启蜂鸣器报警(长响)。试题3.34时钟程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为整点时,开启蜂鸣器响3S。试题3.35简易计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现简易计算器功能,具体功能如下:利用开发板上的矩阵键盘的2个按键实现0~99的加减计数,当按下1号键时计数值加1,计数值为99时加操作无效;按下2号键时计数值减1,计数值为0时减操作无效;计数结果显示在数码管上。试题3.36简易闹钟设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为12:30:00时,LED发光二极管闪烁5S,闪烁频率2HZ。。试题3.37啤酒生产计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计一个啤酒生产计数器,具体要求如下:利用实验板平台,通过P3.4检测并计数,计数时啤酒检测信号可以通过P3.4对应的按键模拟,每计一瓶显示加1,当一箱12瓶满时,蜂鸣器响3S,当再次按键时重新循环计数。#include#defineucharunsignedchar#defineuintunsignedintuintBoxNum=0;//ÏäÊýucharnum=0;//Æ¿Êýsbitled=P1^0;//¹â±¨¾¯sbitbell=P1^6;//Éù±¨¾¯//sbitkey=P3^4;voiddelay(unsignedchart);voidSounder();voidDisplay();ucharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidmain(){EA=1;ET0=1;ET1=1;//¿ªT0¡¢T1ÖжÏPT0=1;TMOD=0x26;//00100110T1¼Æʱ·½Ê½2£»T0¼ÆÊý·½Ê½£¬·½Ê½2TH0=255;TL0=255;TH1=0x06;TL1=0x06;//¶¨Ê±250usTR1=1;TR0=1;//Æô¶¯T1¡¢T0while(1){if(num==12)Sounder();}}voidDisplay(){P2=0xdf;//´Ó×ó±ß¿ªÊ¼×î¸ßλP0=table[BoxNum/1000];//ǧλdelay(1);P2=0xff;P2=0xef;P0=table[(BoxNum%1000)/100];//°Ùλdelay(1);P2=0xff;P2=0xf7;P0=table[((BoxNum%1000)%100)/10];//ʮλdelay(1);P2=0xff;P2=0xfb;P0=table[((BoxNum%1000)%100)%10];//¸öλdelay(1);P2=0xff;P2=0xfd;P0=table[num/10];//ʮλdelay(1);P2=0xff;P2=0xfe;P0=table[num%10];//¸öλdelay(1);P2=0xff;}voiddelay(unsignedchart){unsignedchari;while(t--){for(i=0;i<125;++i);//ÑÓʱԼ1ms}}voidSounder(){uchari;for(i=0;i<30;i++){bell=~bell;led=~led;delay(20);}}voidINT_T0(void)interrupt1{if(num<12){num++;}else{BoxNum++;num=1;}}voidINT_T1(void)interrupt3//±ÜÃâÊýÂë¹ÜÉÁ˸{staticuchari;i++;if(i==40){Display();i=0;}//10msµ÷ÓÃÒ»´ÎÏÔʾ¸üгÌÐò}试题3.38投票计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个投票计数器,用2组2数码管分别实时显示A、B的投票票数,LED发光二极管D1、D2分别指示A、B的投票结果,S1~S3分别为A投票键、B投票键、票数比较键。具体功能如下:当按下S1键,A的票数加1;当按下S2键,B的票数加1;当按下S3键票数多的指示灯点亮,同时AB票数清0,当票数相等时S3键操作无效,且AB的投票数值不超过99试题3.39按键时间间隔记录仪程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个反映时间测试仪,具体功能如下:测试连续2次按键的时间,按下第1次键时,发光二极管D1点视,按下第2次按键时间D2点亮,同时用数码管显示前后两次的时间间隔,精确到0.1S。#includeunsignedcharcodeled_seg_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchardat_display[2];unsignedcharbit_array[2]={0xfe,0xfd};unsignedcharseconds=0,count;unsignedcharcs=0;voiddelay(unsignedintz){while(z--);}voidT0_init(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=0;}voidint_init(){EA=1;ET0=1;}voiddat_change(void){dat_display[1]=seconds/10;dat_display[0]=seconds%10;}voiddisplay_1bit(unsignedcharseg_code,unsignedcharbit_code){P2=0xff;P0=seg_code;P2=bit_code;delay(200);}voiddisplay(){unsignedchari;for(i=0;i<2;i++)display_1bit(led_seg_code[dat_display[i]],bit_array[i]);}voidseconds_01(void){if(count==10){count=0;seconds++;}}voidcs_1(void){if(cs==1){TR0=1;}}voidcs_2(void){if(cs==2){TR0=0;}}unsignedcharkey_scane(void){unsignedcharkey_value;P3=0xff;key_value=P3;if(key_value!=0xff){delay(10);P3=0xff;key_value=~P3;while(P3!=0xff);returnkey_value;}}voidkey1(void){cs++;}voidkey_change(unsignedcharval){if(val==0x01){key1();}}voidmain(){T0_init();int_init();while(1){key_change(key_scane());dat_change();display();cs_1();cs_2();seconds_01();display();if(seconds==0){P2=0xff;delay(4000);}P0=0x80;}}voidtime_t0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}#include#includeunsignedcharduan_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};unsignedcharwei_code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsignedcharwei[4];intcount,temp,num;voidDelay2ms();voiddisplay();inti;voidmain(){EA=1;ET0=1;TMOD=0x08;TH0=7192/32;TL0=7192%32;TR0=1;while(1){if(pclse==1){P2=0xF0;num=temp;}else{temp=0;display();}}}voidTimer0()interrupt1{TH0=7192/32;TL0=7192%32;count++;if(count>=10){temp++;count=0;}}voiddisplay(){wei[0]=num%10;wei[1]=num/10%10;wei[2]=num/100%10;wei[3]=num/1000;for(i=0;i<4;i++){P2=~wei_code[i];P0=duan_code[wei[i]];Delay2ms();}}voidDelay2ms()//@12.000MHz{unsignedchari,j;_nop_();_nop_();i=24;j=84;do{while(--j);}while(--i);}试题3.40简易减法器设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现一位数简易减法器功能,具体功能如下:使用开发板上的矩阵键盘依次输入被减数、减号、减数、等于号,并将输入数字和运算符及运算结果,分别5位数码管从左至右依次显示出来。减号用数码管G笔断表示、等于号用A、G笔段表示,程序不考虑容错处理,即输入时被减数必须大于被减数。
for(j=0;j<120;j++);
voidmain()
if(P3!
=0xff)
delay(10);
key=~P3;
while(P3!
=0xff);
switch(key)
case0x01:
key1();key=0xff;break;
case0x02:
key2();key=0xff;break;
case0x04:
key3();break;
case0x08:
key4();break;
voidkey1()
LED1=!
LED1;
voidkey2()
LED2=!
LED2;
voidkey3()
LED1=0;
LED2=0;
voidkey4()
LED1=1;
LED2=1;
试题3.24计数器软件开发
在下列开发板硬件(原理图见pdf文档)基础上,编写程序,实现如下功能:
对外部的方波信息进行0~99循环计数,每来一个脉冲计数加1,并将计数结果显示在数码管上。
试题3.25小型电子产品软件开发
在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,单片机开发板上从左至右4个按键分别为S1-S4,按下S1从单片机第1个引脚上输出频率为1KHz的方波,再按下S1则停止输出方波;方波频率误差小于2%。
试题3.26秒表软件开发
在下列开发板硬件(原理图见pdf文档)基础上,编写程序如下功能,开发板上4键从左至右为S1-S4,上电后,开始时显示“00”;利用S1按键后启动计时;S2按键后停止计时;S3按键后计时归零;最大计时为99秒。
计时误差小于0.5秒,显示稳定。
试题3.27倒计时秒表软件开发
在下列开发板硬件(原理图见pdf文档)基础上,编写程序,使秒表在上电/复位后,具有:
开始时显示“99”并开始倒计时,当计时到0S时,数码管显示“00”,同时蜂鸣器报警长鸣,倒计时误差小于0.5秒。
unsignedcharduanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsignedchardat_display[2];
unsignedcharbit_array[2]={0xfe,0xfd};
unsignedcharseconds=99,count;
voiddelay(unsignedinttime)
for(i=0;ifor(j=0;j<120;j++);}voidT0_init(void){TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;TR0=1;}voidint_init(void){EA=1;ET0=1;}voiddat_change(void){dat_display[1]=seconds/10;dat_display[0]=seconds%10;}voiddisplay(){P2=0xff;P2=~0x01;P0=duanma[seconds%10];delay(2);P2=~0x02;P0=duanma[seconds/10];delay(2);}voidseconds_01(void){if(count==10){count=0;seconds--;}}voidseconds_99(void){if(seconds==0){TR0=0;}}voidmain(){T0_init();int_init();while(1){seconds_01();seconds_99();dat_change();if(seconds==0){P2=0xff;delay(4000);speak=0;delay(3000);speak=1;}display();}}voidtime_t0()interrupt1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;count++;}试题3.28游客流量计数器设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序,实现游客流量计数器功能,要求如下:用数码管理显示3数组2位数,分别表示进入人数、出去人数、滞留人数,当按下S1键进入人数加,S2键按下出去人加1,同时出入人数有变化对应的滞留人数也应更新,数值显示结果要与实际应用相结合。试题3.29单片机与PC机通信软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编程实现如下功能:利用给定的初始化串口程序,编程实现在单片机上以9600的波特率循环向串口发送字符’0’~’9’,并利用USB转232串口线和电脑串口调试助手软件,在电脑上显示接收数据。试题3.30单片机与PC机通信软件开发一、任务在下列开发板硬件(原理图见pdf文档)基础上,编程实现如下功能:利用给定的初始化串口程序,编程实现单片机接收电脑串口发送的数字(0~9),并开发板上用一位数码管显示当前接收到的数据,波特率为9600。试题3.31多种特效流彩灯设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,利用P1口的8个LED灯,编写程序实现3种特效的彩灯,采灯效果分别为:LED单灯流水左移、LED单灯流水右移、LED从左至右逐个点亮,3种特效循环循环切换。试题3.32按键发音程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,利用2个按键S1、S2,在开发板上编写程序实现如下功能,当按下S1、S2时蜂鸣器发出“哆”、“唻”的声音。试题3.33温度计程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读温度函数,编写程序在数码管上显示实时温度,当温度大于35度时,开启蜂鸣器报警(长响)。试题3.34时钟程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为整点时,开启蜂鸣器响3S。试题3.35简易计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现简易计算器功能,具体功能如下:利用开发板上的矩阵键盘的2个按键实现0~99的加减计数,当按下1号键时计数值加1,计数值为99时加操作无效;按下2号键时计数值减1,计数值为0时减操作无效;计数结果显示在数码管上。试题3.36简易闹钟设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为12:30:00时,LED发光二极管闪烁5S,闪烁频率2HZ。。试题3.37啤酒生产计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计一个啤酒生产计数器,具体要求如下:利用实验板平台,通过P3.4检测并计数,计数时啤酒检测信号可以通过P3.4对应的按键模拟,每计一瓶显示加1,当一箱12瓶满时,蜂鸣器响3S,当再次按键时重新循环计数。#include#defineucharunsignedchar#defineuintunsignedintuintBoxNum=0;//ÏäÊýucharnum=0;//Æ¿Êýsbitled=P1^0;//¹â±¨¾¯sbitbell=P1^6;//Éù±¨¾¯//sbitkey=P3^4;voiddelay(unsignedchart);voidSounder();voidDisplay();ucharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidmain(){EA=1;ET0=1;ET1=1;//¿ªT0¡¢T1ÖжÏPT0=1;TMOD=0x26;//00100110T1¼Æʱ·½Ê½2£»T0¼ÆÊý·½Ê½£¬·½Ê½2TH0=255;TL0=255;TH1=0x06;TL1=0x06;//¶¨Ê±250usTR1=1;TR0=1;//Æô¶¯T1¡¢T0while(1){if(num==12)Sounder();}}voidDisplay(){P2=0xdf;//´Ó×ó±ß¿ªÊ¼×î¸ßλP0=table[BoxNum/1000];//ǧλdelay(1);P2=0xff;P2=0xef;P0=table[(BoxNum%1000)/100];//°Ùλdelay(1);P2=0xff;P2=0xf7;P0=table[((BoxNum%1000)%100)/10];//ʮλdelay(1);P2=0xff;P2=0xfb;P0=table[((BoxNum%1000)%100)%10];//¸öλdelay(1);P2=0xff;P2=0xfd;P0=table[num/10];//ʮλdelay(1);P2=0xff;P2=0xfe;P0=table[num%10];//¸öλdelay(1);P2=0xff;}voiddelay(unsignedchart){unsignedchari;while(t--){for(i=0;i<125;++i);//ÑÓʱԼ1ms}}voidSounder(){uchari;for(i=0;i<30;i++){bell=~bell;led=~led;delay(20);}}voidINT_T0(void)interrupt1{if(num<12){num++;}else{BoxNum++;num=1;}}voidINT_T1(void)interrupt3//±ÜÃâÊýÂë¹ÜÉÁ˸{staticuchari;i++;if(i==40){Display();i=0;}//10msµ÷ÓÃÒ»´ÎÏÔʾ¸üгÌÐò}试题3.38投票计数器程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个投票计数器,用2组2数码管分别实时显示A、B的投票票数,LED发光二极管D1、D2分别指示A、B的投票结果,S1~S3分别为A投票键、B投票键、票数比较键。具体功能如下:当按下S1键,A的票数加1;当按下S2键,B的票数加1;当按下S3键票数多的指示灯点亮,同时AB票数清0,当票数相等时S3键操作无效,且AB的投票数值不超过99试题3.39按键时间间隔记录仪程序设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个反映时间测试仪,具体功能如下:测试连续2次按键的时间,按下第1次键时,发光二极管D1点视,按下第2次按键时间D2点亮,同时用数码管显示前后两次的时间间隔,精确到0.1S。#includeunsignedcharcodeled_seg_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchardat_display[2];unsignedcharbit_array[2]={0xfe,0xfd};unsignedcharseconds=0,count;unsignedcharcs=0;voiddelay(unsignedintz){while(z--);}voidT0_init(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=0;}voidint_init(){EA=1;ET0=1;}voiddat_change(void){dat_display[1]=seconds/10;dat_display[0]=seconds%10;}voiddisplay_1bit(unsignedcharseg_code,unsignedcharbit_code){P2=0xff;P0=seg_code;P2=bit_code;delay(200);}voiddisplay(){unsignedchari;for(i=0;i<2;i++)display_1bit(led_seg_code[dat_display[i]],bit_array[i]);}voidseconds_01(void){if(count==10){count=0;seconds++;}}voidcs_1(void){if(cs==1){TR0=1;}}voidcs_2(void){if(cs==2){TR0=0;}}unsignedcharkey_scane(void){unsignedcharkey_value;P3=0xff;key_value=P3;if(key_value!=0xff){delay(10);P3=0xff;key_value=~P3;while(P3!=0xff);returnkey_value;}}voidkey1(void){cs++;}voidkey_change(unsignedcharval){if(val==0x01){key1();}}voidmain(){T0_init();int_init();while(1){key_change(key_scane());dat_change();display();cs_1();cs_2();seconds_01();display();if(seconds==0){P2=0xff;delay(4000);}P0=0x80;}}voidtime_t0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}#include#includeunsignedcharduan_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};unsignedcharwei_code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsignedcharwei[4];intcount,temp,num;voidDelay2ms();voiddisplay();inti;voidmain(){EA=1;ET0=1;TMOD=0x08;TH0=7192/32;TL0=7192%32;TR0=1;while(1){if(pclse==1){P2=0xF0;num=temp;}else{temp=0;display();}}}voidTimer0()interrupt1{TH0=7192/32;TL0=7192%32;count++;if(count>=10){temp++;count=0;}}voiddisplay(){wei[0]=num%10;wei[1]=num/10%10;wei[2]=num/100%10;wei[3]=num/1000;for(i=0;i<4;i++){P2=~wei_code[i];P0=duan_code[wei[i]];Delay2ms();}}voidDelay2ms()//@12.000MHz{unsignedchari,j;_nop_();_nop_();i=24;j=84;do{while(--j);}while(--i);}试题3.40简易减法器设计一、任务在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现一位数简易减法器功能,具体功能如下:使用开发板上的矩阵键盘依次输入被减数、减号、减数、等于号,并将输入数字和运算符及运算结果,分别5位数码管从左至右依次显示出来。减号用数码管G笔断表示、等于号用A、G笔段表示,程序不考虑容错处理,即输入时被减数必须大于被减数。
voidT0_init(void)
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
voidint_init(void)
ET0=1;
voiddat_change(void)
dat_display[1]=seconds/10;
dat_display[0]=seconds%10;
voiddisplay()
P2=~0x01;
P0=duanma[seconds%10];
delay
(2);
P2=~0x02;
P0=duanma[seconds/10];
voidseconds_01(void)
if(count==10)
count=0;
seconds--;
voidseconds_99(void)
if(seconds==0)
TR0=0;
T0_init();
int_init();
seconds_01();
seconds_99();
dat_change();
delay(4000);
delay(3000);
display();
voidtime_t0()interrupt1
count++;
试题3.28游客流量计数器设计
在下列开发板硬件(原理图见pdf文档)基础上,编写程序,实现游客流量计数器功能,要求如下:
用数码管理显示3数组2位数,分别表示进入人数、出去人数、滞留人数,当按下S1键进入人数加,S2键按下出去人加1,同时出入人数有变化对应的滞留人数也应更新,数值显示结果要与实际应用相结合。
试题3.29单片机与PC机通信软件开发
在下列开发板硬件(原理图见pdf文档)基础上,编程实现如下功能:
利用给定的初始化串口程序,编程实现在单片机上以9600的波特率循环向串口发送字符’0’~’9’,并利用USB转232串口线和电脑串口调试助手软件,在电脑上显示接收数据。
试题3.30单片机与PC机通信软件开发
利用给定的初始化串口程序,编程实现单片机接收电脑串口发送的数字(0~9),并开发板上用一位数码管显示当前接收到的数据,波特率为9600。
试题3.31多种特效流彩灯设计
在下列开发板硬件(原理图见pdf文档)基础上,利用P1口的8个LED灯,编写程序实现3种特效的彩灯,采灯效果分别为:
LED单灯流水左移、LED单灯流水右移、LED从左至右逐个点亮,3种特效循环循环切换。
试题3.32按键发音程序设计
在下列开发板硬件(原理图见pdf文档)基础上,利用2个按键S1、S2,在开发板上编写程序实现如下功能,当按下S1、S2时蜂鸣器发出“哆”、“唻”的声音。
试题3.33温度计程序设计
在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读温度函数,编写程序在数码管上显示实时温度,当温度大于35度时,开启蜂鸣器报警(长响)。
试题3.34时钟程序设计
在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为整点时,开启蜂鸣器响3S。
试题3.35简易计数器程序设计
在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现简易计算器功能,具体功能如下:
利用开发板上的矩阵键盘的2个按键实现0~99的加减计数,当按下1号键时计数值加1,计数值为99时加操作无效;按下2号键时计数值减1,计数值为0时减操作无效;计数结果显示在数码管上。
试题3.36简易闹钟设计
在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现如下功能,利用给定的读写时间函数,编写程序在数码管上显示时、分、秒,当时间为12:
30:
00时,LED发光二极管闪烁5S,闪烁频率2HZ。
。
试题3.37啤酒生产计数器程序设计
在下列开发板硬件(原理图见pdf文档)基础上,设计一个啤酒生产计数器,具体要求如下:
利用实验板平台,通过P3.4检测并计数,计数时啤酒检测信号可以通过P3.4对应的按键模拟,每计一瓶显示加1,当一箱12瓶满时,蜂鸣器响3S,当再次按键时重新循环计数。
#defineucharunsignedchar
#defineuintunsignedint
uintBoxNum=0;//ÏäÊý
ucharnum=0;//Æ¿Êý
sbitled=P1^0;//¹â±¨¾¯
sbitbell=P1^6;//Éù±¨¾¯
//sbitkey=P3^4;
voiddelay(unsignedchart);
voidSounder();
voidDisplay();
ucharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
ET1=1;//¿ªT0¡¢T1ÖжÏ
PT0=1;
TMOD=0x26;//00100110T1¼Æʱ·½Ê½2£»T0¼ÆÊý·½Ê½£¬·½Ê½2
TH0=255;
TL0=255;
TH1=0x06;
TL1=0x06;//¶¨Ê±250us
TR1=1;
TR0=1;//Æô¶¯T1¡¢T0
if(num==12)
Sounder();
voidDisplay()
P2=0xdf;//´Ó×ó±ß¿ªÊ¼×î¸ßλ
P0=table[BoxNum/1000];//ǧλ
(1);
P2=0xef;
P0=table[(BoxNum%1000)/100];//°Ùλ
P2=0xf7;
P0=table[((BoxNum%1000)%100)/10];//ʮλ
P2=0xfb;
P0=table[((BoxNum%1000)%100)%10];//¸öλ
P2=0xfd;
P0=table[num/10];//ʮλ
P2=0xfe;
P0=table[num%10];//¸öλ
voiddelay(unsignedchart)
while(t--)
for(i=0;i<125;++i);//ÑÓʱԼ1ms
voidSounder()
{uchari;
for(i=0;i<30;i++)
bell=~bell;
led=~led;
delay(20);
voidINT_T0(void)interrupt1
if(num<12)
num++;
BoxNum++;
num=1;
voidINT_T1(void)interrupt3//±ÜÃâÊýÂë¹ÜÉÁ˸
staticuchari;
i++;
if(i==40)
{Display();i=0;}//10msµ÷ÓÃÒ»´ÎÏÔʾ¸üгÌÐò
试题3.38投票计数器程序设计
在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个投票计数器,用2组2数码管分别实时显示A、B的投票票数,LED发光二极管D1、D2分别指示A、B的投票结果,S1~S3分别为A投票键、B投票键、票数比较键。
具体功能如下:
当按下S1键,A的票数加1;当按下S2键,B的票数加1;当按下S3键票数多的指示灯点亮,同时AB票数清0,当票数相等时S3键操作无效,且AB的投票数值不超过99
试题3.39按键时间间隔记录仪程序设计
在下列开发板硬件(原理图见pdf文档)基础上,设计制作一个反映时间测试仪,具体功能如下:
测试连续2次按键的时间,按下第1次键时,发光二极管D1点视,按下第2次按键时间D2点亮,同时用数码管显示前后两次的时间间隔,精确到0.1S。
unsignedcharcodeled_seg_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsignedcharseconds=0,count;
unsignedcharcs=0;
voiddelay(unsignedintz)
while(z--);
voidT0_init()
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
voidint_init()
voiddisplay_1bit(unsignedcharseg_code,unsignedcharbit_code)
P0=seg_code;
delay(200);
for(i=0;i<2;i++)
display_1bit(led_seg_code[dat_display[i]],bit_array[i]);
seconds++;
voidcs_1(void)
if(cs==1)
voidcs_2(void)
if(cs==2)
unsignedcharkey_scane(void)
unsignedcharkey_value;
P3=0xff;
key_value=P3;
if(key_value!
key_value=~P3;
returnkey_value;
voidkey1(void)
cs++;
voidkey_change(unsignedcharval)
if(val==0x01)
key1();
key_change(key_scane());
cs_1();
cs_2();
P0=0x80;
unsignedcharduan_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
unsignedcharwei_code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsignedcharwei[4];
intcount,temp,num;
voidDelay2ms();
voiddisplay();
inti;
TMOD=0x08;
TH0=7192/32;
TL0=7192%32;
if(pclse==1)
P2=0xF0;
num=temp;
temp=0;
voidTimer0()interrupt1
if(count>=10)
temp++;
wei[0]=num%10;
wei[1]=num/10%10;
wei[2]=num/100%10;
wei[3]=num/1000;
for(i=0;i<4;i++)
P2=~wei_code[i];
P0=duan_code[wei[i]];
Delay2ms();
voidDelay2ms()//@12.000MHz
_nop_();
i=24;
j=84;
do
while(--j);
}while(--i);
试题3.40简易减法器设计
在下列开发板硬件(原理图见pdf文档)基础上,编写程序实现一位数简易减法器功能,具体功能如下:
使用开发板上的矩阵键盘依次输入被减数、减号、减数、等于号,并将输入数字和运算符及运算结果,分别5位数码管从左至右依次显示出来。
减号用数码管G笔断表示、等于号用A、G笔段表示,程序不考虑容错处理,即输入时被减数必须大于被减数。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1