📄 pointdisplay.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 + -