基于51单片机万年历C语言程序.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于51单片机万年历C语言程序.doc》由会员分享,可在线阅读,更多相关《基于51单片机万年历C语言程序.doc(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include #include #include #include SoundPlay.h/音乐文件#define uchar unsigned char #define uint unsigned int/*/扬声器定义sbitbeep = P37;/扬声器/*/温度传感器定义sbit DQ = P2 0;/ds18B20uint tvalue;/温度值uchar tflag,flagdat,t,hh1;/温度正负标志/*/键盘引脚定义/sbit KEY_1 = P27; /左上,在音乐文件SoundPlay.h中已定义sbit KEY_2 = P26; /左下sbit KEY_3 =
2、P25; /右上sbit KEY_4 = P24; /右下/*/定义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;/*/
3、定义全局变量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,n1,n2,mm,ss,n;bit w = 0; /调时标志位static unsigned char menu = 0;/定义静态小时更新用数据变量static unsigned char keys = 0;/定义静态小时更新用数据变量static unsigned char timecount = 0;/定义静态软件计数
4、器变量/*/-/TS12864并口相关设定/#defineBUSY_FLAGP0_7/液晶模块忙标志#defineMPU_RS_CHP1_5/寄存器选择输入#defineMPU_RW_CHP1_6/读写控制#defineMPU_ENABLEP1_7/使能控制#defineLCD_DATAP0/液晶数据口/-#define LOW0/低电平#defineHIGH1/高电平#defineOFF0/逻辑关#defineON1/逻辑开/-/液晶模块指令集定义#definecClearDisplay0x01/清显示指令#definecEntryModeSet0x06/设置输入模式#definecDisp
5、layOnCtrl0x0c/设置开显控制#definecFunctionSetB0x30/功能设定(基本指令)#definecFunctionSetE0x34/功能设定(扩充指令)#definecFuncDrawOn0x36/设置绘图功能/-uchar xdata lcdPosX, lcdPosY;/X,Y坐标uchar xdata halfScr, halfLineCnt, basicBlock;/半屏,半屏行数,N*8块/-/子程序声明和用法bit scanKey1 (void);/按键1检测void procKey (void);/按键处理子程序void lcdInit (void);/
6、初始化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为不清屏,即显
7、示图形,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 (uc
8、har ms); /延时(毫秒)子程序/输入参数:毫秒数void delaySec (uchar sec); /延时(秒)子程序/输入参数:秒数void init_dz();void clear_img();/=/=void lcdInit (void)lcdWriteCommand(cFunctionSetE);lcdWriteCommand(cFunctionSetB);lcdClear();lcdWriteCommand(cEntryModeSet);lcdWriteCommand(cDisplayOnCtrl);if(k=1)clear_img();lcdClear();if(k=0)
9、lcdClear(); clear_img();init_dz();/=void lcdClear (void) lcdWriteCommand(cClearDisplay);/=void lcdWriteCommand (uchar Command) checkLcdBusy();MPU_RS_CH = LOW;MPU_RW_CH = LOW;LCD_DATA = Command;MPU_ENABLE = HIGH;delayMs(1);MPU_ENABLE = LOW;/=void lcdWriteData (uchar Data) checkLcdBusy();MPU_RS_CH = H
10、IGH;MPU_RW_CH = LOW;LCD_DATA = Data;MPU_ENABLE = HIGH;delayMs(1);MPU_ENABLE = LOW;/=void checkLcdBusy (void) LCD_DATA = 0xff;MPU_RS_CH = LOW;MPU_RW_CH = HIGH;MPU_ENABLE = HIGH;while (BUSY_FLAG);MPU_ENABLE = LOW;/=void displayPhoto (uchar *bmp, uchar bmpCls) lcdPosX = 0x80;halfScr = 2;for (;halfScr !
11、= 0; halfScr-)lcdPosY = 0x80;halfLineCnt = 32;for (;halfLineCnt != 0; halfLineCnt-)basicBlock = 16;wrPosition ();for (; basicBlock != 0; basicBlock-)if (bmpCls = OFF)lcdWriteData (*bmp+);else if (bmpCls = ON)lcdWriteData (0x00);lcdPosY+;lcdPosX = 0x88;lcdWriteCommand(cFuncDrawOn);lcdWriteCommand(cFu
12、nctionSetB);/=void convertChar (uchar CX, CY, width) displayPhoto(OFF,ON);lcdPosY = 0x80;if (CX = 0)CX = 0x80;halfLineCnt = 16;else if (CX = 1)CX = 0x80;halfLineCnt = 32;else if (CX = 2)CX = 0x88;halfLineCnt = 16;else if (CX = 3)CX = 0x88;halfLineCnt = 32;lcdPosX = CX + CY; for (; halfLineCnt != 0;
13、halfLineCnt-)basicBlock = width;wrPosition();for (;basicBlock != 0; basicBlock-)if (halfLineCnt 16)lcdWriteData(0x00);elselcdWriteData (0xff);lcdPosY+;lcdWriteCommand(cFuncDrawOn);lcdWriteCommand(cFunctionSetB);/=void wrPosition (void) lcdWriteCommand(cFunctionSetE);lcdWriteCommand(lcdPosY);lcdWrite
14、Command(lcdPosX);lcdWriteCommand(cFunctionSetB);/=void dispString (uchar X, Y, speed, uchar *msg) if (X = 0)X = 0x80;else if (X = 1)X = 0x90;else if (X = 2)X = 0x88;else if (X = 3)X = 0x98;Y = X + Y;lcdWriteCommand(Y);while (*msg)lcdWriteData(*msg+);delayMs(speed);/=void delayMs (uchar ms) uchar i;w
15、hile (-ms)for (i = 0; i 125; i+);/*清理图片缓冲区*/void clear_img()uchar i,j;for(i=0;i32;i+)lcdWriteCommand(0x80+i);lcdWriteCommand(0x80); for(j=0;j16;j+)lcdWriteData(0x00);for(i=0;i32;i+)lcdWriteCommand(0x80+i);lcdWriteCommand(0x88);for(j=0;j16;j+)lcdWriteData(0x00);/*/uchar code powerOnPhoto = /*- 一幅图像 K
16、ISS- 正向取模,字节正序*/ /*- 宽度x高度=128x64 -*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFF,0xFF,0xFF,0x9F,0x00,0x00,0x0F,0x0E,0x00,0x00,0x00,0x00,0x19,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xBF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00
17、,0x00,0x00,0x1F,0xFD,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFF,0xFF,0xF3,0xE0,0x00,0x00,0x1F,0xFD,0x80,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFA,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
18、x00, 0xFF,0xFF,0xF0,0x00,0x00,0x00,0x03,0xF8,0x01,0xFF,0xFF,0xE0,0x00,0x07,0xFF,0xFF, 0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0xF0,0x3F,0xFF,0xFF,0xFE,0x00,0x30,0x00,0x00, 0x00,0x00,0x00,0x7F,0xFF,0xFF,0x80,0x41,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00, 0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xF0,0x02,0x7F,0xFF,0x
19、FF,0xFF,0xE0,0x03,0xFF,0xFF, 0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF8,0x04,0x3F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00, 0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFC,0x08,0x73,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00, 0xFF,0xE4,0x3F,0x7F,0xFF,0xFF,0xFF,0x30,0x2F,0xFF,0xFF,0xFF,0xFE,0x00,0x7F,0xFF, 0x00,0x00,0xFE,0x9F,0xFF,0xF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 万年历 语言 程序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内