南寧比較有好的網(wǎng)站制作公司外貿(mào)seo推廣公司
前言
就是今天看了一下書上的單片機實驗,發(fā)現(xiàn)很多的器件在Proteus中都不知道怎么去查找,然后想做一下這個實驗,嘗試能不能實現(xiàn),LED數(shù)碼管的兩個還可以實現(xiàn),但是用LED點陣顯示器的時候他那個網(wǎng)絡標號不知道是什么情況,有兩個東西,所以我也還沒搞懂,先暫時就是把LED數(shù)碼管的靜態(tài)顯示和動態(tài)顯示來記錄一下。由于之前的Keil版本太老了,然后我就下載了最新版的,不過應該也沒有什么影響吧。實驗完成的就是以下兩個:
1.用靜態(tài)的方法顯示學號的最后兩位。
2.用動態(tài)的方法流水顯示學號的后面六位。
實驗需要用到的元器件符號(在Proteus中)
元件名稱 | Proteus關(guān)鍵字 |
單片機 | AT89C51 |
晶體振蕩器 | CRYSTAL |
藍色的數(shù)碼管 | 7SEG-COM-AN-BLUE |
綠色的數(shù)碼管 | 7SEG-COM-AN-GRN |
電阻 | RES |
七段數(shù)碼管 | 7SEG-MPX8-CA-BLUE |
復位按鈕 | BUTTON |
電容 | CAP |
電解電容 | CAP-ELEC |
NPN三極管 | NPN |
排阻 | RX8 |
LED數(shù)碼管的顯示原理是利用LED的發(fā)光特性,通過控制LED的亮滅來顯示不同的數(shù)字或字符。它由多個LED燈組成,通常為七個LED燈,排列成數(shù)字“8”的形狀。每個LED燈代表一個數(shù)字段,分別為a、b、c、d、e、f、g段,其中a、b、c、d、e、f、g段分別對應數(shù)字“0”到“9”中的不同段。
LED數(shù)碼管的控制方式有兩種,一種是共陽極控制,一種是共陰極控制。共陽極控制是指將所有LED燈的陽極連接在一起,通過控制各個陰極的接通情況來控制LED數(shù)碼管的亮滅;共陰極控制則是將所有LED燈的陰極連接在一起,通過控制各個陽極的接通情況來控制LED數(shù)碼管的亮滅。
比如我采用的是共陽極的數(shù)碼管,想輸出2,他共陽極就是都接著同一個電源了,要想他亮,對應的位置就是0(低電平),1(高電平)就不亮,然后在紙上畫著對應位置,就可以寫出對應的字型碼了(采用16進制)。
常見的字符的碼段
顯示字符 | 共陰極字型碼 | 共陽極字型碼 |
0 | 3FH | C0H |
1 | 06H | F9H |
2 | 5BH | A4H |
3 | 4FH | B0H |
4 | 66H | 99H |
5 | 6DH | 92H |
6 | 7DH | 82H |
7 | 07H | F8H |
8 | 7FH | 80H |
9 | 6FH | 90H |
A | 77H | 88H |
b | 7CH | 83H |
C | 39H | C6H |
d | 5EH | A1H |
E | 79H | 86H |
F | 71H | 8EH |
P | 73H | 8CH |
U | 3EH | C1H |
T | 31H | CEH |
y | 6EH | 91H |
H | 76H | 89H |
L | 38H | C7H |
"滅" | 00H | FFH |
LED數(shù)碼管的靜態(tài)顯示
首先就是要理解他的邏輯,通過Keil生成對應的.hex文件,再導入到Proteus中進行模擬。
Keil部分
新建項目
?自己選擇路徑,起文件名(建議是用英文,但是目前中文也沒有報錯)
?選擇AT89C51
點擊是?
?新建C語言文件
?然后就是輸入代碼
#include"reg51.h" //包含8051單片機寄存器定義的頭文件
void main(void){P0=0xa4;//將數(shù)字“2”的碼段(共陽極)送P0口P1=0x82;//將數(shù)字“6”的碼段(共陽極)送P1口while(1);//無限循環(huán)
}
沒有錯誤就問題不大,但是此時我們還沒有生成.hex文件,需要勾選一下。?
?
?再重新把程序構(gòu)建一下就可以了。(文件在項目的Objects文件夾下面)
到這里Keil部分就可以了,接著就是Proteus部分:
Proteus部分
先要創(chuàng)建一個.DSN文件
添加電路圖需要的元器件
?
?
然后就是添加后連線(直接連線就不用說了),這里說一下網(wǎng)絡標號
輸入標號(標號一致表示連接)
?電源在左邊的工具欄和通過鼠標右鍵都可以找到
導入hex文件(雙擊AT89C51)
左下角選擇開始停止
?運行結(jié)果
拓展?
本來以為買的是一樣的,結(jié)果發(fā)現(xiàn)不太一樣。這個選擇的是AT89C52.需要借助,STC-ISP.
之后就是下載/編程,就燒錄到單片機里面了。
?還是有區(qū)別的,這個程序。這個的有一個消影的布置,就是如果不這樣就會導致輸出的時候兩個會重合,所以需要有清零重新打印的布置。
#include<regx52.h>
//打印的位置
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};
//延時函數(shù)
void delay(unsigned int xms){unsigned char i,j;while(xms--){i=2;j=239;do{while(--j);}while(--i);}
}
//打印的數(shù)字
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];delay(1);#P0=0x00;
}void main(){while(1){Nixie(1,2);Nixie(2,6);}
}
LED數(shù)碼管的動態(tài)顯示
同理可得
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned intuchar code dis_code[]={0xA4,0xC0,0xC0,0xF9,0xA4,0x82};//200126
uchar code wei_code[]={0x01,0x02,0x04,0x08,0x10,0x20};//對應輸出的位置void delay(uint t){uchar i;while(t--)for(i=0;i<200;i++);
}void main(){uchar i;while(1){for(i=0;i<6;i++){P0=dis_code[i];//P0口輸出段碼P2=wei_code[i];//P2口輸入位控碼delay(123);//延時}}
}
?總線可以通過右鍵來找到(左邊也有,還有電源和接地的符號)
?流水燈
?參考鏈接
KeilMDK5軟件寫不了漢字注釋怎么解決?_keil怎么輸入中文_第九荒島的博客-CSDN博客https://blog.csdn.net/qq_46600282/article/details/128550120proteus設計教程-數(shù)碼管使用方法_proteus數(shù)碼管_zd845101500的博客-CSDN博客
https://blog.csdn.net/zd845101500/article/details/126663186proteus常用元件圖示和名稱介紹 - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/518410309?utm_id=0單片機Proteus中的這個16個引腳的元器件是什么?_百度知道 (baidu.com)
https://zhidao.baidu.com/question/2121623824451309267.htmlProteus如何設置網(wǎng)絡標號-百度經(jīng)驗 (baidu.com)
https://jingyan.baidu.com/article/adc8151342d5a7b623bf73f3.html怎樣把HEX文件載入PROTEUS?7仿真軟件單片機里_360問答 (so.com)
https://wenda.so.com/q/1676834827210755proteus電源在哪-百度經(jīng)驗 (baidu.com)
https://jingyan.baidu.com/article/4e5b3e192806d8d0911e2423.html
51單片機入門教程-2020版 程序全程純手打 從零開始入門_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1Mb411e7re/?spm_id_from=333.1007.0.0&vd_source=7c3bfbf39d037fe80c97234396acc524
總結(jié)
還是需要一點耐心的,其實我也不確定能不能運行成功,但是最后結(jié)果和自己理想中的一樣的時候還是有點小激動的,未來繼續(xù)努力。