凌阳61单片机使用7段数码管显示数字时钟的程序

该博客详细介绍了如何使用凌阳61单片机编写程序来驱动7段数码管显示数字时钟,包括中断函数、状态管理、时钟更新和键盘输入处理。通过定义字形码、位段码和延时函数,实现了时钟的实时显示和按键操作功能。
摘要由CSDN通过智能技术生成

#include <SPCE061v004.h>

#include <unspmacro.h>

//中断函数定义

void IRQ1(void) __attribute__((ISR));

void IRQ5(void) __attribute__((ISR));

void IRQ6(void) __attribute__((ISR));

enum { RUN, CHGSECOND, CHGMINUTE, CHGHOUR } clock_status;   //时钟的状态

unsigned int hour,minute,second;

unsigned int show_hour, show_minute, show_second;

enum { NOKEY, PRESSING, PRESSED } key_status;           //键盘按下与否的状态

unsigned key_code;

// 7LED数码管的字形码,采用高八位输出,决定显示的字形,如: '0''1'

const unsigned int zhixingma[] = {   0x 3f 00, 0x0600, 0x5b00, 0x 4f 00,

                                    0x6600, 0x6d00, 0x 7c 00, 0x0700,

                                    0x 7f 00,0x 6f 00 };

// 数码管选择的"位段码",决定哪一位数码管显示

const unsigned int weiduanma[] = {0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040};

//数码管的两个DD引脚, 为时,中间的冒号亮

const unsigned int wei_DD = 0x0081;

 

void display(unsigned int wei, unsigned int number)

{

    *P_IOA_Data = zhixingma[number];

    //设置位段码时,不能改变冒号的状态  

    *P_IOB_Data = weiduanma[wei] | (*P_IOB_Buffer & wei_DD);

}

//取反数码管中间的冒号

void opposite_dots()

{   

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值