{0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x31,0x00,0x00,0x00,0x00},
//\
{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //\
{0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01}, //\ }; //延时
void delay(uint n) {
uint i;
for(;n>0;n--)
for(i=200;i>0;i--); }
//判断是否忙 void check() {
rs=0;
rw=1; //读 e=1; port=0x00; e=1; while(busy); e=0; }
//写指令
void sendcommand(uchar command) {
check();
rs=0; //指令
rw=0; //写 e=0; port=command; e=1;
e=0; //写入指令 }
//写数据
void writedata(uchar dat) {
11
check();
rs=1; //数据 rw=0; port=dat; e=1; e=0; }
//选屏幕 0--全屏,1--左屏,2--右屏; void select(uint n) {
switch(n) {
case 0:cs1=0;cs2=0;break; case 1:cs1=0;cs2=1;break; case 2:cs1=1;cs2=0;break; } } //页
void setpage(uchar page) {
page=page&0x07; page=page|0xb8; sendcommand(page); } //列
void setcolumn(uchar column) {
column=column&0x3f; column=column|0x40; sendcommand(column); }
//起始行
void setline(uchar line) {
line=line&0x3f; line=line|0xc0; sendcommand(line); }
//屏幕开关显示 0--关,1--开; void seton(uint n) {
n=n|0x3e;
sendcommand(n); }
低电平选中左屏 右屏 12
// //cs1 //cs2//清屏 0--全屏,1--左屏,2--右屏; void clear(uint n) {
uchar i,j; select(n);
for(i=0;i<8;i++) {
setpage(i); setcolumn(0);
for(j=0;j<64;j++) writedata(0); //置0清空 } }
//初始化 void init() {
check(); seton(1); clear(0); setline(0); }
//显示汉字 16*16显示
void show16(uchar page,uchar column,uchar screen,uchar method,uchar *str) {
uchar i,j;
select(screen); j=0;
setpage(page);
setcolumn(column); for(i=0;i<16;i++)
{ if(method==1) writedata(~str[j++]); //method为显示方式。当等于1时,反白。
else writedata(str[j++]); }
setpage(page+1); setcolumn(column); for(i=0;i<16;i++)
{ if(method==1) writedata(~str[j++]);
else writedata(str[j++]); } }
//显示数字 8*8显示
void show8(uchar page,uchar column,uchar screen,uchar method,uchar *str)
13
{
uchar i,j;
select(screen);j=0;
setpage(page);
setcolumn(column); for(i=0;i<8;i++)
{ if(method==1) writedata(~str[j++]);
else writedata(str[j++]); }
setpage(page+1);setcolumn(column); for(i=0;i<8;i++)
{ if(method==1) writedata(~str[j++]);
else writedata(str[j++]); } }
//显示时间
void showtime() {
show16(2,24,2,0,time[0]); show16(4,24,2,0,time[1]); show16(6,24,2,0,time[2]); show8(2,40,2,0,sign[5]); show8(4,40,2,0,sign[5]); show8(6,40,2,0,sign[5]); show8(2,48,2,0,num[h/10]); show8(4,48,2,0,num[m/10]); show8(6,48,2,0,num[s/10]); show8(2,56,2,0,num[h]); show8(4,56,2,0,num[m]); show8(6,56,2,0,num[s]); }
//中断服务程序
timer0() interrupt 1 using 1 {
j++;
TH0=15536/256; TL0=15536%6; if(j==20){
j=0;
if(++s==60){
s=0;if(++m==60){
m=0;if(++h==24)h=0;
14
} } } }
//显示个人信息 void welcome() {
show16(0,0,1,0,hz[0]); show16(0,16,1,0,hz[1]); show16(0,32,1,0,hz[2]); show16(0,48,1,0,hz[3]); show16(0,8,2,0,hz[4]); show16(0,40,2,0,hz[5]); show8(2,0,1,0,num[2]); show8(2,8,1,0,num[0]); show8(2,16,1,0,num[0]); show8(2,24,1,0,num[8]); show8(2,32,1,0,num[0]); show8(2,40,1,0,num[4]); show8(2,48,1,0,num[2]); show8(2,56,1,0,num[2]); show8(2,0,2,0,num[3]); show8(2,8,2,0,num[3]); }
//蜂鸣器 void Beep() {
uchar y;
for(y=0;y<200;y++) {
delay(1); P2_6=!P2_6; } }
// *******延时函数****** void delay1(unsigned int i) {
while(i--); }
//*******显示温度并判断是否调用蜂鸣器函数****** void display(int k) {
15