1简单编程题.doc_第1页
1简单编程题.doc_第2页
1简单编程题.doc_第3页
1简单编程题.doc_第4页
1简单编程题.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、编程题1、 实现流水效果,要求从P20开始逐次点亮二极管,点亮的同时其它7盏都熄灭,当亮至P27时重新从P20开始新的循环过程。设逐次点亮的延时函数为delay,不需再定义,可以直接调用。 第3题图9#include reg51.hunsigned char cnt,HuaYang = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,n;bit sec;void change()if(+n7) n=0; P2=HuaYangn;main() n=0; P2=0XFE;while(1) delay(); change();2、 实现流水效果,要求从P20开始逐次点亮二极管,点亮的同时其它7盏都熄灭,当亮至P27时重新从P20开始新的循环过程,点亮间隔为1秒,需要用定时中断来实现延时1秒。#include reg51.hunsigned char cnt,HuaYang = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,n;bit sec;void t0() interrupt 1 TH0=-500008;TL0=-50000;if(+cnt19) cnt=0; sec=1;void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void change()if(+n7) n=0; P2=HuaYangn;main() n=0; init_t0();P2=0XFE;TR0=1;while(1) if(sec) sec=0; change(); 3、 在按键的作用下,每按一次键实现要求的彩灯变换效果,要求按如下规律变换:(P20 、P27) (P21 、P26) (P22 、P25) (P23 、P24) 再反序亮至(P20 、P27),如此循环。#include reg51.hsbit SET=P10;unsigned char HuaYang =0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,n;bit key_mark;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j5) n=0; P2=HuaYangn;main() P2=0XFE; while(1) if(!SET & !key_mark) delay(); if(!SET) change(); key_mark=1; else if(SET) key_mark=0; 4、 驱动如图连接的BCD码数码管,起始时刻显示0,要求以1秒间隔逐次显示0至9,利用中断实现1秒定时。5题图6题图#include reg51.hchar cnt,n;bit sec;void t0() interrupt 1 TH0=-500008;TL0=-50000;if(+cnt19) cnt=0; sec=1;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j8;TL0=-50000;TMOD|=0X01;IE|=0X82;void change()if(+n9) n=0; P2=n;main() n=0; init_t0();P2=0;TR0=1;while(1) if(sec) sec=0; change(); 5、 驱动如图连接的BCD码数码管,起始时刻显示0,要求在按键的作用下,每按一次键显示数字加1,待加到9后再按键则继续从0开始变换。#include reg51.hsbit SET=P10;unsigned char n;bit key_mark;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j9) n=0; P2=n;main() P2=0; while(1) if(!SET & !key_mark) delay(); if(!SET) change(); key_mark=1; else if(SET) key_mark=0; 6、 驱动如图连接的BCD码数码管,起始时刻显示0,要求以1秒间隔逐次显示0至99,利用中断实现1秒定时。#include reg51.hchar cnt,n;bit sec;void t0() interrupt 1 TH0=-500008;TL0=-50000;if(+cnt19) cnt=0; sec=1;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j8;TL0=-50000;TMOD|=0X01;IE|=0X82;void change()if(+n99) n=0; P2=(n/10)4) + n%10;main() n=0; init_t0();P2=0;TR0=1;while(1) if(sec) sec=0; change(); 7、 动态驱动如图连接的共阳极数码管,起始时刻显示0,要求以1秒间隔逐次显示0至99,利用中断实现1秒定时。ZXM=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;字型码: 8题图#include unsigned char cnt,second=0,pos,ZXM = 0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;bit sec;void t0() interrupt 1 TH0=-500008; TL0=-50000; if(+cnt19) cnt=0; sec=1; void t1() interrupt 3 TH1=-10008; TL1=-1000; if(+pos1) pos=0; P3=0xff; if(pos=0) P2=ZXMsecond%10; P3=0Xfd; else if(pos=1) P2=ZXMsecond/10; P3=0Xfe; void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void init_t1() TH1=-500008;TL1=-50000;TMOD|=0X10;IE|=0X88;main() init_t0(); init_t1(); TR0=TR1=1; while(1) if(sec) sec=0; if(+second99) second=0; 8、 动态驱动如图连接的共阳极数码管,起始时刻显示99,要求在按键的作用下,每按一次键显示数字减1,待减到0后再按键则继续从99开始变换。字型码: char zxm=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;#include sbit SET=P10;unsigned char cnt,second,minute,pos,ZXM=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;bit sec,key_mark;void t0() interrupt 1 TH0=-500008; TL0=-50000; if(+cnt19) cnt=0; sec=1; void t1() interrupt 3 TH1=-50008; TL1=-5000; if(+pos1) pos=0; P3=0xff; if(pos=0) P2=ZXMsecond%10; P3=0Xfe; else if(pos=1) P2=ZXMsecond/10; P3=0Xfd; void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void init_t1() TH1=-500008;TL1=-50000;TMOD|=0X10;IE|=0X88;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j99) second=0;main() init_t0(); init_t1(); TR0=TR1=1; while(1) if(!SET & !key_mark) delay(); if(!SET) change(); key_mark=1; else if(SET) key_mark=0; 9、 静态驱动如图连接的共阳极码数码管,起始时刻显示0,要求以1秒间隔逐次显示0至9,利用中断实现1秒定时。char zxm=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;10图#include reg51.hchar cnt,n,zxm=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;bit sec;sbit clk=P20,dat=P21,lock=P22;void t0() interrupt 1 TH0=-500008;TL0=-50000;if(+cnt19) cnt=0; sec=1;void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void display() char i; for(i=0;i9) n=0; display();main() n=0; init_t0();TR0=1;while(1) if(sec) sec=0; change(); 10、 编程实现矩阵按键的识别,并将键值赋值给P1口。#include unsigned char KeyValue;bit sec,key_mark;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j8;TL0=-50000;if(+cnt19) cnt=0; sec=1;void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void display() char i,t6; t0=second%10; t1=second/10; t2=minute%10; t3=minute/10; t4=hour%10; t5=hour/10; for(i=0;i59) second=0; if(+minute59) minute=0; if(+hour23) hour=0; display();main() hour=12,minute=second=0; init_t0();TR0=1;while(1) if(sec) sec=0; change(); 12、 编程实现基本的电子时钟功能,开机默认从12:00:00开始走时,按下SET键可以实现定时的暂停和运行模式切换。其中共阳极数码管采用595驱动,P30接595的数据脚,P31接移位脉冲脚,P32接锁存脚。字型码: char zxm=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;#include reg51.hchar cnt,second,minute,hour,zxm=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;bit sec,key_mark;sbit lock=P32,SET=P20;void t0() interrupt 1 TH0=-500008;TL0=-50000;if(+cnt19) cnt=0; sec=1;void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void display() char I,t6; t0=second%10; t1=second/10; t2=minute%10; t3=minute/10; t4=hour%10; t5=hour/10; for(i=0;i59) second=0; if(+minute59) minute=0; if(+hour23) hour=0; display();main() hour=12,minute=second=0; init_t0();TR0=1;while(1) if(!SET & !key_mark) delay(); if(!SET) TR0=!TR0; key_mark=1; else if(SET) key_mark=0; if(sec) sec=0; change(); 13、 编程实现基本的电子时钟功能,开机默认从12:00:00为设置时间状态,按下ADD键可以实现对当前hour、minute、second加1操作,按下SET键可以实现hour、minute、second状态切换。其中共阳极数码管采用595驱动,P30接595的数据脚,P31接移位脉冲脚,P32接锁存脚。字型码: char zxm=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;#include reg51.hchar cnt,second,minute,hour,zxm=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,state;bit sec,key_mark;sbit lock=P32,SET=P20;void t0() interrupt 1 TH0=-500008;TL0=-50000;if(+cnt19) cnt=0; sec=1;void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void display() char I,t6; t0=second%10; t1=second/10; t2=minute%10; t3=minute/10; t4=hour%10; t5=hour/10; for(i=0;i59) second=0; if(+minute59) minute=0; if(+hour23) hour=0; display();void key() if(!SET) if(+state3) state=0; if(state=0)TR0=1;else TR0=0; else if(!ADD) if(state=1) if(+hour23) hour=0; else if(state=2) if(+minute59) minute=0; else if(state=3) if(+second59) second=0; display(); else if(!SUB) main() hour=12,minute=second=0; init_t0();TR0=1; state=0; /runingwhile(1) if(!SET | !ADD | !SUB) & !key_mark) delay(); if(!SET | !ADD | !SUB) key(); key_mark=1; else if(SET & ADD & SUB ) key_mark=0; if(sec) sec=0; change(); 14、 完成如下任务:开机默认初始化时间为60秒,当按键按下后,每隔1秒显示时间减1,当剩余时间为0时,启动继电器点亮220V灯泡,在运行过程中每次按下键后定时时间都初始化为60,且关闭继电器熄灭220V指示灯。 15图#include reg51.hchar cnt,n;bit sec;sbit SET=P30; sbit JDQ=P37;void t0() interrupt 1 TH0=-500008;TL0=-50000;if(+cnt19) cnt=0; sec=1;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j8;TL0=-50000;TMOD|=0X01;IE|=0X82;void change()if(-n0) TR0=0; JDQ=1;/开继电器 P2=(n/10)8;TL0=-50000;if(+cnt19) cnt=0; sec=1;void delay() unsigned char i,j;for(i=0;i4;i+) for(j=0;j8;TL0=-50000;TMOD|=0X01;IE|=0X82;void change()if(-n0) TR0=0; Beep=1;/开蜂鸣器delay();Beep=0;/关蜂鸣器 P2=(n/10)8;TL0=-50000;if(+cnt19) cnt=0; sec=1;void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void change()if(-n0) TR0=0; Beep=1;/开蜂鸣器delay();Beep=0;/关蜂鸣器 P2=(n/10)1) state=0; if(state=0)TR0=1;else TR0=0; else if(!ADD) if(state=1) if(+second60) hour=60; display(); else if(!SUB) if(state=1) if(-second8;TL0=-50000;if(+cnt19) cnt=0; sec=1;void init_t0() TH0=-500008;TL0=-50000;TMOD|=0X01;IE|=0X82;void change()if(-n0) TR0=0; Beep=1;/开蜂鸣器delay();Beep=0;/关蜂鸣器 P2=(n/10)1) state=0; if(state=0)TR0=1;else TR0=0; else if(!ADD) if(state=1) if(+second60) hour=60; display(); else if(!SUB) if(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论