{
minute=0;
}
}
}
if(minute==watch|(min==0&&sec==1)) //定时时间到
{
speaker_out();
speaker_out();
speaker_out();
TR0=0; //关T0
pwm=0; //关电机
Power_off_language(); //关机提示语
speaker_out();
speaker_out();
speaker_out();
speaker=1; //关蜂鸣器
while(1); //停在此处
}
}
/************************************************************************
★Program Description : Nokia LCD5110 驱动程序
★Date Time : Friday,September 26,2014
★Finished By : 何志明
************************************************************************/ #ifndef __Nokia_H__
#define __Nokia_H__
#include<reg52.h>
#include<intrins.h>
#include <stdio.h>
#include <math.h>
#include"WordsMode.h"
#define uint unsigned int
#define uchar unsigned char
#define ulint unsigned long int
#define ulong unsigned long
#define CMD 0
#define DATA 1
sbit RST_5110=P2^4; //复位
sbit CE_5110=P2^3; //片选
sbit DC_5110=P2^2; //数据/命令控制端,1-数据 0-命令
sbit DIN_5110=P2^1; //数据线
sbit CLK_5110=P2^0; //时钟
/************************************************************************ 卍 函数名 : delay
卍 函数功能 : ms级延时
卍 函数形参 : z
卍 函数返回值 : 无
************************************************************************/ void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/************************************************************************ 卍 函数名 : LCD_write_byte
卍 函数功能 : 向LCD写入一字节数据
卍 函数形参 : byte 写入的数据
卍 DC 数据/命令选择 1/0
卍 函数返回值 : 无
************************************************************************/ void LCD_write_byte(uchar byte,bit DC)
{
uchar i;
CE_5110=1;
DC_5110=DC;
CLK_5110=1;
for(i=0;i<8;i++)
{
CLK_5110=0;
DIN_5110=byte&0x80;
CE_5110=0;
CLK_5110=1;
byte<<=1;
CLK_5110=0;
}
CE_5110=1;
CLK_5110=1;
}
/************************************************************************ 卍 函数名 : LCD_RST
卍 函数功能 : 液晶屏复位
卍 函数形参 : 无
卍 函数返回值 : 无
************************************************************************/ void LCD_RST()
{
RST_5110=0;
_nop_();
RST_5110=1;
_nop_();
CE_5110=0;
_nop_();
CE_5110=1;
_nop_();
}
/************************************************************************ 卍 函数名 : LCD_clear
卍 函数功能 : 液晶屏清屏
卍 函数说明 :5110每行有84列,共6行。即使用84*6=504个十六进制数据可控制所有的
卍 最小显示单元,最小显示单元指纵向相连接的8个点阵
卍 函数形参 : 无
卍 函数返回值 : 无
************************************************************************/ void LCD_clear()
{
uint i;
LCD_write_byte(0x40,0); //y坐标回0
LCD_write_byte(0x80,0); //x坐标回0
for(i=0;i<504;i++)
{
LCD_write_byte(0x00,1);//清空RAM数据
}
}
/*-----------------------------液晶上电初始化-----------------------------*/
void LCD_Init()
{
LCD_RST(); //上电复位
LCD_write_byte(0x21,0); // 使用扩展命令设置LCD模式
LCD_write_byte(0xc0,0); // 设置液晶偏置电压 (0x80~0xff)
LCD_write_byte(0x06,0); // 温度校正
// LCD_write_byte(0x13,0); // 1:48
LCD_write_byte(0x20,0); // 使用基本命令,V=0,水平寻址
LCD_write_byte(0x0c,0); // 设定显示模式,正常显示
LCD_clear(); // 清屏
}
/*--------------------------------------------------------------------------------
卍 函数名 : Display5110
卍 函数功能 : 显示汉字和字符
卍 函数形参 : x:显示到屏幕上的横向位置,取值0~83
y:行位置,取值0~5
*WCP:Word Code Point存放字模数据的二维数组的数组名
DmsLong:Dimension Long,二维数组中,一维数组的长度
DmsLine:Dimension Line,二维数组中,构成一个完整字形的一维数组个数
index:字形在二维数组中的索引号0~n
卍 函数返回值: 无
---------------------------------------------------------------------------------*/
void Display5110(uchar x,uchar y,uchar *WCP,uchar DmsLong,uchar DmsLine,uint index) {
ulint location;
uchar iLine,jLong;
location=DmsLong*DmsLine*index; //确定字模数据提取的起始位置
WCP=WCP+location; //将数组指针定位到要取得数据的起始位置
for(iLine=0;iLine<DmsLine;iLine++)
{
LCD_write_byte(0x40|(y+iLine),CMD);//Y坐标 +iLine是为了保证拼汉字的数据能自动向下一行
LCD_write_byte(0x80|x,CMD); //X坐标
for(jLong=0;jLong<DmsLong;jLong++) //将一维数组中的数据顺序输出
{
LCD_write_byte(*(WCP++),DATA);
}
}
}
/*----------------------------开机问候语---------------------------*/
void Turn_on_language()
{
uchar i,j;
for(i=0;i<9;i++) //Welcom To
{
Display5110(j,1,Nokia_,8,2,i);
j+=8;
delay(250);
}
i=j=0;
for(i=10;i<20;i++) //Nokia5110!
{
Display5110(j,3,Nokia_,8,2,i);
j+=8;
delay(250);
}
delay(2000);
LCD_clear();
}
/*----------------------------关机机提示语---------------------------*/
void Power_off_language()
{
uchar i,j=8;
LCD_clear();
for(i=0;i<4;i++) //Good
{
Display5110(j,1,turn_off,8,2,i);
j+=8;
delay(360);
}
i=0;
j=34;
for(i=4;i<9;i++) //Bye!
{
Display5110(j,3,turn_off,8,2,i);
j+=8;
delay(360);
}
delay(5000);
LCD_clear();
}
/*-------------------------固定显示初始化--------------------------*/ void Dis_Init()
{
Display5110(0,0,Chinese,12,2,0); //模 Display5110(12,0,Chinese,12,2,1); //式 Display5110(24,0,Mark1,6,2,0); //':' Display5110(36,0,Chinese,12,2,6);
Display5110(48,0,Chinese,12,2,7);
Display5110(60,0,Chinese,12,2,12);
Display5110(0,2,Chinese,12,2,2); //档 Display5110(12,2,Chinese,12,2,3); //位 Display5110(24,2,Mark1,6,2,0); //':' Display5110(30,2,Digit,6,2,0);
Display5110(40,2,Mark1,6,2,2);
Display5110(46,2,Mark1,6,2,3);
Display5110(52,2,Mark1,6,2,4);
Display5110(58,2,Mark1,6,2,0);
Display5110(62,2,Digit,6,2,0);
Display5110(68,2,Digit,6,2,0);
Display5110(76,2,Mark1,6,2,1);
Display5110(0,4,Chinese,12,2,4); //定 Display5110(12,4,Chinese,12,2,5); //时 Display5110(24,4,Mark1,6,2,0); //':' Display5110(28,4,Mark1,6,2,5);
Display5110(34,4,Mark1,6,2,6);
Display5110(40,4,Mark1,6,2,6);
Display5110(46,4,Digit,6,2,0);
Display5110(52,4,Digit,6,2,0);
Display5110(58,4,Digit,6,2,0);
Display5110(64,4,Mark1,6,2,0);
Display5110(70,4,Digit,6,2,0);
Display5110(76,4,Digit,6,2,0);
}
#endif
#ifndef __WordsMode_H__
#define __WordsMode_H__
#define uchar unsigned char
uchar code Chinese[34][12]=
{
{0x88,0x68,0xFF,0x48,0x02,0xFA,0xAF,0xAA,0xAF,0xFA,0x02,0x00},
{0x00,0x00,0x0F,0x00,0x0A,0x0A,0x06,0x03,0x06,0x0A,0x0A,0x00},/*"模",0*/
{0x08,0x48,0x48,0xC8,0x48,0x48,0x08,0xFF,0x08,0x09,0x0A,0x00},
{0x08,0x08,0x08,0x07,0x04,0x04,0x04,0x00,0x03,0x04,0x0E,0x00},/*"式",1*/
{0x88,0x88,0xFF,0x48,0x12,0x94,0x90,0x9F,0x90,0x94,0xF2,0x00},
{0x00,0x08,0x0F,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00},/*"挡",2*/
{0x10,0xFC,0x03,0x08,0x68,0x88,0x09,0x0A,0x08,0xE8,0x08,0x00},
{0x00,0x0F,0x00,0x08,0x08,0x0B,0x08,0x0C,0x0B,0x08,0x08,0x00},/*"位",3*/
bbs.99jianzhu.com内容:建筑图纸、PDF/word 流程,表格,案例,最新,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。