• 大小: 22.66MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-08-02
  • 语言: 其他
  • 标签: FPGA  

资源简介

使用了Verilog和Sopc两项功能,故在硬件部分使用Verilog编写出数码管的驱动程序,使用NiOS II编写实现过程。   1)使用Qsys生成的定时器timer_1ms实现计时功能;     2)使用8个数码管显示时间;     3)使用3个按钮实现调时间和闹钟时间的功能。 按键1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式2;调当前时间的分钟;模式3:当前时间的秒;模式4:调闹钟时间的小时;模式5:调闹钟时间的分钟); 按键2:在非模式0下给需要调节的时间数加一,但不溢出; 按键3:在非模式0下给需要调节的时间数减一,但不小于零; 实现时间和闹钟时间的调时功能;     4)加入闪烁标志,给正在调整的位闪烁,判断是哪一位在调整;     5)按键按下时,对应一个led灯点亮;     6)使用蜂鸣器实现闹钟功能,闹钟响时实现流水灯指示功能。

资源截图

代码片段和文件信息

#include 
#include “system.h“
#include “alt_types.h“
#include “altera_avalon_pio_regs.h“
#include “altera_avalon_timer_regs.h“
#include “sys/alt_irq.h“



int hour = 23minute = 59second = 50;
int hour1 = 0minute1 = 0;
int secLsecHminuLminuHhourLhourH;
int segtab[12]={0x00x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x90xf0xe};
int model_flag = 0S_flag = 0BEEP = 0beep_flag = 0beep_flag1 = 0;
int key_set = 1key_add = 1key_sub = 1key_rst = 1;
int a[8]={00000000};
int n =0;

void write_data()
{
IOWR(DIG_1_base0a[7]);
IOWR(DIG_2_base0a[6]);
IOWR(DIG_3_base0a[5]);
IOWR(DIG_4_base0a[4]);
IOWR(DIG_5_base0a[3]);
IOWR(DIG_6_base0a[2]);
IOWR(DIG_7_base0a[1]);
IOWR(DIG_8_base0a[0]);
}

void rst()
{
 if(key_rst==0)
 {
 key_rst =1;
a[0]=2;
a[1]=3;
a[2]=segtab[10];
a[3]=5;
a[4]=9;
a[5]=segtab[10];
a[6]=5;
a[7]=5;
write_data();
 }
}


void set_led(int led_flag int state)
{
if ( led_flag == 1) {
IOWR(LED_base00xff);
}
else if ( led_flag == 2){
IOWR(LED_base0state);
}
else {
IOWR(LED_base00x00);
}
}

int read_key()
{
int status = 0;
status = IORD(KEY_base0);
return status;

}

int tmp = 0;
void check_key()
{
delay(10);
int status = IORD(KEY_base0);

   if ( status) {
tmp ++;
if ( tmp == 50) {
if ( status & 0x01) {
key_set = 0;
set_led(20x01);
}
else if ( status & 0x01 << 1) {
key_add =0;
set_led(20x02);
}
else if ( status & 0x01<< 2){
key_sub = 0;
set_led(20x04);
}
else if ( status & 0x01<< 3){
key_rst = 0;
set_led(20x08);
}
else
{
tmp = 0;
}
}
}
else {
tmp = 0;
}
}

void delay(int us)// 延时函数
{

int ij;
for ( i = us; i > us; i--) {
for ( j = 50; j > 0; j--);
}
}



int flag = 0ss_add = 0;

void ISR_timer(void * context alt_u32 id)
{
    IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_1S_base 0);
    ss_add++;
    if(ss_add >= 500)
    {
     ss_add = 0;
     S_flag =! S_flag;       //闪烁标志位
    }
    flag = 1;

}


void display()
{

switch(model_flag)
{
case 0:
{
a[0]=segtab[hour/10];
a[1]=segtab[hour%10];
a[2]=segtab[10];
a[3]=segtab[minute/10];
a[4]=segtab[minute%10];
a[5]=segtab[10];
a[6]=segtab[second/10];
a[7]=segtab[second%10];
write_data();
}break;
case 1:
{
if(S_flag==1)
{
a[0]=segtab[hour/10];
a[1]=segtab[hour%10];
}
else
{
a[0]=segtab[11];
a[1]=segtab[11];
}
a[2]=segtab[10]; //横线-
a[3]=segtab[minute/10];
a[4]=segtab[minute%10];
a[5]=segtab[10];
a[6]=segtab[second/10];
a[7]=segtab[second%10];
write_data();
}
break;
case 2:
{
a[0]=segtab[hour/10];
a[1]=segtab[hour%10];
a[2]=segtab[10];
if(S_flag==1)
{
a[3]=segtab[minute/10];
a[4]=segtab[minute%10];
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-17 13:13  TIMER\
     目录           0  2018-11-15 20:20  TIMER\.qsys_edit\
     文件          66  2018-11-08 14:34  TIMER\.qsys_edit\filters.xml
     文件       72097  2018-11-15 15:54  TIMER\.qsys_edit\layout.xml
     文件       72112  2018-11-15 15:55  TIMER\.qsys_edit\mycpu.xml
     文件         565  2018-11-14 22:57  TIMER\.qsys_edit\preferences.xml
     目录           0  2018-12-17 13:14  TIMER\db\
     文件        1262  2018-11-15 15:58  TIMER\db\.cmp.kpt
     文件        1575  2018-11-08 14:38  TIMER\db\add_sub_hui.tdf
     文件       17656  2018-11-08 14:38  TIMER\db\altera_mult_add_80u2.v
     文件       17656  2018-11-08 14:38  TIMER\db\altera_mult_add_a0u2.v
     文件       37802  2018-11-08 14:38  TIMER\db\altsyncram_3id1.tdf
     文件       37470  2018-11-08 14:38  TIMER\db\altsyncram_boc1.tdf
     文件       12571  2018-11-08 14:38  TIMER\db\altsyncram_cpg1.tdf
     文件        6424  2018-11-08 14:38  TIMER\db\altsyncram_g7h1.tdf
     文件       37407  2018-11-08 14:38  TIMER\db\altsyncram_glg1.tdf
     文件       37407  2018-11-08 14:38  TIMER\db\altsyncram_hlg1.tdf
     文件       34541  2018-11-08 14:38  TIMER\db\altsyncram_i2d1.tdf
     文件       51233  2018-11-08 14:38  TIMER\db\altsyncram_n802.tdf
     文件       17839  2018-11-08 14:38  TIMER\db\altsyncram_njh1.tdf
     文件       30551  2018-11-08 14:38  TIMER\db\altsyncram_oac1.tdf
     文件       30550  2018-11-08 14:38  TIMER\db\altsyncram_qac1.tdf
     文件       31245  2018-11-08 14:38  TIMER\db\altsyncram_qv81.tdf
     目录           0  2018-11-15 20:20  TIMER\db\ip\
     目录           0  2018-11-15 20:20  TIMER\db\ip\mycpu\
     文件        7387  2018-11-15 15:57  TIMER\db\ip\mycpu\mycpu.bsf
     文件       14657  2018-11-15 15:57  TIMER\db\ip\mycpu\mycpu.qip
     文件       50494  2018-11-15 15:57  TIMER\db\ip\mycpu\mycpu.v
     文件      167712  2018-11-15 15:57  TIMER\db\ip\mycpu\mycpu__report.html
     文件     1197196  2018-11-15 15:57  TIMER\db\ip\mycpu\mycpu__report.xml
     目录           0  2018-11-15 20:20  TIMER\db\ip\mycpu\submodules\
............此处省略604个文件信息

评论

共有 条评论