目录
10.光照值小于20,蜂鸣器发1.2khz频率声音。光照值大于100,蜂鸣器发2khz频率声音
1.Display:在数码管指定位置显示指定内容
编写程序,在数码管显示" 12HL-21"
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 , 0x7f , 0x6f,
0 1 2 3 4 5 6 7 8 9
0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71 , 0x3d ,
a b c d e f g
0x76 , 0x0f , 0x0e , 0x75 , 0x38 , 0x37, 0x54
h i j k l m n
0x5c , 0x73 , 0x67 , 0x31 , 0x49 , 0x78
o p q r s t
0x3e , 0x1c , 0x7e , 0x64 , 0x6e , 0x59
u v w x y z
#include "STC15F2K60S2.H" //±ØÐë¡£
#include "sys.H" //±ØÐë¡£
#include "displayer.H"
code unsigned long SysClock=11059200; //±ØÐë¡£¶¨Òåϵͳ¹¤×÷ʱÖÓƵÂÊ(Hz)£¬Óû§±ØÐëÐ޸ijÉÓëʵ¼Ê¹¤×÷ƵÂÊ£¨ÏÂÔØʱѡÔñµÄ£©Ò»ÖÂ
#ifdef _displayer_H_ //ÏÔʾģ¿éÑ¡ÓÃʱ±ØÐë¡££¨ÊýÂë¹ÜÏÔʾÒëÂë±í£¬ÓÑô¿ÉÐ޸ġ¢Ôö¼ÓµÈ£©
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x76,0x38,0x40, 0x5b, 0x06,
/* ÐòºÅ: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
/* ÏÔʾ: 0 1 2 3 4 5 6 7 8 9 (ÎÞ) ÏÂ- ÖÐ- ÉÏ- ÉÏÖÐ- ÖÐÏÂ- */
0x3f|0x80,0x06|0x80,0x5b|0x80,0x4f|0x80,0x66|0x80,0x6d|0x80,0x7d|0x80,0x07|0x80,0x7f|0x80,0x6f|0x80 };
/* ´øСÊýµã 0 1 2 3 4 5 6 7 8 9 */
#endif
void my100mS_callback()
{
unsigned char a;
if( a != 0) a=a<<1;
else a=0x01;
LedPrint(a);
}
void main()
{
DisplayerInit();
SetDisplayerArea(0,7);
Seg7Print(10,1,2,11,12,13,2,1);
//SetEventCallBack(enumEventSys100mS, my100mS_callback);
MySTC_Init();
while(1)
{ MySTC_OS();
}
}
2.蜂鸣器:开机后发出指定频率的声音
开机后发出1.2kHZ 1.8s的声音
(1) BeepInit():蜂鸣器模块驱动函数
(2) Set_Beep(unsigned int Beep_freq, unsigned char Beep_time):控制蜂鸣器发声,非阻塞型;
函数参数:
Beep_freq:指定发声频率,单位Hz。小于<10 Hz, 不发音
Beep_time:指定发声时长。发声时长=10*Beep_time (mS) ,最长 655350mS
#include "STC15F2K60S2.H" //±ØÐë¡£
#include "sys.H" //±ØÐë¡£
#include "displayer.H"
#include "key.H"
#include "beep.H"
code unsigned long SysClock=11059200;
void main()
{
BeepInit();
SetBeep(1200,180);
MySTC_Init();
while(1)
{ MySTC_OS();
}
}
3.开机后A调,每分钟100拍,播放1、2、3、4、5
#include "STC15F2K60S2.H" //±ØÐë¡£
#include "sys.H"
#include "music.H"
#include "beep.H"
#include "displayer.H"
code unsigned long SysClock=11059200; //±ØÐë¡£¶¨Òåϵͳ¹¤×÷ʱÖÓƵÂÊ(Hz)£¬Óû§±ØÐëÐ޸ijÉÓëʵ¼Ê¹¤×÷ƵÂÊ£¨ÏÂÔØʱѡÔñµÄ£Ò»ÖÂ
#ifdef _displayer_H_ //??????????(????????,?????????)
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x76,0x38,0x40, 0x5b, 0x06,
/* ??: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
/* ??: 0 1 2 3 4 5 6 7 8 9 (?) ?- ?- ?- ??- ??- */
0x3f|0x80,0x06|0x80,0x5b|0x80,0x4f|0x80,0x66|0x80,0x6d|0x80,0x7d|0x80,0x07|0x80,0x7f|0x80,0x6f|0x80 };
/* ???? 0 1 2 3 4 5 6 7 8 9 */
#endif
unsigned char scale=0x21;
void my10mS_callback()
{
PlayTone(0xfa, 100 ,scale, 0x10);
scale=scale+1;
if(scale==0x26) scale=0x21;
}
void main()
{
DisplayerInit();
BeepInit();
MusicPlayerInit();
SetDisplayerArea(0,7);
Seg7Print(10,10,10,10,10,10,10,10);
LedPrint(0);
SetEventCallBack(enumEventSys100mS, my10mS_callback);
MySTC_Init();
while(1)
{ MySTC_OS();
}
}
4.步进电机。2号电机正转100步(速度:每秒十步)
#include "STC15F2K60S2.H" //±ØÐë¡£
#include "sys.H" //±ØÐë¡£
#include "displayer.H"
#include "StepMotor.H"
//code unsigned long SysClock=11059200; //±ØÐë¡£¶¨Òåϵͳ¹¤×÷ʱÖÓƵÂÊ(Hz)£¬Óû§±ØÐëÐ޸ijÉÓëʵ¼Ê¹¤×÷ƵÂÊ£¨ÏÂÔØʱѡÔñµÄ£©Ò»ÖÂ
code unsigned long SysClock=11059200; //±ØÐë¡£¶¨Òåϵͳ¹¤×÷ʱÖÓƵÂÊ(Hz)£¬Óû§±ØÐëÐ޸ijÉÓëʵ¼Ê¹¤×÷ƵÂÊ£¨ÏÂÔØʱѡÔñµÄ£©Ò»ÖÂ
#ifdef _displayer_H_ //ÏÔʾģ¿éÑ¡ÓÃʱ±ØÐë¡££¨ÊýÂë¹ÜÏÔʾÒëÂë±í£¬ÓÑô¿ÉÐ޸ġ¢Ôö¼ÓµÈ£©
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x38,0x40,0x00, 0x5b, 0x06,
/* ÐòºÅ: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
/* ÏÔʾ: 0 1 2 3 4 5 6 7 8 9 (ÎÞ) ÏÂ- ÖÐ- ÉÏ- ÉÏÖÐ- ÖÐÏÂ- */
0x3f|0x80,0x06|0x80,0x5b|0x80,0x4f|0x80,0x66|0x80,0x6d|0x80,0x7d|0x80,0x07|0x80,0x7f|0x80,0x6f|0x80 };
/* ´øСÊýµã 0 1 2 3 4 5 6 7 8 9 */
#endif
void main()
{
DisplayerInit();
StepMotorInit();
SetDisplayerArea(0,7);
Seg7Print(10,10,10,10,10,10,10,10);
SetStepMotor(enumStepMotor2,0x0a,100);
MySTC_Init();
while(1)
{ MySTC_OS();
}
}
5.按键。按下k1,数码管灯显示“H”,松开后灭掉。
#include "STC15F2K60S2.H" //±ØÐë¡£
#include "sys.H" //±ØÐë¡£
#include "displayer.H"
#include "key.H"
#include "beep.H"
code unsigned long SysClock=11059200; //±ØÐë¡£¶¨Òåϵͳ¹¤×÷ʱÖÓƵÂÊ(Hz)£¬Óû§±ØÐëÐ޸ijÉÓëʵ¼Ê¹¤×÷ƵÂÊ£¨ÏÂÔØʱѡÔñµÄ£©Ò»ÖÂ
#ifdef _displayer_H_ //ÏÔʾģ¿éÑ¡ÓÃʱ±ØÐë¡££¨ÊýÂë¹ÜÏÔʾÒëÂë±í£¬ÓÑô¿ÉÐ޸ġ¢Ôö¼ÓµÈ£©
code char decode_table[]={0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x6f,0x00,0x08,0x40,0x01, 0x41, 0x48,
/* ÐòºÅ: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
/* ÏÔʾ: 0 1 2 3 4 5 6 7 8 9 (ÎÞ) ÏÂ- ÖÐ- ÉÏ- ÉÏÖÐ- ÖÐÏÂ- */
0x3f|0x80,0x06|0x80,0x5b|0x80,0x4f|0x80,0x66|0x80,0x6d|0x80,0x7d|0x80,0x07|0x80,0x7f|0x80,0x6f|0x80 };
/* ´øСÊýµã 0 1 2 3 4 5 6 7 8 9 */
#endif
char a;
void myKey_callback()
{
char k;
//SetBeep(1000,10);
k=GetKeyAct(enumKey1);
if( k == enumKeyPress )
{
SetDisplayerArea(0,7);
Seg7Print(10,10,10,10,10,10,10,8);
//a |=0x01;
}
else if( k == enumKeyRelease ) Seg7Print(10,10,10,10,10,10,10,10);
//k=GetKeyAct(enumKey2);
//if( k == enumKeyPress ) a |=0x02;
// else if( k == enumKeyRelease ) a &=~0x02;
//k=GetKeyAct(enumKey3);
//if( k == enumKeyPress ) a |=0x04;
// else if( k == enumKeyRelease ) a &=~0x04;
}
void my10mS_callback()
{
LedPrint(a);
}
void main()
{
DisplayerInit();
KeyInit();
//BeepInit();
//SetEventCallBack(enumEventSys10mS, my10mS_callback);
Seg7Print(10,10,10,10,10,10,10,10);
SetEventCallBack(enumEventKey, myKey_callback);
MySTC_Init();
while(1)
{ MySTC_OS();
}
}
6.震动:震动后,蜂鸣器发出HZ频率声音
#include "STC15F2K60S2.H"
#include "displayer.h"
#include "Beep.h"
#include "Vib.h"
#include "sys.H"
code unsigned long SysClock = 11059200;
void VibEvent()
{
if (GetVibAct() == enumVibQuake)
{
SetBeep(1000, 100);
}
}
void main()
{
VibInit();
BeepInit();
MySTC_Init();
SetEventCallBack(enumEventVib, VibEvent);
while (1)
{
MySTC_OS();
}
}
7.霍尔:磁场接近时,4个LED向左流水
#include "STC15F2K60S2.H"
#include "displayer.h"
#include "hall.h"
#include "sys.H"
code unsigned long SysClock = 11059200;
char enableFlow = 0, ledOn = 0x01, ledOff = 0x00;
code char decode_table[] = {0x00};
void HallEvent()
{
char event = GetHallAct();
if (event == enumHallGetClose)
{
enableFlow = 1;
}
else if (event == enumHallGetAway)
{
enableFlow = 0;
}
}
void flashLed()
{
if (!enableFlow)
{
LedPrint(ledOff);
return;
}
ledOn <<= 1;
if (ledOn == 0x10)
{
ledOn = 0x01;
}
LedPrint(ledOn);
}
void main()
{
DisplayerInit();
HallInit();
MySTC_Init();
SetEventCallBack(enumEventHall, HallEvent);
SetEventCallBack(enumEventSys100mS, flashLed);
SetDisplayerArea(0, 7);
Seg7Print(0, 0, 0, 0, 0, 0, 0, 0);
LedPrint(ledOff);
while (1)
{
MySTC_OS();
}
}
8.AD:左右导航按键调节初始状态在中间2个LED位置
#include "STC15F2K60S2.H"
#include "adc.h"
#include "displayer.h"
#include "Key.H"
#include "sys.H"
code unsigned long SysClock = 11059200;
char lPos = 4, rPos = 3;
code char decode_table[] = {0x00};
char change_bit(char i, char t, char c)
{
char temp;
temp = c;
if (t == 0)
temp &= ~(1 << i);
else
temp |= (1 << i);
return temp;
}
void navigate()
{
char l, r;
l = GetAdcNavAct(enumAdcNavKeyLeft);
r = GetAdcNavAct(enumAdcNavKeyRight);
if (l == enumKeyPress)
{
lPos = (lPos + 1) % 8;
}
if (r == enumKeyPress)
{
rPos = rPos - 1;
if (rPos < 0)
rPos = 7;
}
}
void displayLed()
{
char led = 0x00;
led = change_bit(lPos, 1, led);
led = change_bit(rPos, 1, led);
LedPrint(led);
}
void main()
{
DisplayerInit();
AdcInit(ADCincEXT);
MySTC_Init();
SetDisplayerArea(0, 7);
Seg7Print(0, 0, 0, 0, 0, 0, 0, 0);
LedPrint(0);
SetEventCallBack(enumEventNav, navigate);
SetEventCallBack(enumEventSys10mS, displayLed);
while (1)
{
MySTC_OS();
}
}
9.秒表:数码管显示分秒毫秒
#include "STC15F2K60S2.H" //±ØÐë¡£
#include "sys.H" //±ØÐë¡£
#include "displayer.H"
#include "ADC.H"
#include "Key.H"
code unsigned long SysClock=11059200; //±ØÐë¡£¶¨Òåϵͳ¹¤×÷ʱÖÓƵÂÊ(Hz)£¬Óû§±ØÐëÐ޸ijÉÓëʵ¼Ê¹¤×÷ƵÂÊ£¨ÏÂÔØʱѡÔñµÄ£©Ò»ÖÂ
#ifdef _displayer_H_ //ÏÔʾģ¿éÑ¡ÓÃʱ±ØÐë¡££¨ÊýÂë¹ÜÏÔʾÒëÂë±í£¬ÓÑô¿ÉÐ޸ġ¢Ôö¼ÓµÈ£©
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x38,0x40,0x00, 0x5b, 0x80,
/* ÐòºÅ: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
/* ÏÔʾ: 0 1 2 3 4 5 6 7 8 9 (ÎÞ) ÏÂ- ÖÐ- ÉÏ- ÉÏÖÐ- ÖÐÏÂ- */
0x3f|0x80,0x06|0x80,0x5b|0x80,0x4f|0x80,0x66|0x80,0x6d|0x80,0x7d|0x80,0x07|0x80,0x7f|0x80,0x6f|0x80 };
/* ´øСÊýµã 0 1 2 3 4 5 6 7 8 9 */
#endif
unsigned int m=0,s=0,ms=0;
void my1mS_callback()
{
ms++;
if(ms>=1000)
{
ms=0;
s++;
}
if(s>=60)
{
s=0;
m++;
}
Seg7Print(m,10,s/10,s%10,10,ms/100,(ms/10)%10,ms%10);
}
void main()
{
DisplayerInit();
SetDisplayerArea(0,7);
LedPrint(0x0);
SetEventCallBack(enumEventSys1mS, my1mS_callback);
MySTC_Init();
while(1)
{ MySTC_OS();
}
}
10.光照值小于20,蜂鸣器发1.2khz频率声音。光照值大于100,蜂鸣器发2khz频率声音
#include "STC15F2K60S2.H" //±ØÐë¡£
#include "sys.H" //±ØÐë¡£
#include "displayer.H"
#include "ADC.H"
#include "beep.H"
void my10mS_callback()
{
struct_ADC adc;
adc=GetADC();
if(adc.Rop<20)
{
SetBeep(1200,180);
}
if(adc.Rop>100)
{
SetBeep(1200,180);
}
}
void main()
{
AdcInit(ADCincEXT);
BeepInit();
SetEventCallBack(enumEventSys10mS, my10mS_callback);
MySTC_Init();
while(1)
{ MySTC_OS();
}
}