在單片機(jī)的控制作用下,實(shí)現(xiàn)一位數(shù)碼管簡易計(jì)數(shù),范圍為0-9,設(shè)置兩個(gè)按鈕,一個(gè)為數(shù)值加一,另一個(gè)則為減一。 二、實(shí)驗(yàn)過程 (一)實(shí)驗(yàn)項(xiàng)目的方案分析 1.設(shè)計(jì)原理 STC12C5A60S2單片機(jī)內(nèi)部包括微處理器、存儲(chǔ)器(存放程序指令或數(shù)據(jù)的ROM、RAM等)、輸入/輸出口(I/O口)及其他功能部件如定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)等。它們通過地址總線、數(shù)據(jù)總線和控制總線連接起來。 本實(shí)驗(yàn)充分利用了8051芯片的I/O引腳。系統(tǒng)已采用STC12C5A60S2系列單片機(jī)為中心器件來設(shè)計(jì)數(shù)碼管計(jì)數(shù)系統(tǒng)。 2.器件配置清單 表1器件配置表
(二)實(shí)驗(yàn)項(xiàng)目的硬件電路設(shè)計(jì) 通過Proteus仿真電路軟件搭建電路,電路圖如圖所示。
圖1硬件1設(shè)計(jì)圖 (三)實(shí)驗(yàn)項(xiàng)目的程序設(shè)計(jì) 1、C51程序編寫
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit key=P0^0;
- sbit key1=P0^1;
- uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void delay_lms(uint i){
- uchar t;
- while(i--)
- for(t=0;t<=150;t++);
- }
- void main(){
- uchar i=0;
- key=1;
- P1=0xc0;
- while(1){
- if(key==0){
- delay_lms(20);
- if(key==0){
- if(i<9){i++;}
- else{i=0;}
-
- P1=tab[i];
- if(i==10)i=0;
- }
- while(key==0);
- }
- if(key1==0){
- delay_lms(20);
- if(key1==0){
- if(i>0){i--;}
- else{i=10;}
- P1=tab[i];
- if(i==0)i=10;
- }
- while(key1==0);
- }
- }
- }
復(fù)制代碼
2、keil軟件調(diào)試截圖 通過Keil軟件進(jìn)行C51控制程序的編寫,通過不斷調(diào)試修改,最終的調(diào)試好的Keil 程序截圖如圖2所示。
圖2調(diào)試無錯(cuò)的Keil程序
(四)實(shí)驗(yàn)項(xiàng)目的實(shí)際驗(yàn)證電路及驗(yàn)證結(jié)果 將單片機(jī)C51程序編譯無誤后,生成HEX文件,通過STC-ISP下載到單片機(jī)中,搭建的實(shí)際電路如圖3所示。 
圖3面包板搭建的實(shí)際電路 
(五)總結(jié) 相較于花樣燈,數(shù)碼管的難度有些提升。首先就需要注意的是數(shù)碼管的共陰和共陽。其次則是編程上的一些改動(dòng),但經(jīng)過整個(gè)寢室的努力,都慢慢的將各個(gè)難題給解決了,相信將來也能更好的解決各種問題的。
全部資料51hei原創(chuàng)作者的下載地址: http://www.raoushi.com/bbs/dpj-161135-1.html 我只是搬運(yùn)大神的
|