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
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
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