ImageVerifierCode 换一换
格式:DOCX , 页数:5 ,大小:53.04KB ,
资源ID:2917631      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2917631.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LED数码管时钟程序 电路时间可调.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LED数码管时钟程序 电路时间可调.docx

1、LED数码管时钟程序 电路时间可调LED数码管时钟程序+电路-时间可调 自上次数码管时钟为完善版本(玩了几天后,懒啊不想动,汗)终于解决了不能进入调试的BUG 不来废话上程序:/* 程序名称:51单片机数码管电子钟+定时闹钟 晶振:12.00* 实验对象:51hei单片机学习开发板* 单 片 机:AT89S52或STC89C52 闹钟时间:7:10分(程序自定义)*使用定时器方式,数码管显示24小时“00-00-00”(增加中断进入对时功能P1为按键,P2为段选,P0为位选,*/*使用定时器方式,数码管显示24小时“00-00-00”(增加进入对

2、时功能)P1为按键,P2为段选,P0为位选,闹钟暂时不可调待完善)*/#include ;#define uchar unsigned char /*宏定义 */#define uint unsigned int /*宏定义 */uchar hour,hour_h,hour_l; /*定义小时,小时的高位,小时的低位*/uchar min,min_h,min_l; /*分*/uchar sec,sec_h,sec_l; /*秒*/uchar int_num; /*定时溢出作用标号*/sbit key_secadd=P11; /*定义了 p1.1为秒增1键,用在调时中断里*/sbit key_m

3、inadd=P12; /*定义了 p1.2为分增1键,用在调时中断里*/sbit key_houradd=P13; /*定义了 p1.3为时增1键,用在调时中断里*/sbit key_intime=P10; /按P1.0进入调时sbit key_quit=P15; /P1.5退出调时sbit bell=P15; /小喇叭void delay(uchar time); /*延时子函数声明*/void display(); /*显示子函数声明*/void inter_init(); /*定时器初始化子函数声明*/void time24();/*专用数码管显示表*/uchar code duma=0

4、x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /*0x40显示“一”符号*/uchar code wema=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00;/*小时hour 分min 秒sec*/-延时子函数-void delay(uchar time) /*延时子函数*/ uchar time_1; for (;time;0;time-) for (time_1=100;time_1;0;time_1-); /-初始化T0函数-void time0(void) i

5、nterrupt 1 /*定时器T0服务子程序*/ TH0=(65535-50000)/256; TL0=(65535-50000)%256; int_num+; /-定时器函数-void inter_init() /*定时器初始化子函数*/ EA=1; /*开总中断*/ EX0=1; /*开外部中断0*/ ET0=1; /*打开定时器T0*/ TMOD=0x01; /*工作方式1*/ TCON = 0x00; /*触发方式*/ IP = 0x01; /*中断优先级别,T0优先*/ TH0=(65535-50000)/256; /*置初值,大约50ms一个中断 */ TL0=(65535-50

6、000)%256; TR0=1; /*置位TR0,启动定时器0*/ /-24小时时间自加 - void time24() /*时间递增*/ if(int_num=20) /*值满20,大约就是一秒的时间。*/ /* 其值设为2,则定时时间快10倍,可做毫秒计时*/ int_num=0; sec+; /*秒值加1*/ if(sec=60) /*如果秒值满60,就归0*/ sec=0; min+; /*分值加1*/ if(min=60) min=0; hour+; /*分值归0,时值加1*/ if(hour=24) hour=0; /*时值满24归0*/ /-按键调整子函数-void key(vo

7、id) /按键调整子函数 if(key_intime=0) EA=0; / 关中断 sec=0; /秒归零 while(100) /正确 display(); if(key_quit=0) EA=1; break; if(key_secadd=0) delay(1); if(key_secadd=0) sec+; while(!key_secadd); if(sec=60) sec=0; if(key_minadd=0) delay(80); if(key_minadd=0) min+; while(!key_minadd); if(min=60) min=0; if(key_houradd=

8、0) delay(80); if(key_houradd=0) hour+; while(!key_houradd); if(hour=24) hour=0; /-数码管显示子函数-void display() /*数码管显示子函数*/ sec_h=sec/10; /*求出秒高位需要显示的字符*/ sec_l=sec%10; /*求出秒低位需要显示的字符*/ min_h=min/10; min_l=min%10; hour_h=hour/10; hour_l=hour%10; P2=dumasec_h; /*显示秒高位*/ P0=wema6; delay(10); P2=dumasec_l;

9、/*显示秒低位*/ P0=wema7; delay(10); P2=duma10; /* “一”符号的显示 */ P0=wema5; delay(10); P2=dumamin_h; /*分*/ P0=wema3; delay(10); P2=dumamin_l; P0=wema4; delay(10); P2=duma10; /* “一”符号的显示 */ P0=wema2; delay(10); P2=dumahour_h; /*时*/ P0=wema0; delay(10); P2=dumahour_l; P0=wema1; delay(10); /-主函数- /*void alarm_clock() /闹钟子函数-变频发声 uint i,j,y,m; if(hour=00)/时到了00点? if(min;=01)m=0; /分大于或等于01就把m清零,若不成立向下执行 if(min=00)/到了00分? if(m

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1