单片机实现4位一体数码管显示0000—FFFF的16进制(C语言编程)

[复制链接]
查看11 | 回复5 | 2017-12-16 15:58:45 | 显示全部楼层 |阅读模式
/*四个数码管的动态显示*/#include#define uint unsigned int#define uchar unsigned charsbit du = P2^6;sbit we = P2^7;uchar code table[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uint a;//---------------------------------------------void delayms(uint xms){ ...
回复

使用道具 举报

千问 | 2017-12-16 15:58:45 | 显示全部楼层
你这种是需要动态扫描的方式实现多个数码管“一起”显示,1、先把数码管的段码写出来,放到一维数组里,依次为你要显示的十六进制图形;然后做一个0~65536的全局变量whole_0,初值为零,在定时器中断里累加,做一个每16次whole_0自加1,whole_1自加1……2、首先你要理解为什么“一起”打上引号,即具体实现的时候实质上不是一起的,先把这部分...
回复

使用道具 举报

千问 | 2017-12-16 15:58:45 | 显示全部楼层
设一个无符号的整形变量X,正好是0~65535即十六进制的0~ffff。你只管加就可以了,显示时,变量X&0x0f是最后一位,(X>>4)&0XF是倒数第二>>8 第二>>12第一,根据8段码显示就好了...
回复

使用道具 举报

千问 | 2017-12-16 15:58:45 | 显示全部楼层
你这样说写程序没有用的,要硬件与软件配合起来写才行的,给你一个思路吧,你可以把每一个数码管的段并在一起,然后记好每一个段的引脚,再后4个位接到单片机的引脚上面,再记好位的引脚,最后你让把每一位按照数码管A-H编好程序,再执行到每一个数码管扫描就行,注意上面说的接到单片机引脚,最好有一个功率放大器,这样不至于损坏单片机, 你看上面都写得清清楚楚的,你就按照...
回复

使用道具 举报

千问 | 2017-12-16 15:58:45 | 显示全部楼层
//段码由P0口输出,P2.3-P2.0依次接位选的高到低#includetypedef unsigned char u8;typedef unsigned int u16;void Delay(void);void Disp(void);u16 Cnt;u8 code LED[]={0x3F,// 00...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行