51单片机 静态数码管显示
生活随笔
收集整理的這篇文章主要介紹了
51单片机 静态数码管显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本章博客講述使用51單片機編寫程序靜態數碼管顯示
?1.新建工程,選擇芯片型號,這里注意——為了防止出現在插入頭文件reg時出現某些引腳不定義的情況
可嘗試切換為AT89C52型號的芯片,插入頭文件即為reg52,當然,如果使用的是51型號的編譯后成功的,也是可以的。
2.實現八位數碼管上第三位顯示6
首先看原理圖,由于是第三位易知對應的是LED6
之后再看
?結合兩張圖可以看到要使得第三位顯示為6
LED6對應Y5,Y5對應的二進制為101,要讓低電平Y5通電
對應由高位到低位得
P2_4=1;P2_3=0;P2_2=1;之后再考慮排阻P0可得:由P07到P00,abcdefg dp——0111 ?1101
則有
P0=0x7D; //0111 1101編譯后的效果
?注:這里的LED燈亮可能是由于引腳沖突,看數碼管顯示
3.同理,實現第四位顯示6
?只需將P2_2=0;修改即可
P2_2=0;4.還可以采用C語言當中的編寫子函數的方式來實現——switch語句
?C51子函數:將完成某一種功能的程序代碼單獨抽取出來形成一個模塊,在其它函數中可隨時調用此模塊,以達到代碼的復用和優化程序結構的目的
其形式為:
?代碼部分:
#include <REGX52.H> unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void Nixie(unsigned char Location,Number) {switch(Location){case 1:P2_4=1;P2_3=1;P2_2=1;break;case 2:P2_4=1;P2_3=1;P2_2=0;break;case 3:P2_4=1;P2_3=0;P2_2=1;break;case 4:P2_4=1;P2_3=0;P2_2=0;break;case 5:P2_4=0;P2_3=1;P2_2=1;break;case 6:P2_4=0;P2_3=1;P2_2=0;break;case 7:P2_4=0;P2_3=0;P2_2=1;break;case 8:P2_4=0;P2_3=0;P2_2=0;break;}P0=NixieTable[Number];//P0=0x7D; }void main() {Nixie(7,2);//Nixie(2,3);while(1){}}case部分是進行二進制的增加,在此之前還定義了一段數組表示數碼管段碼表
在主函數中,可以對想要實現對第幾位數碼管進行修改
實現效果:
?第二種方法最大的優點是:使用子函數優化程序結構
總結
以上是生活随笔為你收集整理的51单片机 静态数码管显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息系统工程监理服务标准贯标证书
- 下一篇: vim的介绍及使用