77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2020-04-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

delay(500); P1=0x55; delay(500); } }

4:如下图,编程实现LED循环显示字符:“H” →“L” →“E”。 #include

char led_ mod[]={0x76,0x38,0x79}; //LED显示字模 void delay( unsigned int time) { unsigned int j = 0; for(; time>0;time--) for( j=0;j<200;j++); }

void main(void) { char i=0; while(1)

{for(i=0;i<=2;i++) { P0=led_mod[i]; delay(500); } }}

5、开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯保持到按压其它键时为止。 #include

R5R6R7R8void main() {

U1 char key = 0; P2=0; while(1){

key = ~P0 & 0x0f; //读取按键状态 D1 if (key != 0) P2 = key; //显示到led D2 }

D3}

D4

6、在P0口连接一个共阴极数码管,使之循环显示0~9数字。 #include //包括一个51标准内核的头文件 char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //LED显示字模 void delay(unsigned int time) { unsigned int j = 0; C2C130PFX130PFU1 for(;time>0;time--) 1939XTAL1P0.0/AD038P0.1/AD137 for(j=0;j<125;j++); P0.2/AD2CRYSTAL1836XTAL2P0.3/AD335P0.4/AD434} P0.5/AD5C333P0.6/AD6932RSTP0.7/AD7void main(void) { 2110uF1k1k1k1k19XTAL118XTAL29RSTP0.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/A15393837363534333221222324252627281011121314151617293031PSENALEEALED-YELLOW12345678LED-YELLOWP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDLED-YELLOWLED-YELLOW80C51+5VR1100R2100R3100R4100R110k293031PSENALEEAP2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15222324252627281011121314151617R3R4R5R6R7R8R9220220.22022022022012345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WR char i = 0;

while(1){ for(i=0;i<=9;i++) { P0=led_mod[i]; delay(500); } } }

7、设计一个开关控制报警器:用K1开关控制报警器,程序控制P1.0输出两种不同频率的声音,模拟很逼真的报警效果.

C2C1#include

22uF1930pF#define uchar unsigned char XTAL1X1CRYSTALC318sbit SPK=P1^0; XTAL2R11k30pFsbit K1=P1^7; 9RSTvoid Alarm(uchar t) //发声函数

29{ uchar i,j; PSEN30ALE31EA for(i=0;i<200;i++) //循环次数控制音频的持续时间 LS11 { SPK=~SPK; P1.02P1.13P1.24 for(j=0;j

void main() { SPK=0; while(1)

{ if(K1==1) { Alarm(90); Alarm(150); } } }

8、设单片机的fosc=12MHz,采用T0定时方式1在P1.0脚上输出周期为2ms的方波。 分析:1ms定时的计数初值应为:

a = 216 – t* fos / 12 = 216 – 1000* 12/ 12 = 64536 = 0xfc18 TH0 = 0xfc TL0 = 0x18 ① 查询法:

U?#include 19XTAL1sbit P1_0=P1^0;

18XTAL2void main (void) {

TMOD = 0x01; //T0定时方式1 9RST TR0=1; //启动T0 for( ; ; )

29PSEN30ALE{ TH0 = 0xfc; //装载计数初值 31EA TL0 = 0x18;

while(!TF0); //查询等待TF0复位 1AP1.02P1.13 P1_0 =!P1_0; //定时时间到P1.0反相 BP1.24P1.35CP1.4 TF0 = 0; //软件清TF0 6P1.57DP1.6 }} 8P1.780C51P0.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/RD393837363534333221222324252627281011121314151617U180C51P0.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/RD393837363534333221222324252627281011121314151617②中断法:

#include sbit P1_0=P1^0;

timer0 () interrupt 1 //T0中断函数 { P1_0 = !P1_0; //P1.0取反 TH0 = 0xfc; //装载计数初值 TL0 = 0x18; }

main ()

{ TMOD = 0x01; //T0定时方式1 TH0 = 0xfc; //装载计数初值 TL0 = 0x18; EA=1; //开总中断 ET0=1; //开T0中断 TR0=1; //启动T0

while(1); }

9、使用T1,分别用工作方式1、方式2 、方式0实现1s延时函数,晶振频率为12M.

C130pFX1CRYSTALC310uFR110k

10、程序运行开始时先显示“00”,随后显示数值逐渐增大。待计数到59后,自动从“00”开始。

//定时中断方式实现的电子秒表

#include //51头文件

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

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; timer0() interrupt 1{ //定时器0中断函数 TR0=0;

TH0 =0x3c; //初值重装载 TL0 =0xb0;

t++; //中断次数增1

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

if(second==60) second=0; //若秒计数器=60,清零 P0=table[second/10]; //P0口输出显示 P2=table[second]; //P2口输出显示 TR0=1; }

main(){

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

P0=table[second/10]; //P0口输出显示 P2=table[second]; //P2口输出显示 TR0=1; //启动定时器

ET0=1; //打开定时器0中断 EA=1; //打开总中断 while(1){} //主程序循环 } C1C2C2 30pF30pFX1U1R2-R7/1k U11939XTAL1P0.0/AD038P0.1/AD137P0.2/AD2CRYSTAL 1836XTAL2P0.3/AD335P0.4/AD434P0.5/AD5C3 33P0.6/AD6932RSTP0.7/AD7 2110uFR1P2.0/A830pF19XTAL118XTAL29RSTP0.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.6PULLUP293031PSENALEEAP2.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.6P2.0P2.1P2.2P2.3P2.4P2.5P2.6R2220D1LED-YELLOW10k293031PSENALEEAP2.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/RD22232425262728101112131415161712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDLED1LED212345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

第10题图 第11题图 11、定时器控制单只LED(说明:LED在定时器的控制下不断闪烁,闪烁间隔时间为1S )。 ①查询方法: ②中断方法: #include #include sbit LED=P0^0; unsigned char T_Count=0; void main() sbit LED=P0^0; { unsigned char i; void main() //定时器0工作方式1 { TMOD=0x01; //定时器0工作方式1 TMOD=0x01; TH0=0xec; //5ms定时设初值 TR0=1; TL0=0x78; while(1) //允许T0中断 { IE=0x82; } //1s定时 TR0=1; for(i=0;i<200;i++) while(1); { TH0=0xec; } TL0=0x78; //T0中断函数 while(!TF0); TF0=0; void LED_Flash() interrupt 1 } { TH0=0xec; //恢复初值 TL0=0x78; LED=~LED; if(++T_Count==200) //1s开关一次LED } } { LED=~LED; T_Count=0;

}}

12、 利用T0的计数功能,对按下按键的次数计数,显示在数码管上。一通电,数码管显示“00” 。 #include

unsigned char code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char count=0; //计数器赋初值 RP1sbit p1_0=P1^0; RESPACK-7

VCCint0_srv () interrupt 1{ //T0中断函数

U1 if(++count==100) count=0; //判断循环是否超限 LED1a1939XTAL1P0.0/AD0b38 P0=table[count/10]; //显示十位数 P0.1/AD1c37P0.2/AD2d1836XTAL2P0.3/AD3e35 P2=table[count]; //显示个位数 P0.4/AD4f34P0.5/AD5g33P0.6/AD6932} RSTP0.7/AD7a21P2.0/A8b22 P2.1/A9c23P2.2/A10d2924PSENP2.3/A11e3025main(){ ALEP2.4/A12f312612345678LED2EA80C5112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.5/A13P2.6/A14P2.7/A1527281011121314151617gP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDBUT

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C51语言复习题参考答案88(4)在线全文阅读。

C51语言复习题参考答案88(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/975455.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: