⑴ 单片机实现4位一体数码管显示0000—FFFF的16进制(C语言编程)
/*四个数码管的动态显示*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit = 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)
{
uint i, j;
for(i=xms;i>0;i--) for(j=110;j>0;j--);
}
//---------------------------------------------
void disp()
{
we = 1; P0 = 0xf7; we = 0; //锁存开启 个位 锁存关闭
P0 = table[a % 256 % 16]; delayms(5); //输出个位数
we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭
we = 1; P0 = 0xfb; we = 0; //锁存开启 十位 锁存关闭
P0 = table[a % 256 / 16]; delayms(5); //输出十位数
we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭
we = 1; P0 = 0xfd; we = 0; //锁存开启 百位 锁存关闭
P0 = table[a / 256 % 16]; delayms(5); //输出百位数
we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭
we = 1; P0 = 0xfe; we = 0; //锁存开启 千位 锁存关闭
P0 = table[a / 256 / 16]; delayms(5); //输出千位数
we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭
}
//---------------------------------------------
void main()
{
char i;
a = 0;
while(1) {
for (i = 0; i < 20; i++) disp();
a++;
}
}
//---------------------------------------------
上述的《千百十个》四个位,实际上,显示的是16进制数。
程序,是借用了楼主的《单个显示程序》,但是,和楼主的电路,并不配套。
楼主的电路,并没有锁存器。
而程序中,却是使用锁存器的编程思路。
未必好用,试试看吧。
⑵ 单片机的十六进制怎么表示
单片机的数据(或者是C程序)里面经常出现一些字母(例如0xff)表示一个字节的数据,你如果想表示两个字节,也就是16位数据的时候就直在0x后跟四个字母(16进制的话,必须是0~9,A~F范围内)就好了。例如variant = 0xffff,就表示variant的16个bit全部置1。
⑶ 单片机作业中的1~8的二进制数,十六进制数
请问数码管是共阳极还是共阴极?
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
0, 1 , 2 , 3 , 4 , 5 , 6 , 7, 8 ,9
上面对应的是16进制;
二进制:
1:11111001
3:10110000
4:10011001
6:10000010
8:10000000
⑷ 如何编写单片机中4字节十六进制数的加法程序
加法很简单的,根据你小学时候的加法原理就可以很容易算了,也就是低位相加,高位和高位厅碰相加,再加上低位的进位就OK了
例如:ff ff ff ff+ff ff ff ff=
最低字节相加=1FE 其中1就是进位扮雹谈了,结果就是低位=FE第一个字节相加=1FE再就上进位1=1FF第二个字节=FF再把进位加到第三个字节........
最终的结果就是肆模=1 FF FF FF FE
所以4 字节相加要5 个字节来保存结果