日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C51单片机使用3-数码管显示

發布時間:2023/12/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C51单片机使用3-数码管显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、硬件介紹

1、原理

2、多位數碼管驅動

二、數碼管顯示控制

1、靜態顯示

(1)單個數碼管

(2)多個數碼管顯示

(3)顯示數字使用編碼方式

2、動態顯示

(1)原理

(2)代碼實現

(3)測試

工程下載鏈接


一、硬件介紹

1、原理

數碼管有單位數碼管、雙位數碼管和其它多位數碼管。如下圖所示

單個的數碼管共10個引腳,顯示不同的數字需要7個引腳,小數點占用1個引腳,公共端占用1個,廠家為了生產方便同意10個引腳,3和8引腳都是公共端。根據公共端接線不同分共陰和共陽。單個的數碼管的原理如下

比如:

顯示數字“8”,則需要點亮a、b、c、d、e、f、g引腳

顯示數字“5”,則需要點亮a、c、d、f、g引腳

2、多位數碼管驅動

當多位數碼管應用于某一系統時,他們的“位選”是可獨立控制的,而“段選“是連接在一起的,通過”位選“信號控制哪幾個數碼管亮。而在同一時刻,位選選通的所有數碼管上顯示的數字都是一樣的(因為他們8段數碼都連在一起的),這種顯示方式叫靜態顯示。

位和段分別用兩個74HC573驅動和控制,P0同時使用上拉電阻。單片機可以控制鎖存器的鎖存端,進而控制鎖存器的數據輸出。當鎖存使能低電平時11引腳)為高電平時,鎖存器輸出數據隨輸入數據變化而變化。當鎖存器使能端(11引腳)為高電平時,輸出數據為之前狀態數據,輸出數據不隨輸入變化。

?六位的數碼管顯示電氣原理圖

二、數碼管顯示控制

數碼管采用共陰極方式,即程序中給數碼管3和8公共引腳低電平,再給其它段碼高電平則段碼點亮。

1、靜態顯示

(1)單個數碼管

任務:在左邊第二個數碼管上顯示數字8

位選:

對于要啟用的對應數碼管,該位為低電平即0。不用的即1。從左往右依次為數碼管1-數碼管6。沒有數碼管7和數碼管8,則這兩個位都寫1。

如,對于只啟用第二個數碼管,則六個數碼管的值分別如下:

數碼管1:1

數碼管2:0

數碼管3:1

數碼管4:1

數碼管5:1

數碼管6:1

預留位7:1

預留位8:1

1111 1101即0xFD

段選:

需要點亮的段為1,不點亮的則是0

如,顯示數字8,即

a=1

b=1

c=1

d=1

e=1

f=1

g=1

dp=0(小數點)

二進制表示就是0111 1111,16進制表示為0x7F

代碼

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charunsigned char m,n; sbit dula=P2^6; //段選鎖存器-使能控制 sbit wela=P2^7; //位選鎖存器-使能控制void Delay_ms(uint xms) {uint i,j; for(i=xms;i>0;i--)for(j=110;j>0;j--); }void main() {wela=1; //位選鎖存器使能//P0=0xFE; //1111 1110 :啟用第一個數碼管-左邊第一個P0=0xFD; //1111 1101 :啟用第二個數碼管-左邊第二個wela=0;dula=1; //段選鎖存器使能P0=0X7F; //0111 1111 :顯示數字8 dula=0;while(1){} }

實驗結果

(2)多個數碼管顯示

顯示6個數碼管的話,即將位選的6個數碼管都置為0,即1100 0000、16進制為0xC0。即可將六個全部都顯示。

顯示其它個數數碼管同樣原理即可。

(3)顯示數字使用編碼方式

任務:從0到F間隔0.5秒依次顯示

數碼管編碼

根據該原理圖,將0-F字符如下表格進行編碼。

?共陰極數碼管編碼

注意:

①本原理圖數碼管為共陰極顯示,共陽極數碼管編碼就不一樣了

②如果需要點亮小數點,則需要對表格重新編碼。

定義數組

