#include <iom8v.h>
#define uchar unsigned char
#define uint unsigned int
uchar Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数字0~9
uchar Data[4]={0,0,0,0};//位控制
uchar CNT=0;//计数初值
uchar Timer[2]={0x00,0x00};//初始时间00:00
​

void DelayMS(uint i)//延时{uint j;for(;i!=0;i--){for(j=8000;j!=0;j--);}}
//显示函数//
void Display(uchar *p)
{uchar i,sel=0x01;
for(i=0;i<4;i++)
{PORTC=sel;              //选通最右边的数码管
PORTB=Table[p[i]];      //送数字码
DelayMS(1);             //显示延时
sel=sel<<1;             //移动显示位
}
}
///计数值处理函数///
//计数处理函数
//参数p1:时间数组名
//参数p2:显示数组名
//功能:将计数值拆分为BCD码的10分,分;10秒,秒
void Process(uchar *p1,uchar *p2)
{p2[0]=p1[0]/10;
p2[1]=p1[0]-p2[0]*10;
p2[2]=p1[1]/10;
p2[3]=p1[1]-p2[2]*10;
}
//初始化
void Init_IO(void)//初始化I/O
{//设置C口为输出
DDRC=0xFF;
PORTC=0xFF;
//设置D口为输出
DDRB=0XFF;
PORTB=0xFF;
}
/主函数/
void main(void)
{//uchar Load;
Init_IO();  //初始化I/O
PORTC=0XFF; //点亮数码管
PORTB=0X00; //点亮数码管
DelayMS(30);//延时
PORTB=0xff; //关闭数码管
TCCR0=0x04; //T/C0工作方式选择,系统时钟256分频
//(上一句可以改为)TCCR0 |= (1<<CS02);//T/C0工作于定时方式,系统时钟256分频
TCNT0=0X06; //计数初始值
TIMSK=0x01;  //使能T0溢出中断
//(上一句可以改为)TIMSK |= (1<<TOIE0);  //使能T0溢出中断
SREG=0x80;  //使能全局中断
//(上一句可以改为)SREG |= (1<<7);  //使能全局中断
while(1)
{Process(Timer,Data);//计数初值处理Display(Data);      //动态扫秒显示
}
}
//T/CO中断服务函数//
#pragma interrupt_handler Timer0:10
void Timer0(void)
{CNT++;           //中断次数累加
if(CNT==125)     //计数到125次,计数复位
{CNT=0;
Timer[1]++;      //秒加1
if(Timer[1]==60)
{Timer[1]=0;
Timer[0]++;      //分进位
}
if(Timer[0]==60)
{Timer[0]=0;      //计数到最高位置位
}
}
}

可到微信公众号“伊斯地址编程”获取仿真图
还有更多资源等你。。。

ATMEGA8(数码管时钟)相关推荐

  1. Arduino UNO+DS1302+74HC595联级+8位数码管时钟+Proteus仿真

    Arduino UNO+DS1302+74HC595联级+8位数码管时钟+Proteus仿真 最新篇<Arduino UNO+DS1302+74HC595联级+8位数码管时钟+Proteus仿真 ...

  2. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  3. 基于51单片机定时器计数+74HC595移位寄存器+8位数码管时钟

    基于51单片机+74HC595移位寄存器+8位数码管时钟 Proteus仿真 实例代码 #include "at89x52.h" sbit SHCP =P0^1; // 移位寄存器 ...

  4. Proteus VSM Studio汇编 + 8位数码管时钟按键可调

    Proteus VSM Studio汇编 + 8位数码管时钟按键可调 Proteus基于VSM Studio编译仿真演示 VSM Studio代码(.asm) 基于Keil编译器 S_SET BIT ...

  5. C51单片机实现六位数码管时钟

    C51单片机六位数码管时钟 用数码管dot分隔时分秒 用三个按键设置时间: SET键:小时设定->分钟设定->结束设定,小时设定状态时表示小时的两位数码管闪烁,分钟设定时表示分钟的两位数码 ...

  6. python数码管动态时钟壁纸_8个动态数码管时钟显示

    8 个动态数码管时钟显示 #include #define uint unsigned int #define uchar unsigned char uchar i,temp,aa,miao,fen ...

  7. WT588F02KD-24SS数码管时钟语音播报芯片设计方案

    随着智能家电的普及应用,消费者对于常用家电设备的功能要求也越来越高.对于时钟的要求也不仅仅只满足于看时间和闹钟功能,现在的智能家居几乎都有语音播报.语音提示的功能,能够准确的播报当前的时间,和倒计时功 ...

  8. 驱动级的自动按键_太牛了!业余单片机爱好者用DS3231制作自动亮度的4位数码管时钟...

    作为一名业余的单片机爱好者,从开始玩到现在,做的最多的就是各种各样的时钟了.从最初的纯软件计时,到DS1302时钟芯片再到后来的GPS. SNTP对时的都做过. 纯软件计时一断电就全归零了,完全没有实 ...

  9. 单片机8位数码管时钟c语言汇编,基于8051单片机和DS12C8878位数码管显示的时钟.docx...

    基于8051单片机和DS12C8878位数码管显示的时钟 #include #include #define sec XBYTE[0xed00]//秒寄存器地址 #define min XBYTE[0 ...

最新文章

  1. 多个文件中的数据处理,输出自己想要是数据
  2. 汇编语言--数据传送指令
  3. Altium Designer -- PCB布线面试题(转)
  4. java标识符遵循规范
  5. 百度内部培训PPT流出:数据分析的道与术
  6. 逗牙搞笑网www.idouya.xin
  7. A good book to learn C#2.0 ----C# 2.0 : Practical Guide for Programmers
  8. 02-04 Python库-faker
  9. 使用python、java语言批量下载抖音中我的视频、我喜欢的视频,解析抖音视频,批量下载抖音...
  10. 深入解读App买量行业
  11. 云和恩墨荣获阿里云云合计划2021年度优秀伙伴技术先锋奖
  12. 【论文分享】BERTifying the Hidden Markov Model for Multi-Source Weakly Supervised Named Entity Recognition
  13. Android 利用Intent启动另一个app应用时,一个崩溃的问题
  14. 重写和重载有什么区别
  15. 智云通CRM:如何给客户创造尽可能安全的成交环境?
  16. 一次搞懂:正数 负数 左移<< 右移>> 移位运算规则 移位后的空位添补规则
  17. 51单片机:6位数码管动态显示,从600000开始,每0.5秒加1
  18. 安装python2.7安装方法_python2.7环境如何安装
  19. collect()案例和count()案例_大数据培训课程
  20. [金融之王:毁了世界的银行家]

热门文章

  1. 留一法(Leave-One-Out)与确定性
  2. 达梦数据库导入导出操作步骤
  3. 如何向MongoDB数据库导入数据
  4. 政务系统故障容灾备份解燃眉之急
  5. Flutter学习记录——29.完整实践——实现一个简易日记本应用
  6. NAS邂逅WiFi6+:硬件篇总述
  7. 可视化web组态工业监控软件 ISM
  8. 字节跳动青训营Day01 - 实战项目 - 在线翻译字典
  9. 使用java读取文本文件的倒数第N行
  10. 服务器 在线系统安装,NF5280服务器操作系统安装说明.pdf