⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pointdisplay.h

📁 C51单片机实现对PC键盘的读取与显示 具体细节请参考源程序 将时钟线接入外部中断 数据线接入普通I/O输入输出口
💻 H
字号:
/**********************************Copyright (c)*********************************
;**       文件名:       pointdisplay.h
;**       功能:         点阵显示头文件,在点阵模块上显示图形
;**       包含头文件:    at89x52.h    芯片功能模块定义
;**                      pointdata.h  点阵显示数据头文件
*********************************************************************************/ 
#include <at89x52.h>
#include "PointData.h"
//---------------------------------扫描位数组----------------------------------
const unsigned char Line_Control[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
unsigned char send_data[8];    //发送数据缓冲区
unsigned char ptr_send=0x00;   //发送数据指针     
unsigned char ptr_con1=0x00;   //扫描指针 
/*******************************************************
 名称:   显示数据模块
 功能:  将要显示的数据送到点阵模块显示
         P1_5 控制线  P1_6 数据线  P1_7 时钟线
 参数:  unsigned char s_bit   扫描列控制
         unsigned char s_data  显示数据
 返回值:无
*******************************************************/              
void DisplayData(unsigned char s_bit,unsigned char s_data)
{
   unsigned char m,n;
   P1_5=0x00;                 //拉低时钟线和控制线抑制发送
   P1_7=0x00;
   for(m=0;m<=7;m++)          //从低位到高位按位发送数据
   {                          
      P1_6=(s_bit<<m)&0x80;
      P1_7=0x01;              //拉高时钟线允许发送
      P1_7=0x00;              //拉低时钟线抑制发送
   }
   for(n=0;n<=7;n++)
   {
      P1_6=(s_data<<n)&0x80;
      P1_7=0x01;
      P1_7=0x00;
   }
   P1_5=0x01;                 //拉高控制线将移位寄存器送点阵显示
   P1_5=0x00;                 //拉底控制线锁存数据
}
/*******************************************************
 名称:   选取显示图形数据模块  
 功能:  选取显示图形对应的数据
 参数:  unsigned char *ptr     图形对应数组的数组名
 返回值:无
*******************************************************/
void ChoiceData(unsigned char *ptr) reentrant
{
   unsigned char temp;
   for(temp=0x00;temp<=0x07;temp++)
   {
       send_data[temp]=*(ptr+temp);
   }
}
/*******************************************************
 名称:   取数模块   
 功能:  依次从数组中取出要显示的数据
 参数:  无
 返回值:unsigned char setdata    要显示的数据
*******************************************************/
unsigned char LeftSet(void)
{
   unsigned char setdata;
   if(ptr_send<=7)
   {
     setdata=send_data[ptr_send];
     ptr_send++;
   }
   else
   {
     setdata=send_data[0];
     ptr_send=0x01;
   }
   return setdata;                     //返回取得的数据
}
/*******************************************************
 名称:   扫描控制
 功能:  控制扫描的列
 参数:  无
 返回值:unsigned char setbit  当前扫描的列
*******************************************************/
unsigned char LineScan(void)
{
   unsigned char setbit;
   if(ptr_con1<=7)
   {
     setbit=Line_Control[ptr_con1];
     ptr_con1++;
   }
   else
   {
     setbit=Line_Control[0];
     ptr_con1=0x01;
   }
   return setbit;                       //返回扫描的列
}
/*******************************************************
 名称:   定时器中断服务模块  
 功能:  显示图形
 参数:  无
 返回值:无
*******************************************************/
void TimerOver(void) interrupt 1  //定时器/计数器0中断服务程序
{
   DisplayData(LineScan(),LeftSet());  //显示点阵数据
   TL0=0xB0;                           //重置定时器初值
   TH0=0xFC;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -