专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
HT1632C控制四位数码管,如何使四位数码管动态显示。
2019-07-19 21:02
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
3859
6
1230
问题如题,程序该怎么写才能是四位数码管同时动态显示,本人能力有限试了好多次只能显示一位数码管,求各位大神帮忙。万分感谢
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-19 21:21
你这关键在控制COM12~COM15的循环扫描啊。
加载中...
cornrn
2楼-- · 2019-07-20 01:07
精彩回答 2 元偷偷看……
加载中...
dp30737
3楼-- · 2019-07-20 01:49
精彩回答 2 元偷偷看……
加载中...
静水流深
4楼-- · 2019-07-20 02:24
好久没上了,分享下HT1632驱动和数码管代码
//
//详细地址如下
// COM15 COM14 COM13 COM12 地址 ........COM3 COM2 COM1 COM0 地址
//ROW0 D15 D14 D13 D12 |03H| D3 D2 D1 D0 |00H|
//ROW1 D15 D14 D13 D12 |07H| D3 D2 D1 D0 |04H|
//ROW2 D15 D14 D13 D12 |0BH| D3 D2 D1 D0 |08H|
//ROW3 D15 D14 D13 D12 |0FH| D3 D2 D1 D0 |0CH|
//ROW4 D15 D14 D13 D12 |13H| D3 D2 D1 D0 |10H|
//ROW5 D15 D14 D13 D12 |17H| D3 D2 D1 D0 |14H|
//ROW6 D15 D14 D13 D12 |1BH| D3 D2 D1 D0 |18H|
//ROW7 D15 D14 D13 D12 |1FH| D3 D2 D1 D0 |1CH|
//ROW8 D15 D14 D13 D12 |23H| D3 D2 D1 D0 |20H|
//ROW9 D15 D14 D13 D12 |27H| D3 D2 D1 D0 |24H|
//ROW10 D15 D14 D13 D12 |2BH| D3 D2 D1 D0 |28H|
//ROW11 D15 D14 D13 D12 |2FH| D3 D2 D1 D0 |2CH|
//ROW12 D15 D14 D13 D12 |33H| D3 D2 D1 D0 |30H|
//ROW13 D15 D14 D13 D12 |37H| D3 D2 D1 D0 |34H|
//ROW14 D15 D14 D13 D12 |3BH| D3 D2 D1 D0 |38H|
//ROW15 D15 D14 D13 D12 |3FH| D3 D2 D1 D0 |3CH|
[mw_shl_code=c,true]//指令表 #define SYS_DIS 0x00 //关闭系统震荡 #define SYS_EN 0x01 //打开系统震荡 #define LED_OFF 0x02 //关闭LED显示 #define LED_ON 0x03 //打开LED显示 #define BLINK_OFF 0x08 //关闭闪烁 #define BLINK_ON 0x09 //打开闪烁 #define SLAVE_MODE 0x10 //从模式 #define RC_MASTER_MODE 0x18 //内部RC时钟 #define EXT_CLK_MASTER_MODE 0x1C //外部时钟 #define COM_OPTION 0x24 //16COM,NMOS模式 //#define PWM_DUTY 0XA0 //PWM亮度控制 #define PWM_DUTY 0xAf //PWM亮度控制 //数码管段选 dp-a方式:0-9,A,b,c,u unsigned char tab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x3e}; //数码管段选0-9,带小数点 unsigned char tab1[] = {0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x17, 0xff, 0xef}; /**************************************** *函数名:HT1632C_Writer *描 述:HT1632C发送数据函数,高位在前 *参 数
ata,cnt *返 回: ****************************************/ void HT1632C_Writer(unsigned char Data,unsigned char cnt) { unsigned char i; for(i=0;i<cnt;i++) { GPIOEX_BitClr(HT_WR); if(Data&0x80) GPIOEX_BitSet(HT_DATA); else GPIOEX_BitClr(HT_DATA); Data<<=1; GPIOEX_BitSet(HT_WR); } } /******************************* *函数名:HT1632C_Writer_CMD *描 述:发送命令函数 *参 数:cmd *返 回: ********************************/ void HT1632C_Writer_CMD(unsigned char cmd) { GPIOEX_BitClr(HT_CS); HT1632C_Writer(0x80,3); //命令码100 HT1632C_Writer(cmd,9); //命令数据,第9位为0 GPIOEX_BitSet(HT_CS); } /******************************* *函数名:HT1632C_Writer_DATA *描 述:指定地址写入数据 *参 数:Addr,Data *返 回: ********************************/ void HT1632C_Writer_DATA(unsigned char Addr,unsigned char Data) { GPIOEX_BitClr(HT_CS); HT1632C_Writer(0xa0,3); //命令码101 HT1632C_Writer(Addr<<1,7); //写入7位地址 HT1632C_Writer(Data,4); //写入4位数据 GPIOEX_BitSet(HT_CS); } /************************************************************ *函数名:HT1632C_Writer_AllDATA *描 述:指定地址写入连续数据,cnt为写入数据个数,按8位算 *参 数:Addr,*p,cnt *返 回: *************************************************************/ void HT1632C_Writer_AllDATA(unsigned char Addr,unsigned char *p,unsigned char cnt) { unsigned char i; GPIOEX_BitClr(HT_CS); HT1632C_Writer(0xa0,3); HT1632C_Writer(Addr<<1,7); for(i=0;i<cnt;i++) { HT1632C_Writer(*p,8); p++; } GPIOEX_BitSet(HT_CS); } /******************************* *函数名:HT1632C_clr *描 述:清屏函数 *参 数: *返 回: ********************************/ void HT1632C_clr(void) { unsigned char i; GPIOEX_BitClr(HT_CS); HT1632C_Writer(0xa0,3); HT1632C_Writer(0x00<<1,7); for(i=0;i<36;i++) { HT1632C_Writer(0,8); } GPIOEX_BitSet(HT_CS); } /******************************* *函数名:HT1632C_Init *描 述:HT1632C初始化函数 *参 数: *返 回: ********************************/ void HT1632C_Init(void) { GPIOEX_BitSet(HT_CS); GPIOEX_BitSet(HT_WR); GPIOEX_BitSet(HT_DATA); HT1632C_Writer_CMD(SYS_DIS); HT1632C_Writer_CMD(COM_OPTION); HT1632C_Writer_CMD(RC_MASTER_MODE); HT1632C_Writer_CMD(SYS_EN); HT1632C_Writer_CMD(PWM_DUTY); HT1632C_Writer_CMD(BLINK_OFF); HT1632C_Writer_CMD(LED_ON); } /******************************* *函数名:display_num *描 述:数码管显示函数 *参 数: *返 回: ********************************/ //显示数值,无小数点 void display_num(unsigned int dat) { unsigned char i, j; unsigned char dt;//dt为要写入到ram的值 dt = 0; for(i=0; i<8;i++) { dt =( tab[dat]&(1<<i))<<(7-i);//千 if(i==7) { dt +=(tab[dat%1000/100 ]&(1<<i))>>(i-6);//百 dt += (tab[dat%100/10 ]&(1<<i))>>(i-5);//十 dt += (tab[dat%10]&(1<<i))>>(i-4); //个 } else if(i == 6) { dt +=(tab[dat%1000/100 ]&(1<<i))>>(i-6); dt += (tab[dat%100/10]&(1<<i))>>(i-5); dt += (tab[dat%10]&(1<<i))>>(i-4); } else if(i == 5) { dt+=(tab[dat%1000/100 ]&(1<<i))<<(6-i);//百 dt += (tab[dat%100/10]&(1<<i))<<(5-i); dt += (tab[dat%10]&(1<<i))>>(i-4); } else { dt+=(tab[dat%1000/100 ]&(1<<i))<<(6-i);//百 dt += (tab[dat%100/10]&(1<<i))<<(5-i); dt += (tab[dat%10]&(1<<i))<<(4-i); } HT1632C_Writer_DATA((0x03+i*4),dt); } }[/mw_shl_code]
加载中...
colarence
5楼-- · 2019-07-20 07:18
静水流深 发表于 2015-1-22 21:15
好久没上了,分享下HT1632驱动和数码管代码
//
//详细地址如下
能放个共阳极的电路图吗??
加载中...
ndthome
6楼-- · 2019-07-20 13:12
精彩回答 2 元偷偷看……
加载中...
一周热门
更多
>
相关问题
相关文章
嵌入式编译生成的HEX文件和BIN文件内容详解
0个评论
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
单片机中把部分Flash虚拟成Eeprom使用时,如何延长使用寿命
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
敢问路在何方,STM32迈出的第一步,却注定了它非凡的一生
0个评论
年工作时间真的就等于3年工作经验?也许你就不配
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
//
//详细地址如下
// COM15 COM14 COM13 COM12 地址 ........COM3 COM2 COM1 COM0 地址
//ROW0 D15 D14 D13 D12 |03H| D3 D2 D1 D0 |00H|
//ROW1 D15 D14 D13 D12 |07H| D3 D2 D1 D0 |04H|
//ROW2 D15 D14 D13 D12 |0BH| D3 D2 D1 D0 |08H|
//ROW3 D15 D14 D13 D12 |0FH| D3 D2 D1 D0 |0CH|
//ROW4 D15 D14 D13 D12 |13H| D3 D2 D1 D0 |10H|
//ROW5 D15 D14 D13 D12 |17H| D3 D2 D1 D0 |14H|
//ROW6 D15 D14 D13 D12 |1BH| D3 D2 D1 D0 |18H|
//ROW7 D15 D14 D13 D12 |1FH| D3 D2 D1 D0 |1CH|
//ROW8 D15 D14 D13 D12 |23H| D3 D2 D1 D0 |20H|
//ROW9 D15 D14 D13 D12 |27H| D3 D2 D1 D0 |24H|
//ROW10 D15 D14 D13 D12 |2BH| D3 D2 D1 D0 |28H|
//ROW11 D15 D14 D13 D12 |2FH| D3 D2 D1 D0 |2CH|
//ROW12 D15 D14 D13 D12 |33H| D3 D2 D1 D0 |30H|
//ROW13 D15 D14 D13 D12 |37H| D3 D2 D1 D0 |34H|
//ROW14 D15 D14 D13 D12 |3BH| D3 D2 D1 D0 |38H|
//ROW15 D15 D14 D13 D12 |3FH| D3 D2 D1 D0 |3CH|
[mw_shl_code=c,true]//指令表 #define SYS_DIS 0x00 //关闭系统震荡 #define SYS_EN 0x01 //打开系统震荡 #define LED_OFF 0x02 //关闭LED显示 #define LED_ON 0x03 //打开LED显示 #define BLINK_OFF 0x08 //关闭闪烁 #define BLINK_ON 0x09 //打开闪烁 #define SLAVE_MODE 0x10 //从模式 #define RC_MASTER_MODE 0x18 //内部RC时钟 #define EXT_CLK_MASTER_MODE 0x1C //外部时钟 #define COM_OPTION 0x24 //16COM,NMOS模式 //#define PWM_DUTY 0XA0 //PWM亮度控制 #define PWM_DUTY 0xAf //PWM亮度控制 //数码管段选 dp-a方式:0-9,A,b,c,u unsigned char tab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x3e}; //数码管段选0-9,带小数点 unsigned char tab1[] = {0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x17, 0xff, 0xef}; /**************************************** *函数名:HT1632C_Writer *描 述:HT1632C发送数据函数,高位在前 *参 数ata,cnt *返 回: ****************************************/ void HT1632C_Writer(unsigned char Data,unsigned char cnt) { unsigned char i; for(i=0;i<cnt;i++) { GPIOEX_BitClr(HT_WR); if(Data&0x80) GPIOEX_BitSet(HT_DATA); else GPIOEX_BitClr(HT_DATA); Data<<=1; GPIOEX_BitSet(HT_WR); } } /******************************* *函数名:HT1632C_Writer_CMD *描 述:发送命令函数 *参 数:cmd *返 回: ********************************/ void HT1632C_Writer_CMD(unsigned char cmd) { GPIOEX_BitClr(HT_CS); HT1632C_Writer(0x80,3); //命令码100 HT1632C_Writer(cmd,9); //命令数据,第9位为0 GPIOEX_BitSet(HT_CS); } /******************************* *函数名:HT1632C_Writer_DATA *描 述:指定地址写入数据 *参 数:Addr,Data *返 回: ********************************/ void HT1632C_Writer_DATA(unsigned char Addr,unsigned char Data) { GPIOEX_BitClr(HT_CS); HT1632C_Writer(0xa0,3); //命令码101 HT1632C_Writer(Addr<<1,7); //写入7位地址 HT1632C_Writer(Data,4); //写入4位数据 GPIOEX_BitSet(HT_CS); } /************************************************************ *函数名:HT1632C_Writer_AllDATA *描 述:指定地址写入连续数据,cnt为写入数据个数,按8位算 *参 数:Addr,*p,cnt *返 回: *************************************************************/ void HT1632C_Writer_AllDATA(unsigned char Addr,unsigned char *p,unsigned char cnt) { unsigned char i; GPIOEX_BitClr(HT_CS); HT1632C_Writer(0xa0,3); HT1632C_Writer(Addr<<1,7); for(i=0;i<cnt;i++) { HT1632C_Writer(*p,8); p++; } GPIOEX_BitSet(HT_CS); } /******************************* *函数名:HT1632C_clr *描 述:清屏函数 *参 数: *返 回: ********************************/ void HT1632C_clr(void) { unsigned char i; GPIOEX_BitClr(HT_CS); HT1632C_Writer(0xa0,3); HT1632C_Writer(0x00<<1,7); for(i=0;i<36;i++) { HT1632C_Writer(0,8); } GPIOEX_BitSet(HT_CS); } /******************************* *函数名:HT1632C_Init *描 述:HT1632C初始化函数 *参 数: *返 回: ********************************/ void HT1632C_Init(void) { GPIOEX_BitSet(HT_CS); GPIOEX_BitSet(HT_WR); GPIOEX_BitSet(HT_DATA); HT1632C_Writer_CMD(SYS_DIS); HT1632C_Writer_CMD(COM_OPTION); HT1632C_Writer_CMD(RC_MASTER_MODE); HT1632C_Writer_CMD(SYS_EN); HT1632C_Writer_CMD(PWM_DUTY); HT1632C_Writer_CMD(BLINK_OFF); HT1632C_Writer_CMD(LED_ON); } /******************************* *函数名:display_num *描 述:数码管显示函数 *参 数: *返 回: ********************************/ //显示数值,无小数点 void display_num(unsigned int dat) { unsigned char i, j; unsigned char dt;//dt为要写入到ram的值 dt = 0; for(i=0; i<8;i++) { dt =( tab[dat]&(1<<i))<<(7-i);//千 if(i==7) { dt +=(tab[dat%1000/100 ]&(1<<i))>>(i-6);//百 dt += (tab[dat%100/10 ]&(1<<i))>>(i-5);//十 dt += (tab[dat%10]&(1<<i))>>(i-4); //个 } else if(i == 6) { dt +=(tab[dat%1000/100 ]&(1<<i))>>(i-6); dt += (tab[dat%100/10]&(1<<i))>>(i-5); dt += (tab[dat%10]&(1<<i))>>(i-4); } else if(i == 5) { dt+=(tab[dat%1000/100 ]&(1<<i))<<(6-i);//百 dt += (tab[dat%100/10]&(1<<i))<<(5-i); dt += (tab[dat%10]&(1<<i))>>(i-4); } else { dt+=(tab[dat%1000/100 ]&(1<<i))<<(6-i);//百 dt += (tab[dat%100/10]&(1<<i))<<(5-i); dt += (tab[dat%10]&(1<<i))<<(4-i); } HT1632C_Writer_DATA((0x03+i*4),dt); } }[/mw_shl_code]
能放个共阳极的电路图吗??
一周热门 更多>