- 6
- 0
- 约2.65万字
- 约 21页
- 2019-01-27 发布于广东
- 举报
基于AT89S52LCD12864仪器仪表的键盘显示模拟系统.doc
〃名称:
〃品振:12Mhz //编写:韦宏谋
〃日期:2011.1.9
#in cludereg52.h
# includeintrins.h
#define uc unsigned char #define ui unsigned int #define nop() _nop_() #define DB P0 bit clr_flag=O;
bit clr_flag2=0; sbit RS=P2A7;
sbit RW=P2A6;
sbit EN=P2A5;
sbit PSB=P2A4;
sbit RST=P2A2;
sbit seg_on=P2A0;
仪器仪表的键盘显示模拟系统
////
//
//
//12864D0-D7 输出 I/O 口
〃清屏标志1
〃清屏标志2
char week=0;
〃数码管状态控制
〃星期变量
char hour=0/min=0,sec=0,date=l,month=l,year=ll;//预置的时间和日期 uc key_flag=O; 〃键盘标志
uc key=0; 〃键盘变量
uc deda=0; 〃时钟变量
uc string[]=,,0123456789n;
uc aa=0x80,bb=0x90,cc=0x8dd=0x98;//:12864 的 DDRAM 地址
uc code bmp[],bmpl[]/bmp2[]/zk[],seg_code[];//图片、字符
void conv(); 〃时钟走时单元函数声明
TOC \o 1-5 \h \z // //
// 延时函数1 //
// //
void delay(ui t)
{ uc i,j;
do {j=2;
do {(i=165);
do { nop();〃n 个 nop
}while(-i);
}while(-j);
}while(-t);
}〃可精确到2ms,计算公式:t总={[3j+(n+2)ij+3]t+5}TzT为晶振周期
TOC \o 1-5 \h \z // //
// 延吋函数2 //
// //
void delayl(ui count)
{ UC i,j;
for(i=0;icount;i++) for(j=0;j30;j++);
}
TOC \o 1-5 \h \z // //
// 定时器TO初始化 //
// //
void init_timer()
{ TMOD=0x01;
TH0=(65536-50000)/256; 〃加载高位
TL0=(65536-50000)%256; 〃加载低位
IE=0x82; 〃启用定时器TO中断产生
TRO=1; 〃启动定时器TO开始汁时
}
TOC \o 1-5 \h \z // //
// 5ms定时中断程序 //
// //
void T0_srv(void) interrupt 1 using 1
{ TH0=(65536-50000)/256;// 定时器计时初始值
TL0=(65536-50000)%256;
deda++; 〃计数单元递增
conv();
}
TOC \o 1-5 \h \z // //
// 各月份天数计算函数 //
// //
void inter_month()
{ switchfm on th)
{ case 1: case 3: case 5: case 7:
case 8: case 10:
case 12:{讦(date=32) {date=l;month++;} if(date=0) date=31;
} break; 〃若是大月,则有31天
case 4: case 6: case 9:
case 11:{讦(date=31) {date=l;month++;} if(date=0) date=30;
case 2:} break; 〃若是小月,则有30
case 2:
if(year%4==0)
{ if(date=30) {date=l;month++;} if(date=0) date=29;
} 〃闰年二月有29天
else
if(date=29) {date=l;month++;} if(date=0) date=2
} break; 〃平年二月28天
default: break;
}
}
TOC \o 1-5 \h \z // //
// 时间、tl期走时单元 //
// //
void conv()
{ if(deda==2O)
{ deda=0;
sec++; 〃秒加 1
if(sec=60)
{ sec=O;
min++;
if(min=60)
{ min=O;
hour++;
if (hour=24)
{ hour=0;
date++;
week++;
讦(week=7) week
原创力文档

文档评论(0)