C语言100题 下载本文

6.答:#include

unsigned char i,j; main() {

EA=1; ET0=1; ET1=1; TR0=1; TR1=1; TMOD=0x51; IP=0x0A;

TH0=(65536-1000)/256; TL0=(65536-1000)%6; TH1=(65536-100)/256; TL1=(65536-100)%6; while(1); }

void timer(void) interrupt 1

using 1

{ i++;

if(i==20) { i=0; }

TH0=(65536-1000)/256; TL0=(65536-1000)%6; }

void timer2(void) interrupt 3

using 2

{ j++; if(j==100) { j=0; }

TH1=(65536-100)/256; TL1=(65536-100)%6; }

7.答:设晶振频率为12MHZ,取基准时间为1ms。设P1.7=0时,进行报警;P1.7=1时,报警结束。

#include { unsigned char i,j; TH0=(65536-2000)/256; sbit p10=P1^0; TL0=(65536-2000)%6; sbit p37=P3^7; } bit flag=0; else main() { { TH0=(65536-1000)/256; EA=1; TL0=(65536-1000)%6; ET0=1; } TMOD=0x01; while(F0); F0=1; F0=1; while(1) } { } while(p37==0) } { void timer(void) interrupt 1 using 1 TR0=1; { if(flag==1) p10==~p10;

5

i++;

TH0=(65536-2000)/256; if(i==100) TL0=(65536-2000)%6; { } i=0; else F0=1;

{

flag=~flag; TH0=(65536-1000)/256; }

TL0=(65536-1000)%6; if(flag==1) } { }

8.答:因为晶振频率为24MHz,所以机器周期为0.5μs。

6

#include unsigned char i,j; sbit p37=P3^7; bit flag=0; main() {

EA=1; ET1=1; TMOD=0x50;

TH1=(65536-100)/256; TL1=(65536-100)%6; TR1=1; F0=1; while(1); }

void timer(void) interrupt 1 using 1 {

flag=~flag; if(flag==1) {

TMOD=0x01; P37=1;

TH1=(65536-10000*2)/256; TL1=(65536-10000*2)%6; } else {

TMOD=0x50; P37=0;

TH1=(65536-100)/256; TL1=(65536-100)%6; } }

第五 习题与思考题

1.简要叙述LED数码管的结构和分类。

2.解释下列术语:(1)静态显示(2)动态显示(3)位选,段选。 3.按下列要求编制数字0-9的LED数码管8段字段码表。 (1)共阴极逆序,小数点亮(即a高位); (2)共阳极逆序,小数点亮(即a高位)。

4.已知数字0-9存在数组a[10]中,现要求将数组a[10]中的数字依次转换成ASCII码之后

7

送LED数码管显示,请画出电路图并编写程序。

5.用89C2051设计接有5个共阴极数码管的动态显示接口电路,用BCD7段译码器CD4511作为LED数码管的字段控制,阴极用非门74LS04反向门驱动,字型选择由P1口提供,位选择由P3口控制。P1.7接开关,当开关拨向位置“1”时,显示“12345”字样,当开关拨向位置“2”时,显示“HELLO”字样,画出电路原理图并编写程序。

6.设计一60秒倒计时时钟电路,时间到,P3.7输出报警,画出电路原理图并编写程序。

习题与思考题

1、解释下列术语:(1)静态显示(2)动态显示(3)位选,段选。

答:(1)静态显示:静态显示方式是将各位的位选段连在一起接低电平(或高电平), 段选线分别与8位的锁存器相连。各位在显示时相互独立,而且每一位的显示字符一经确定,则相应的锁存器进行输出锁存,直到想显示另一个字符为止。

(2)动态显示:所谓的动态显示是 采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。

(3)位选是每个显示器的公共极COM(位选线)是各自独立地受I/0线独立控制,实现各个分时选通。

段选是把所有显示器的8个笔画段a-h同名端并联在一起,由一个8位I/O口控制,形成段选线的多路复用。

2、用89C2051设计接有5个共阴极数码管的动态显示接口电路,用74LS373接成直通方式作为驱动电路,阴极用非门74LS04反向门驱动,字型选择由P1口提供,位选择由P3口控制。P1.7接开关,当开关拨向位置“1”时,显示“12345”字样,当开关拨向位置“2”时,显示“HELLO”字样,画出电路原理图并编写程序。 答:#include

#define uchar unsigned char sbit P17=P1^7; main() {

uchar code tabl[5]={0x86,0xdb,0xef,0xe6,0xed}; uchar code tab2[5]={0xf8,0xf9,0xb8,0xb8,0xbf}; uchar i; uint j; while(1) {

8