单片机期末考试编程题
更新时间:2024-05-01 09:05:01 阅读量: 综合文库 文档下载
/*************************************** 实验题目要求:
P23- P26口做输出口,接发光二极管,编写并调试程序,使其闪烁。
时间:2012年12月21日 程序撰写者:邹康
*****************************************/ #include
void delay(unsigned int t) //软延时大致时间为1ms { unsigned int a,b; for(a=0;a void main() { while(1) { P2=~P2; delay(1000); //延时1s } } /********************************************************* 实验题目要求: P23- P26口做输出口,接发光二极管,编写并调试跑马灯程序。 时间:2012年12月21日 程序撰写者:邹康 ***********************************************************/ #include void delay(unsigned int t) //延时1ms左右 { unsigned int a,b; for(a=0;a void main() { unsigned char i=0,m=0; while(1) { for(i=0;i<4;i++) //向左移动 { P2=~(0x08<>i); delay(1000); } } }/********************************* 实验题目要求: 设计一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。 时间:2012年12月21日 程序撰写者:邹康 **********************************/ #include sbit key1=P2^0; sbit LED0=P2^6; //单片机板子最右边的led灯 sbit LED1=P2^5; //右边数第二个灯 sbit LED2=P2^4; //右边数第三个灯 sbit LED3=P2^3; //右边数第四个灯 char number=15; unsigned char num[4]; void key() //通过按键对NUMBER的数值进行减计数 { static unsigned char m=0; if(key1==0) { m++; if(m>=30) { number--; if(number<0) number=15; m=0; } } } void number_change() //将十进制转换为二进制 { unsigned int n=0; unsigned char j=0; n=number; for(j=0;j<4;j++) { num[j]=n%2; n=n/2; } } void show() //通过LED将二进制显示出来 { LED0=!num[0]; LED1=!num[1]; LED2=!num[2]; LED3=!num[3]; } void main() { while(1) { key(); number_change(); show(); } }/******************************************* 实验题目要求: 用1个按键控制LED的显示,要求显示3种以上的不同模式。 时间:2012年12月22日 程序撰写者:邹康 ********************************************/ #include sbit led0=P2^3; sbit led1=P2^4; sbit led2=P2^5; sbit led3=P2^6; sbit mode_key=P2^0; char mode=0; void delay(unsigned int t) { unsigned int a,b; for(a=0;a void key() { static unsigned char m; if(mode_key==0) { m++; if(m>=30) { mode++; if(mode>=3) mode=0; m=0; } } } void mode_1() 左右 { unsigned char i=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; c=~(0x08< //延时时间大约1ms //通过按键进行模式选择 //模式一 根据开发板,LED循环右移,时间间隔1s } void mode_2() //模式二 根据开发板,LED一闪一灭,时间间隔1s左右 { led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000); } void mode_3() //模式三 , 先循环右移,再循环左移,时间间隔1s左右 { unsigned char i=0,n=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; P2&=~(0x08<>i); delay(1000); } } void main() { while(1) { key(); switch(mode) { case 0 : mode_1();break; case 1 : mode_2();break; case 2 : mode_3();break; } }/******************************************* 实验题目要求: 用1个按键控制LED的显示,要求显示3种以上的不同模式。 时间:2012年12月22日 程序撰写者:邹康 ********************************************/ #include sbit led0=P2^3; sbit led1=P2^4; sbit led2=P2^5; sbit led3=P2^6; sbit mode_key=P2^0; char mode=0; void delay(unsigned int t) { unsigned int a,b; for(a=0;a void key() { static unsigned char m; if(mode_key==0) { m++; if(m>=30) { mode++; if(mode>=3) mode=0; m=0; } } } void mode_1() 左右 { unsigned char i=0,c=0; for(i=0;i<4;i++) //延时时间大约1ms //通过按键进行模式选择 //模式一 根据开发板,LED循环右移,时间间隔1s { P2|=0xf8; c=~(0x08< void mode_2() { led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000); } void mode_3() { unsigned char i=0,n=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; P2&=~(0x08<>i); delay(1000); } } void main() { while(1) { key(); switch(mode) //模式二 //模式三 ,根据开发板,LED一闪一灭,时间间隔1s左右 先循环右移,再循环左移,时间间隔1s左右 { case 0 : mode_1();break; case 1 : mode_2();break; case 2 : mode_3();break; } } } }/************************************ 实验题目要求: 采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。 时间:2012年12月22日 程序撰写者:邹康 *************************************/ #include unsigned char mode=0; void delay(unsigned int t) //延时时间大约1ms { unsigned int a,b; for(a=0;a void mode_1() //模式一 根据开发板,LED循环右移,时间间隔1s左右 { unsigned char i=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; c=~(0x08< } void mode_2() { led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000); } void mode_3() { unsigned char i=0,n=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; P2&=~(0x08<>i); delay(1000); } } void init() { EA=1; IT0=1; EX0=1; } void main() { init(); while(1) { //模式二 //模式三 ,根据开发板,LED一闪一灭,时间间隔1s左右 先循环右移,再循环左移,时间间隔1s左右 switch(mode) { case 0:mode_1();break; case 1:mode_2();break; case 2:mode_3();break; } } } void come0() interrupt 0 { mode++; if(mode>2) mode=0; }/****************************************** 实验题目要求: 采用外部中断的方式实现一个二进制减1计数器,按一次键,减1, 并用4个LED显示计数结果,减至0时,重新从15开始计数。 时间:2012年12月22日 程序撰写者:邹康 ******************************************/ #include sbit led0=P2^6; sbit led1=P2^5; sbit led2=P2^4; sbit led3=P2^3; unsigned char num[4]; char number=15; void init() { EA=1; IT0=1; EX0=1; } void num_change() { char i=0,n=0; n=number; for(i=0;i<4;i++) { num[i]=n%2; n=n/2; } led0=!num[0]; led1=!num[1]; led2=!num[2]; led3=!num[3]; } void main() { init(); while(1) { num_change(); } } void come0() interrupt 0 { number--; if(number<0) number=15; }/************************************ 实验题目要求: 采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。 时间:2012年12月22日 程序撰写者:邹康 *************************************/ #include unsigned char mode=0; void delay(unsigned int t) //延时时间大约1ms { unsigned int a,b; for(a=0;a for(b=0;b<120;b++); } void mode_1() //模式一 根据开发板,LED循环右移,时间间隔1s左右 { unsigned char i=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; c=~(0x08< void mode_2() { led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000); } void mode_3() { unsigned char i=0,n=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; P2&=~(0x08<>i); //模式二 //模式三 ,根据开发板,LED一闪一灭,时间间隔1s左右 先循环右移,再循环左移,时间间隔1s左右 delay(1000); } } void init() { EA=1; IT0=1; EX0=1; } void main() { init(); while(1) { switch(mode) { case 0:mode_1();break; case 1:mode_2();break; case 2:mode_3();break; } } } void come0() interrupt 0 { mode++; if(mode>2) mode=0; }/**************************************** 实验题目要求: 设计1个秒计数器,每秒计1次数,在LED上显示出来,计至16清零后重新计数 时间:2012年12月22日 程序撰写者:邹康 ******************************************/ #include unsigned char num[4]; sbit led0=P2^3; sbit led1=P2^4; sbit led2=P2^5; sbit led3=P2^6; void init() { EA=1; ET0=1; TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%6; TR0=1; } void num_change() { unsigned char i=0,n=0; n=number; for(i=0;i<4;i++) { num[i]=n%2; n=n/2; } led0=!num[0]; led1=!num[1]; led2=!num[2]; led3=!num[3]; } void main() { init(); while(1) { num_change(); } } void time0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%6; k++; if(k>=20) { k=0; number++; if(number>15) number=0; } }/******************************************** 实验题目要求: 在上题基础上用按键控制秒计数器的启停,按一次键开始计数,按2次停止计数,按3次又开始计数…。 时间:2012年12月22日 程序撰写者:邹康 ********************************************/ #include sbit led0=P2^3; sbit led1=P2^4; sbit led2=P2^5; sbit led3=P2^6; sbit keyz=P2^0; unsigned char flag=0; unsigned char k=0,number=0; unsigned char num[4]; void init() { EA=1; ET0=1; TH0=(65536-50000)%6; TL0=(65536-50000)/256; } void key() { unsigned int m=0; if(keyz==0) { m++; if(m>=30) { flag=!flag; m=0; } } } void num_change() { unsigned char i=0,n=0; n=number; for(i=0;i<4;i++) { num[i]=n%2; n=n/2; } led0=!num[0]; led1=!num[1]; led2=!num[2]; led3=!num[3]; } void main() { init(); while(1) { key(); if(flag==0) TR0=1; else TR0=0; num_change(); } } void time0() interrupt 1 { TH0=(65536-50000)%6; TL0=(65536-50000)/256; k++; if(k>19) { number++; if(number>15) number=0; k=0; } } { unsigned char i=0,n=0; n=number; for(i=0;i<4;i++) { num[i]=n%2; n=n/2; } led0=!num[0]; led1=!num[1]; led2=!num[2]; led3=!num[3]; } void main() { init(); while(1) { key(); if(flag==0) TR0=1; else TR0=0; num_change(); } } void time0() interrupt 1 { TH0=(65536-50000)%6; TL0=(65536-50000)/256; k++; if(k>19) { number++; if(number>15) number=0; k=0; } }
正在阅读:
单片机期末考试编程题05-01
液体点滴速度监控系统(1)05-10
2013-2014学年度第一学期期中考试徐州联校试题 word版04-06
连续运行参考站系统(CORS)浅探09-10
制丝设备经济运行模式研究0 - 图文03-05
2020年鄂教版四年级上册品德与社会教学计划(新整理)04-30
Oracle R12 MOAC入门探索10-05
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 单片机
- 期末
- 编程
- 考试