专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
proteus
基于单片机proteus系统的数码管时钟电路实现
2019-07-18 11:22
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
proteus
3134
1
1393
主要是带C语言程序,数码管有8个的,谢谢大神们,程序不要错的啊
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
DDL123
1楼-- · 2019-07-18 15:12
/* 名称:定时器控制数码管动态显示
说明:8个数码管上分两组动态显示年月日与时分秒,本例的 位显示延时用定时器实现。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//段码,最后一位是“-”的段码
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//待显示的数据:09-12-25与23-59-58(分两组显示)
uchar code Table_of_Digits[][8]={{0,9,10,1,2,10,2,5},{2,3,10,5,9,10,5,8}};
uchar i,j=0;
uint t=0;
//主程序
void main()
{
P3=0x80; //位码初值
TMOD=0x00; //计数器T0方式0
TH0=(8192-4000)/32; //4ms定时
TL0=(8192-4000)%32;
IE=0x82;
TR0=1; //启动T0
while(1);
}
//T0中断函数控制数码管刷新显示
void DSY_Show() interrupt 1
{
TH0=(8192-4000)/32; //恢复初值
TL0=(8192-4000)%32;
P0=0xff; //输出位码和段码
P0=DSY_CODE[Table_of_Digits
[j]];
P3=_crol_(P3,1);
j=(j+1)%8; //数组第i行的下一字节索引
if(++t!=350) return; //保持刷新一段时间
t=0;
i=(i+1)%2; //数组行i=0时显示年月日,i=1时显示时分秒
}
加载中...
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
为什么Proteus 仿真点阵字体缺笔画 而且速度奇慢
7 个回答
2012~~单片机C语言程序设计实训100例-基于8051+Proteus仿真(第2版)
27 个回答
新手求帮忙解决proteus的问题
1 个回答
大家好,请问用三菱plc仿真软件跟mcgs组态软件怎么样连接?
1 个回答
proteus出问题,不能用
3 个回答
数字频率计 求编程(汇编或C语言)
1 个回答
求单片机与PC机串行通信
2 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
proteus
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
说明:8个数码管上分两组动态显示年月日与时分秒,本例的 位显示延时用定时器实现。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//段码,最后一位是“-”的段码
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//待显示的数据:09-12-25与23-59-58(分两组显示)
uchar code Table_of_Digits[][8]={{0,9,10,1,2,10,2,5},{2,3,10,5,9,10,5,8}};
uchar i,j=0;
uint t=0;
//主程序
void main()
{
P3=0x80; //位码初值
TMOD=0x00; //计数器T0方式0
TH0=(8192-4000)/32; //4ms定时
TL0=(8192-4000)%32;
IE=0x82;
TR0=1; //启动T0
while(1);
}
//T0中断函数控制数码管刷新显示
void DSY_Show() interrupt 1
{
TH0=(8192-4000)/32; //恢复初值
TL0=(8192-4000)%32;
P0=0xff; //输出位码和段码
P0=DSY_CODE[Table_of_Digits[j]];
P3=_crol_(P3,1);
j=(j+1)%8; //数组第i行的下一字节索引
if(++t!=350) return; //保持刷新一段时间
t=0;
i=(i+1)%2; //数组行i=0时显示年月日,i=1时显示时分秒
}
一周热门 更多>