课程设计之万年历报告(4)

2018-10-21 10:10

P0=com; rs=0; rw=0; E=1;

delay_ms(1); E=0; }

void write_date (uchar date)//LCD1602的写数据 {

P0=date; rs=1; rw=0; E=0;

delay_ms(1); E=1;

delay_ms(1); E=0; }

void init()//LCD1602初始化 {

uchar i;

EA=1; //首先开启总中断 EX1=1; //开启外部中断 1 IT1=1;

write_com(0x38); delay_ms(2);

write_com(0x0c); delay_ms(2);

write_com(0x06); delay_ms(2);

write_com(0x80); delay_ms(1);

for(i=0;i<16;i++) {

write_date(table1[i]); // table1[]= }

write_com(0xc0); delay_ms(1);

for(i=0;i<16;i++) {

write_date (table2[i]); // table2[]= } }

void write_sfm_10(uchar add,uchar date)//在LCD1602写小时、分、秒

13

{

uchar ten,ge; ten=date/10; ge=date;

write_com(0xc0+add); write_date(0x30+ten); write_date(0x30+ge); }

void write_nyr_10(uchar add,uchar

write_date(weektable[i]); } }

if(ge==4) {

for(i=12;i<16;i++) { date)//写年、月、日 {

uchar ten,ge; ten=date/10; ge=date;

write_com(0x80+add); write_date(0x30+ten); write_date(0x30+ge); } void write_week(uchar add,uchar week)//写星期 {

uchar ge,i; ge=week&0x0f;

write_com(0x80+add); if(ge==1) {

for(i=0;i<4;i++) {

write_date(weektable[i]); } }

if(ge==2) {

for(i=4;i<8;i++) {

write_date(weektable[i]); } }

if(ge==3) {

for(i=8;i<12;i++) {

write_date(weektable[i]); } }

if(ge==5) {

for(i=16;i<20;i++) {

write_date(weektable[i]); } }

if(ge==6) {

for(i=20;i<24;i++) {

write_date(weektable[i]); } }

if(ge==7) {

for(i=24;i<28;i++) {

write_date(weektable[i]); } } }

void delay(void) //空5个指令 {

14

uchar i=13; while(i) i--; }

delay_ms(10); if(s2==0) {

while(!s2); flaga=0; } } }

if(s0==0) {

delay_ms(10); if(s0==0) {

buzzer=0;

while(!s0); s0num++;

buzzer=1; if(s0num==1) { flag=1;

write_com(0xc0+8); write_com(0x0f);

shi=read_ds1302(0x85); fen=read_ds1302(0x83); miao=read_ds1302(0x81); day=read_ds1302(0x87);

month=read_ds1302(0x89); year=read_ds1302(0x8d); week=read_ds1302(0x8b);

miao=(miao/16)*10+miao; fen=(fen/16)*10+fen; shi=(shi/16)*10+shi; day=(day/16)*10+day; month=(month/16)*10+month; year=(year/16)*10+year; }

if(s0num==2)

{

write_com(0xc0+5); }

if(s0num==3) {

write_com(0xc0+2); }

if(s0num==4) {

write_com(0x80+12); }

if(s0num==5) {

write_com(0x80+10); }

if(s0num==6) {

write_com(0x80+7); }

if(s0num==7) {

write_com(0x80+4); }

if(s0num==8) {

s0num=0;

write_com(0x0c);

miao=(miao/10)*16+miao;//10进制转16进制

fen=(fen/10)*16+fen; shi=(shi/10)*16+shi;

day=(day/10)*16+day; month=(month/10)*16+month; year=(year/10)*16+year;

write_ds1302(0x80,miao); write_ds1302(0x82,fen); write_ds1302(0x84,shi); write_ds1302(0x8a,week); write_ds1302(0x86,day); write_ds1302(0x88,month); write_ds1302(0x8c,year); flag=0; }

15

} }

/***********************主函数 ************************/ void main () {

init ();

write_ds1302(0x8e,0x00);//打开写保护

write_ds1302(0x90,0xa7); while(1) {

scan_key();//键盘扫描 if (flag==0) {

shi=read_ds1302(0x85);//从DS1302读取时间和日期

fen=read_ds1302(0x83); miao=read_ds1302(0x81); day=read_ds1302(0x87); month=read_ds1302(0x89); year=read_ds1302(0x8d);

week=read_ds1302(0x8b);

miao=(miao/16)*10+miao;//把16进制转化成10进制

fen=(fen/16)*10+fen; shi=(shi/16)*10+shi; day=(day/16)*10+day;

month=(month/16)*10+month;

year=(year/16)*10+year; write_sfm_10(7,miao);//显示时间日期

write_sfm_10(4,fen); write_sfm_10(1,shi); write_nyr_10(9,day); write_nyr_10(6,month); write_nyr_10(3,year); write_week(12,week); } }

课程设计之万年历报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浙江省心理健康教育自考社会心理学(二)06年01月试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: