AVR128的程序——数码管时钟显示

发布者:TranquilSmile最新更新时间:2016-03-04 来源: eefocus关键字:AVR128  数码管  时钟显示 手机看文章 扫描二维码
随时随地手机看文章
#include
#include  
#define uchar unsigned char
#define uint  unsigned int
 
void timer1_init(void);
void display1(uchar FirstBit,uchar Num);
void display2(uchar FirstBit,uchar Num);
void display3(uchar FirstBit,uchar Num);
void display4(uchar FirstBit,uchar Num);
void Delayms(uint MS);
 
uchar TempData1[8];
uchar TempData2[8];
uchar TempData3[8];
uchar WeiMa[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar led_discode[11]={0xc0,0xf9,0xa4,0xb0,0x99,
                       0x92,0x82,0xf8,0x80,0x90,0xff};    
 
uchar temp=0x01;
uint num=0,fen=19,shi=20;
 
void main(void)
{
     uchar i,temp;
DDRA=0XFF;
PORTA=0XFF;
DDRC=0XFF;                   
PORTC=0XFF;
 
DDRF|=0X0E;
PORTF|=0X0E;
PORTF&=0xF7;             
 
DDRB |=0X10;          
PORTB|=0X10; 
 
timer1_init();
SEI();              
     while(1)
{
    TempData1[1] = led_discode[num];    
            TempData1[0] = led_discode[num/10]; 
   TempData2[1] = led_discode[fen];    
            TempData2[0] = led_discode[fen/10];
   TempData3[1] = led_discode[shi];    
            TempData3[0] = led_discode[shi/10];
display1(6,2); 
display2(3,2);
display3(0,2);
display4(2,1);
display4(5,1);
}
 
}
 
void timer1_init(void)
{
    TCNT1H = 0xE1;        
    TCNT1L = 0x7C;        
 
    TCCR1A = 0x00;
    TCCR1B = 0x05;       
 
    TIMSK = 0x04;         
}
 
#pragma interrupt_handler timer1_ovf_isr:15
void timer1_ovf_isr(void)
{
TCNT1H = 0xE1; 
     TCNT1L = 0x7C; 
     num++;
if(num==60)
{
    num=0;
fen++;
if(fen==60)
{
    fen=0; 
shi++;
if(shi==24)
{
   shi=0;
}
}
}
}
 
 
void display1(uchar FirstBit,uchar Num)
{
    unsigned char i;  
for(i=0;i  
{
PORTC=led_discode[10];                       
   PORTA=WeiMa[i+FirstBit];       
   PORTC=TempData1[i];                     
Delayms(2);    
}   
}
 
void display2(uchar FirstBit,uchar Num)
{
    unsigned char i;  
for(i=0;i  
{
PORTC=led_discode[10];                       
   PORTA=WeiMa[i+FirstBit];       
   PORTC=TempData2[i];                     
Delayms(2);    
}   
}
 
void display3(uchar FirstBit,uchar Num)
{
    unsigned char i;  
for(i=0;i  
{
PORTC=led_discode[10];                       
   PORTA=WeiMa[i+FirstBit];       
   PORTC=TempData3[i];                     
Delayms(2);    
}   
}
 
void display4(uchar FirstBit,uchar Num)
{
    unsigned char i;  
for(i=0;i  
{
PORTC=led_discode[10];              
   PORTA=WeiMa[i+FirstBit];       
   PORTC=0XBF;                     
Delayms(2);   
}   
}
 
void Delayms(uint MS)  
{
     uint i,j;
     for( i=0;i
     for(j=0;j<1141;j++);
}
关键字:AVR128  数码管  时钟显示 引用地址:AVR128的程序——数码管时钟显示

上一篇:AVR128的程序——数码管0~7顺序闪烁
下一篇:AVR128的程序——外部中断

推荐阅读最新更新时间:2024-03-16 14:46

STM32+LCD12864汉字显示与定位 时钟,闹钟Proteus仿真程序
师傅所教知识制作了一个LCD12864的屏幕显示,字模自己软件下载的,俺们新手,写的粗糙 期末项目为时钟的显示和设定,内含闹钟 PU原理图 按键:PA0:暂停时钟 在暂停时钟后再按一次PA0则开始选择改变分钟(反白),继续按下PA0开始设置时钟的改变(反白) PA1与PA2连用检测按键:数字的增加 PB0:数据的减少 PB1与PB2连用检测按键:确认改变 仿真原理图如下 另外,我现在另添加的闹钟的设置,可在运行程序后设置闹钟,闹钟的设定没上传,原理类似 缺点: 1. 日期判定没有做完,只是进行了简单的判断,没有大月小月的判断,闰年这类的 2. 时钟的修改的增加判断23的时候没用反白和清屏 修改
[单片机]
STM32+LCD12864汉字<font color='red'>显示</font>与定位 <font color='red'>时钟</font>,闹钟Proteus仿真程序
用定时器中断设计时钟,用1602液晶显示
本时钟有些功能还未完全实现,仅实现一部分功能,年月日星期功能还未实现 还可以加上整点报时和断电记忆的功能 #include reg52.h #define uchar unsigned char sbit rd=P2^6; sbit wr=P2^5; sbit lcde=P2^7; sbit k1=P1^0; sbit k2=P1^1; sbit k4=P1^3; sbit k8=P1^7; uchar code table1 = 2011-10-01 SAT ; uchar code table2 = 00:00:00 ; uchar t,s1num; char shi,fen,miao; voi
[单片机]
51单片机学习记录——数码管动态显示
正在学习51的数码管以及中断,打算利用六位数码管实现一个时钟的功能。 但使用数码管输出时,如果不添加延时语句,那么一直有显示混乱的现象,有时完全无法分辨清楚数字。 如果在传送完数据以后延时1ms,显示混乱情况会好转。 同时发现延时的时间越长,显示效果越好。但是当然,相应的显示稳定程度也会下降,即数码管闪烁。 程序中在送完段选数据以后已经使用了参考书中的 消影 语句: 1 dula=1; 2 P0=table ; 3 dula=0; 4 P0=0xff;// 消影 可是这个语句只是在有延时的情况下才有效果,如果我不写延时语句,那么显示依旧混乱。 虽然在显示过程延时不会影响中断的计时,但是我总不想依赖for语句写出来的延
[单片机]
51单片机学习记录——<font color='red'>数码管</font>动态<font color='red'>显示</font>
AVR PCF8591 AD&DA数码管显示
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int /******************************************* TWSR中数据的各种状态,#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int /******************************************* TWSR中数据的各种状态,参照mega 16手册172页 ***
[单片机]
【自学51单片机】5 --- 定时器、数码管、逻辑运算、
定时器介绍、数码管静态显示、逻辑运算符和逻辑电路符号 1、逻辑运算和逻辑电路 引入逻辑概念:在生活中,逻辑存在 ‘真’ 和 ‘假’ 两个逻辑值,而逻辑对应到C语言和数字电路中, ‘真’ 对应C语言或数字电路中的一切 ‘非0值’,而 ’假‘ 对应为 ’0值‘。 1.1 C语言逻辑运算符 假定两个字节变量A和B,两者进行某种逻辑运算后结果为F。 以下为逻辑运算符(按变量整体值进行运算) && 逻辑与:F = A && B,当 A、B 的值都为真(即非 0 值,下同)时,其运算结果 F 为真(具体数值为 1,下同);当 A、B 值任意一个为假(即 0,下同)时,结果 F 为假(具体数值为 0,下同)。 || 逻辑或:F
[单片机]
【自学51单片机】5 --- 定时器、<font color='red'>数码管</font>、逻辑运算、
51单片机实现带数码管显示的加法简易计算器
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: LED-74HC595 ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200701 ---- @ModifiedTime: 20200701
[单片机]
51单片机实现带<font color='red'>数码管</font><font color='red'>显示</font>的加法简易计算器
PIC18F458控制数码管显示1~8数字程序
本程序是基于PIC18F458控制LED数码管显示1~8数字的C语言程序,笔者也是刚刚学习PIC单片机,也是和大家一起学习交流吧!不多说了,先贴程序: #include p18f458.h static volatile int table ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};//段码 volatile unsigned char data; /*初始化子程序*/ void initial() { TRISA=0x00; /*A口设置为输出*/ TRISC=0
[单片机]
单片机在电动机保护中的应用
单片机即单片微型计算机的简称,它是将CPU、ROM、RAM、TIMER/COUNTER以及输入/输出接口(I/O)等集成在一块超大规模集成电路芯片上而制成的,有些单片机还集成了模数转换器(ADC)、脉宽调制模块(PWM)、通讯接口等,使用者只需用少量的外围电路就可组成各种应用系统。单片机可分为8位机和16位机,其中8位机在市场中占主导地位。生产单片机的半导体厂家很多,包括:INTEL、PHILIPS、SIEMENS、ADM、ATAIEL、MICROCHIP等。近年来,MICROCHIP公司生产的单片机以其简约的指令系统、纳秒级的指令周期、强大的外围接口功能深受电子工程师们的青睐,笔者曾使用过PIC16CXXX和PIC16FXX
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved