• 大小: 46KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-05-23
  • 语言: 其他
  • 标签: 8255秒表  

资源简介

附有实验板原理图,主要是51单片机利用8255扩展IO口,利用8255接入独立按键,矩阵键盘,并有一个详细的秒表程序,秒表有开始(继续)、记录数据、查询数据、复位功能,四位数码管动态显示分秒,两个数码管通过串行输入显示秒的下一个单位。

资源截图

代码片段和文件信息

//程序名:KeyBoard_8255_Apply
//功能描述:1.开机后,按下OPEN(K12)显示HELLO-;
//2.按下RUN(K13)后,后两位开始计数00-99;
//3.按下STOP(K15)后,停止运行,继续显示HELLO- ;
//4.按下+1(K14)后,对四位数码管的最后一位做+1调整,0-9;
//硬件电路,J8中1,3短接,独立按键
//调用函数:Disp_HELLO();Disp_number();Disp_increment();
//Set_Init_Timer1();Delayx1ms(uint cout);
#include
#include
#define uchar unsigned char
#define uint  unsigned int
#define COM8255 XBYTE[0XFFFF]
#define PA8255  XBYTE[0XFFFC]
#define PB8255  XBYTE[0XFFFD]
#define PC8255 XBYTE[0XFFFE]
sbit P1_2 = P1^2;
sbit P1_1 = P1^1;
sbit P1_0 = P1^0;
sbit SLCK = P2^4;
//函数声明 
void Disp_HELLO();
void Disp_number();
void Set_Init_8255();
void Delayx1ms(uint count);
void Set_Init_Timer1();
void Disp_increment();
uchar code dis_HELL[]={0x890x860xc70xc7};     //四位数码管HELL
uchar code dis_number[]={0xfc0x600xda0xf20x660xb60xbe0xe00xfe0xf6}; //四位串并转换控制数码管0-9
uchar code dis_count[]={0xc00xf90xa40xb00x990x920x820xf80x800x900xff};//四位数码管0-9,
uchar number=0numberhnumberli=0j=0;
void main()
{
   Set_Init_Timer1();
  do{
       Set_Init_8255();
  switch(PB8255)
  {
    case       0xef:  Disp_HELLO(); break; //K12按下
case       0xdf:  TR1=1; Disp_number(); break; //K13按下
case       0xbf:  Disp_increment(); break; //K14按下
case       0x7f:  Disp_HELLO(); break; //K15按下

  }
    }while(1);
}
 void Set_Init_Timer1() //定时器1初始化
 {
   TMOD =0X10;    //Timer 1Moder 1
TH1  =0X3C;    //50ms定时
TL1  =0XB0;
EA   =1;
ET1  =1;
 }
 /*******************************************************/
 //函数名:Run_Timer1() interrupt 3 using 1
 //功能:利用定时器精确定时50ms
 //说明:定时器1中断服务程序
 /*******************************************************/
 Timer1_int() interrupt 3 using 1
 {
   static unsigned char count =0;
   TH1  =0X3C; //50ms定时
   TL1  =0XB0;
   count ++;
      if(count ==20)   //每秒时间到
  {
      number++;
  count =0;
  if(number==99)  
  {
    number=0;
  }
  }
 }
 /******************************************************/
 //函数名:Disp_HELLO();
 //功能:动态显示HELL串行口移位寄存器工作显示o-
 //调用函数   Delayx1ms(5)
 /******************************************************/
 void Disp_HELLO()
 { TR1=0;
   P1=0x7f; //四位数码管显示
   P2=dis_HELL[0];
   Delayx1ms(1); 
   P1=0xbf;
   P2=dis_HELL[1];
   Delayx1ms(1); 
   P1=0xdf;
   P2=dis_HELL[2];
   Delayx1ms(1); 
   P1=0xef;
   P2=dis_HELL[3];
   Delayx1ms(1); 

   SCON=0X00;  //串口方式0工作
   SBUF=0XFC;  //发送0字符
   while(! TI);
   TI=0;
   SLCK=0; 
   SLCK=1;    //产生上升沿,将74HC595存储器数据输出
   SBUF=0X02;  //发送- 字符
   while(! TI);
    TI=0;
   SLCK=0; 
   SLCK=1;    //产生上升沿,将74HC595存储器数据输出
   for(i=0;i<0xff;i++);//调整数码管显示效果
 }
 /************************************************************************/
 //函数名:void Delayx1ms(uint count);
 //功能:延时时间为1ms
 //输入参数,1ms计数
 //说明:总共延时时间为1ms x count
 /*********************************************************************/
void Delayx1ms(uint c)
{
  uint j;
  while(c--!=0)
  {
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4383  2014-07-24 15:39  实验板程序设计\8255 IO扩展.c
     文件        3384  2014-07-24 15:53  实验板程序设计\99s计时器.c
     文件      262551  2014-07-27 23:11  实验板程序设计\实验板(实用版).DSN
     文件        3723  2014-07-24 15:34  实验板程序设计\矩阵键盘.c
     文件        4333  2014-07-27 14:10  实验板程序设计\秒表.c
     目录           0  2014-07-29 10:43  实验板程序设计\

评论

共有 条评论

相关资源