STC89C52单片机 数码管静态显示
數(shù)碼管顯示原理
數(shù)碼管根據(jù)內(nèi)部連接不同分為共陰極和共陽(yáng)極。八段數(shù)碼管內(nèi)部有8顆LED組成,如果想要顯示特定字形只需控制相應(yīng)的LED亮起,其他LED熄滅即可。
靜態(tài)與動(dòng)態(tài)顯示
靜態(tài)顯示:
LED顯示器工作方式有兩種:靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。靜態(tài)顯示的特點(diǎn)是每個(gè)數(shù)碼管的段選必須接一個(gè)9位數(shù)據(jù)線來(lái)保持顯示的字形碼。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。
缺點(diǎn):使用的IO口比較多。
動(dòng)態(tài)顯示
動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動(dòng)態(tài)掃描顯示。所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余暉和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。
74HC573鎖存器的工作原理
芯片文檔查詢網(wǎng)址: https://www.alldatasheet.com/
上拉電阻的作用
上拉就是將不確定的信號(hào)通過(guò)一個(gè)電阻鉗位在高電平,電阻同時(shí)起限流作用。下位同理,也是將不確定的信號(hào)通過(guò)一個(gè)電阻鉗位在低電平。
當(dāng)P0口作為輸入、輸出口時(shí),上電復(fù)位后處于開(kāi)漏模式。P0口內(nèi)部無(wú)上拉電阻,所以作I/0口必須外接10K-4.7K的上拉電阻。
點(diǎn)亮一位數(shù)字"1"
#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數(shù)碼管段選 sbit WE = P2^7;//數(shù)碼管段選void main(){ // main函數(shù)自身會(huì)循環(huán)WE = 1; // 打開(kāi)位選鎖存器P0 = 0XFE; // 1111 1110 選通第一位數(shù)碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數(shù)碼管WE = 0; // 鎖存位選數(shù)據(jù)DU = 1; // 打開(kāi)段選鎖存器P0 = 0X06; // 0000 0110 顯示“1”DU = 0; // 鎖存段選數(shù)據(jù)while(1){// P0 = 0X01; // 當(dāng)鎖存器中的數(shù)值被鎖定后,無(wú)法直接修改數(shù)碼管的值,需要打開(kāi)位選鎖存器才能進(jìn)行修改} }點(diǎn)亮兩位數(shù)字"2"
#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數(shù)碼管段選 sbit WE = P2^7;//數(shù)碼管段選void main(){ // main函數(shù)自身會(huì)循環(huán)WE = 1; // 打開(kāi)位選鎖存器P0 = 0XFC; // 1111 1100 選通第一位和第二位數(shù)碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數(shù)碼管WE = 0; // 鎖存位選數(shù)據(jù)DU = 1; // 打開(kāi)段選鎖存器P0 = 0X5B; // 0101 1011 顯示“2”DU = 0; // 鎖存段選數(shù)據(jù)while(1){// P0 = 0X01; // 當(dāng)鎖存器中的數(shù)值被鎖定后,無(wú)法直接修改數(shù)碼管的值,需要打開(kāi)鎖存器才能進(jìn)行修改} }點(diǎn)亮三位數(shù)字"3"
#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數(shù)碼管段選 sbit WE = P2^7;//數(shù)碼管段選void main(){ // main函數(shù)自身會(huì)循環(huán)WE = 1; // 打開(kāi)位選鎖存器P0 = 0XF8; // 1111 1000 選通第一位、第二位和第三位數(shù)碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數(shù)碼管WE = 0; // 鎖存位選數(shù)據(jù)DU = 1; // 打開(kāi)段選鎖存器P0 = 0X4F; // 0100 1111 顯示“3”DU = 0; // 鎖存段選數(shù)據(jù)while(1){// P0 = 0X01; // 當(dāng)鎖存器中的數(shù)值被鎖定后,無(wú)法直接修改數(shù)碼管的值,需要打開(kāi)鎖存器才能進(jìn)行修改} }點(diǎn)亮數(shù)碼管最后一位數(shù)字"8"
#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數(shù)碼管段選 sbit WE = P2^7;//數(shù)碼管段選void main(){ // main函數(shù)自身會(huì)循環(huán)WE = 1; // 打開(kāi)位選鎖存器P0 = 0X7F; // 1111 1000 選通第八位數(shù)碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數(shù)碼管WE = 0; // 鎖存位選數(shù)據(jù)DU = 1; // 打開(kāi)段選鎖存器P0 = 0X7F; // 0111 1111 顯示“8”DU = 0; // 鎖存段選數(shù)據(jù)while(1){// P0 = 0X01; // 當(dāng)鎖存器中的數(shù)值被鎖定后,無(wú)法直接修改數(shù)碼管的值,需要打開(kāi)鎖存器才能進(jìn)行修改} }使第三個(gè)(從左至右)數(shù)碼管顯示數(shù)字 6
#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數(shù)碼管段選 sbit WE = P2^7;//數(shù)碼管段選void main(){ // main函數(shù)自身會(huì)循環(huán)P0 = 0X00; //清除斷碼WE = 1; // 打開(kāi)位選鎖存器P0 = 0X03; // 0000 0011 選通第3位、第4位、第5位、第6位、第7位、第8位數(shù)碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數(shù)碼管WE = 0; // 鎖存位選數(shù)據(jù)DU = 1; // 打開(kāi)段選鎖存器P0 = 0X7D; // 0111 1101 對(duì)應(yīng)的數(shù)碼管字母 acdefg 顯示“6”DU = 0; // 鎖存段選數(shù)據(jù) }總結(jié)
以上是生活随笔為你收集整理的STC89C52单片机 数码管静态显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: STC89C52单片机 LED灯闪烁
- 下一篇: STC89C52单片机 数码管动态显示