(51单片机电路图及讲解)那个大佬给讲解一下这个延时函数

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
51单片机超详细(超赞)教程详解.ppt 242页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
异步通信的另一个重要指标为波特率。 波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。通常,异步通信的波特率为50~9600b/s。 同步通信
同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,但它们均由同步字符、数据字符和校验字符CRC三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。 MCS-51的串行接口
串行口结构示意图 MCS-51的串行接口
SBUF是两个在物理上独立的接收、发送寄存器,一个用于存放接收到的数据,另一个用于存放待发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对SBUF的读、写语句来区别是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,操作的是发送缓冲器;读SBUF时,就是读接收缓冲器的内容。 SBUF=send[i];
// 发送第i个数据 buffer[i]=SBUF; //接收数据 串行口控制寄存器SCON
(98H) SM0 SM1 SM2 REN TB8 RB8 TI RI 串行口的工作方式 SM0
SM1 工作方式 功能 波特率 0
0 方式0 8位同步移位寄存器 fosc/12 0
1 方式1 10位UART 可变 1
0 方式2 11位UART fosc/64或fosc/32 1
方式3 11位UART 可变 串行口控制寄存器SCON
(98H) SM0 SM1 SM2 REN TB8 RB8 TI RI SM2:多机通信控制位,用于方式2和方式3中。 REN:允许串行接收位。由软件置位或清零。REN=1时,允许接收,REN=0时,禁止接收。TB8:发送数据的第9位。在方式2和方式3中,由软件置位或复位。一般可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时TB8为1,数据帧时TB8为0。 RB8:接收数据的第9位。功能同TB8。 串行口控制寄存器SCON
(98H) SM0 SM1 SM2 REN TB8 RB8 TI RI TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其他方式中,在发送停止位之初由硬件置位。因此,TI=1是发送完一帧数据的标志,其状态既可供软件查询使用,也可请求中断。TI位必须由软件清0。 RI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其他方式中,当接收到停止位时该位由硬件置1。因此,RI=1是接收完一帧数据的标志,其状态既可供软件查询使用,也可请求中断。RI位也必须由软件清0。 电源及波特率选择寄存器PCON
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,字节地址为87H,不可以位寻址。在HMOS的AT89C51单片机中,PCON除了最高位以外其它位都是虚设的。
PCON (87H)
SMOD × × × GF1 GF0 PD IDL
与串行通信有关的只有SMOD位。SMOD为波特率选择位。在方式1、2和3时,串行通信的波特率与SMOD有关。当SMOD=1时,通信波特率乘2,当SMOD=0时,波特率不变。 MCS-51串行口的工作方式
在方式0下,串行口作同步移位寄存器使用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。
这种方式通常用于扩展I/O口。
MCS-51串行口的工作方式
发送时,当数据写入发送缓冲器SBUF后,启动发送器发送,数据从TXD输出。当发送完一帧数据后,置中断标志TI为1。方式1下的波特率取决于定时器1的溢出率和PCON中的SMOD位。
接收时,REN置1,允许接收,串行口采样RXD,当采样由1到0跳变时,确认是起始位“0”,开始接收一帧数据。当RI=0,且停止位为1或SM2=0时,停止位进入RB8位,同时置中断标志RI;否则信息将丢失。所以,采用方式1接收时,应先用软件清除RI或SM2标志。 MCS-51串行口的工作方式
方式2 发送时,先根据通信协议由软件设置TB8,然后将要发送的数据写入SBUF,启动发送。写SBUF的语句,除了将8位数据送入SBUF外,同时还将TB8装入发送移位寄存器的第9位,并通知发送控制器进行一次发送,一帧信息即从TXD发送。在送完一帧信息后,TI被自动置1,在发送下一帧信息之前,TI必须在中断服务程序或查询程序中清0。 MCS-51串行口
正在加载中,请稍后...51单片机通常延时函数在前还是主函数在前?_百度知道
51单片机通常延时函数在前还是主函数在前?
在写51程序的时候,通常是延时函数在主函数前还是后面?刚学的单片机,也许这个问题有点菜鸟,教程里貌似都是延时函数在主函数前,下面是刚写的一个流水灯的程序,请教大家的是,延时函数可以写在主函数后面吗?
程序如下:
#include &reg52.h&
#include...
我有更好的答案
// 这样就行:#include &reg52.h&#include &intrins.h&typedef unsigned int u16;typedef unsigned char u8;void delay(u16 t);
//事先声明void main(){
delay(250);
temp=_crol_(temp,1);
}}void delay(u16 t){
for(i=t;i&0;i--)
for(j=400;j&0;j--);}
采纳率:59%
延时函数写在主函数之前,就不用先声明了;如果写在主函数后,必须先在一开始进行函数声明。按你这个函数来说的话,声明时直接写一句void delay(u16 );就可以了,
延时函数在主函数前面和后面没有关系的,延时函数在主函数前面不用申明,在主函数后面就要申明。你上面的延时函数放在后面应这样申明就可以了。#include &reg52.h&#include &intrins.h&typedef unsigned int u16;typedef unsigned char u8;void delay(u16 t);void main(){
delay(250);
temp=_crol_(temp,1);
}}void delay(u16 t){
for(i=t;i&0;i--)
for(j=400;j&0;j--);}
都可以的,在后面的话要在前面先声明,前面的话看起来不好看声明就是把void delay(u16 t)写最前面
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。只需一步,快速开始
后使用快捷导航没有帐号?
视频教程:http://v.youku.com/v_show/id_XMzE0ODkwNTU0MA==.html?spm=a2hzp..0资料下载:http://pan.baidu.com/s/1kVDtBZT程序和原理图等资料难免存在错误,最终以工作室博客更新为准,工作室博客地址:ht ...
我们天天晚上睡觉了,路由器天天工作,一刻不得歇息。天天去关电源太费事,想个办法让他自动休息吧,所以我做了这个东西。一、电路图如下:二、材料名称型号电路图标号数量单价合计备注电池座CR.14 电池 ...
冬天唔一杯热饮暖手,夏天来一杯冰汽水或啤酒,几乎是我们每年必做的事,却无法避免温度的渐渐散失,飘香的气味升华,最终与严酷的环境同化,然而你以为拿了饮料就得马上喝掉来防止温度散失?面就来跟我学一招吧
虽说光立方教程早已烂大街了,但是做出来成就感还是不错的,不发帖就太亏了,个人建议是能别做就别做,应为这玩意没多大难度,考验的就是耐心了。废话不说了,下面请看教程。 /************************************ ...
成品镇楼!!
(小米电子时钟,233~~)
————————————————————————————————————
制作项目:数码管桌面电子时钟
制作时间:6~8小时
制作难度:★★★☆☆☆
单片机的最小系统,适合入门新手来制作。我今天教大家做一做吧!TC还没做完,弄个最小系统玩玩。进入主题吧!
元件:at89s51
自恢复开关
16MHZ的晶振
电路图,这个是和
视频教程:http://v.youku.com/v_show/id_XMTU3MjY1Nzc5Ng==.html原理图、源代码下载:http://pan.baidu.com/s/1bnPoPSb视频中测试游戏为《极品飞车14》,若用于其他游戏,根据游戏的操作键修改Send程序中key1至Key5 ...
888光立方频视频教程强力发布,视频地址:http://v.youku.com/v_show/id_XMTUzMzc3OTQ4NA==.html资料包下载:888光立方资料包 - 副本.zip工作室新浪微博:http://weibo.com/ 工作室新浪博客:http://blog.s ...
制作教程视频地址: http://v.youku.com/v_show/id_XMTUwNzMwMjQ3Ng==.html 原理图、源代码下载:12864频谱.zip 工作室网盘地址,可下载更多分享内容http://pan.baidu.com/share/home?uk= 工作室交流讨论
制作教程视频:http://v.youku.com/v_show/id_XMTQ5NDgzNDEwNA==.html?from=y1.7-1.2程序解说视频:http://www.tudou.com/programs/view/TjoVTD0Kh88/原理图、源代码下载:手势遥控车资料包.zip工作室交流讨论群:23 ...
Arduino是创客们DIY的必备法宝。借助Arduino 开发板,创客们通过简单的代码程序就可以实现一些常用电子设备的运行功能。今天,创新林创客空间为大家带来了一款Arduino 温度计。这款温度计既可以作为日常温度计使用, ...
最近发现一个好玩的电路板,nodeMCU,性能不亚于arduino,内置wifi功能,板子价廉物美,很适合做DIY应用。
板子到手后,做点什么呢?就做个桌面上的股票机吧。最近股票涨涨跌跌很是疯狂,眼睛整体盯着电脑和手机,
在这个教程中,我会告诉你怎么快速制作属于自己的廉价ArduinoMini数控绘图机。图中这台绘图机是改进版,我对原有绘图机的结构和准确度都进行了一定的提升。好好阅读这篇文章,相信你也能轻松搞定自己的ArduinoMini绘 ...
编者注:本项目来自Instructables,项目原作者为RamyMounir。本项目是为满足南佛罗里达大学的Make课程的项目要求而设计的。我的名字叫RamyMounir,是南佛罗里达大学的Make课程的一名学生创客。在本项目中,我使用一
这是一个月前的作品了。。。。 最近发神经 爱上做摇摇棒了。
甚至都走上了设计成品板子的的地步。。 说实话 有一半的原因是给别人做个像样的生日礼物
去年做的文明用语死我了(┬_┬)↘ 。。。。。。
行了(* ̄ ...
呀,都快有两年没有新作品了,毕竟到高中之后时间更少。不知道还记得我不。。。。。这
上一个台锯已经逝世半年,此后,我深切体会到DIY过程中没有台锯的麻烦。前几日CNC的制
试着做的一体半桥固态特斯拉线圈,效果感觉还可以~首先设计PCB主板~用亚克力板配合螺
我们天天晚上睡觉了,路由器天天工作,一刻不得歇息。天天去关电源太费事,想个办法让
All Rights Reserved21ic官方微信-->
51单片机带闹钟可调时间的电子时钟程序设计
高级技术员, 积分 735, 距离下一级还需 265 积分
高级技术员, 积分 735, 距离下一级还需 265 积分
高级技术员, 积分 735, 距离下一级还需 265 积分
高级技术员, 积分 735, 距离下一级还需 265 积分
& &基于51单片机、 ds1302时钟芯片、 ds18b20温度芯片、 以及1602液晶显示的& & 实时时间& &和& &实时温度显示 。同时可通过按键 设置 年、月、日、时、分、星期。& && && && && && && && && && && && && && && && && && &并且可以设置闹钟&&当闹钟时间到时 蜂鸣器持续发出 滴..声 同时led灯不停闪烁& &且在一分钟内没有按指定停止按键 闹钟将自动停止&&。。。
高级技术员, 积分 735, 距离下一级还需 265 积分
高级技术员, 积分 735, 距离下一级还需 265 积分
高级技术员, 积分 735, 距离下一级还需 265 积分
高级技术员, 积分 735, 距离下一级还需 265 积分
#include &reg52.h&
#define uchar unsigned char
#define uint unsigned int
sbit spk=P1^7;
sbit led=P1^5;
sbit DQ=P1^0;
sbit RS=P2^4;
sbit RW=P2^5;
sbit EN=P2^6;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit IO=P3^6;
sbit RST=P3^7;
sbit SCLK=P3^5;
uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
int nian,xing,yue,ri,shi,fen,
uchar num,temp,c,d,time[7],a,b,aa,bb,ns,ng,ys,yg,rs,rg,ss,sg,fs,fg,ms,mg,
/*******************1602************************/
void delay(int z)
{
for(x=z;x&0;x--)
&&for(y=100;y&0;y--);
void write_com(uchar com)& &//写命令
{
void write_data(uchar date)& && &//写数据
{
EN=0;
}
void init()& && && & //初始化
{
write_com(0x38);& & //显示模式设置
write_com(0x0c);& & //开显示 不显示光标 不闪
write_com(0x06); //写一个字符 地址指针 光标 加一 整屏不移动
write_com(0x01);& & //显示清零
write_com(0x80+0x04);
write_data('2');& &&&
write_com(0x80+0x05);
write_data('0');& &&&
write_com(0x80+0x00);
write_data('c');& &&&
write_com(0x80+0x01);
write_data('a');
write_com(0x80+0x02);
write_data('i');& && &
write_com(0x80+0x4e);
write_data(0xdf);& &
write_com(0x80+0x4f);
write_data('C');& &&&
write_com(0x80+0x4b);
write_data(0x2e);& && & //显示&。&
}
/**************DS18B20****************/
void delay1(unsigned int t) //延时函数
{
while(t--);
}
void init1()&&//初始化
{
uchar n=0;
DQ=1;& && &//DQ复位
delay1(8);&&
DQ=0;& && &//主机将DQ拉低
delay1(80);& &&&//大于480us的延时
delay1(5);& & //延时15~60us
delay1(5);& &//若n=0初始成功 n=1初始失败(可设置返回值查看n是否为1)
void write_byte(uchar dat)& & //写入一个字节
{
for(i=0;i&8;i++)
{
&&DQ=0;
&&DQ=dat&0x01;
&&delay1(12);
&&DQ=1;
&&dat&&=1;
delay1(4);
}
uchar read_byte()& & //读入一个字节
{
uchar value=0;
for(k=0;k&8;k++)
{
&&DQ=0;
&&value&&=1;
&&DQ=1;
&&if(DQ)
&&value|=0x80;
&&delay1(4);
uchar read_temp()& & //读取温度函数
{
uchar a=0,b=0;
write_byte(0xcc);
write_byte(0x44);
delay1(200);
write_byte(0xcc);
write_byte(0xbe);
a=read_byte();&&
b=read_byte();
b+=(a&0xf0)&&4;
/***********************1302**********************/
void wirte_byte1(uchar date)& & //写入一个字节
{
for(i=8;i&0;i--)
{
&&IO=date&0x01;
&&SCLK=0;
&&SCLK=1;
&&date=date&&1;
& &}
}
uchar read_byte1()& && & //读一个字节
{
uchar dat,i;
for(i=8;i&0;i--)
{
&&dat=dat&&1;
&&SCLK=0;
&&if(IO)
&&dat=dat|0x80;
&&SCLK=1;
return(dat);
}
void write_ds1302(uchar add,uchar date)& &&&//将数据写入1302中
{
wirte_byte1(add);
wirte_byte1(date);
uchar read_ds1302(uchar add)&&//读出1302中数据
{
wirte_byte1(add);
temp=read_byte1();
return (temp);
}
uchar huan_BCD(uint z)& &//将数据 转换成BCD
{
uint a,b;
&&a=z/10;
&&b=z%10;
&&a=a&0
&&b=b&0
&&a&&=4;
&&a=a|b;
return (a);
}
void xian_shi()& && & //液晶显示函数
{
if(b==0&a==0)
&&ms=time[0]/16;
&&mg=time[0]%16;
&&fs=time[1]/16;
&&fg=time[1]%16;
&&fen=fs*10+
&&ss=time[2]/16;
&&sg=time[2]%16;
&&shi=ss*10+
&&rs=time[3]/16;
&&rg=time[3]%16;
&&ri=rs*10+
&&ys=time[4]/16;
&&yg=time[4]%16;
&&yue=ys*10+
&&ns=time[6]/16;
&&ng=time[6]%16;
&&nian=ns*10+
&&xing=time[5];
if(a==1|b==1)
{
&&ss=shi/10;
&&sg=shi%10;
&&write_com(0x80+0x41);
&&write_data(0xff);
&&write_com(0x80+0x40);& &
&&write_data(table[ss]);
&&write_com(0x80+0x41);& &
&&write_data(table[sg]);
if(a==2|b==2)
& & {
&&fs=fen/10;
&&fg=fen%10;
&&write_com(0x80+0x44);
&&write_data(0xff);
&&write_com(0x80+0x43);& &
&&write_data(table[fs]);
&&write_com(0x80+0x44);& &
&&write_data(table[fg]);
if(a==3)
& & {
&&rs=ri/10;
&&rg=ri%10;
&&write_com(0x80+0x0d);
&&write_data(0xff);
&&write_com(0x80+0x0c);& &
&&write_data(table[rs]);
&&write_com(0x80+0x0d);& &
&&write_data(table[rg]);
if(a==4)
& & {
&&ys=yue/10;
&&yg=yue%10;
&&write_com(0x80+0x0a);
&&write_data(0xff);
&&write_com(0x80+0x09);& &
&&write_data(table[ys]);
&&write_com(0x80+0x0a);& &
&&write_data(table[yg]);
if(a==5)
& & {
&&ns=nian/10;
&&ng=nian%10;
&&write_com(0x80+0x07);
&&write_data(0xff);
&&write_com(0x80+0x06);& &
&&write_data(table[ns]);
&&write_com(0x80+0x07);& &
&&write_data(table[ng]);
if(a==6)
& & {
&&write_com(0x80+0x0f);
&&write_data(0xff);
&&write_com(0x80+0x0f);& &
&&write_data(table[xing]);
}
&&write_com(0x80+0x06); //在液晶第一行第七八位显示&&年& &
&&write_data(table[ns]);
&&write_com(0x80+0x07);& &
&&write_data(table[ng]);
&&write_com(0x80+0x08);& &
&&write_data('-');
&&write_com(0x80+0x09); //在液晶第一行第十十一位显示&&月& &
&&write_data(table[ys]);
&&write_com(0x80+0x0a);& &
&&write_data(table[yg]);
&&write_com(0x80+0x0b);& &
&&write_data('-');
&&write_com(0x80+0x0c); //在液晶第一行第十三 十四位显示&&日& &
&&write_data(table[rs]);
&&write_com(0x80+0x0d);& &
&&write_data(table[rg]);
&&write_com(0x80+0x0f);& &//在液晶第一行第十七位显示&&星期
&&write_data(table[xing]);
&&write_com(0x80+0x40);& &//在液晶第二行第二三位显示& & 时
&&write_data(table[ss]);
&&write_com(0x80+0x41);& &
&&write_data(table[sg]);
&&write_com(0x80+0x42);& &
&&write_data(':');
&&write_com(0x80+0x43);& &//在液晶第二行第五六位显示&&分
&&write_data(table[fs]);
&&write_com(0x80+0x44);& &
&&write_data(table[fg]);
&&write_com(0x80+0x45);& &
&&write_data(':');
&&write_com(0x80+0x46);& &//在液晶第二行第**位显示&&秒
&&write_data(table[ms]);
&&write_com(0x80+0x47);& &
&&write_data(table[mg]);
}
void keyscan()& & //按键设置函数&&可任意设置年月日时分秒星期的数值
{
if(key4!=0)
{
&&if(key1==0)& &//key1按键 选择需设置的位
&&{
& &if(key1==0)
& &{
& & a++;
& & delay(1);
& &}
& && && &while(!key1)
& &{& && &
& & delay(1);
& &}& && &
&&if(a!=0)
&&{
& &if(key2==0)& & //key2按键 可将需设置的数 调大
& &{
& & if(a==1)
& & {
& &&&shi++;
& &&&if(shi&=24)
& &&&{
& && &shi=0;
& &&&}
& & }
& & if(a==2)
& & {
& &&&fen++;
& &&&if(fen&=60)
& &&&{
& && &fen=0;
& &&&}
& & }
& & if(a==3)
& & {
& &&&ri++;
& &&&if(ri&=32)
& &&&{
& && &ri=1;
& &&&}
& & }
& & if(a==4)
& & {
& &&&yue++;
& &&&if(yue&=12)
& &&&{
& && &yue=1;
& &&&}
& & }
& & if(a==5)
& & {
& &&&nian++;
& &&&if(nian&=99)
& &&&{
& && &nian=0;
& &&&}
& & }
& & if(a==6)
& & {
& &&&xing++;
& &&&if(xing&=8)
& &&&{
& && &xing=1;
& &&&}
& & }
& &}
& &if(key3==0)& & //key3按键 可将需设置的数 调小
& &{
& &
& & if(a==1)
& & {
& &&&shi--;
& &&&if(shi&0)
& &&&{
& && &shi=23;
& &&&}
& & }
& & if(a==2)
& & {
& &&&fen--;
& &&&if(fen&0)
& &&&{
& && &fen=59;
& &&&}
& & }
& & if(a==3)
& & {
& &&&ri--;
& &&&if(ri&1)
& &&&{
& && &ri=31;
& &&&}
& & }
& & if(a==4)
& & {
& &&&yue--;
& &&&if(yue&1)
& &&&{
& && &yue=12;
& &&&}
& & }
& & if(a==5)
& & {
& &&&nian--;
& &&&if(nian&0)
& &&&{
& && &nian=99;
& &&&}
& & }
& & if(a==6)
& & {
& &&&xing--;
& &&&if(xing&1)
& &&&{
& && &xing=7;
& &&&}
& & }
& &if(a==7)& && & //当按下key1 7次后&&将个数据写入1302
& &{
& & a=0;
& & write_dse,0x00);& &//WP=0 写操作
& & write_ds,0x00);& &//0x80是写秒数据
& & write_ds,huan_BCD(fen)); //0x82是写分数据
& & write_ds,huan_BCD(shi)); //0x84是写时数据
& & write_ds,huan_BCD(ri)); //0x84是写日数据
& & write_ds,huan_BCD(yue)); //0x84是写月数据
& & write_dsa,huan_BCD(xing)); //0x84是写星期数据
& & write_dsc,huan_BCD(nian)); //0x84是写年数据
& & write_dse,0x80);& &//WP=1 写保护& &
void naozhong()& && &//通过按键设置闹钟&&时 分
{
if(key1!=0)
{
&&if(key4==0)
&&{
& &if(key4==0)
& &{
& & b++;
& & delay(1);
& &}
& && && &while(!key4)
& &{& && &
& & delay(1);
& &}
&&}
&&if(b!=0)
&&{
& &if(key2==0)& & //key2按键 可将需设置的数 调大
& &{
& & if(b==1)
& & {
& &&&shi++;
& &&&if(shi&=24)
& &&&{
& && &shi=0;
& &&&}
& & }
& & if(b==2)
& & {
& &&&fen++;
& &&&if(fen&=60)
& &&&{
& && &fen=0;
& &&&}
& & }
& &}
& &if(key3==0)& & //key3按键 可将需设置的数 调小
& &{
& & if(b==1)
& & {
& &&&shi--;
& &&&if(shi&0)
& &&&{
& && &shi=23;
& &&&}
& & }
& & if(b==2)
& & {
& &&&fen--;
& &&&if(fen&0)
& &&&{
& && &fen=59;
& &&&}
& & }
& &}
& &aa=huan_BCD(shi);& &//将设置的时钟 赋值给aa
& &bb=huan_BCD(fen); //将设置的分钟 赋值给bb
& &if(b==3)& && & //当按下key4 3次后 闹钟设置完成
& &{
& & b=0;
& &}
&&}
void main()
{
TMOD=0x10;
TH1=()/256;
TL1=()%256;
{
&&temp=0x81;& && && & //读的初始地址& && && && && && &
& && &&&for(i=0;i&7;i++)& && && && & //分别把秒分时日月年星期数据读出分7次读好一次地址加2& temp+=2;&
& && &{
& && && &time[i]=read_ds1302(temp);
& && &temp+=2;
& && &&&}
&&if(bb==time[1]&aa==time[2]&!time[0])&&//如果读出来的时钟 分钟与1302读出来的值相等且读出来的秒钟为零时 进入中断
&&{
& &TR1=1;
& &flag=1;& &//标志位设置为1
&&}
&&if(key3==0)& &//进入闹钟后 可由key3按下 停止中断 标志位置零 允许调时闹钟设置按键动作 停止闹铃
&&{
& &led=1;
& &spk=1;
& &flag=0;
& &TR1=0;
&&}
& && &&&if(flag!=1)& &//当进入闹钟中断后 调时与设置闹钟的按键&&无效
& &&&{
& && && &naozhong();
& &keyscan();
&&}
&&xian_shi();
&&temp=read_temp();
&&write_com(0x80+0x49);& &
&&write_data(table[temp/10]);& & //在液晶第二行第十位显示温度的十位
&&write_com(0x80+0x4a);&&
&&write_data(table[temp%10]);& & //在液晶第二行第十一位显示温度的个位
&&write_com(0x80+0x4c);& &
&&write_data(table[(d&0x0f)*625/1000]);& &//在液晶第二行第十三位显示温度的小数点后一位
&&write_com(0x80+0x4d);& &
&&write_data(table[(d&0x0f)*625/100%10]);& &//在液晶第二行第十四位显示温度的小数点后二位
void timer1() interrupt 3& &&&//定时器
TH1=()/256;
TL1=()%256;
spk=0;& && &//蜂鸣器&&发出 滴答 声
led=!& && &//发光二极管&&不停闪烁
delay1(10);
if(t==1120)& & //约1分钟后 闹钟自动停止 标志位
{
&&led=1;
&&spk=1;
&&t=0;
&&TR1=0;
&&flag=0;
资深技术员, 积分 303, 距离下一级还需 197 积分
资深技术员, 积分 303, 距离下一级还需 197 积分
资深技术员, 积分 303, 距离下一级还需 197 积分
资深技术员, 积分 303, 距离下一级还需 197 积分
谢谢。能实现功能?
实习生, 积分 12, 距离下一级还需 38 积分
实习生, 积分 12, 距离下一级还需 38 积分
实习生, 积分 12, 距离下一级还需 38 积分
实习生, 积分 12, 距离下一级还需 38 积分
背面是用锡丝吗?不会连到其它脚吗
中级技术员, 积分 154, 距离下一级还需 146 积分
中级技术员, 积分 154, 距离下一级还需 146 积分
中级技术员, 积分 154, 距离下一级还需 146 积分
中级技术员, 积分 154, 距离下一级还需 146 积分
&&感谢楼主分享
技术达人, 积分 9088, 距离下一级还需 912 积分
技术达人, 积分 9088, 距离下一级还需 912 积分
技术达人, 积分 9088, 距离下一级还需 912 积分
技术达人, 积分 9088, 距离下一级还需 912 积分
我有个看法:难道时间不值钱吗?
这样焊接,出了问题还不大好查,万一短路弄不好一烧一大片。
这样的板子画个图,打个样,10块线路板也就几十元钱,用这个万能板焊接,焊接的时间成本远超过这几十元钱了吧?
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
大神,为什么我把程序下载到单片机上,lcd1602不显示时间啊??
资深技术员, 积分 417, 距离下一级还需 83 积分
资深技术员, 积分 417, 距离下一级还需 83 积分
资深技术员, 积分 417, 距离下一级还需 83 积分
资深技术员, 积分 417, 距离下一级还需 83 积分
锦锐MCU,带LCD/LED驱动,Flash芯片可以反复插写,支持外置32.768晶振,非常适合开发开发时钟,万年历!
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
扫描二维码,随时随地手机跟帖
时间类勋章
技术高手奖章
人才类勋章
突出贡献奖章
等级类勋章
时间类勋章
沉静之湖泊
发帖类勋章
技术导师奖章
人才类勋章
您需要登录后才可以回帖
热门推荐 /7
MACOM在线研讨会正在召开~

我要回帖

更多关于 单片机电路图及讲解 的文章

 

随机推荐