注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

东月之神

在单纯的观念里面,生命就容易变得比较深刻!

 
 
 

日志

 
 
关于我

别驻足,梦想要不停追逐,别认输,熬过黑暗才有日出,要记住,成功就在下一步,路很苦,汗水是最美的书!

网易考拉推荐

基于sopc的lcd时钟  

2011-08-19 17:03:53|  分类: FPGA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include "system.h"
#include "altera_avalon_timer_regs.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "unistd.h"
#include <stdio.h>
#include <string.h>

#define dat *(volatile unsigned char *) DATA_BASE
#define lcden *(volatile unsigned char *) EN_BASE
#define lcdrw *(volatile unsigned char *) RW_BASE
#define lcdrs *(volatile unsigned char *) RS_BASE

unsigned char s, m, h;
unsigned char name[] = {"Chen jianneng"};

void timer_init();
void Time0_ISR(void *context, alt_u32 id);

void timer_init()
{
      alt_irq_register(TIME0_IRQ, 0, Time0_ISR);
      IOWR_ALTERA_AVALON_TIMER_STATUS(TIME0_BASE, 0);
      IOWR_ALTERA_AVALON_TIMER_CONTROL(TIME0_BASE, 7);
     
}

void Time0_ISR(void *context, alt_u32 id)
{
    s++;
    //printf("%d\n", s);
    if(s == 60)
    {
        s = 0;
        m++;
        if(m == 60)
        {
            m = 0;
            h++;
            if(h == 24)
                h = 0;
        }
    }
    IOWR_ALTERA_AVALON_TIMER_STATUS(TIME0_BASE, 0);
}

void delay(unsigned char n)
{
    int i, j;
    for(i = 0; i < n; i++)
        for(j = 0; j < 1000; j++);
}

/*LCD写命令函数*/
void write_com(unsigned char com)
{
     lcdrs = 0;
     lcdrw = 0;
     lcden = 0;
     dat = com;  
     delay(5);   //时序原因延时5ms
     lcden = 1;     //实现一个高脉冲
     delay(5); 
     lcden = 0;
}

/*LCD写数据函数*/
void write_data(unsigned char da)
{
    lcdrs = 1;
    lcdrw = 0;
    lcden = 0;
    dat = da;     
    delay(5);   //时序原因延时5ms
    lcden = 1;     //实现一个高脉冲
    delay(5); 
    lcden = 0;
}

/*LCD初始化函数*/
void init()
{
    write_com(0x38);  //显示模式设置
    delay(1);
    write_com(0x0c);   //开显示,显示光标,光标闪烁
    delay(1);
    write_com(0x06);  //当读或写一个字符后地址指针加1,光标加1
    delay(1);
    write_com(0x01);  //显示清屏
    delay(1);
}

void wirte_string(unsigned char *a)
{
    unsigned char i;
    for(i = 0; i < strlen(a); i++)
    {
        write_data(a[i]);
        delay(20);
    }
}

int main(void)
{
     timer_init();
     init();
     delay(20);   
     while(1)
     {     
        write_com(0x83); 
        delay(20);  
        write_data(h/10+'0');
        delay(20);
        write_data(h%10+'0');
        delay(20);
        write_data(':');
        delay(20);
        write_data(m/10+'0');
        delay(20);
        write_data(m%10+'0');
        delay(20);
        write_data(':');
        delay(20);
        write_data(s/10+'0');
        delay(20);
        write_data(s%10+'0');
        delay(20);
       
        write_com(0xc1);
        delay(20);
        wirte_string(name); 
        delay(20);
     }
return 0;
}

  评论这张
 
阅读(91)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017