⑴ 單片機實現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 個位元組來保存結果