打印

如何自定义数码管段选io

[复制链接]
1418|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
samlianxing|  楼主 | 2015-9-14 16:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2015-9-14 17:04 | 只看该作者
// C51
sbit seg_a = P0^0;

使用特权

评论回复
板凳
samlianxing|  楼主 | 2015-9-14 17:28 | 只看该作者
ayb_ice 发表于 2015-9-14 17:04
// C51
sbit seg_a = P0^0;

如把各IO口定义後,怎定义0-9的段码
"unsigned char code Tab[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff }"

使用特权

评论回复
地板
ayb_ice| | 2015-9-14 18:56 | 只看该作者
samlianxing 发表于 2015-9-14 17:28
如把各IO口定义後,怎定义0-9的段码
"unsigned char code Tab[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82 ...

#define SA 0x01

#define DN0 0xff-SG-SH

使用特权

评论回复
5
samlianxing|  楼主 | 2015-9-15 09:17 | 只看该作者
ayb_ice 发表于 2015-9-14 18:56
#define SA 0x01

#define DN0 0xff-SG-SH


师傅!你的方法巳找了好几个朋友试了,就是不成功,能给个实例吗?

使用特权

评论回复
6
ningling_21| | 2015-9-15 09:59 | 只看该作者
samlianxing 发表于 2015-9-15 09:17
师傅!你的方法巳找了好几个朋友试了,就是不成功,能给个实例吗?

段码接在不同的IO上需要把原来的段码表分成2份,送数据也要送2次

例如:之前0xc0 变成  0x40和0x80

使用特权

评论回复
7
ayb_ice| | 2015-9-15 10:24 | 只看该作者
samlianxing 发表于 2015-9-15 09:17
师傅!你的方法巳找了好几个朋友试了,就是不成功,能给个实例吗?

你硬件图都没有,只能给个大致的方法


sfr SEG_ABCDEF = P1;
sbit SEG_G = P5^4;

//_____________________
// 根据硬件修改
#define SA        0x01
#define SB        0x02
#define SC        0x04
#define SD        0x08
#define SE        0x10
#define SF        0x20
#define SG        0x40
#define SH        0x80

//_____________________
// 以下不需要修改
#define DN0        SA+SB+SC+SD+SE+SF
#define DN1        SB+SC
....
#define DLA        SA+SB+SC+SF+SE
....

unsigned char code LCD_TABLE[] = {DN0,DN1...DLA,DLF};


void led_display(U8 d)
{
        U8 t = ~LCD_TABLE[d];
       
        COM = 0;
        SEG_ABCDEF = t;
        if(t & SG){
                SEG_G = 1;
        }else{
                SEG_G = 0;
        }
        COM = 1;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

24

帖子

0

粉丝