『壹』 單片機數碼管顯示的數值編碼
昏,你學過數字電路么?關於7段數碼管的部分(其實我們用的是8段),數碼管中有8斷二極體,從最上到小數點,分別是a,b,c,d,e,f,g,h(這個是小數點),8個數碼管統一接在地線或者高電平,所以只要看二極體的那一面接為啥,這也就是什麼共陽極和共陰極了,你可以手工自己面一下碼,比如說你上面所說的共陽極吧,如果想要顯示1的話,是不是b段,c段為低電平呀,其他為高呀,對應的編碼是不是1111
1001.(最低位是a,次位為b,後c,。。。。)
,那不是0xf9么?。。。。
『貳』 單片機數碼管動態顯示代碼
如下:
『叄』 C語言單片機代碼 數碼管動態顯示
這里的16個元素代表的是從十六進制數0~9、A、B、C、D、E、F的段碼,根據什麼來填這些數組元素?那就要看你設計程序時定義數組的作用才能確定.table[1]對應的元素為0x06,是十六進制數,轉換成二進制數是00000110B,分別對應於數碼管的Dp、g、f、e、d、c、b、a 腳,所以在共陰數碼管上點亮b、c兩段,顯示的是數字1,其它同理。
『肆』 C51 單片機數碼管顯示
data代表的是單片機內部低128位元組的RAM,可以省略
code代表數組寫在程序存儲器中,可節省寶貴的內存,因這個表格存的是固定數據(常量)
有的單片機內部有256位元組RAM,高128位元組用idata修飾
如果用外部RAM(或片上超過256位元組的RAM),要用xdata修飾
整型變數當然要用uint 了,沒見哪裡用 uchar
『伍』 51單片機的共陰數碼管怎麼顯示數字(c語言)
要讓51單片機共陰數碼管顯示數字,只需要將單片機的P2埠輸出數字對應的段碼即可。
以顯示數字「0」為例,c語言程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//數碼管的段碼編碼
Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(){//主函數
P0 = table[0];//顯示0,大家可以修改裡面的數據。
while(1);//程序不再執行其他步驟;
}
(5)單片機數碼管顯示全部代碼擴展閱讀:
數字0-9的對應段碼:
數字0 0x3f
數字1 0x06
數字2 0x5b
數字3 0x4f
數字4 0x66
數字5 0x6d
數字6 0x7d
數字7 0x07
數字8 0x7f
數字9 0x6f
『陸』 單片機 數碼管動態顯示代碼
if(Countnum[3]++=9) 單片機裡面判斷是否相等是用==的而不是=
你應該寫成if(Countnum[3]++==9)
而且你的寫法和不規范,這個寫法的意思是Countnum[3]是否等於9,然後Countnum[3]加1
其它的錯誤也是一樣
『柒』 我想要實現單片機: 數碼管每隔1s顯示從0-9怎麼實現 全部代碼。
你要c語言的還是匯編的?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar x); //延時程序
void ds_50ms(void); //50ms定時,中斷程序
void Ptime(uchar); //時間處理函數
void Js_Scan(void); //數碼管掃描函數
sbit S1=P2^4; //置位P2.4為數碼管1控制位
int num=0,m=0; //定義數據類型
//int code LED_Num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數碼管掃描數組,共陰極
int code LED_Num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽極
void main(void) //主函數
{
TMOD=0x01; //定義計時器工作類型
TH0=(65535-50000)/256; //定時器高4位初值
TL0=(65535-50000)%256; //定時器低4位初值
EA=1; //開中斷
ET0=1; //開中斷
while(1) //建立死循環
{
Js_Scan(); //調用數碼管掃描函數
TRO=1;
}
}
void ds_50ms(void) interrupt 1 using 1 //50ms定時中斷程序
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++; //執行累加,直到50ms
Ptime(num); //調用時間處理函數
}
void Ptime(uchar time) //時間處理函數
{
if(time==20) //判斷是否到1000ms,即1秒
{
num=0; //num清零
m++; //m累加
}
if(m==9) //數碼管顯示9時,m清零,重新計數
{
m=0;
}
}
void Js_Scan() //數碼管掃描函數
{
uchar j; //定義j數據類型
for(j=0;j<5;j++) //建立循環
{
S1=1;P0=LED_Num[m];delay(1);S1=0; //掃描顯示位,稍作延時(對於單位數碼管可直接置高置低,此為掃描的寫法,單位不需要延時,不需要寫for循環)
}
}
void delay(uchar x) //延時函數,防止數碼管顯示不穩定
{
uchar k;
while(x--)
for(k=0;k<125;k++);
}
這個是共陽極的,共陰極改變數組就行了。。。。 將前面的//刪掉 將後面數組加上// S1=0;S1=1;就行了。
『捌』 51單片機怎樣用鍵盤控制數碼管顯示
51單片機怎樣用鍵盤控制數碼管顯示的方法。
如下參考:
1.首先,編寫代碼並點亮數碼管。
『玖』 共陰極7段數碼管顯示C程序
單片機7段數碼管動態顯示程序代碼及其說明如下:
#include <reg51.h>
#include <intrins.h>
#include<math.h>
unsigned char data dis_digit; //dis_digit---位選通值, 傳送到P2口用於選通當
//前數碼管的數值, 如等於0xfe時,選通P2.0口數碼管
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
(9)單片機數碼管顯示全部代碼擴展閱讀:
驅動方式:
直流驅動。
是指每個數碼管的每一個段碼都由一個單片機的I/O埠進行驅動,或者使用如BCD碼二-十進制解碼器解碼進行驅動。優點是編程簡單,顯示亮度高,缺點是佔用I/O埠多。
動態顯示驅動:
是將所有數碼管通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示。將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制。
當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決於單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。
『拾』 關於單片機數碼管的C語言代碼,高分求詳解,先謝過
一、LedNumVal%10000/1000
%是模,取余數的意思,%10000,得到的數最大是四位數。
/是整除的意思不帶小數,如8/3=2
一個小於10000的數,整除1000結果一定是0到9之間的一個數
二、Disp_Tab
以及LedOut,
dispbit都是數組,根據相應的數可得到對應的字元數據,達到位選的功能。