国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
基于51單片機 數(shù)碼管和按鍵 計算器C源程序和proteus仿真
[打印本頁]
作者:
eng
時間:
2021-6-19 18:43
標題:
基于51單片機 數(shù)碼管和按鍵 計算器C源程序和proteus仿真
分享給大家學習學習數(shù)碼管顯示+矩陣鍵盤的使用,怕新手不會接線,在里面加了個仿真proteus,可以方便大家一目明了
功能:計算器可以 加減乘除,4為數(shù)碼管顯示數(shù)值
本設計絕對可以用,真實可用(希望能幫到大家)
仿真原理圖如下(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
//共陰數(shù)碼管段碼表
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; //位選循環(huán)變量
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位計數(shù)方式
TH0 = (65536-vtime )/256;
TL0 = (65536-vtime )%256; //賦定時器0初值
ET0 = 1; //開定時器0中斷
EA = 1; //開總中斷
TR0 = 1; //啟動定時器0計數(shù)
//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)
{ //如果是第一個數(shù)字輸入,則清黑屏
dot=0xff; //關閉小數(shù)點
for(j=0;j<8;j++)
V_ram[j]=0x10; //清黑屏
}
num=num*10+key_V; //鍵盤輸入的數(shù)字轉化為十進制的數(shù)值
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單片機計算器 數(shù)碼管顯示.zip
(149.9 KB, 售價: 5 E幣)
2021-6-19 18:41 上傳
點擊文件名下載附件
售價: 5 E幣
[記錄]
[
購買
]
完整51單片機C源碼和proteus仿真文件下載:
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0