| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 郭天祥的10天学会51单片机_第十一节 -> 正文阅读 |
|
[嵌入式]郭天祥的10天学会51单片机_第十一节 |
参考第十节的课件DS12887 RTC就是Real Time Clock实时时钟 DS12887芯片是保持时间的,即当前设定一个时间,然后断电,而该芯片的时间还在走 DS12887-5指的是5伏,DS12887-33指的是3.3伏 OSC是时钟振荡器(给时钟提供频率),下面是电源控制及掉电自动保护,往下是总线接口 DIVID BY 8是八分频 MOT是总线类型选择,本节让MOT接地或不接,即用于Intel模式 NC就是Not Connect不连接 AD0到AD7接单片机的P0口 TX-1C型单片机实验板原理图上的24C02(图中标错了,标成24C00)是EEPROM AS就是Address strobe(地址闸门),接P1^5口,高电平写地址,低电平锁存数据 DS就是Data strobe(数据闸门),连到P1^7口,高电平写数据 R/W连到P1^6口 ?便找个口,这里用P1^4口,操作时拉低,不操作时拉高 IRQ(Interrupt Reques)是中断,接P3^2口(只能接单片机的外部中断1口P3^3口和外部中断0口P3^2口),用于定时闹钟后,当中断发生时IRQ由高电平变成低电平,送到单片机,让单片机控制蜂鸣器响 RESET接VCC(高电平1) SQW是方波输出,见DS12887的P20表3,这里没用到所以不接 一般时钟是32.768KHZ石英晶体 见DS12CR887-DS12R887_cn的PDF的P14表2A,时分秒的地址,Second Alarm是秒定时器,例如Second,秒的地址是00H,可以从00H读出秒的值,只使用BIT0到BIT5;0A到0D是四个定时器;读的时候先赋地址再赋数据 写程序的时候要考虑时间,见DS12887的P4时间表,指令时间宽度都是纳秒,而一个机器周期至少是毫秒,肯定保证机器时间内指令能完成,所以纳秒可以不用管 见DS12887的P17给B寄存器设置为26开启闹钟 蜂鸣器是P2^3口 见DS12CR887-DS12R887_cn的PDF的P18,如果不读取C寄存器就会让IRQ变低后一直保持低电平,只触发一次中断,而不能触发下一次中断 延时消抖的时间1毫秒是消抖不了的,可以设置成5毫秒 TX-1C型单片机实验板原理图上的PL2303是下载口 点击Options for Target按钮,在Output菜单页面上,将Browse Information 点上钩,作用是要看函数的定义或引用可以用鼠标右键选择最后两项 标记,鼠标右键选择Toggle Bookmark,然后按F2即可选择标记所在的行 添加头文件,写完头文件,保存完头文件,再添加时,保存类型选择ALL Files,出现的对话框中的Type选择Text Document File,再确定 以后可以把每个模块都写成头文件,在源文件中添加即可 学完单片机要多练,单片机熟练后可以学嵌入式ARM7,然后ARM9,多锻炼多实践 我犯的错误:外部中断0接3^2口,外部中断1接3^3口,把时钟芯片的IRQ接单片机的3^2口 Shizhong.c: #include<reg52.h> #include<define.h> void delay(uint z) { ???????? uint x,y; ???????? for(x=z;x>0;x--) ?????????????????? for(y=110;y>0;y--); } void didi() { ???????? beep=0; ???????? delay(50); ???????? beep=1; ???????? delay(100); ???????? beep=0; ???????? delay(50); ???????? beep=1; } void write_com(uchar com) { ???????? rs=0; ???????? lcden=0; ???????? P0=com; ???????? delay(5); ???????? lcden=1; ???????? delay(5); ???????? lcden=0;?? } void write_date(uchar date) { ???????? rs=1; ???????? lcden=0; ???????? P0=date; ???????? delay(5); ???????? lcden=1; ???????? delay(5); ???????? lcden=0;?? } void init() { ???????? uchar num; ???????? EA=1; ???????? EX0=1; //开外部中断0,使用内部中断时还需要启动内部中断,而外部的时钟芯片自己一直自动提供频率,不需要再启动外部中断 ???????? IT0=1; //外部中断0,下降沿触发方式 ???????? dula=0; ???????? wela=0; ???????? lcden=0;//先关闭外部中断,为时钟芯片的定时中断做准备 ???????? //set_time();//设置时钟芯片初始时间,这里如果设置,每次开启单片机就会重新设置时钟芯片的时间,如果不设置,时钟芯片会在关闭期间还在走,每次开启单片机时就会输出新时间,即上次关闭的时间加上再次开启之间的时间 ???????? set_alarm(14,13,10); ???????? write_ds(0x0B,0x26);//向B寄存器里写26,开启闹钟 ???????? read_ds(0x0c);//读一下C寄存器,见DS12CR887-DS12R887_cn的PDF的P18,读一下C //寄存器为了清除上次IRQ的状态;因为见DS12CR887-DS12R887_cn的PDF的P17的闹钟中断使能AIE,AIE置1时,寄存器C的闹钟中断标志AF位驱动产生IRQ信号,见DS12CR887-DS12R887_cn的PDF的P18,当AF=AIE=1时,IRQF为1,让IRQ变低,这样IRQ就不能产生下降沿进入中断,所以要读一下C寄存器清除IRQ低电平状态 //????? fen=59; //????? miao=53; //????? shi=23; ???????? write_com(0x38); ???????? write_com(0x0c); ???????? write_com(0x06); ???????? write_com(0x01); ???????? write_com(0x80); ???????? for(num=0;num<15;num++) ?????????????????? { ??????????????????????????? write_date(table[num]); ??????????????????????????? delay(5); ?????????????????? } ???????? write_com(0x80+0x40); ???????? for(num=0;num<12;num++) ?????????????????? { ??????????????????????????? write_date(table1[num]); ??????????????????????????? delay(5); ?????????????????? } } void write_sfm(uchar add,uchar date) { ???????? uchar shi,ge; ???????? shi=date/10; ???????? ge=date%10; ???????? write_com(0x80+0x40+add); ???????? write_date(0x30+shi); ???????? write_date(0x30+ge); } void keyscan() { ???????? rd=0; ???????? if(flag1==1) ???????? { ?????????????????? if(s2==0) ?????????????????? {??????? ??????????????????????????? delay(5); ??????????????????????????? if(s2==0) ??????????????????????????? { ???????????????????????????????????? while(!s2); ???????????????????????????????????? flag1=0; ??????????????????????????? } ??????????????????????????? ??????? ?????????????????? } ?????????????????? if(s3==0) ?????????????????? {??????? ??????????????????????????? delay(5); ??????????????????????????? if(s3==0) ??????????????????????????? { ???????????????????????????????????? while(!s3); ???????????????????????????????????? flag1=0; ??????????????????????????? } ?????????????????? } ???????? } ?????????????????? ???????? if(s1==0)? ???????? { ?????????????????? delay(5); ?????????????????? if(s1==0) ?????????????????? {??????? s1num++; ??????????????????????????? flag=1; ??????????????????????????? flag1=0; ??????????????????????????? while(!s1); ??????????????????????????? if(s1num==1) ??????????????????????????? { ???????????????????????????????????? TR0=0; ???????????????????????????????????? write_com(0x80+0x40+10); ???????????????????????????????????? write_com(0x0f); ??????????????????????????? } ?????????????????? } ??????????????????????????? if(s1num==2) ??????????????????????????? { ???????????????????????????????????? write_com(0x80+0x40+7); ??????????????????????????? } ??????????????????????????? if(s1num==3) ??????????????????????????? { ???????????????????????????????????? write_com(0x80+0x40+4); ??????????????????????????? } ??????????????????????????? if(s1num==4) ??????????????????????????? { ???????????????????????????????????? s1num=0; ???????????????????????????????????? write_com(0x0c); ???????????????????????????????????? flag=0; ???????????????????????????????????? write_ds(0,miao); ???????????????????????????????????? write_ds(2,fen); ???????????????????????????????????? write_ds(4,shi); ??????????????????????????? } ???????????????????????????????????? ?????????????????? } ?????????????????? if(s1num!=0) ?????????????????? { ??????????????????????????? if(s2==0) ??????????????????????????? { ???????????????????????????????????? delay(1); ???????????????????????????????????? if(s2==0) ???????????????????????????????????? { ?????????????????????????????????????????????? while(!s2); ?????????????????????????????????????????????? if(s1num==1) ?????????????????????????????????????????????? { ??????????????????????????????????????????????????????? miao++; ??????????????????????????????????????????????????????? if(miao==60) ??????????????????????????? ???????????????????????????????????? miao=0; ??????????????????????????????????????????????????????? write_sfm(10,miao); ??????????????????????????????????????????????????????? write_com(0x80+0x40+10); ??????????????????????????????????????????????????????? ??????????????????????????????????????????????????????? ?????????????????????????????????????????????? } ?????????????????????????????????????????????? if(s1num==2) ?????????????????????????????????????????????? { ??????????????????????????????????????????????????????? fen++; ??????????????????????????????????????????????????????? if(fen==60) ???????????????????????????????????????????????????????????????? fen=0; ??????????????????????????????????????????????????????? write_sfm(7,fen); ??????????????????????????????????????????????????????? write_com(0x80+0x40+7); ?????????????????????????????????????????????? } ?????????????????????????????????????????????? if(s1num==3) ?????????????????????????????????????????????? { ??????????????????????????????????????????????????????? shi++; ??????????????????????????????????????????????????????? if(shi==24) ???????????????????????????????????????????????????????????????? shi=0; ??????????????????????????????????????????????????????? write_sfm(4,shi); ??????????????????????????????????????????????????????? write_com(0x80+0x40+4); ?????????????????????????????????????????????? } ???????????????????????????????????? } ??????????????????????????? } ??????????????????????????? if(s3==0) ??????????????????????????? { ???????????????????????????????????? delay(1); ???????????????????????????????????? if(s3==0) ???????????????????????????????????? { ?????????????????????????????????????????????? while(!s3); ?????????????????????????????????????????????? if(s1num==1) ?????????????????????????????????????????????? { ?????????????????????????????????????????????? /*???? if(miao==0) ??????????????????????????????????????????????????????? { ???????????????????????????????????????????????????????????????? miao=59; ???????????????????????????????????????????????????????????????? write_sfm(10,miao); ???????????????????????????????????????????????????????????????? write_com(0x80+0x40+10); ??????????????????????????????????????????????????????? }*/ ??????????????????????????????????????????????????????? miao--; ??????????????????????????????????????????????????????? if(miao==-1) ???????????????????????????????????????????????????????????????? miao=59; ??????????????????????????????????????????????????????? write_sfm(10,miao); ??????????????????????????????????????????????????????? write_com(0x80+0x40+10); ?????????????????????????????????????????????? } ?????????????????????????????????????????????? if(s1num==2) ?????????????????????????????????????????????? { ??????????????????????????????????????????????????????? fen--; ??????????????????????????????????????????????????????? if(fen==-1) ???????????????????????????????????????????????????????????????? fen=59; ??????????????????????????????????????????????????????? write_sfm(7,fen); ??????????????????????????????????????????????????????? write_com(0x80+0x40+7); ?????????????????????????????????????????????? } ?????????????????????????????????????????????? if(s1num==3) ?????????????????????????????????????????????? { ??????????????????????????????????????????????????????? shi--; ??????????????????????????????????????????????????????? if(shi==-1) ???????????????????????????????????????????????????????????????? shi=23; ??????????????????????????????????????????????????????? write_sfm(4,shi); ??????????????????????????????????????????????????????? write_com(0x80+0x40+4); ?????????????????????????????????????????????? } ???????????????????????????????????? } ??????????????????????????? } ?????????????????? } } void write_ds(uchar add,uchar date) { ???????? dscs=0;//片选置低电平使用时钟芯片 ???????? dsas=1;//准备给地址 ???????? dsds=1; //准备给数据 ???????? dsrw=1;//读 ???????? P0=add;//给地址 ???????? dsas=0;//锁存地址 ???????? dsrw=0;//写 ???????? P0=date;//写数据 ???????? dsrw=1; ???????? dsas=1; ???????? dscs=1;??????????????????????????????? } uchar read_ds(uchar add) { ??????? uchar ds_date; ???????? dsas=1;//准备给地址 ???????? dsds=1; //准备给数据 ???????? dsrw=1;//读 ???????? dscs=0; ???????? P0=add;//读入地址 ???????? dsas=0;//锁存地址 ???????? dsds=0; ???????? P0=0xff; ???????? ds_date=P0;//数据准备好 ???????? dsds=1;//读入数据 ???????? dsas=1; ???????? dscs=1; ???????? return ds_date;??????? } void set_time() { ???????? write_ds(4,10); ???????? write_ds(2,32); ???????? write_ds(0,12); } void set_alarm(uchar ashi,uchar afen,uchar amiao) { ???????? write_ds(1,amiao); ???????? write_ds(3,afen); ???????? write_ds(5,ashi); } void main() { ???????? init(); ???????? while(1) ???????? { ?????????????????? keyscan(); ?????????????????? if(flag1==1) ??????????????????????????? didi(); ?????????????????? if(flag==0) ?????????????????? { ??????????????????????????? miao=read_ds(0);??? ??????????????????????????? fen=read_ds(2); ??????????????????????????? shi=read_ds(4); ??????????????????????????? write_sfm(10,miao); ??????????????????????????? write_sfm(7,fen); ??????????????????????????? write_sfm(4,shi); ?????????????????? } ???????? } } void exter() interrupt 0 {??????? uchar c; ???????? flag1=1; ???????? c=read_ds(0x0c);// 读一下C寄存器,清除上次IRQ的状态 } Define.h: #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit rs=P3^5; sbit lcden=P3^4; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2; sbit rd=P3^7; sbit beep=P2^3; sbit dscs=P1^4; sbit dsas=P1^5; sbit dsrw=P1^6; sbit dsds=P1^7; sbit dsirq=P3^3; uchar count,s1num,flag,flag1; char miao,shi,fen; uchar code table[]="? 2007-7-30 MON"; uchar code table1[]="????? :? :? "; void write_ds(uchar,uchar); void set_alarm(uchar,uchar,uchar); uchar read_ds(uchar); void set_time(); 我的程序: 我犯的错误:为了防止串口下载程序时不能使用第一行键,我把s3定义成P3^3口后,又把dsirq定义成P3^3口,造成冲突 Shizhong.c: #include<define.h> void delay(uint z) { ???????? uchar x,y; ???????? for(x=z;x>0;x--) ?????????????????? for(y=110;y>0;y--); } void write_com(uchar com) { ???????? rs=0; ???????? lcden=0; ???????? P0=com; ???????? delay(5); ???????? lcden=1; ???????? delay(5); ???????? lcden=0; } void write_date(uchar date) { ???????? rs=1; ???????? lcden=0; ???????? P0=date; ???????? delay(5); ???????? lcden=1; ???????? delay(5); ???????? lcden=0; } void write_ds(uchar add,uchar date) { ???????? dsas=1; ???????? dsds=1; ???????? dsrw=1; ???????? dscs=0; ???????? P0=add; ???????? dsas=0; ???????? dsrw=0; ???????? P0=date; ???????? dsas=1; ???????? dsrw=1; ???????? dscs=1; } uchar read_ds(uchar add) { ???????? uchar date; ???????? dsas=1; ???????? dsds=1; ???????? dsrw=1; ???????? dscs=0; ???????? P0=add; ???????? dsas=0; ???????? dsds=0; ???????? P0=0xff; ???????? date=P0; ???????? dsds=1; ???????? dscs=1; ???????? dsas=1; ???????? return date; } void set_time() { ???????? write_ds(4,15); ???????? write_ds(2,30); ???????? write_ds(0,45); ???????? write_ds(7,14); ???????? write_ds(8,2); ???????? write_ds(9,11); ???????? write_ds(6,2); } void set_alarm(uchar ashi,uchar afen,uchar amiao) { ???????? write_ds(5,ashi); ???????? write_ds(3,afen); ???????? write_ds(1,amiao); } void init() { ???????? uchar num; ???????? dula=0; ???????? wela=0; ???????? write_com(0x38); ???????? write_com(0x0c); ???????? write_com(0x06); ???????? write_com(0x01); ???????? write_com(0x80); ???????? for(num=0;num<15;num++) ???????? { ?????????????????? write_date(table1[num]); ?????????????????? delay(5); ???????? } ???????? write_com(0x80+0x40); ???????? for(num=0;num<12;num++) ???????? { ?????????????????? write_date(table2[num]); ?????????????????? delay(5); ???????? } ???????? ???????? EA=1; ???????? EX0=1; ???????? IT0=1; ???????? lcden=0; ???????? set_alarm(15,31,10); ???????? write_ds(0x0B,0x26); ???????? read_ds(0x0C); ???????? set_time(); } void wrtie_sfm(uchar add,uchar sfm) { ???????? uchar shi,ge; ???????? shi=sfm/10; ???????? ge=sfm%10; ???????? write_com(0x80+0x40+add); ???????? write_date(0x30+shi); ???????? write_date(0x30+ge); } void keyscane() { ???????? rd=0; ???????? if(flag1==1) ???????? { ?????????????????? if(s2==0) ?????????????????? { ??????????????????????????? delay(5); ??????????????????????????? if(s2==0) ??????????????????????????? { ???????????????????????????????????? while(!s2); ???????????????????????????????????? flag1=0; ??????????????????????????? } ?????????????????? } ?????????????????? if(s3==0) ?????????????????? { ??????????????????????????? delay(5); ??????????????????????????? if(s3==0) ??????????????????????????? { ???????????????????????????????????? while(!s3); ???????????????????????????????????? flag1=0; ??????????????????????????? } ?????????????????? } ???????? } ???????? if(s1==0) ???????? { ?????????????????? delay(5); ?????????????????? if(s1==0) ?????????????????? { ??????????????????????????? flag1=0; ??????????????????????????? flag=1; ??????????????????????????? while(!s1); ??????????????????????????? num1++; ??????????????????????????? if(num1==1) ??????????????????????????? { ???????????????????????????????????? write_com(0x80+0x40+10); ???????????????????????????????????? write_com(0x0f); ??????????????????????????? } ??????????????????????????? if(num1==2) ??????????????????????????? { ???????????????????????????????????? write_com(0x80+0x40+7); ??????????????????????????? } ??????????????????????????? if(num1==3) ??????????????????????????? { ???????????????????????????????????? write_com(0x80+0x40+4); ??????????????????????????? } ??????????????????????????? if(num1==4) ??????????????????????????? { ???????????????????????????????????? write_com(0x0c); ???????????????????????????????????? num1=0; ???????????????????????????????????? flag=0; ???????????????????????????????????? write_ds(0,miao); ???????????????????????????????????? write_ds(2,fen); ???????????????????????????????????? write_ds(4,shi); ??????????????????????????? } ?????????????????? } ???????? } ???????? if(num1!=0) ???????? { ?????????????????? if(s2==0) ?????????????????? { ??????????????????????????? delay(5); ??????????????????????????? if(s2==0) ??????????????????????????? { ???????????????????????????????????? while(!s2); ???????????????????????????????????? if(num1==1) ???????????????????????????????????? { ?????????????????????????????????????????????? miao++; ?????????????????????????????????????????????? if(miao==60) ??????????????????????????????????????????????????????? miao=0; ?????????????????????????????????????????????? wrtie_sfm(10,miao); ?????????????????????????????????????????????? write_com(0x80+0x40+10); ???????????????????????????????????? } ???????????????????????????????????? if(num1==2) ???????????????????????????????????? { ?????????????????????????????????????????????? fen++; ?????????????????????????????????????????????? if(fen==60) ??????????????????????????????????????????????????????? fen=0; ?????????????????????????????????????????????? wrtie_sfm(7,fen); ?????????????????????????????????????????????? write_com(0x80+0x40+7); ???????????????????????????????????? } ???????????????????????????????????? if(num1==3) ???????????????????????????????????? { ?????????????????????????????????????????????? shi++; ?????????????????????????????????????????????? if(shi==24) ??????????????????????????????????????????????????????? shi=0; ?????????????????????????????????????????????? wrtie_sfm(4,shi); ?????????????????????????????????????????????? write_com(0x80+0x40+4); ???????????????????????????????????? } ??????????????????????????? } ?????????????????? } ?????????????????? if(s3==0) ?????????????????? { ??????????????????????????? delay(5); ??????????????????????????? if(s3==0) ??????????????????????????? { ???????????????????????????????????? while(!s3); ???????????????????????????????????? if(num1==1) ???????????????????????????????????? { ?????????????????????????????????????????????? miao--; ?????????????????????????????????????????????? if(miao==-1) ??????????????????????????????????????????????????????? miao=59; ?????????????????????????????????????????????? wrtie_sfm(10,miao); ?????????????????????????????????????????????? write_com(0x80+0x40+10); ???????????????????????????????????? } ???????????????????????????????????? if(num1==2) ???????????????????????????????????? { ?????????????????????????????????????????????? fen--; ?????????????????????????????????????????????? if(fen==-1) ??????????????????????????????????????????????????????? fen=59; ?????????????????????????????????????????????? wrtie_sfm(7,fen); ?????????????????????????????????????????????? write_com(0x80+0x40+7); ???????????????????????????????????? } ???????????????????????????????????? if(num1==3) ???????????????????????????????????? { ?????????????????????????????????????????????? shi--; ?????????????????????????????????????????????? if(shi==-1) ??????????????????????????????????????????????????????? shi=23; ?????????????????????????????????????????????? wrtie_sfm(4,shi); ?????????????????????????????????????????????? write_com(0x80+0x40+4); ???????????????????????????????????? } ??????????????????????????? } ?????????????????? } ???????? } } void didi() { ???????? beep=0; ???????? delay(500); ???????? beep=1; ???????? delay(500); ???????? beep=0; ???????? delay(500); ???????? beep=1; } void write_yrn(uchar add,uchar date) { ???????? uchar shi,ge; ???????? shi=date/10; ???????? ge=date%10; ???????? write_com(0x80+add); ???????? write_date(0x30+shi); ???????? write_date(0x30+ge); } void write_xq(uchar date) { ???????? if(date==1) ???????? { ?????????????????? write_com(0x80+12); ?????????????????? write_date('M'); ?????????????????? write_date('O'); ?????????????????? write_date('N'); ???????? } ???????? if(date==2) ???????? { ?????????????????? write_com(0x80+12); ?????????????????? write_date('T'); ?????????????????? write_date('U'); ?????????????????? write_date('E'); ???????? } ???????? if(date==3) ???????? { ?????????????????? write_com(0x80+12); ?????????????????? write_date('W'); ?????????????????? write_date('E'); ?????????????????? write_date('N'); ???????? } ???????? if(date==4) ???????? { ?????????????????? write_com(0x80+12); ?????????????????? write_date('T'); ?????????????????? write_date('H'); ?????????????????? write_date('I'); ???????? } ???????? if(date==5) ???????? { ?????????????????? write_com(0x80+12); ?????????????????? write_date('F'); ?????????????????? write_date('I'); ?????????????????? write_date('V'); ???????? } ???????? if(date==6) ???????? { ?????????????????? write_com(0x80+12); ?????????????????? write_date('S'); ?????????????????? write_date('A'); ?????????????????? write_date('T'); ???????? } ???????? if(date==7) ???????? { ?????????????????? write_com(0x80+12); ?????????????????? write_date('S'); ?????????????????? write_date('U'); ?????????????????? write_date('N'); ???????? } } void main() { ???????? init(); ???????? while(1) ???????? { ?????????????????? keyscane(); ?????????????????? if(flag1==1) ?????????????????? { ??????????????????????????? flag1=0; ??????????????????????????? didi(); ?????????????????? } ?????????????????? if(flag==0) ?????????????????? { ??????????????????????????? miao=read_ds(0); ??????????????????????????? fen=read_ds(2); ??????????????????????????? shi=read_ds(4); ??????????????????????????? day=read_ds(6); ??????????????????????????? date=read_ds(7); ??????????????????????????? month=read_ds(8); ??????????????????????????? year=read_ds(9); ??????????????????????????? xq=read_ds(6); ??????????????????????????? wrtie_sfm(10,miao); ??????????????????????????? wrtie_sfm(7,fen); ??????????????????????????? wrtie_sfm(4,shi); ??????????????????????????? write_yrn(9,date); ??????????????????????????? write_yrn(6,month); ??????????????????????????? write_yrn(3,year); ??????????????????????????? write_com(0x80+1); ??????????????????????????? write_date(0x30+2); ??????????????????????????? write_date(0x30+0); ??????????????????????????? write_xq(xq); ?????????????????? } ???????? } } void exter0() interrupt 0 { ???????? read_ds(0x0C); ???????? flag1=1; } Define.h: #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; sbit rs=P3^5; sbit lcden=P3^4; sbit rd=P3^7; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2; sbit dsas=P1^5; sbit dsds=P1^7; sbit dsrw=P1^6; sbit dscs=P1^4; sbit dsirq=P3^3; sbit beep=P2^3; uchar aa,num1,num2,num3,flag,flag1; char miao,fen,shi,day,date,month,year,xq; uchar code table1[]=" 2011-02-14 MON"; uchar code table2[]="????? :? :? "; void write_ds(uchar,uchar); uchar write_rd(uchar); void set_time(); void set_alarm(uchar,uchar,uchar);???????? ? void didi(); void write_yri(uchar,uchar); void write_xq(uchar); 我调了很多次调不出时钟的闹钟功能,我就先看看能不能接收到时钟的闹钟数值,在set_alarm()中添加didi(),现象是闹钟响,说明进入到了时钟的闹钟数值设置中,在didi()中又进入flag=1,让时钟静止,现象是时钟没有静止,说明时钟设置好闹钟后到设定时间没有进入闹钟响声程序, |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:34:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |