完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
单片机小白的秒表代码
作为一个单片机小白,这是我学习单片机的两周来打的第一个秒表程序。这个程序是在看过另外一个大佬的明白后,才打出来,我写出来主要是留下个记录,万一以后变动厉害了,也回忆一下,在这同时如果能帮助到另外的同学我就非常高兴了。 因为是自学 里面可能会有很多错误还请大家赐教。 其中还会用到独立按键(作为启动/暂停,还有复位功能)
#include typedef unsigned int u16; typedef unsigned char u8; u8 flag=-1; ***it start=P3^2; ***it reset=P3^3; ***it a0=P2^2; ***it a1=P2^3; ***it a2=P2^4; u16 num=0,num1=0,minu=0; //num为进入中断的次数 ,num1也是同样的功能用于表示秒的十分位 u16 counts=0,countm=0; // 两个作为分,秒的总计数 u8 smgnum[]={ 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c,0x39 , 0x5e , 0x79 , 0x71}; //不带小数点的数码管显示 u8 smgnum2[]=(0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef) ;//带小数点的数码管显示 void delay(u16 i) { while(i--); } void initime0() { TMOD=0x01; TH0=0xB1; TL0=0xE0; ET0=1; EA=1; TR0=0; } void display(); u16 s0,s,s1,min1,min2; //分别代表秒表的秒十分位,秒,秒十位,分,分十 void main() { initime0(); while(1) { if(start==0) { delay(5000); if(start==0) { flag=-flag; TR0=~TR0; while(!start); } } if(reset==0) { delay(5000); if(start==0) { TR0=0; num=0; num1=0; minu=0; while(!reset); } } if(num1>=5) //表示到100ms->0.1s { num1=0; s0++; //因为达到了0.1s if(s0>=10) s0=0; } if(num>=50) //1000ms { num=0; counts++; if(counts>=60) { countm++; counts=0; } } if(countm>=60) { countm=0; counts=0; num=0; num1=0; TR0=0; } s=counts%10; s1=counts/10; min1=countm%10; min2=countm/10; if(flag>0) display(); } } void breaktime0() interrupt 1 //定时器0的中断 { TH0=0xB1; TL0=0xE0; num++; num1++; } void display() { { a2=0,a1=0,a0=0; P0=smgnum[s0]; delay(10000); P0=0x00; //显示秒的十分位 } { a2=0,a1=0,a0=1; P0=smgnum delay(10000); //秒的分位,后面的类似 P0=0x00; } { a2=0,a1=1,a0=0; P0=smgnum[s1]; //十位 delay(10000); P0=0x00; } { a2=0,a1=1,a0=1; P0=smgnum2[min1]; delay(10000); //记得使用有op的数组 P0=0x00; } { a2=1,a1=0,a0=0; P0=smgnum[min2]; delay(10000); P0=0x00; } } |
|
|
|
只有小组成员才能发言,加入小组>>
2528 浏览 0 评论
1118浏览 2评论
725浏览 1评论
477浏览 0评论
225浏览 0评论
370浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:31 , Processed in 1.165878 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号