资源简介
基于89C51单片机的LCD音乐闹钟(详细注释),这是我亲手做的一个小玩意儿,刚刚学完单片机的同学,可以拿来练练手!
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#define KEY_IO P3
#define LCD_IO P0
//以下是C调低音的音频宏定义
#define L1 262 //将“L1“宏定义为低音“1“的频率262Hz 时间是1/262=3826/2 us 取半周期
#define L2 286 //将“L2“宏定义为低音“2“的频率286Hz
#define L3 311 //将“L3“宏定义为低音“3“的频率311Hz
#define L4 349 //将“L4“宏定义为低音“4“的频率349Hz
#define L5 392 //将“L5“宏定义为低音“5“的频率392Hz
#define L6 440 //将“l_a“宏定义为低音“6“的频率440Hz
#define L7 494 //将“L7“宏定义为低音“7“的频率494Hz
//以下是C调中音的音频宏定义
#define Z1 523 //将“Z1“宏定义为中音“1“的频率523Hz
#define Z2 587 //将“Z2“宏定义为中音“2“的频率587Hz
#define Z3 659 //将“Z3“宏定义为中音“3“的频率659Hz
#define Z4 698 //将“Z4“宏定义为中音“4“的频率698Hz
#define Z5 784 //将“Z5“宏定义为中音“5“的频率784Hz
#define Z6 880 //将“Z6“宏定义为中音“6“的频率880Hz
#define Z7 987 //将“Z7“宏定义为中音“7“的频率523H
//以下是C调高音的音频宏定义
#define H1 1046 //将“H1“宏定义为高音“1“的频率1046Hz
#define H2 1174 //将“H2“宏定义为高音“2“的频率1174Hz
#define H3 1318 //将“H3“宏定义为高音“3“的频率1318Hz
#define H4 1396 //将“H4“宏定义为高音“4“的频率1396Hz
#define H5 1567 //将“H5“宏定义为高音“5“的频率1567Hz
#define H6 1760 //将“H6“宏定义为高音“6“的频率1760Hz
#define H7 1975 //将“H7“宏定义为高音“7“的频率1975Hz
sbit k4=P3^3;
sbit sound=P1^6; //蜂鸣器
unsigned int C; //储存定时器的定时常数
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
sbit LED = P2^4;
void music(void);
unsigned char ut;
bit new_s modify = 0;
char t0 sec = 40 min = 29 hour = 6;
char code LCD_line1[] = “HAPPY EVEDAY“;
char code LCD_line2[] = “Timer: 00:00:00 “;
char Timer_buf[] = “23:59:50“;
//---------------------------------------------------
void delay(uint z)
{
uint x y;
for(x = z; x > 0; x--) for(y = 100; y > 0; y--);
}
void delay1()
{
unsigned char ij;
for(i=0;i<100;i++)
for(j=0;j<250;j++)
;
}
//---------------------------------------------------
void W_LCD_Com(uchar com) //写指令
{
LCD_RS = 0; LCD_IO = com; // LCD_RS和R/W都为低电平时,写入指令
LCD_EN = 1; delay(5); LCD_EN = 0; //用EN输入一个高脉冲
}
//---------------------------------------------------
void W_LCD_Dat(uchar dat) //写数据
{
LCD_RS = 1; LCD_IO = dat; // LCD_RS为高、R/W为低时,写入数据
LCD_EN = 1; delay(5); LCD_EN = 0; //用EN输入一个高脉冲
}
//---------------------------------------------------
void W_LCD_STR(uchar *s) //写字符串
{
while(*s) W_LCD_Dat(*s++);
}
//---------------------------------------------------
void W_BUFF(void) //填写显示缓冲区
{
Timer_buf[7] = sec % 10 + 48;/*秒除以10,并取余数*/ Timer_buf[6] = sec / 10 + 48; /*秒除以10,并取整数*/
Timer_buf[4] = min % 10 + 48; Timer_buf[3] = min / 10 + 48;
Timer_buf[1] = hour % 10 + 48; Timer_buf[0] = hour / 10 + 48;
W_LCD_Com(0xc0 + 7); W_LCD_STR(Timer_buf);
}
//---------------------------------------------------
uchar read_key(void) //按键 判断
{
uchar x1 x2;
KEY_IO = 255;
x1 = KEY_IO; //
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-05 15:46 自己做的LCD\
文件 87903 2017-05-20 17:14 自己做的LCD\Last Loaded sdas.DBK
文件 11671 2017-05-20 09:15 自己做的LCD\LCD
文件 4826 2017-05-20 09:15 自己做的LCD\LCD.hex
文件 88054 2018-04-05 15:46 自己做的LCD\LCD.uvgui.Administrator
文件 4958 2018-04-05 15:45 自己做的LCD\LCD.uvopt
文件 13864 2018-04-05 15:45 自己做的LCD\LCD.uvproj
文件 54846 2017-07-05 09:54 自己做的LCD\LCD_uvopt.bak
文件 40298 2017-04-29 21:20 自己做的LCD\LCD时钟接线图.jpg
文件 12162 2018-04-05 15:45 自己做的LCD\LCD时钟简单
文件 1150 2018-04-05 15:45 自己做的LCD\LCD时钟简单.build_log.htm
文件 4795 2018-04-05 15:45 自己做的LCD\LCD时钟简单.hex
文件 32 2018-04-05 15:45 自己做的LCD\LCD时钟简单.lnp
文件 14211 2018-04-05 15:45 自己做的LCD\LCD时钟简单.M51
文件 193 2017-07-12 09:12 自己做的LCD\LCD时钟简单.plg
文件 8450 2017-07-05 09:32 自己做的LCD\main.c
文件 13669 2018-04-05 15:45 自己做的LCD\main.LST
文件 13492 2018-04-05 15:45 自己做的LCD\main.OBJ
文件 87903 2017-05-21 13:58 自己做的LCD\sdas.DSN
文件 742 2017-06-02 09:37 自己做的LCD\sdas.PWI
目录 0 2018-04-05 15:46 自己做的LCD\图\
文件 8447 2017-05-21 13:58 自己做的LCD\新建文本文档.txt
- 上一篇:无名模块绝版开源
- 下一篇:51单片机——简易计算器设计源码、protues仿真
相关资源
- PCF8574LCD模块链接1602单片机51例程
- 基于VHDL的1602LCD液晶显示
- PCtoLCD2002
- STC89C52+LCD1602+DS1302电子时钟
- VHDL LCD1602显示程序
- STM32HAL库驱动SPILCD代码
- 基于STC12C5A60S2的DS18B20温度显示工程
- 基于89C51的等精度频率计LCD1602显示1
- STM32的TFTLCD显示程序,亲测能用
- v4l2采集视频并保存和lcd显示
- 51单片机方波发生器频率计lcd.zip
- 基于msp430单片机的电子万年历LCD 128
- 基于msp430单片机的红外线遥控解码L
- PCF8591 ad转换及lcd显示
- LCD1602液晶显示的计算器加减乘除
- LCD点阵字模提取软件
- LCD12864 万年历 单片机 农历 显示 温度
- 解析GPS数据并用LCD1602显示
- 26 用AVR与1601LCD设计的计算器.zip
- 基于STC12C5616AD单片机的AD采集程序LC
- DS1302实时时钟,LCD1602显示,可调时间
- 基于MSP430F149控制LCD12864串口显示C程序
- LCD-T6963C(STM32)驱动
- Keil5下的STM32F103Cx例程超值,含PWM输出
- 凌阳61板+AD7705转换+lcd1ocmjx8c显示
- AD0809驱动 用LCD1602显示采集的模拟电压
- 51单片机控制乒乓球游戏
- zw_wangxingse-6021953-24C04与1602LCD设计电子
- 基于HC-SR04超声波测距LCD12864显示源码
- zw_LCD1602.zip
评论
共有 条评论