uchar code table[]= {//0-9 A-F,共陰極數碼管顯示編碼0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 };

代碼

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit dula=P2^6; //段選鎖存器-使能控制 sbit wela=P2^7; //位選鎖存器-使能控制 uchar num;uchar code table[]= {//0-9 A-F,共陰極數碼管顯示編碼0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 };void Delay_ms(uint xms) {uint i,j; for(i=xms;i>0;i--)for(j=110;j>0;j--); }void main() {wela=1; //位選鎖存器使能//P0=0xFE; //1111 1110 :啟用第一個數碼管-左邊第一個//P0=0xFD; //1111 1101 :啟用第二個數碼管-左邊第二個P0=0xC0; //1100 0000wela=0;P0=0X7F; //0111 1111 :顯示數字8 while(1){for(num=0;num<16;num++){dula=1; //段選鎖存器使能P0=table[num];dula=0; //段選鎖存器去使能Delay_ms(500); //500毫秒延時}} }

2、動態顯示

(1)原理

數碼管動態顯示又叫數碼管的動態掃描顯示。通俗的說就是先在第一個數碼管顯示一個數字然后關閉再在在很短的時間延遲后在第二個數碼管上顯示數字再關閉,再延遲一段時間再在第三個數碼管上顯示數字,依次類推。

這個延遲時間要設置的非常小,測試的時候從500毫秒到10毫秒內,現象為輪流點亮6個數碼管數碼管到數碼管一起變得閃爍顯示數字。最后設置1毫秒延時,因為視覺暫留效應,人的眼睛是看不出來的,所以看起來像是靜態顯示的一樣。

(2)代碼實現

#include <reg51.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit dula=P2^6; //段選鎖存器-使能控制 sbit wela=P2^7; //位選鎖存器-使能控制 uchar num; uchar index;uchar code table[]= {//0-9 A-F,共陰極數碼管顯示編碼0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 };void Delay_ms(uint xms) {uint i,j; for(i=xms;i>0;i--)for(j=110;j>0;j--); }void main() {uint delayTime=1; //延時時間-毫秒while(1){//第一個數碼管顯示num=1;dula=1;P0=table[num];dula=0;P0=0xFF; //消影功能-將所有數碼管段都置高電平,都熄滅,就不會有亮點帶到下一位數碼管上了wela=1;P0=0xfe;wela=0;Delay_ms(delayTime); //第二個數碼管顯示num=2;dula=1;P0=table[num];dula=0;P0=0xFF;wela=1;P0=0xfd; //1111 1101wela=0;Delay_ms(delayTime);//第三個數碼管顯示num=3;dula=1;P0=table[num];dula=0;P0=0xFF;wela=1;P0=0xfb; //1111 1011wela=0;Delay_ms(delayTime);//第四個數碼管顯示num=4;dula=1;P0=table[num];dula=0;P0=0xFF;wela=1;P0=0xf7; //1111 0111wela=0;Delay_ms(delayTime);//第五個數碼管顯示num=5;dula=1;P0=table[num];dula=0;P0=0xFF;wela=1;P0=0xef; //1110 1111wela=0;Delay_ms(delayTime);//第六個數碼管顯示num=6;dula=1;P0=table[num];dula=0;P0=0xFF;wela=1;P0=0xdf; //1101 1111wela=0;Delay_ms(delayTime);}}

(3)測試

分別設置delayTime不同的值,依次編譯生成HEX文件下載。

500毫秒運行效果:

uint delayTime=500;

100毫秒運行效果:

uint delayTime=100;

20毫秒運行效果:

uint delayTime=20;

5毫秒運行效果:

uint delayTime=5;

1毫秒運行效果:

uint delayTime=1;


工程下載鏈接



https://download.csdn.net/download/panjinliang066333/86504920

總結

以上是生活随笔為你收集整理的C51单片机使用3-数码管显示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女女同性被吸乳羞羞 | 日本不卡在线播放 | 久久国产精品无码一区二区 | 国内少妇精品 | 国产传媒第一页 | 少妇户外露出[11p] | 国产视频在线观看免费 | 奇米色影视 | 性做久久 | 美国色综合 | 三级黄色在线视频 | 日韩精品麻豆 | 钻石午夜影院 | 中文字幕一区二区三区精华液 | 亚洲色图18p | 色婷五月 | 亚洲成人h | 久久精品牌麻豆国产大山 | 欧美大奶在线 | 日韩美女一区 | 国产v片| 北条麻妃一区二区三区 | 欧美特级黄色 | 干美女视频 | 国产精品三级在线 | 精品三区 | 欧美成人黄色片 | 制服丝袜av一区二区三区下载 | 精品久久久久久中文字幕人妻最新 | 一级爱爱免费视频 | 欧美va天堂| 美女的隐私免费看 | 在线观看视频亚洲 | 91影音 | 亚洲国产理论 | 伊人国产在线视频 | 国产91在线高潮白浆在线观看 | 美国一级黄色大片 | 天天草天天摸 | 亚洲第一欧美 | 国产毛片一区二区三区 | 国内毛片毛片毛片毛片 | 日本欧美久久久久免费播放网 | 亚洲蜜臀av乱码久久精品蜜桃 | 亚洲第一综合网站 | 午夜亚洲福利在线老司机 | 日韩第六页| 爆操老女人 | 日本体内she精高潮 男女视频在线免费观看 | 天天操人人 | 亚洲午夜精品一区二区 | 男人扒女人添高潮视频 | 国产美女久久久 | 日韩爱爱片 | 91精品久久久久久久久中文字幕 | 91麻豆成人精品国产免费网站 | 海量av资源| 国产精品无码久久久久高潮 | 国产免费不卡av | 中文字幕一区二区三区人妻不卡 | 亚洲日本va中文字幕 | 蜜桃视频污 | 日韩一区二区免费在线观看 | 国产精品久久久久久一区二区 | 国产精品自产拍在线观看 | 亚洲女人初尝黑人巨大 | 一级α片免费看刺激高潮视频 | 亚洲精品成 | 国产冒白浆 | 伊人成人久久 | 欧州一级片 | 色欲狠狠躁天天躁无码中文字幕 | 日韩精品 欧美 | av乱码 | 丰满少妇高潮在线观看 | 免费h片网站 | 精品一区二区视频在线观看 | 香蕉小视频| www色网站| 无码人妻久久一区二区三区不卡 | 日韩大片免费观看 | 永久免费在线视频 | 国模吧一区二区三区 | 欧美日韩一区二区三区四区五区六区 | 狠狠爱av| 91日本在线观看 | 欧美肉大捧一进一出免费视频 | 日韩免费成人 | 19禁大尺度做爰无遮挡电影 | 亚洲国产精品久久久久爰性色 | 天天做天天躁天天躁 | 男女插插插网站 | 亚洲a√| 可以直接看的无码av | 99热成人| 人妻少妇一区二区 | 久久精品国产精品亚洲毛片 | 国产真实的和子乱拍在线观看 | 97人人模人人爽人人少妇 |