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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

STC89C52单片机 数码管静态显示

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STC89C52单片机 数码管静态显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數碼管顯示原理

數碼管根據內部連接不同分為共陰極和共陽極。八段數碼管內部有8顆LED組成,如果想要顯示特定字形只需控制相應的LED亮起,其他LED熄滅即可。

靜態與動態顯示

靜態顯示:

LED顯示器工作方式有兩種:靜態顯示方式和動態顯示方式。靜態顯示的特點是每個數碼管的段選必須接一個9位數據線來保持顯示的字形碼。當送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。
缺點:使用的IO口比較多。

動態顯示

動態顯示的特點是將所有位數碼管的段選線并聯在一起,由位選線控制是哪一位數碼管有效。選亮數碼管采用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的余暉和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。

74HC573鎖存器的工作原理

芯片文檔查詢網址: https://www.alldatasheet.com/

上拉電阻的作用

上拉就是將不確定的信號通過一個電阻鉗位在高電平,電阻同時起限流作用。下位同理,也是將不確定的信號通過一個電阻鉗位在低電平。

當P0口作為輸入、輸出口時,上電復位后處于開漏模式。P0口內部無上拉電阻,所以作I/0口必須外接10K-4.7K的上拉電阻。

點亮一位數字"1"

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數碼管段選 sbit WE = P2^7;//數碼管段選void main(){ // main函數自身會循環WE = 1; // 打開位選鎖存器P0 = 0XFE; // 1111 1110 選通第一位數碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數碼管WE = 0; // 鎖存位選數據DU = 1; // 打開段選鎖存器P0 = 0X06; // 0000 0110 顯示“1”DU = 0; // 鎖存段選數據while(1){// P0 = 0X01; // 當鎖存器中的數值被鎖定后,無法直接修改數碼管的值,需要打開位選鎖存器才能進行修改} }

點亮兩位數字"2"

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數碼管段選 sbit WE = P2^7;//數碼管段選void main(){ // main函數自身會循環WE = 1; // 打開位選鎖存器P0 = 0XFC; // 1111 1100 選通第一位和第二位數碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數碼管WE = 0; // 鎖存位選數據DU = 1; // 打開段選鎖存器P0 = 0X5B; // 0101 1011 顯示“2”DU = 0; // 鎖存段選數據while(1){// P0 = 0X01; // 當鎖存器中的數值被鎖定后,無法直接修改數碼管的值,需要打開鎖存器才能進行修改} }

點亮三位數字"3"

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數碼管段選 sbit WE = P2^7;//數碼管段選void main(){ // main函數自身會循環WE = 1; // 打開位選鎖存器P0 = 0XF8; // 1111 1000 選通第一位、第二位和第三位數碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數碼管WE = 0; // 鎖存位選數據DU = 1; // 打開段選鎖存器P0 = 0X4F; // 0100 1111 顯示“3”DU = 0; // 鎖存段選數據while(1){// P0 = 0X01; // 當鎖存器中的數值被鎖定后,無法直接修改數碼管的值,需要打開鎖存器才能進行修改} }

點亮數碼管最后一位數字"8"

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數碼管段選 sbit WE = P2^7;//數碼管段選void main(){ // main函數自身會循環WE = 1; // 打開位選鎖存器P0 = 0X7F; // 1111 1000 選通第八位數碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數碼管WE = 0; // 鎖存位選數據DU = 1; // 打開段選鎖存器P0 = 0X7F; // 0111 1111 顯示“8”DU = 0; // 鎖存段選數據while(1){// P0 = 0X01; // 當鎖存器中的數值被鎖定后,無法直接修改數碼管的值,需要打開鎖存器才能進行修改} }

使第三個(從左至右)數碼管顯示數字 6

#include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charsbit DU = P2^6;//數碼管段選 sbit WE = P2^7;//數碼管段選void main(){ // main函數自身會循環P0 = 0X00; //清除斷碼WE = 1; // 打開位選鎖存器P0 = 0X03; // 0000 0011 選通第3位、第4位、第5位、第6位、第7位、第8位數碼管 // P0 = 0X00; // 0000 0000 表示選通所有位數碼管WE = 0; // 鎖存位選數據DU = 1; // 打開段選鎖存器P0 = 0X7D; // 0111 1101 對應的數碼管字母 acdefg 顯示“6”DU = 0; // 鎖存段選數據 }

總結

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

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