C51语言复习题参考答案88(3)

2020-04-16 10:26

} }

5、采用T0定时方式2在P1.0口输出周期为0.5ms的方波(设fosc=12MHz)。 分析:计数初值TL0= ((256-250)*12/12)%6 = 0x06, TMOD = 0x02 (1)查询方式 (2)中断方式 #include #include sbit P1_0 = P1^0; sbit P1_0=P1^0; main() timer0 () interrupt 1 { TMOD = 0x02; { P1_0 = !P1_0; TH0= TL0 = 0x06; } TR0=1; main() for(;;) { TMOD = 0x02; { while(!TF0); TH0 = TL0 = 0x06; P1_0 =!P1_0; EA= ET0 = 1; TF0 = 0; TR0=1; } while(1); } }

6、设计0~9秒的简易秒表。(用T1,采用方式1编写1s延时函数,系统晶振12M。) #include unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay1s() { unsigned char i; for(i=0;i<0x14;i++) C2C1 { TH1=0x3c; 30PFX130PFU11939XTAL1P0.0/AD0 TL1=0xb0; 38P0.1/AD137P0.2/AD2CRYSTAL TR1=1; 1836XTAL2P0.3/AD335P0.4/AD4 while(!TF1); 34P0.5/AD5C333P0.6/AD6932 TF1=0; RSTP0.7/AD72110uFR1 } P2.0/A822P2.1/A92310k} P2.2/A102924PSENP2.3/A113025ALEP2.4/A12void main() 3126EAP2.5/A1327P2.6/A14{ unsigned char i; 28P2.7/A15 TMOD=0x10; 110P1.0P3.0/RXD211P1.1P3.1/TXD312 while(1) P1.2P3.2/INT0413P1.3P3.3/INT1514 { for(i=0;i<10;i++) P1.4P3.4/T0615P1.5P3.5/T1716P1.6P3.6/WR { P0=led[i]; 817P1.7P3.7/RD delay1s(); AT89C51 } } }

R3R4R5R6R7R8R9220220.220220220220220

7、通过按键改变灯的显示方式。要求正常情况是8个灯依次点亮,循环显示。按键按下后,8个灯同时亮灭一次,按键动作采用外部中断INT0实现。 #include

void delay(unsigned char t) { unsigned char i,j;

C1 for(i=200;i>0;i--) X1 for(j=t;j>0;j--); U1C2D1}

D2void int_0() interrupt 0 R10{ P1=0x00; D3C3 delay(250); D4 P1=0xff; U2:AD5 delay(250);

D6}

D7U2:Bvoid main()

D8{ unsigned k,w; EA=1;

R8R7R6R5R4R3R2R1 EX0=1; IT0=1; while(1) { w=0x01;

for(k=0;k<8;k++) { P1=~w; w<<=1; delay(100); } }}

8、定时中断方式实现键控的电子秒表:单片机控制2位数码管实现00~59的简易秒表,并C1C2X1利用3个独立按键实现秒表的启动、停止和复位功能。 U1#include /51头文件

unsigned char t=0; //定义中断次数 C3unsigned char second=0; //定义秒

