|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
原理圖.png (49.28 KB, 下載次數(shù): 108)
下載附件
2020-11-24 08:20 上傳
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//數(shù)碼管段碼端口
#define PP P1
//共陽極數(shù)碼管段碼
uchar code SEG7[]={/*0,1,2,3,4,5,6,7,8,9,*/
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
//數(shù)碼管顯示緩沖
uchar num[2];
//數(shù)碼管位碼端口
sbit q1=P3^0;
sbit q2=P3^1;
//延時函數(shù)ms
void _delay_ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
//數(shù)碼管顯示
void dis()
{
//顯示第1位
PP=num[0];
q1=1;
_delay_ms(2);
q1=0;
//顯示第2位
PP=num[1];
q2=1;
_delay_ms(2);
q2=0;
}
uchar keyn1=16;//按鍵值
uchar keyn=16;//緩沖
#define PK P2
void key_z()
{
PK=0X0F;
if(!(PK==0X0F))
{
if(!(PK==0X0F))
{
keyn1=0;
keyn=0;
PK=0X0F; //掃描行
if(PK==0X0E) keyn1=0;
if(PK==0X0D) keyn1=1;
if(PK==0X0B) keyn1=2;
if(PK==0X07) keyn1=3;
PK=0XF0; //掃描列
if(PK==0XE0) keyn=0+keyn1;
if(PK==0XD0) keyn=4+keyn1;
if(PK==0XB0) keyn=8+keyn1;
if(PK==0X70) keyn=12+keyn1;
//獲取按鍵值
switch(keyn)
{
case 0: keyn1=1; break;
case 4: keyn1=2; break;
case 8: keyn1=3; break;
case 12:keyn1=10; break;
case 1: keyn1=4; break;
case 5: keyn1=5; break;
case 9: keyn1=6; break;
case 13:keyn1=11; break;
case 2: keyn1=7; break;
case 6: keyn1=8; break;
case 10:keyn1=9;break;
case 14:keyn1=12;break;
case 3: keyn1=14;break;//*
case 7: keyn1=0;break;
case 11:keyn1=15;break;//#
case 15:keyn1=13;break;
}
}
else keyn1=16;
PK=0X0F;while((!(PK==0X0F)));
}
}
uint shuju1;//計算數(shù)據(jù)1
uint shuju2;//計算數(shù)據(jù)2
uint res; //計算
uint bz; //運行標志
uint bzbu;//運行步驟
//顯示控制
void dispaly()
{
if(bzbu==0) //數(shù)據(jù)1
{
num[0]=0xff;
num[1]=SEG7[shuju1%10];
}
if(bzbu==1)//符號
{
num[0]=0xff;
if(bz==0)num[1]=0xb9;
if(bz==1)num[1]=0xbf;
if(bz==2)num[1]=0x89;
if(bz==3)num[1]=0xcf;
}
if(bzbu==2)//數(shù)據(jù)2
{
num[0]=0xff;
num[1]=SEG7[shuju2%10];
}
if(bzbu==3) //結(jié)果
{
num[0]=SEG7[res%100/10];
num[1]=SEG7[res%10];
}
}
51hei.png (8.7 KB, 下載次數(shù): 94)
下載附件
2020-11-24 17:04 上傳
全部資料51hei下載地址:
簡易矩陣計算器.rar
(60.1 KB, 下載次數(shù): 40)
2020-11-24 08:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|