收藏 分销(赏)

辽宁科技大学单片机考试题库.doc

上传人:仙人****88 文档编号:8767908 上传时间:2025-03-01 格式:DOC 页数:11 大小:55KB
下载 相关 举报
辽宁科技大学单片机考试题库.doc_第1页
第1页 / 共11页
辽宁科技大学单片机考试题库.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述
1 第一题 #include <reg51.H> sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_7=P1^7; unsigned char ID; void delayms(unsigned char i) { unsigned char j; for(i;i>0;i--) for(j=1000;j>0;j--); } void main(void) { while(1) { if(P1_7==0) {delayms(100); if(P1_7==0) { ID++; if(ID==4) { ID=0; } while(P1_7==0); } } switch(ID) { case 0: P1_0=~P1_0; P1_1=1;P1_2=1;P1_3=1; delayms(100); break; case 1: P1_1=~P1_1; P1_0=1;P1_2=1;P1_3=1; delayms(100); break; case 2: P1_2=~P1_2; P1_0=1;P1_1=1;P1_3=1; delayms(100); break; case 3: P1_3=~P1_3; P1_0=1;P1_1=1;P1_2=1; delayms(100); break; } } } 2. 串行通信 #include <reg51.h> #include <absacc.h> #define uchar unsigned char uchar code Table[18]={1,3,7,0x0f,0x1F,0x3F,0x7F,0xff,0xFE, 0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0,0xFF,00}; void Delay(unsigned int time); void main() { unsigned int i,a; TMOD=0x20; TL1=0xF4; TH1=0xF4; TR1=1; PCON=0x00; SCON=0x50; while(1) { for(i=0;i<18;i++) { SBUF=Table[i]; while(TI!=1); /*发送数据完成标志*/ TI=0; /*清除发送标志*/ while(RI!=1); /*接收到数据标志*/ RI=0; /*清除接收标志*/ a=SBUF;/*接收数据*/ P1=a; Delay(200); /*彩灯状态保持一段时间*/ } } } void Delay(unsigned int x) { uchar i; while(x--) { for(i=0;i<125;i++) {;} } } 3.五人表决器 #include <reg51.h> sbit RST = P1^7; sbit K1 = P1^0; sbit K2 = P1^1; sbit K3 = P1^2; sbit K4 = P1^3; sbit K5 = P1^4; sbit led= P1^6; unsigned char count; void delay(unsigned k) { unsigned int i,j; for(i=0;i<k;i++) for(j=0;j<62;j++); } main() { while(1) { if(K1==0) { delay(40); if(K1==0) { while(K1==0); count++;P1=0xFF;} } else if(K2==0) { delay(40); if(K2==0) { while(K2==0); count++;P1=0xFF;} } else if(K3==0) { delay(40); if(K3==0) {while(K3==0); count++;P1=0xFF;} } else if(K4==0) { delay(40); if(K4==0) {while(K4==0); count++;P1=0xFF;} } else if(K5==0) { delay(40); if(K5==0) {while(K5==0); count++;P1=0xFF;} } if(count>=3) {led=~led; delay(200);} if(RST==0) {delay(40); if(RST==0) {count=0; P1=0xFF;}} } } 4.A/D转换 法一 #include <reg51.h> #include <absacc.h> #define CS273 XBYTE[0xCFA0] #define IN7 XBYTE[0xCFAF] void Delay(int U); void Display(); unsigned char code table[17]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; unsigned BUF[2]={0,0}; unsigned char k,sn; void main() {unsigned char i; IE=0x81;IT0=1; while(1) { IN7=i; sn=1; while(sn); Display(); } } void INT_0(void) interrupt 0 {k=IN7;sn=0;} void Display() { unsigned char i,j; BUF[0]=k/16; BUF[1]=k%16; while(j--) { CS273=table[BUF[0]]; P1=0xFE; Delay(2); CS273=table[BUF[1]]; P1=0xFD; Delay(2); } } void Delay(int U) { unsigned char i; while(U--) { for(i=0;i<62;i++) {;} } } A/D 法二 /* ************************************************ *文件名:sy8.c *版 本:V1.0_C *功 能:AD0809通道0采集数据,并有四个数码管显示 *注 意:实验时,拔掉LED_JUMP跳帽 *创 建:吴文波 ************************************************ */ #include <reg51.h> #include <absacc.h> #define AD0809_0 XBYTE[0xCFA0] #define CS273 XBYTE[0xCFA8] /*分别控制4位数码管的位码*/ sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; /*共阴极数码管显示数据:0-9 A-F 黑屏*/ table[17]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; unsigned char dispbuf[4]; unsigned char sn; unsigned int idata BUF[8]; /* ************************************************ *函数名:INIT0_FUNC *功 能:外部中断0服务函数,实现AD0809通道0数据采集 *输 入:无 *返 回:AD0809通道0数据 ************************************************ */ void INIT0_FUNC(void) interrupt 0 { BUF[0]=AD0809_0; sn=0; } /* ************************************************ *函数名:Delay *功 能:Delay实现延时约1ms*temp(晶振6M) * for循环执行一次需:(12*(1/6M))*8s *输 入:延时时间 temp *返 回:无 ************************************************ */ void Delay(unsigned char temp) { unsigned int j; while(temp--) { for(j=0;j<62;j++){;} } } /* ************************************************ *函数名:Display *功 能:进行AD0809通道0数据的显示 *输 入:k--AD0809通道0、BUF[k]--AD0809通道0数据 *返 回:无 ************************************************ */ void Display(unsigned char k) { unsigned int t,j=10; while(j--) { t=(double)BUF[k]/255*500; //??? dispbuf[0]=t%10; dispbuf[1]=t/10%10; dispbuf[2]=t/100%10; dispbuf[3]=t/1000; P10=0; /*第1位数码管位选通*/ P11=1; P12=1; P13=1; CS273=table[dispbuf[0]]; /*第1位数码管段码*/ Delay(2); P10=1; P11=0; /*第2位数码管位选通*/ P12=1; P13=1; CS273=table[dispbuf[1]]; /*第2位数码管段码*/ Delay(2); P10=1; P11=1; P12=0; /*第3位数码管位选通*/ P13=1; CS273=table[dispbuf[2]]|0x80; /*第3位数码管段码*/ Delay(2); P10=1; P11=1; P12=1; P13=0; /*第4位数码管位选通*/ CS273=table[dispbuf[3]]; /*第4位数码管段码*/ Delay(2); } } /* ************************************************ *函数名:INIT0Init *功 能:外部中断0初始化 *输 入:无 *返 回:无 ************************************************ */ void INIT0Init() { IT0=1; EX0=1; EA=1; } /* ************************************************ *函数名:main主函数 *功 能:实现AD0809采集通道0数据并由4位数码管显示其值 *说 明:无 ************************************************ */ void main(void) { INIT0Init(); /*外部中断0初始化*/ while(1) { AD0809_0=0; /*启动通道0采集*/ sn=1; while(sn); Display(0); /*AD0809通道0数据显示*/ } } 5. 抢答器(加数码管和LED灯) #include <reg51.h> #include <absacc.h> #define cs273 XBYTE[0xCFA0] sbit RST = P1^7; sbit K1 = P1^0; sbit K2 = P1^1; sbit K3 = P1^2; sbit P1_6=P1^6; sbit led1=P1^3; sbit led2=P1^4; sbit led3=P1^5; unsigned char code table[4]={0x06,0x5b,0x4f,0x3f}; void delay(unsigned k) { unsigned int i,j; for(i=0;i<k;i++) for(j=0;j<62;j++); } main() { while(1) { start: P1_6=0; if(K1==0) { delay(30); if(K1==0) {cs273=table[0];led1=0;led2=1;led3=1;while(1)if(RST==0){led1=1;led2=1;led3=1;cs273=table[3];goto start;}} } else if(K2==0) { delay(30); if(K2==0) {cs273=table[1];led1=1;led2=0;led3=1;while(1)if(RST==0){led1=1;led2=1;led3=1;cs273=table[3];goto start;}} } else if(K3==0) { delay(30); if(K3==0) {cs273=table[2];led1=1;led2=1;led3=0;while(1)if(RST==0){led1=1;led2=1;led3=1;cs273=table[3];goto start;}} } } } 6. 跑马表 #include <reg51.h> #include <absacc.h> #define CS273 XBYTE[0xcfa0] sbit SP1=P1^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char count,keycnt,second; void delay(unsigned char i) { unsigned j; for(i;i>0;i--) for(j=62;j>0;j--); } void Timer0_INTI() { TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=0; ET0=1; EA=1; } void Timer0() interrupt 1 using 0 { TH0=(65536-1000)/256; TL0=(65536-1000)%256; count++; if(count==100) second++; if(second==60) second=0; } void main(void) { Timer0_INTI(); while(1) { CS273=table[second/10]; P1=0xFB;delay(1); CS273=table[second%10]; P1=0xFD;delay(1); if(SP1==0) { delay(5); if(SP1==0) {while(SP1==0); keycnt++; switch(keycnt) { case 1: TR0=1; break; case 2: TR0=0; break; case 3: keycnt=0; second=0; break; } } } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服