完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人刚学单片机,近来听某位大神说“等你可以独立做一个电子时钟的时候,你的单片机就基本入门了!”所以我也试了一下。
我用六位发光二极管分别做时,分,秒钟。 一个发光二极管以500ms的时间亮灭。 可以达到基本的计时功能。但是6个数码管一直在以非常短的时间持续亮灭,一直没有查到是什么原因,希望大家可以帮忙看一下!本人在此拜谢!下面是我的程序! /************************************************************************************************* 目的:用六位数码管和发光二极管实现简单的电子时钟(独立键盘还没有加上去) 问题:6为数码管以非常短的时间持续闪灭(发光二极管没有问题) *************************************************************************************************/ #include #define uint unsigned int #define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //0-9 uchar num,num1,temp,temp_f,temp_s,shi,ge,shi_f,ge_f,shi_s,ge_s; ***it dula=P2^6; ***it wela=P2^7; ***it d1=P1^0; void display(shi,ge); void init(); void delay(z); void main() { init(); //初始化 while(1) { if(num==20) //一秒的时间到了 { num=0; temp++; if(temp==60) { temp=0; temp_f++; if(temp_f==60) { temp_f=0; temp_s++; if(temp_s==12) { temp_s=0; } shi_s=temp_s/10; ge_s=temp_s%10; } shi_f=temp_f/10; ge_f=temp_f%10; } shi=temp/10; ge=temp%10; } if(num1==10) { num1=0; d1=~d1; } display(shi,ge); } } void init() { dula=0; wela=0; temp=0; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; TR0=1; ET1=1; TR1=1; } void display(shi,ge) { dula=1; P0=table[shi]; dula=0; wela=1; P0=0xef; wela=0; delay(5); dula=1; P0=table[ge]; dula=0; wela=1; P0=0xdf; wela=0; delay(5); dula=1; P0=table[shi_f]; dula=0; wela=1; P0=0xfb; wela=0; delay(5); dula=1; P0=table[ge_f]; dula=0; wela=1; P0=0xf7; wela=0; delay(5); dula=1; P0=table[shi_s]; dula=0; wela=1; P0=0xfe; wela=0; delay(5); dula=1; P0=table[ge_s]; dula=0; wela=1; P0=0xfd; wela=0; delay(5); } void delay(z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void T0_time() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; } void T1_time() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; num1++; } |
|
相关推荐
11个回答
|
|
没人顶!!! 自己顶!!!
|
|
|
|
以后有程序 能不能带上注释啊
|
|
|
|
这个真是极好的
|
|
|
|
谢谢分享
|
|
|
|
你的显示函数式1S显示一次,显示的时候有残留,人眼又可以看到,所以你看到就是一直闪烁,建议每100MS显示一次。
|
|
|
|
先谢谢了 但是可以麻烦说的详细一点吗
|
|
|
|
写程序时候要规范。。特别是初学者。多看看书,这种问题不难的,建议自己解决。
|
|
|
|
感谢建议!!!
|
|
|
|
6位数码管靠的是动态显示,你扫描速度不够快就变成了闪烁
|
|
|
|
你的显示函数式1S显示一次,显示的时候有残留,人眼又可以看到,所以你看到就是一直闪烁,建议每100MS显示一次
PCB打样找华强 http://www.hqpcb.com 样板2天出货 |
|
|
|
完全没有想到5ms和1ms竟然差这么多,原来只要把延时函数的时间调为1ms就好了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之设备组织架构
964 浏览 0 评论
619 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之设备树组成和结构
867 浏览 0 评论
【敏矽微ME32G070开发板免费体验】点亮WS2812B灯板
1166 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核启动流程
974 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12169 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 06:19 , Processed in 0.898383 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号