自定义MacroWord格式文档下载.docx

上传人:b****4 文档编号:16644947 上传时间:2022-11-25 格式:DOCX 页数:23 大小:21.05KB
下载 相关 举报
自定义MacroWord格式文档下载.docx_第1页
第1页 / 共23页
自定义MacroWord格式文档下载.docx_第2页
第2页 / 共23页
自定义MacroWord格式文档下载.docx_第3页
第3页 / 共23页
自定义MacroWord格式文档下载.docx_第4页
第4页 / 共23页
自定义MacroWord格式文档下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

自定义MacroWord格式文档下载.docx

《自定义MacroWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《自定义MacroWord格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。

自定义MacroWord格式文档下载.docx

//和上面的参数一起混的,犯规---这两个的用法在后面体现

#defineREADY0x7e

自定义数据类型

typedefunsignedcharByte;

//一个字节

typedefunsignedintWord;

//一个字,两个字节

typedefbitBool;

//模仿布尔型变量

//typedefsbitPort;

//本想用自定义一个端口类型的变量,比较方便,但是这句话步知道为何通不过编译

定义MAX7219寄存器

#defineREG_NO_OP0x00 

//定义空操作register

#defineDIG_10x01 

//定义数码管1register

#defineDIG_20x02 

//定义数码管2register

#defineDIG_30x03 

//定义数码管3register

#defineDIG_40x04 

//定义数码管4register

#defineDIG_50x05 

//定义数码管5register

#defineDIG_60x06 

//定义数码管6register

#defineDIG_70x07 

//定义数码管7register

#defineDIG_80x08 

//定义数码管8register

#defineREG_DECODE0x09 

//定义解码控制register

#defineREG_INTENSITY0x0a 

//定义显示亮度register

#defineREG_SCAN_LIMIT0x0b 

//定义扫描限制register

#defineREG_SHUTDOWN0x0c 

//定义"

shutdown"

模式register

#defineREG_DISPLAY_TEST0x0f//定义"

displaytest"

#defineINTENSITY_MIN0x00 

//定义最低显示亮度

#defineINTENSITY_MAX0x0f 

//定义最高显示亮度

/*********************************************************************

定义硬件引脚连接

**********************************************************************/

sbitDATA=P2^0;

//MAX7219的数据口

sbitLOAD=P2^1;

//MAX7219的锁存端口

sbitCLK=P2^2;

//MAX7219的时钟端口

//sbitHOST_SWITCH=P0^0;

//主持人开关的接口

sbitHOST_START=P0^0;

//主持人按键,用来重新开始的按键start

sbitHOST_CANCEL=P0^1;

//主持人用来取消抢答的按键 

clear

sbitSWITCH1_3=P1^4;

//调节倒计时时间的拨码开关,下划线前面的号代表开关的序号,下划线后面的号代表该开关的数值

sbitSWITCH2_2=P1^5;

//同上

sbitSWITCH3_2=P1^6;

sbitSWITCH4_1=P1^7;

sbitBEEP=P0^7;

//定义蜂鸣器端口

sbitLS138_C=P2^4;

//定义译码器输入端

sbitLS138_B=P2^5;

//同上 

sbitLS138_A=P2^6;

//同上

sbitLS138_E1=P2^7;

//定义译码器使能端

定义全局变量

BytedataintrCounter;

//计时器中断次数

BytedatabeginNum;

//开始倒计时的时间

BytedatacounterBack;

//将中断次数放在里面以备后用

BytedatashowNum;

//数码管正在显示的时间

BooldataisStart;

//是否开始抢答

BooldataisFoul;

//是否犯规

BooldataisPressed;

//是否有抢答的键按下

Bytedatanumber_temp;

//用来记录P1口上次状态的一个变量

codeunsignedcharC51BOX2[3]_at_0x43;

/***********************************************************************

共阴极七段数码管显示对应段查询表(数字0-9分别对应code_table[0]-[9])

***********************************************************************/

Bytecodecode_table_zheng[10]=

{0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};

Bytecodecode_table[10]=

{0x01,0x4f,0x12,0x06,0x4c,0x24,0x20,0x0f,0x00,0x04};

函数声明

voidMAX7219_SendByte(Bytedataout);

voidMAX7219_Write(Bytereg_number,Bytedataout);

voidMAX7219_DisplayChar(Bytedigit,Bytecharacter);

voidMAX7219_Clear(void);

voidMAX7219_SetBrightness(Bytebrightness);

voidMAX7219_DisplayTestStart(void);

voidMAX7219_DisplayTestStop(void);

voidMAX7219_ShutdownStart(void);

voidMAX7219_ShutdownStop(void);

voidMAX7219_Init(void);

voidDelay10ms(void);

BoolGetHostStartKey(void);

BoolGetHostCancelKey(void);

voidGetCounter(void);

ByteGetPressed(ByteKeyState);

voidIT0_Init(void);

voidTimer0_Overflow();

voidPressedHandle(BytekeyPressed);

voidGetOrFoulHandle(Boolstate);

voidCancelHandle();

voidSPEAKER_count(void);

//声明倒计时声音函数

voidSPEAKER_start(void);

//声明开始抢答声音函数

voidSPEAKER_get(void);

//声明抢到声音函数

voidSPEAKER_foul(void);

//声明犯规声音函数

*MAX7219_SendByte()

*

*描述:

向MAX7219传送一个字节的数据

*Arguments:

dataout=datatosend

*Returns:

none

*************************************************************************/

voidMAX7219_SendByte(Bytedataout)

{

Bytei;

for(i=8;

i>

0;

i--)

Bytemask=1<

<

(i-1);

//mask是个掩码,取位使用

CLK=0;

//MAX7219的位传入是在时钟的上升沿之前,所以在每发一位之前都要变为低电平

if(dataout&

mask)

DATA=1;

else

DATA=0;

CLK=1;

//八个bit都传递完成后变为高电平,锁存

}

*MAX7219_Write()

向MAX7219写命令

reg_number=registertowriteto

*dataout=datatowritetoMAX7219

未完~

***************************************************************************/

voidMAX7219_Write(Bytereg_number,Bytedataout)

LOAD=0;

//也是锁存上升沿之前的,发这两个字节之前要变为低电平

MAX7219_SendByte(reg_number);

//发送寄存器地址

MAX7219_SendByte(dataout);

//发送数据

LOAD=1;

//变为高电平,锁存

/**************************************************************************

*MAX7219_DisplayChar()

使某一位显示一个数字

digit=digitnumber(0-7)

*character=charactertodisplay(0-9,A-Z)

**************************************************************************/

voidMAX7219_DisplayChar(Bytedigit,Bytecharacter)

MAX7219_Write(digit,character);

*MAX7219_Clear()

清除所有位的显示

voidMAX7219_Clear(void)

Bytei;

for(i=1;

i<

=2;

i++)

MAX7219_Write(i,CLEAR);

//把八个数码管全都清零了,已经写反了^_^

*MAX7219_SetBrightness()

设置数码管显示亮度

brightness(0-15)

voidMAX7219_SetBrightness(Bytebrightness)

brightness&

=0x0f;

MAX7219_Write(REG_INTENSITY,brightness);

*MAX7219_DisplayTestStart()

进入test模式

voidMAX7219_DisplayTestStart(void)

MAX7219_Write(REG_DISPLAY_TEST,1);

*MAX7219_DisplayTestStop()

退出test模式

voidMAX7219_DisplayTestStop(void)

MAX7219_Write(REG_DISPLAY_TEST,0);

*MAX7219_ShutdownStart()

进入shutdown模式

voidMAX7219_ShutdownStart(void)

MAX7219_Write(REG_SHUTDOWN,0);

*MAX7219_ShutdownStop()

退出shutdown模式

voidMAX7219_ShutdownStop(void)

MAX7219_Write(REG_SHUTDOWN,1);

*MAX7219_Init()

*Description:

MAX7219初始化模块;

应该先于其他MAX7219函数而被调用

voidMAX7219_Init(void)

MAX7219_Write(REG_SCAN_LIMIT,1);

//这里设置的是扫描两个数码管

MAX7219_Write(REG_DECODE,0x00);

MAX7219_SetBrightness(INTENSITY_MAX);

//设置最大亮度显示

MAX7219_DisplayTestStart();

MAX7219_DisplayTestStop();

MAX7219_ShutdownStop();

MAX7219_Clear();

*Delay_100us()

延时100us,主要用在消除开关抖动时

voidDelay10ms(void)

unsignedchari,j;

for(i=20;

for(j=248;

j>

j--);

*GetHostStartKey()

取得主持人开始按键的键值

1-->

主持人按键;

0-->

主持人未按键

BoolGetHostStartKey(void)

if(HOST_START==1)

return0;

else

Delay10ms();

//如果发现主持人按键接通,要先延时100us,防止抖动

if(HOST_START==1)

else

return1;

//延时时候还是接通,则判断为该键确实按下

*GetHostCancelKey()

取得主持人取消按键的键值

BoolGetHostCancelKey(void)

if(HOST_CANCEL==1)

*GetCounter

*Descriptio

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1