R1unsigned char code table[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 启动//定时器0中断函数

暂停timer0() interrupt 1{ 清零 TH0 =0x3c; //初值重装载 TL0 =0xb0; R16-R18/1K t++; //中断次数增1

if(t==20){ //若中断20次,相当于1秒 t=0; //中断次数计数器清零

30pFCRYSTAL19XTAL130pF18XTAL2LED-RED9RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7LED-RED10kLED-RED29303122uFPSENALEEALED-REDP2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15LED-RED18161412Y0Y1Y2Y3A0A1A2A324681OELED-RED74LS24012345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDAT89C51LED-RED9753Y0Y1Y2Y3A0A1A2A31113151719LED-REDOE74LS2401k1k1k1k1k1k1k1k393837363534333221222324252627281011121314151617R910k30pF30pF19R2-R7/1kXTAL1CRYSTAL18XTAL29RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7393837363534333221222324252627281011121314151617P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.0P0.1P0.2P0.3P0.4P0.5P0.6PULLUPP2.0P2.1P2.2P2.3P2.4P2.5P2.610uF10k293031PSENALEEAP2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P2.0P2.1P2.2P2.3P2.4P2.5P2.6P0.0P0.1P0.2P0.3P0.4P0.5P0.612345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDLED1LED280C51 second++; //秒计数器清零 }

if(second==60) second=0; //若秒计数器=60,清零 }

main(){

TMOD=0x01; //定义T0定时方式1 TH0 =0x3c; //50ms溢出初值 TL0 =0xb0;

ET0=1; //打开定时器0中断 EA=1; //打开总中断 while(1)

{ P0=table[second/10]; //P0口输出显示 P2=table[second]; //P2口输出显示 P1=P1&0x07; if(P1==0x06) TR0=1; if(P1==0x05) TR0=0; if(P1==0x03)

{ TR0=0; t=0; second=0; } } }

9、利用74LS164扩展并行输出口,并实现LED由上向下循环 。 #include sbit MR=P2^7;

void delay() { unsigned int i; for (i=0; i<20000; i++) ; }

void main() {

unsigned char index, LED; //定义LED指针和显示字模 SCON = 0; //设置串行模块工作在方式0

MR = 1; // CLEAR端=1,允许输入数据 while (1) { LED=0x7f; for (index=0; index < 8; index++) {

SBUF = LED; //控制L0灯点亮

do {} while(!TI); //通过TI查询判别数据是否输出结束 LED = ((LED>>1)|0x80); //左移1位,末位置1 TI=0; delay(); }

}}

10、根据如下电路,利用DAC0832编程实现两路锯齿波发生器的功能。 U1+5VU2Y1P2.01939120P0.0/AD0CSVCC38219Y2WRU4 XTAL1P0.1/AD1WR1ILE(BY1/BY2)Y337318WRP0.2/AD2GNDWR2Y4Y41836417P0.3/AD3DI3XFERP2.4Y5Y3355163 XTAL2P0.4/AD4DI2DI4Y6Y2346156P0.5/AD5DI1DI5VXY7Y1337142P0.6/AD6DI0DI6Y8+5V32813 9RSTP0.7/AD7VREFDI7741912RFBIOUT2P2.0VX102111P2.0/A8GNDIOUT122P2.1 P2.1/A9VX23DAC0832P2.2/A10A2924P2.4PSENP2.3/A1110kVY3025 ALEP2.4/A12B3126RV1EAP2.5/A13U327P2.6/A14CP2.128120 P2.7/A15CSVCCWR219WR1ILE(BY1/BY2)+5VD110318WRP1.0P3.0/RXDGNDWR2+12V211Y4417 3P1.1P3.1/TXDDI3XFERP2.4Y312516U5P1.2P3.2/INT0DI2DI4Y24136153P1.3P3.3/INT1DI1DI5Y1147146P1.4P3.4/T0DI0DI6VY 5+5V8615132P1.5P3.5/T1VREFDI7WR716912P3.6/WRRFBIOUT2741VY101711P1.7P3.7/RDGNDIOUT1 8P1.680C51DAC0832 net=D910k RV2 +12V #include #include

#define DAC1 XBYTE[0xfeff] //设置1#DAC0832输入锁存器的访问地址 #define DAC2 XBYTE[0xfdff] //设置2#DAC0832输入锁存器的访问地址 #define DAOUT XBYTE[0xefff] //两个DAC0832的DAC寄存器访问地址 void main (void){

unsigned char num; //需要转换的数据 while(1){

for(num =0; num <=255; num++){

DAC1 = num; //上锯齿送入1#DAC DAC2 = 255-num; //下锯齿送入2#DAC

DAOUT = num; //两路同时进行D/A转换输出 } } }

Y8Y7Y6Y5Y8Y7Y6Y5

六、编程分析题:

1、单片机控制单灯闪烁。 #include

void delay(unsigned char k); sbit p1_0=P1^0; main()

C130pF1941550t1550%7U1X1CRYSTALXTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0393837363534333221222324252627281011121314C230pF18XTAL29C322uFRSTR11k293031PSENALEEAR2220D1LED-RED12345P1.0P1.1P1.2P1.3P1.4{ while(1) { p1_0=0; delay(200); p1_0=1; delay(200); }}

void delay(unsigned char k) { unsigned char i,j; for(i=0;i<255;i++) for(j=0;j

2:如下图,编程实现开关控制 LED

说明:开关 S1 和 S2 分别控制 LED1 和 LED2 #include sbit S1=P1^0; sbit S2=P1^1; sbit LED1=P0^0; sbit LED2=P0^1; void main() { while(1)

{ LED1=S1; LED2=S2; } }

3:如下图,编程实现8个发光二极管先按状态1的形式点亮,经过一段时间延时,再按状态2的形式点亮,点亮形式见下表 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1口引脚 灭 亮 灭 亮 灭 亮 灭 亮 对应灯的状态1 对应灯的状态2 亮 灭 #include void delay( unsigned int time) { unsigned int j = 0; for(; time>0;time--) for( j=0;j<125;j++); }

void main( ) { while(1)

{ P1=0xaa;

亮 灭 亮 灭 亮 灭 C130pFX1CRYSTALU1C2D1LED-REDD29LED-REDD3RST30pF18XTAL219XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617R10C310k293031PSENALEEALED-REDD422uFLED-REDD5U2:A18161412Y0Y1Y2Y3A0A1A2A3OE2468112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51A0A1A2A3OE1113151719LED-REDD6LED-REDD7975374LS240U2:BY0Y1Y2Y3LED-REDD8LED-REDR81kR71kR61kR51kR41kR31kR21kR11k74LS240


C51语言复习题参考答案88(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:MegaCli 命令使用指南

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: