资源简介
基于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仿真
相关资源
- LCD显示温度+串口接收温度.rar
- Img2Lcd(将图片转换为数组的工具)
- 基于c8051f020的AD转换程序及LCD显示程序
- [免费]msp430f149控制PS2键盘并用1602显示
- arm触摸屏与LCD校准程序三点校准法
- vhdl与lcd1602实现的多控制电子钟
- pctolcd2002完美版460701
- ADC0809数字电压表 LCD1602显示 汇编程序
- lcd12684显示程序
- lcd12864的VHDL程序
- LCD12864滚动显示
- STM32 电子密码锁设计,LCD12864显示
- STM32 LCD12864并口驱动实验
- 基于STM32F4x9的LCD显示
- 基于Blackfin 处理器的TFT LCD 驱动设计
- 基于ARM7的LCD显示电压示波系统的设计
- TFT-LCD系统时序控制模块
- TFT-LCD玻璃基板制造方法
- mini2440全套裸机程序MDK 运行
- LCD1602显示程序
- Lcd12864大时钟万年历 农历生肖温度
- LCD12864驱动程序 带字库版本ST7920内含
- LCD12864驱动程序 并口通信,带字库版
- STC89C52+LCD12864+18B20+1302万年历
- TFT LCD面板产业2012年呈复苏
- Image2Lcd+汉字取模,TFT助手
- 第四章 畅学多功能实验箱液晶资源详
- 手机静电放电的ESD问题解决与防护
- proteus仿真、keil4、DHT11、LCD1602
- 1602lcd液晶屏参数详细介绍
评论
共有 条评论