分享給大家學習學習數碼管顯示+矩陣鍵盤的使用,怕新手不會接線,在里面加了個仿真proteus,可以方便大家一目明了
功能:計算器可以 加減乘除,4為數碼管顯示數值
本設計絕對可以用,真實可用(希望能幫到大家)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.png (135.89 KB)
下載附件
2021-6-19 18:30 上傳
- # include<STC12C5A60S2.h>//單片機型號頭文件
- # define uchar unsigned char
- # define uint32 unsigned long int
- # define sint32 signed long int
- # define vtime 3000 //定時3ms,一幀8*3=24ms,頻率=40Hz
- //共陰數碼管段碼表
- uchar code distable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X00,0x40,0x31};
- //位選碼表
- uchar code numi[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- //顯示緩存
- uchar V_ram[]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};
- uchar error=0,wi=0,dot1=0,dot2=0,dot=0xff; //位選循環變量
- uint32 num1=0,num2=0,num=0,sum=0;
- void dispsum();
- void delay(uchar);
- uchar scan_key();
- main() //m1:m0 00=標準; 01=推挽; 10=輸入; 11=開漏輸出
- {
- uchar ni,nj,fn='+',key_V=0,dotp=0,j,k,i=0;
- uint32 temp=0;
- //m1:m0 00=標準; 01=推挽; 10=輸入; 11=開漏輸出
- P1M1 = 0X0f;
- P1M0 = 0XF0; //設定低4位為輸入,高4位為輸出
- P0M1 = 0X00;
- P0M0 = 0Xff;
- P2M1 = 0X00;
- P2M0 = 0Xff; //設定P0,P2推挽輸出
- TMOD = 0X01; //設定定時器0為16位計數方式
- TH0 = (65536-vtime )/256;
- TL0 = (65536-vtime )%256; //賦定時器0初值
- ET0 = 1; //開定時器0中斷
- EA = 1; //開總中斷
- TR0 = 1; //啟動定時器0計數
- //sum=123456;
- while(1)
- {
- key_V=scan_key();
- //dispsum();
- if(key_V)
- {
- //有鍵按下
- key_V--;
- switch(key_V)
- {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- if((num+i)==0)
- { //如果是第一個數字輸入,則清黑屏
- dot=0xff; //關閉小數點
- for(j=0;j<8;j++)
- V_ram[j]=0x10; //清黑屏
- }
- num=num*10+key_V; //鍵盤輸入的數字轉化為十進制的數值
- if(i==8) //如果顯示緩沖滿了
- {
- i=7;
- for(j=0;j<7;j++)
- V_ram[j]=V_ram[j+1];//顯示緩存串行移位
- }
- V_ram[i]=key_V; //鍵值放入顯示緩存
- i++;
- break;
- …………限于本文篇幅 余下代碼請下載附件………
復制代碼
51單片機計算器 數碼管顯示.zip
(149.9 KB, 售價: 5 E幣)
2021-6-19 18:41 上傳
點擊文件名下載附件
售價: 5 E幣 [記錄]
[ 購買]
完整51單片機C源碼和proteus仿真文件下載:
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|