標(biāo)題: 新人有一些數(shù)碼管問(wèn)題不懂 [打印本頁(yè)]
作者: lushaoqian 時(shí)間: 2017-10-20 12:54
標(biāo)題: 新人有一些數(shù)碼管問(wèn)題不懂
#include<reg52.h> //52系列單片機(jī)頭文件
#define uchar unsigned char
#define uint unsigned int
uint x,y;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //共陰極數(shù)碼管編碼
void display(uchar,uchar,uchar,uchar); //聲明子函數(shù)
void delay(int); //聲明子函數(shù)
void main()
{
while(1)
{
display(1,2,3,4); //主程序始終調(diào)用數(shù)碼管顯示子程序
}
}
void display(uchar a,uchar b,uchar c,uchar d)
{
P2=0xef;
P0=table[a]; //給第一個(gè)數(shù)碼管送"a"
delay(1); //延時(shí)1ms
P2=0xdf;
P0=table; //給第二個(gè)數(shù)碼管送"b"
delay(1); //延時(shí)1ms
P2=0xbf;
P0=table[c]; //給第三個(gè)數(shù)碼管送"c"
delay(1); //延時(shí)1ms
P2=0x7f;
P0=table[d]; //給第三個(gè)數(shù)碼管送"d"
delay(1); //延時(shí)1ms
}
void delay(uint z) //延時(shí)子函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
我不懂每個(gè)‘’P2=‘’的意思
還有那個(gè)定義的 abcd是不是對(duì)應(yīng)的就是
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
這里面的前4個(gè)
-
數(shù)碼管.jpg
(65.56 KB, 下載次數(shù): 45)
下載附件
2017-10-20 12:51 上傳
作者: 一笑泯恩仇啊 時(shí)間: 2017-10-20 19:17
p2的不同賦值對(duì)應(yīng)打開(kāi)不同的數(shù)碼管位選,abcd對(duì)應(yīng)在主函數(shù)中是數(shù)組的2到5位,而且你的顯示函數(shù)里面有一個(gè)明顯的錯(cuò)誤,是table[b]才對(duì)
作者: liushuiwuqing 時(shí)間: 2017-10-20 19:28
比如 P2=0xbf ,就是讓單片機(jī)P2口 P2.7-P2.0的8個(gè)引腳輸出的電平依次為1011 1111,即讓P2.6這個(gè)端口輸出低電平,此時(shí)第3位數(shù)碼管亮。abcd應(yīng)該對(duì)應(yīng)的是數(shù)組里的第二到第五個(gè),因?yàn)閿?shù)組從0開(kāi)始的。
作者: STC89C51 時(shí)間: 2017-10-20 19:51
這是數(shù)碼管動(dòng)態(tài)顯示,P0口輸出段選信號(hào),就是讓數(shù)碼管顯示數(shù)字,P2口控制位選,就是讓那個(gè)數(shù)碼管顯示。樓主說(shuō)的“abcd”是十六進(jìn)制,分別對(duì)應(yīng)10、11、12、13。
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |