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