LCD显示屏显示时钟 ,按独立按键k1即暂停
#include <REGX52.H>
#include "DSQ.h"
#include "LCD1602.h"
int day=1,hour=23,min=59,sec=55,key=0;void main()
{DSQ_init();LCD_Init();LCD_ShowString(2,1," : :");LCD_ShowString(1,1,"Clock: day");while(1) //初始化后程序一直在while,若定时器响应,则执行routine语句{if(DLAJ()!=0) key++;LCD_ShowNum(1,9,day,2);LCD_ShowNum(2,1,hour,2);LCD_ShowNum(2,4,min,2);LCD_ShowNum(2,7,sec,2);}
}
void Timer0_Routine() interrupt 1
{static int num=0;TL0=0X18;//1000计数TH0=0XFC;num++;if(num>=1000)//1秒{ num=0;if(key%2){sec++;if(sec==60) {min++;sec=0;}if(min==60) {hour++;min=0;}if(hour==24) {day++;hour=0;}}}
}
8*8LED屏流水显示happy new year
#include <REGX52.H>
#include "LED.h"
unsigned char a[]={0xFE,0x20,0x20,0x3E,0x00,0x3C,0x24,0x3E,0x00,0x3F,0x24,0x3C,0x00,0x3F,0x24,0x3C,0x00,0x3C,0x04,0x3F,0x00,0x00,0x3E,0x20,0x3E,0x00,0x1C,0x2A,0x2A,0x10,0x00,0x3E,0x06,0x0C,0x06,0x3E,0x00,0x00,0x3C,0x04,0x3F,0x00,0x1C,0x2A,0x2A,0x10,0x00,0x3C,0x24,0x3E,0x00,0x3E,0x20,0x20,0x00,0x00,0x00,0x30,0x48,0x44,0x32,0x44,0x48,0x30};
int i,count,offset;
void main()
{LED_init();while(1){for(i=0;i<8;i++){LED_ShowColumn(i,a[i+offset]);}count++;//显示10次位移一下if(count>6){count=0;offset++;if(offset>57){offset=0;//防止溢出64-8=56}}}
}
LED与蜂鸣器异步完成《春节序曲》
#ifndef __FMQPL_FUC__
#define __FMQPL_FUC__//引入蜂鸣器频率头文件#define L1 1//L表示低音 M普通简谱 H表示高音
#define L1_ 2
#define L2 3
#define L2_ 4
#define L3 5
#define L4 6
#define L4_ 7
#define L5 8
#define L5_ 9
#define L6 10
#define L6_ 11
#define L7 12
#define M1 13
#define M1_ 14
#define M2 15
#define M2_ 16
#define M3 17
#define M4 18
#define M4_ 19
#define M5 20
#define M5_ 21
#define M6 22
#define M6_ 23
#define M7 24
#define H1 25
#define H1_ 26
#define H2 27
#define H2_ 28
#define H3 29
#define H4 30
#define H4_ 31
#define H5 32
#define H5_ 33
#define H6 34
#define H6_ 35
#define H7 36
unsigned int code a[]=//a[0]表示暂停符
{ 0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283};
#endif
主函数内调用蜂鸣器频率头文件
#include <REGX52.H>
#include "LED.h"
#include "DSQ.h"
#include "FMQPL.h"
#define speed 100//设置速度,越小越快sbit Buzzer=P2^5;
void delay(int n)
{int i,j;for(i=n;i>0;i--)for(j=114;j>0;j--);
}unsigned char c[]=//8*8LED图像{0xFE,0x20,0x20,0x3E,0x00,0x3C,0x24,0x3E,0x00,0x3F,0x24,0x3C,0x00,0x3F,0x24,0x3C,0x00,0x3C,0x04,0x3F,0x00,0x00,0x3E,0x20,0x3E,0x00,0x1C,0x2A,0x2A,0x10,0x00,0x3E,0x06,0x0C,0x06,0x3E,0x00,0x00,0x3C,0x04,0x3F,0x00,0x1C,0x2A,0x2A,0x10,0x00,0x3C,0x24,0x3E,0x00,0x3E,0x20,0x20,0x00,0x00,0x00,0x30,0x48,0x44,0x32,0x44,0x48,0x30};
int i,count=5,offset;unsigned char code b[]=//简谱和拍子
{ H3,2,H3,1,H2,1,H1,4,H3,2,H3,1,H2,1,H1,4,H3,2,H3,1,H2,1,H1,2,M5,2,M3,2,M6,2,M5,3,M6,1,M5,2,M6,2,M5,2,M6,2,M5,2,M6,2,M5,1,M6,1,M7,1,M6,1,M5,1,M6,1,M7,1,M6,1,M5,4,M5,4,M5,8,M5,2,M5,1,M6,1,M5,2,M5,1,M6,1,H1,2,H1,1,M6,1,H1,2,H1,1,H2,1,H3,2,H3,1,H2,1,H3,2,H3,1,H2,1,H3,2,H3,1,H2,1,H1,2,H1,1,M6,1,M5,2,M5,1,M6,1,M5,2,M5,1,M6,1,H1,2,H1,1,M6,1,H1,2,H1,1,H2,1,H3,2,H3,1,H2,1,H3,2,H3,1,H2,1,H3,2,H3,1,H2,1,H1,2,H1,1,M6,1,M5,2,M5,1,M6,1,H1,2,H1,1,H2,1,H3,2,H3,1,H2,1,H1,2,0,2,H1,2,0,2,M3,4,H1,2,0,2,M3,4,H1,3,M6,1,H1,2,M6,2,M5,2,H1,2,M6,2,M5,2,M3,2,M5,2,M2,2,M3,2,M5,2,M6,2,M3,2,M3,1,M2,1,M1,2,0,2,H3,2,H3,1,H2,1,H1,8,H1,8,H1,3,H3,1,H2,2,H3,2,M5,6,H1,2,M6,2,M5,2,M3,2,M2,1,M3,1,M5,8,H1,3,H3,1,H2,2,H3,2,M5,6,H1,2,M6,2,M5,2,M3,2,M2,2,M1,8
};unsigned char a_,b_;
void main()
{DSQ_init();LED_init();while(1){a_=b[b_];b_++;delay(speed/4*b[b_]);b_++;TR0=0;//定时器关while(count--)//每个音间断“抬手”时,显示屏亮1帧{for(i=0;i<8;i++){LED_ShowColumn(i,c[i+offset]);}}count=5;TR0=1;offset++;//定时器开if(b_==sizeof(b)) b_=0;if(offset>57) offset=0;}
}
void Timer0_Routine() interrupt 1
{if(a[a_]){TL0=a[a_]%256;TH0=a[a_]/256;Buzzer=!Buzzer;}
}
本文发布于:2024-01-31 02:38:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170663992124742.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |