一、电源电压4.8V—5.2V,可以直接用电脑USB供电。
二、程序修改说明
1、如果你编译通不过,就是你用的KEIL库文件不全,请换个完整版本的KEIL,或到我店铺购买,本程序是完全编译通过,且没有1个警告;
2、本程序由于农历,节气等数据很占空间,编译后有19K多,请使用程序存储器20K以上的51单片机,比如STC89C55、STC89C58,STC89C516,AT89C55,AT89S54,SST89C58等;
3、如果你的汉字显示不全或乱码,比如“三“显示不了,那是你的KEIL没有打补丁,并不是程序问题,至于什么补丁你可以网上搜或向我索要;
4、在修改位定义的时候需要将Soundplay.h文件下的sbit BeepIO = P3^7; sbit KEY_1 = P2^7;一起修改;
5、蜂鸣器请最好使用无源蜂鸣器或小喇叭,这样音质会很好。
三、生日、节气和节日提示说明
1、本万年历的各种提示会在主界面第四行交替显示,其中生日和节气优先显示。
Altium Designer画的音乐万年历原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机万年历元件清单:
名称 数量 说明
STC89C54(STC89C516)单片机 1 内存≥20K的51单片机都可以
DS1302 1
DS18B20 1
40DIP座 1
8DIP座 1
3DIP座 1
20芯座 1
20芯插针 1
10K排阻 1 可以不安装
无源蜂鸣器 1
CR2032电池 1
电池座 1
电源座 1
按键 4
开关 1
32768HZ晶振 1
11.0592MHZ晶振 1
S8050三极管 1
30P电容 2
103电容 1 可以不安装
10uF电解 1
4.7K电阻 1
10K电阻 2
220uF电解 1 可以不安装
PCB 1
12864液晶 1 ST7920驱动字库液晶
单片机音乐万年历源程序如下:
/*****************************************************************************/
//12864液晶万年历 时钟2010年最新 V5.2版
//设计: 杨黎民
//程序部分开始
//更新日期:2010年9月3
//主要特点:多功能菜单、多风格主界面,生日、节日、节气、农历时段多功能提示,闹钟、音乐、温度、屏幕自检
//5.1增加了调整时间反白和闹钟设置反白显示
//5.2调整了生日和节气优先显示
/****************************************************************************/
//头文件
#include #include #include #include "SoundPlay.h"//音乐文件 #define uchar unsigned char #define uint unsigned int /*****************************************************************************/ //扬声器定义 sbit beep = P3^7;//扬声器 /*****************************************************************************/ //温度传感器定义 sbit DQ = P2 ^ 0;//ds18B20 uint tvalue;//温度值 uchar tflag,flagdat,t,hh1;//温度正负标志 /*****************************************************************************/ //键盘引脚定义 //sbit KEY_1 = P2^7; //左上,在音乐文件SoundPlay.h中已定义 sbit KEY_2 = P2^6; //左下 sbit KEY_3 = P2^5; //右上 sbit KEY_4 = P2^4; //右下 /****************************************************************************/ //定义DS1302时钟接口 sbit clock_clk = P2 ^ 1;//ds1302_clk(时钟线) sbit clock_dat = P2 ^ 2;//ds1302_dat(数据线) sbit clock_Rst = P2 ^ 3;//ds1302_Rst(复位线) //定义累加器A中的各位 sbit a0 = ACC ^ 0; sbit a1 = ACC ^ 1; sbit a2 = ACC ^ 2; sbit a3 = ACC ^ 3; sbit a4 = ACC ^ 4; sbit a5 = ACC ^ 5; sbit a6 = ACC ^ 6; sbit a7 = ACC ^ 7; /****************************************************************************/ //定义全局变量 unsigned char yy,mo,dd,xq,hh,year,year1;//定义时间映射全局变量(专用寄存器) unsigned char shi,ge,sec_temp,min_temp,hour_temp,secl,selx,e=0,hh1,mm1,k,mm,ss,n; char n1,n2; bit w = 0; //调时标志位 static unsigned char menu = 0;//定义静态小时更新用数据变量 static unsigned char keys = 0;//定义静态小时更新用数据变量 static unsigned char timecount = 0;//定义静态软件计数器变量 /****************************************************************************/ //----------------------------------------------- //TS12864并口相关设定// #define BUSY_FLAG P0_7 //液晶模块忙标志 #define MPU_RS_CH P1_5 //寄存器选择输入 #define MPU_RW_CH P1_6 //读写控制 #define MPU_ENABLE P1_7 //使能控制 #define LCD_DATA P0 //液晶数据口 //----------------------------------------------- #define LOW 0 //低电平 #define HIGH 1 //高电平 #define OFF 0 //逻辑关 #define ON 1 //逻辑开 //----------------------------------------------- //液晶模块指令集定义 #define cClearDisplay 0x01 //清显示指令 #define cEntryModeSet 0x06 //设置输入模式 #define cDisplayOnCtrl 0x0c //设置开显控制 #define cFunctionSetB 0x30 //功能设定(基本指令) #define cFunctionSetE 0x34 //功能设定(扩充指令) #define cFuncDrawOn 0x36 //设置绘图功能 //----------------------------------------------- uchar xdata lcdPosX, lcdPosY; //X,Y坐标 uchar xdata halfScr, halfLineCnt, basicBlock; //半屏,半屏行数,N*8块 //----------------------------------------------- //子程序声明和用法 bit scanKey1 (void); //按键1检测 void procKey (void); //按键处理子程序 void lcdInit (void); //初始化LCD子程序 void lcdClear (void); //清除LCD文本屏幕子程序 void lcdWriteCommand (uchar Command); //写入控制命令到LCD子程序 //输入参数:LCD控制指令 void lcdWriteData (uchar Data); //写入显示数据到LCD子程序 //输入参数:显示数据 void checkLcdBusy (void); //检测LCD忙碌子程序 void displayPhoto (uchar *bmp, uchar bmpCls); //全屏显示图形子程序 //输入参数:*bmp=图形数据 //bmpCls=清除图形屏幕选项(OFF为不清屏,即显示图形,ON为清屏) void convertChar (uchar CX, CY, width); //字符反白显示 //输入参数:CX=要反白字符的行(0-3) //CY=要反白字符的列(0-7) //width=要反白字符的长度(1-16) void wrPosition (void); //坐标写入子程序 void dispString (uchar X, Y, speed, uchar *msg); //显示字符串子程序 //输入参数:X=行(0-3), Y=列(0-7), speed=显示速度(毫秒), msg=字符数据 void beepBl (void); //蜂鸣器响一声子程序 void delayMs (uchar ms); //延时(毫秒)子程序 //输入参数:毫秒数 void delaySec (uchar sec); //延时(秒)子程序 //输入参数:秒数 void init_dz(); void clear_img(); //=============================================== //12864液晶驱动 //=============================================== void lcdInit (void) { lcdWriteCommand(cFunctionSetE); lcdWriteCommand(cFunctionSetB); lcdClear(); lcdWriteCommand(cEntryModeSet); lcdWriteCommand(cDisplayOnCtrl); if(k==1){clear_img();lcdClear(); } if(k==0){lcdClear(); clear_img();init_dz(); } } //=============================================== void lcdClear (void) { lcdWriteCommand(cClearDisplay); } //=============================================== void lcdWriteCommand (uchar Command) { checkLcdBusy(); MPU_RS_CH = LOW;
上一篇:51单片机+K9F2080U0A制作MP3电路图与源程序
下一篇:单片机酒精浓度测试仪设计
推荐阅读最新更新时间:2024-11-14 22:20
设计资源 培训 开发板 精华推荐
- 01-ESP8266和涂鸦WR3E控制开关
- 【课程设计】电气火灾监控系统 1095660A
- STM32H750开发板
- 手机音频功率放大器
- SC8701 buck-boost可调DC-DC验证
- 香橙派配置板
- ANT BBPS:一款小巧、便携、优雅的开源 OLED 面包板电源(原理图、源码)
- 使用 ON Semiconductor 的 ILC7081 的参考设计
- 使用 AD9281 双通道、8 位分辨率 CMOS ADC 进行输入加载的典型应用
- EVAL-AD7177-2SDZ,评估具有 100 us 稳定和集成模拟输入缓冲器的 AD7177-2、32 位、10 kSPS、Sigma-Delta ADC
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知