完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 liangyuhc 于 2012-10-15 12:06 编辑 显示效果 自己做的一个彩色led显示器 焊接的很难看,很不好意思 #include #define uchar unsigned char #define uint unsigned int ***it LE1=P3^0; ***it LE2=P3^1; ***it LE3=P3^2; ***it K1=P3^3; ***it K2=P3^4; ***it K3=P3^5; ***it K4=P3^5; ***it W0=P1^0; ***it W1=P1^1; ***it W2=P1^2; ***it W3=P1^3; ***it W4=P1^4; ***it W5=P1^5; /*函数声明*************************************************************/ void s_jian_z(); void xian_s(); void delay_xms(uint); void key_scan(); void chu_s(); /********************************************************************/ uchar code dH_ma[]={0xdf,0x99,0xef,0x6f,0x7d,0x3f,0xbf,0x47,0xff,0x7f}; uchar code dL_ma[]={0xf8,0x20,0xb8,0xf8,0xc8,0xf8,0xf8,0xc8,0xf8,0xf8}; uchar num=00;f_num=00;s_num=00; uchar num0; uchar m_shi,m_ge,f_shi,f_ge,s_shi,s_ge; uint s_f_k1=0; uint s_f_k2=0; /*初始化函数*********************************************************/ void chu_s() { TMOD=0x10; EA=1; ET1=1; TR1=1; } /*延时函数*************************************************************/ void delay_xms(uint xms) { uchar i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } /*键盘扫描函数*********************************************************/ void key_scan() { if(K1==0&&s_f_k1==2) //按下三次k1时间设定完成 { delay_xms(2); if(K1==0) s_f_k1=0; while (!K1); } if(K1==0&&s_f_k1==1) { delay_xms(2); if(K1==0) s_f_k1=2; //表示k1按下两次 ,可以改变时间的分钟设定新值 while(!K1); } if(K1==0) { delay_xms(2); if(K1==0) s_f_k1=1; //表示k1按下一次 ,可以改变时间的小时设定新值 while(!K1); } if(s_f_k1==1) { if(K2==0) //表示k1按下之后,按下k2,小时加1 { delay_xms(2); if(K2==0) { s_num++; if(s_num==24) s_num=0; } while(!K2); } else if (K3==0) //表示按下k1之后,按下k3,小时减1 { delay_xms(2); if(K3==0) { if(s_num==0) s_num=24; s_num--; } while(!K3); } } if(s_f_k1==2) if(K2==0) //表示按下k1两次,按下k2分钟加1 { delay_xms(2); if(K2==0) { f_num++; if(f_num==60) f_num=0; while(!K2); } } else if (K3==0) //表示k1按下两次,这次按下k3分钟减1 { delay_xms(2); if(K3==0) { if(f_num==0) f_num=60; f_num--; while(!K3); } } } /*时间附值函数*********************************************************/ void s_jian_z() { if(num0==20)//定时20ms { num0=0; num++; } if(num==60) { num=0; f_num++; } if(f_num==60) { f_num=0; s_num++; } if(s_num==24) s_num=0; } /*键盘扫描函数*********************************************************/ /*扫描显示函数**********************************************************/ void xian_s( ) { s_jian_z(); m_shi = num/10; m_ge =num%10; f_shi =f_num/10; f_ge =f_num%10; s_shi =s_num/10; s_ge =s_num%10; /**小时十位的显示************************************************/ LE3=1;LE2=1;LE1=1; W0=0; P0=dH_ma[s_shi]; P2=dL_ma[s_shi]; delay_xms(5); P0=0x00; P2=0x00; W0=1; /***小时个位的显示***************************************************/ W1=0; P0=dH_ma[s_ge]; P2=dL_ma[s_ge]; delay_xms(5); P0=0x00; P2=0x00; W1=1; /***分钟十位显示******************/ W2=0; P0=dH_ma[f_shi]; P2=dL_ma[f_shi]; delay_xms(5); P0=0x00; P2=0x00; W2=1; /**分钟个位显示****************/ W3=0; P0=dH_ma[f_ge]; P2=dL_ma[f_ge]; delay_xms(5); P0=0x00; P2=0x00; W3=1; /**秒钟十位显示******/ W4=0; P0=dH_ma[m_shi]; P2=dL_ma[m_shi]; delay_xms(5); P0=0x00; P2=0x00; W4=1; /*秒钟个位显示*/ W5=0; P0=dH_ma[m_ge]; P2=dL_ma[m_ge]; delay_xms(5); P0=0x00; P2=0x00; W5=1; } /****主函数*******************************************************/ void main() { s_jian_z(); chu_s(); while(1) { key_scan(); //检测键盘 if(!s_f_k1) //当调节时间的时候数码管处于闪烁状态 xian_s(); //显示内容 else while(1) { xian_s(); //显示内容 delay_xms(200); delay_xms(200); delay_xms(200); delay_xms(200); delay_xms(200); delay_xms(200); delay_xms(200); delay_xms(200); break; } xian_s(); } } /*中断函数******************************************************/ void T1_time() interrupt 3 { TH1=0x3c; TL1=0xb0; num0++; } 原理图被我弄丢了,实在不好意思。 现在是采用单片机内部定时,使用中断方式定时,但是出现走时不精准,请问各位大侠这是由于什么原因呢 评分
|
||||
相关推荐
8个回答
|
||||
和晶振有关,所以要走时准确最好用专门的时钟芯片。比如1302
|
|
|
|
好东西
|
|
|
|
手工活
|
|
|
|
|
|
|
|
|
|
|
|
|
|
厉害 学习
|
|
|
|
我是小白,正在学习中
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
820 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第十一章 KEY实验
388 浏览 0 评论
783 浏览 0 评论
801 浏览 2 评论
飞凌嵌入式-ELFBOARD-ELF 2硬件知识分享-最小系统原理
466 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11929 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 13:44 , Processed in 0.614233 second(s), Total 59, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号