麻烦大神帮我设计三个单片机的程序。

1、时钟计时器的设计
本设计使用数码管和单片机内部的定时器来实现分和秒的动态显示功能。动态显示,也称扫描显示。显示器由4个共阴极LED数码管构成,用来显示分和秒。单片机的P0口输出段码数据, P2.0~P2.3作列扫描输出。请查找设计所需相关的硬件资料,设计电路图并编写相关程序。

2、八路数显抢答器的设计
用9个按键供8路抢答,可显示1~8,采用共阴LED显示。请查找设计所需相关的硬件资料,设计电路图并编写相关程序。

3、点阵显示的设计
采用16×32点阵显示,显示学号。请查找设计所需相关的硬件资料,设计电路图并编写相关程序。
对不起,没有说清楚,是要用8051芯片写的单片机程序,不是C语言哦。麻烦大神了

第1个回答  2013-06-03
//第1题 :时钟计时器的设计
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
uchar c=0;
uint s=555;
sbit m1=P2^0;sbit m0=P2^1;sbit s1=P2^2;sbit s0=P2^3;
delay(uint i){while(i--);}
uchar code LEDcode[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
uchar idata buf[4];
display(){
 P0=LEDcode[buf[0]]; m1=0;delay(50);m1=1;
 P0=LEDcode[buf[1]]; m0=0;delay(50);m0=1;
 P0=LEDcode[buf[2]]; s1=0;delay(50);s1=1;
 P0=LEDcode[buf[3]]; s0=0;delay(50);s0=1;
}
void timer0()interrupt 1{
 TL0=(65536-50000);
 TH0=(65536-50000)/0x100;
 c++;
 if(c==20){
  c=0;s++;
  if(s==100*60)s=0;//最大值100分种
 }
}
main(){
 TMOD=0x01;
 EA=ET0=TR0=1;
 while(1){
  buf[0]=(s/60)/10;
  buf[1]=(s/60)%10+10;
  buf[2]=(s%60)/10;
  buf[3]=(s%60)%10;
  display();
 }
}

/*
2、八路数显抢答器的设计
用9个按键供8路抢答,可显示1~8,采用共阴LED显示。
*/
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;
sbit k9=P3^7;
uchar code LEDcode[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
main(){
 bit f=0;
 P0=0;
 while(1){
  if(k9==0){f=1;P0=0; }
  if(f){
   if(k1==0){f=0;P0=LEDcode[1];}
   if(k2==0){f=0;P0=LEDcode[2];}
   if(k3==0){f=0;P0=LEDcode[3];}
   if(k4==0){f=0;P0=LEDcode[4];}
   if(k5==0){f=0;P0=LEDcode[5];}
   if(k6==0){f=0;P0=LEDcode[6];}
   if(k7==0){f=0;P0=LEDcode[7];}
   if(k8==0){f=0;P0=LEDcode[8];}
  }
 }
}

第3题:采用16×32点阵显示,显示学号。请查找设计所需相关的硬件资料,设计电路图并编写相关程序。

因字符太多,不能上传,只好传图片了。

追问

如果是用单片机8051芯片写的程序那是怎么样的?

追答

一样的
楼主?没反应了?