电子日历毕业设计论文(4)

2020-02-22 11:01

附 录 附 录

附录1 系统原理图

附图1 系统原理图

附录2 源程序清单

#include %uchar n1,n2,n3; uchar u0,u1,u2,u3;

uchar table[]={%uchar table1[]={\

uchar table2[]={'0','1','2','3','4','5','6','7','8','9'}; uchar table3[]={\

uchar table4[]={\个字符 uchar table5[]={\#define uint unsigned int #define uchar unsigned char #define PB PB_ODR

#define Write_second 0X80 //秒写寄存器地址 #define Write_minute 0X82//分写寄存器地址 #define Write_hour 0X84//时写寄存器地址

13

附 录 #define Write_day 0X86//日写寄存器地址 #define Write_month 0X88//月写寄存器地址 #define Write_week 0X8A//周写寄存器地址 #define Write_year 0X8C//年写寄存器地址

#define Write_protect 0X8E//写保护字节写寄存器地址 #define Write_chongdian 0x90 //慢充电寄存器地址 #define Read_second 0X81//秒读寄存器地址 #define Read_minute 0X83//分读寄存器地址 #define Read_hour 0X85//时读寄存器地址 #define Read_day 0X87//日读寄存器地址 #define Read_month 0X89//月读寄存器地址 #define Read_week 0X8B//周读寄存器地址 #define Read_year 0X8D//年读寄存器地址

_Bool rs @PC_ODR:1; //pc作为lcd的控制端,设置为输入 _Bool rw @PC_ODR:2; _Bool en @PC_ODR:3;

_Bool sclk @PA_ODR:4; //串行时钟,输入输出控制 _Bool dio @PA_ODR:5; //三线接口时的数据线 _Bool id @ PA_IDR:5;

_Bool ce @ PA_ODR:6; //复位 _Bool da_od @ PA_DDR:5; _Bool da_CR1 @ PA_CR1:5; _Bool da_CR2 @ PA_CR2:5;

_Bool ID1 @ PG_IDR:0; //将Pd6引脚设置我外部中断的输入引脚 _Bool ID2 @ PD_IDR:5; _Bool ID3 @ PG_IDR:1; _Bool ID4 @ PD_IDR:6;

//键盘的输入// shfm_key(void) { uchar lshi;

uchar an=0,n=0; do {

if(!ID1) {

delay(6);

if(!ID1) {

while(!ID1); lshi=1; an++; if(an==1) {

14

附 录 Write_ds1302(Write_second,0x80); //先暂停时钟秒 u2=Read_ds1302(Read_second ); u2=((u2&0x70)>>4)*10+(u2&0x0F); write_sfm(6,u2);

lcd_wcom(0x80+0x40+7); lcd_wcom(0x38);

lcd_wcom(0x0f); //显示功能开,有光标 }

if(an==2) {

u1=Read_ds1302(Read_minute); u1=((u1&0x70)>>4)*10+(u1&0x0F); write_sfm(3,u1);

lcd_wcom(0x80+0x40+4); //显示分 lcd_wcom(0x38);

lcd_wcom(0x0f); //显示功能开,有光标 }

if(an==3) {

u0=Read_ds1302(Read_hour);

u0=((u0&0x70)>>4)*10+(u0&0x0F); write_sfm(0,u0);

lcd_wcom(0x80+0x40+1); //显示时 lcd_wcom(0x38);

lcd_wcom(0x0f); //显示功能开,有光标 }

if(an==4) {

n3=Read_ds1302(Read_day);

n3=((n3&0x70)>>4)*10+(n3&0x0F); write_sfm1(8,n3);

lcd_wcom(0x80+9); //显示日 lcd_wcom(0x38);

lcd_wcom(0x0f); //显示功能开,有光标 }

if(an==5) {

n2=Read_ds1302(Read_month); n2=((n2&0x70)>>4)*10+(n2&0x0F); write_sfm1(5,n2);

lcd_wcom(0x80+6); //显示月 lcd_wcom(0x38);

15

附 录 lcd_wcom(0x0f); //显示功能开,有光标 }

if(an==6) {

n1=Read_ds1302(Read_year);

n1=((n1&0x70)>>4)*10+(n1&0x0F); write_sfm1(2,n1);

lcd_wcom(0x80+3); //显示年 lcd_wcom(0x38);

lcd_wcom(0x0f); //显示功能开,有光标 }

if(an==7) {

lshi=0; an=0;

Write_ds1302(Write_second,0x00); //从新开启时钟 lcd_wcom(0x38); lcd_wcom(0x0c); n=1; } } }

switch(an) {

case1:if(ID2==0) {delay(4); if(ID2==0)

{ while(!ID2); _asm(\

jia_key(Write_second,Read_second,6,1); _asm(\} }

if(ID3==0) //秒的减 { delay(4); if(ID3==0) { while(!ID3); _asm(\

jia_key(Write_second,Read_second,6,0); _asm(\} }

break;

case 2 :if(ID2==0) //分的加

16

附 录 {

delay(4); if(ID2==0) {while(!ID2); _asm(\

jia_key(Write_minute ,Read_minute,3,1); _asm(\} }

if(ID3==0) //分的减 {

delay(4); if(ID3==0) { while(!ID3); _asm(\

jia_key(Write_minute ,Read_minute,3,0); _asm(\} }

break;

case 3 :if(ID2==0) //时的加 { delay(4); if(ID2==0)

{ while(!ID2); _asm(\

hjia_key(Write_hour,Read_hour,0,1); _asm(\} }

if(ID3==0) //小时的减 { delay(4); if(ID3==0) { while(!ID3); _asm(\

hjia_key(Write_hour,Read_hour,0,0); _asm(\} }

break;

case 4: if(ID2==0) //日的加 { delay(4); if(ID2==0)

{ while(!ID2);

17


电子日历毕业设计论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电气安全管理规程 机械工业部(86)机生字76号

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

马上注册会员

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