蓝桥杯单片机官方代码——头文件“们” 基础篇

1.定时器头文件

"tim.h"代码: 

​
#ifndef __TIM_H 
#define __TIM_H 
#include "STC15F2K60S2.H" 
 
void Cls_Peripheral(void); //关闭外设
void Led_Disp(unsigned char ucLed); //LED显示
void Timer1Init(void); //定时器函数
#endif 

​

 "tim.c"代码:

#include "tim.h" 
// 关闭外设 
void Cls_Peripheral(void) 
{ // IO 模式(J13-2 和 J13-3 相连) 
 P0 = 0xFF; 
 P2 = P2 & 0x1F | 0x80;// 定位 Y4C 
 P2 &= 0x1F; 
 P0 = 0; 
 P2 = P2 & 0x1F | 0xA0; // 定位 Y5C 
 P2 &= 0x1F; //  
//XBYTE[0x8000] = 0xFF; // MM 模式(J13-2 和 J13-1 相连) 
//XBYTE[0xA000] = 0; 
} 

void Led_Disp(unsigned char ucLed) 
{ // IO 模式(J13-2 和 J13-3 相连) 
 P0 = ~ucLed; 
 P2 = P2 & 0x1F | 0x80; // 定位 Y4C 
 P2 &= 0x1F; // 
//XBYTE[0x8000] = ~ucLed; // MM 模式(J13-2 和 J13-1 相连) 
} 

void Timer1Init(void) // 1 毫秒定时器@12.000MHz 
{ 
 AUXR &= 0xBF; 
 TMOD &= 0x0F; 
 TL1 = 0x18; 
 TH1 = 0xFC; 
 TF1 = 0; 
 TR1 = 1; 
 ET1 = 1;
 EA = 1; 
} 

 2.数码管显示头文件

 “Seg.h"代码:

#ifndef __SEG_H 
#define __SEG_H 
#include "STC15F2K60S2.H" 
 
void Seg_Tran(unsigned char *pucSeg_Buf, unsigned char *pucSeg_Code); 
void Seg_Disp(unsigned char *pucSeg_Code, unsigned char ucSeg_Pos); 
#endif 

  “Seg.c"代码:

#include "seg.h" 
// 显示切换 
void Seg_Tran(unsigned char *pucSeg_Buf, unsigned char *pucSeg_Code) 
{ 
 unsigned char i, j=0, temp; 
 
 for(i=0; i<8; i++, j++) 
 { 
 switch(pucSeg_Buf[j]) 
 { // 低电平点亮段,顺序为[dp g f e d c b a] 
 case '0': temp = 0xc0; break; 
 case '1': temp = 0xf9; break; 
 case '2': temp = 0xa4; break; 
 case '3': temp = 0xb0; break; 
 case '4': temp = 0x99; break; 
 case '5': temp = 0x92; break; 
 case '6': temp = 0x82; break; 
 case '7': temp = 0xf8; break; 
 case '8': temp = 0x80; break; 
 case '9': temp = 0x90; break; 

 

 case 'A': temp = 0x88; break; 
 case 'B': temp = 0x83; break; 
 case 'C': temp = 0xc6; break; 
 case 'D': temp = 0xA1; break; 
 case 'E': temp = 0x86; break; 
 case 'F': temp = 0x8E; break; 
 case 'H': temp = 0x89; break; 
 case 'L': temp = 0xC7; break; 
 case 'N': temp = 0xC8; break; 
 case 'P': temp = 0x8c; break; 
 case 'U': temp = 0xC1; break; 
 case '-': temp = 0xbf; break; 
 case ' ': temp = 0xff; break; 
 default: temp = 0xff; 
 } 
 if(pucSeg_Buf[j+1] == '.') 
 { 
 temp = temp&0x7f; 
 j++; 
 } 
 pucSeg_Code[i] = temp; 
 } 
} 
// 数码管显示 
void Seg_Disp(unsigned char *pucSeg_Code, unsigned char ucSeg_Pos) 
{ 
 P0 = 0xff; 
 P2 = P2 & 0x1F | 0xE0; // 定位 Y7C 
 P2 &= 0x1F; 
 P0 = 1<<ucSeg_Pos; // 位选 
 P2 = P2 & 0x1F | 0xC0; // 定位 Y6C 
 P2 &= 0x1F; // 
 P0 = pucSeg_Code[ucSeg_Pos]; 
 P2 = P2 & 0x1F | 0xE0; // 定位 Y7C 
 P2 &= 0x1F; 
}

3.矩阵键盘头文件

 “Key.h"代码:

#ifndef __KEY_H 
#define __KEY_H 
#include "STC15F2K60S2.H" 
 
unsigned char Key_Read(void); 
#endif 

 “Key.c"代码: 

#include "key.h" 
 
unsigned char Key_Read(void) 
{ 
 unsigned int Key_New; 
 unsigned char Key_Val; 
 
 P44 = 0; P42 = 1; P35 = 1; P34 = 1; // 第 1 行 
 Key_New = P3; 
 P44 = 1; P42 = 0 // 第 2 行 
 Key_New = (Key_New<<4) | (P3&0x0f); 
 P42 = 1; P35 = 0; // 第 3 行 
 Key_New = (Key_New<<4) | (P3&0x0f); 
 P35 = 1; P34 = 0; // 第 4 行 
 Key_New = (Key_New<<4) | (P3&0x0f); 
 
 switch(~Key_New) 
 { 
 case 0x8000: Key_Val = 4; break; // S4 
 case 0x4000: Key_Val = 5; break; // S5 
 case 0x2000: Key_Val = 6; break; // S6 
 case 0x1000: Key_Val = 7; break; // S7 
 case 0x0800: Key_Val = 8; break; // S8 
 case 0x0400: Key_Val = 9; break; // S9 
 case 0x0200: Key_Val = 10; break; // S10 
 case 0x0100: Key_Val = 11; break; // S11 
 case 0x0080: Key_Val = 12; break; // S12 
 case 0x0040: Key_Val = 13; break; // S13 
 case 0x0020: Key_Val = 14; break; // S14 
 case 0x0010: Key_Val = 15; break; // S15 
 case 0x0008: Key_Val = 16; break; // S16 
 case 0x0004: Key_Val = 17; break; // S17 
 case 0x0002: Key_Val = 18; break; // S18 
 case 0x0001: Key_Val = 19; break; // S19 
 default: Key_Val = 0; 
 } 
 return Key_Val; 
} 

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值