资源简介
七段数码管时钟显示的verilog源代码,已做过FPGA验证。

代码片段和文件信息
#include
#include “system.h“
#include “io.h“
#include “sys/alt_irq.h“
#include “alt_types.h“
#include “altera_avalon_timer_regs.h“
#include “altera_avalon_pio_regs.h“
volatile int TIME_COUNTER = 0;
volatile int TIME_FLAG = 0;
volatile int SEC_L = 0;
volatile int SEC_H = 0;
volatile int MIN_L = 0;
volatile int MIN_H = 0;
//时间计数
void timer_tick(void)
{
if(!TIME_FLAG){
SEC_L++;
if(SEC_L > 9){
SEC_L = 0;
SEC_H++;
}
if(SEC_H == 6){
SEC_H = 0;
SEC_L = 0;
MIN_L++;
}
if(MIN_L > 9){
MIN_L = 0;
MIN_H++;
}
if(MIN_H == 6){
MIN_H = 0;
MIN_L = 0;
}
}
else{
}
}
//将时间显示在七段数码管上
void timer_disp(void)
{
int time = MIN_H * 16 * 16 * 16 + MIN_L * 16 * 16 +SEC_H * 16 + SEC_L;
IOWR_32DIRECT(SEG7_0_base0time);
}
//timer中断服务
static void timer_ISR(void* base_Address alt_u32 Interrupt_Level)
{
//清除中断标志位
IOWR_ALTERA_AVALON_TIMER_STATUS((alt_u32)base_Address 0);
//累计定时器中断发生次数
TIME_COUNTER++;
if(TIME_COUNTER == 10){
TIME_FLAG = IORD_8DIRECT(SWITCH_PIO_0_base0);
TIME_COUNTER = 0;
//显示时间状态
timer_tick();
timer_disp();
}
}
//timer初始化
void timer_init()
{
//设置定时器为自由运行模式
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_base
ALTERA_AVALON_TIMER_CONTROL_ITO_MSK |
ALTERA_AVALON_TIMER_CONTROL_CONT_MSK |
ALTERA_AVALON_TIMER_CONTROL_START_MSK);
//开始中断注册操作
alt_irq_register(TIMER_0_IRQ (void *)TIMER_0_base timer_ISR);
}
void alter_sec(void)
{
SEC_L++;
if(SEC_L > 9){
SEC_L = 0;
SEC_H++;
if(SEC_H > 5){
SEC_L = 0;
SEC_H = 0;
}
}
}
void alter_min(void)
{
MIN_L++;
if(MIN_L > 9){
MIN_L = 0;
MIN_H++;
if(MIN_H > 5){
MIN_L = 0;
MIN_H = 0;
}
}
}
void alter_min_h(void)
{
MIN_H++;
if(MIN_H > 5){
MIN_H = 0;
}
}
//按键中断服务
void button_ISR(void* context alt_u32 id)
{
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_0_base 0);
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_0_base 0xff);
if(TIME_FLAG){
int button_value = IORD_ALTERA_AVALON_PIO_DATA(BUTTON_PIO_0_base);
if((button_value & 0x01) == 0){
alter_sec();
}
if((button_value & 0x02) == 0){
alter_min();
}
}
}
//按键初始化
void button_init()
{
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_0_base 0xff);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_0_base 0x0);
alt_irq_register(BUTTON_PIO_0_IRQ NULL button_ISR);
}
int main(void)
{
button_init();
timer_init();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2008-09-15 14:19 SEG7_Timer\.me
文件 747 2008-09-15 14:22 SEG7_Timer\.me
文件 671 2008-09-15 15:23 SEG7_Timer\.me
文件 172 2008-09-15 19:14 SEG7_Timer\.me
文件 16384 2008-09-15 15:23 SEG7_Timer\.me
文件 16384 2008-09-15 15:23 SEG7_Timer\.me
文件 137 2008-09-15 19:14 SEG7_Timer\.me
文件 239 2008-09-15 14:20 SEG7_Timer\.me
文件 3080 2008-09-10 10:16 SEG7_Timer\.me
文件 0 2008-09-15 14:24 SEG7_Timer\.me
文件 119 2008-09-15 14:20 SEG7_Timer\.me
文件 236 2008-09-15 14:20 SEG7_Timer\.me
文件 0 2008-09-15 14:22 SEG7_Timer\.me
文件 179 2008-09-15 14:20 SEG7_Timer\.me
文件 0 2008-09-15 14:24 SEG7_Timer\.me
文件 120 2008-09-15 14:20 SEG7_Timer\.me
文件 177 2008-09-15 14:20 SEG7_Timer\.me
文件 92 2008-09-15 14:27 SEG7_Timer\.me
文件 133 2008-09-15 14:22 SEG7_Timer\.me
文件 47 2008-09-15 15:23 SEG7_Timer\.me
文件 154 2008-09-15 14:20 SEG7_Timer\.me
文件 207 2008-09-15 19:14 SEG7_Timer\.me
文件 48 2008-09-15 14:24 SEG7_Timer\.me
文件 133 2008-09-15 14:20 SEG7_Timer\.me
文件 160 2008-09-15 14:20 SEG7_Timer\.me
文件 1 2008-09-15 19:14 SEG7_Timer\.me
文件 104 2008-09-15 19:14 SEG7_Timer\.me
文件 1 2008-09-15 19:14 SEG7_Timer\.me
文件 264385 2008-09-15 19:14 SEG7_Timer\.me
文件 506 2008-09-15 19:14 SEG7_Timer\.me
............此处省略593个文件信息
相关资源
- 【单片机】51单片机数码管显示万年历
- 25.数码管显示0-99
- STC12C5A60S2 CH4521 驱动数码管 显示
- CH454键盘与数码管显示程序
- 基于EWB软件的数码管显示控制器
- 单片机电子琴 数码管显示
- 74hc244驱动数码管显示电路及程序
- 数码管字体
- STM32F407实时时钟_DS1302实时时钟模块和
- 基于STM32F103的实时时钟程序,采用D
- 51单片机_DS1302时钟芯片_共阴数码管
- 倒计时与选手数码管编号显示的四人
- 基于STM32+TM1638芯片的共阳极数码管驱
- 第五章 畅学多功能实验箱4位一体数码
- 畅学ARM多功能实验箱数码管显示源码
- 51单片机数码管滚动显示hello
- 米字数码管取模
- DXP元件库、封装库,常用LED库、数码
- 红外遥控数码管显示.zip
- 51单片机交通灯 源代码+proteus仿真图
- 数字钟数码管显示时分秒
- 基于FPGA的DS18B20单总线控制+数码管显
- stm32控制74h595驱动四位数码管
- stm32 控制 数码管显示以及LCD显示
- stm32驱动MAX7219控制数码管显示.zip
- FPGA 使用verilog 编写的AD tlc549 测试程序
- Verilog编写6位数码管显示计数,每条语
- 595显示数码管驱动
- 利用proteus完成8255相关要求
- opencv数码管识别程序
评论
共有 条评论