標題: 自己寫的51單片機的計算器程序 [打印本頁]
作者: 紫色的天空 時間: 2017-12-23 12:52
標題: 自己寫的51單片機的計算器程序
#include<reg52.h>
#define ucharunsigned char
#define uintunsigned int
#define weixuan P1
#define duan P0
int qian,bai,shi,ge;
intnum1,num2,num,keyvalue,keyvalue1;
uchar codetable[11]={0x14,0xd7,0x4c,0x45,0x87,0x25,0x24,0x57,0x04,0x05,0xff};//定義數碼管的數值0-9,0xff為滅。
uchar wei[4]={0,0,0,0};定義位。
//uchardisbuffer[4]={0,11,11,11};
void delayms(uintxms)//延時函數
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
temp=0x01; 顯示函數
void display()
{
qian=num/1000;
bai=num%1000/100;
shi=num%100/10;
ge=num%10;
weixuan = ~wei[1] ;
duan=table[ge];
delayms(1);
duan=0xff;
weixuan = ~wei[2] ;
duan=table[shi];
delayms(1);
duan=0xff;
weixuan = ~wei[3];
duan=table[bai];
delayms(1);
duan=0xff;
weixuan = ~wei[4] ;
duan=table[qian];
delayms(1);
duan=0xff;
delayms(1);
}
void init() // 初始化函數
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
}
unsigned char keyscan() //按鍵掃描函數
{
unsigned char keytemp,keyvalue;
keyvalue1 = 0;
P3=0x0f;
keytemp=P3;
if(keytemp!=0x0f)
delayms(5);
else
return 0xff;
P3=0x0f;
keytemp=P3;
if(keytemp!=0x0f)
{
switch(keytemp)
{
case 0x0e:keyvalue=0;
break;
case 0x0d:keyvalue=1;
break;
case 0x0b:keyvalue=2;
break;
case 0x07:keyvalue=3;
break;
}
P3=0xf0;
keytemp=P3;
switch(keytemp)
{
case0xe0:keyvalue1=keyvalue+0;
break;
case0xd0:keyvalue1=keyvalue+4;
break;
case0xb0:keyvalue1=keyvalue+8;
break;
case0x70:keyvalue1=keyvalue+12;
break;
}
if(keyvalue1<10) //按鍵位移 并且給按鍵賦值
{
wei[4]=wei[3]<<1;
wei[3]=wei[2]<<1;
wei[2]=wei[1]<<1;
wei[1]=wei[0];
num=num*10+keyvalue1;
}
while(P3 != 0xf0);
}
return keyvalue1;
}
void yunsuan() //運算并且分辨按鍵的值
{
static uchar fh;//
if(fh==0)
{
num1=num;
}
else
{
num2=num;
}
if(keyvalue1==11)
{
switch(fh)
{
case 1:num=num1+num2;
break;
case 2:num=num1-num2;
break;
case 3:num=num1*num2;
break;
case 4:num=num1/num2;
break;
}
wei[4]=8,wei[1]=1,wei[2]=2,wei[3]=4;
}
if(keyvalue1>11)
{
switch(keyvalue1)
{
case 12:fh=1;break;
case 13:fh=2;break;
case 14:fh=3;break;
case 15:fh=4;break;
}
num=0;
wei[4]=0,wei[1]=0,wei[2]=0,wei[3]=0;
}
if (keyvalue1==10)
{
num=0,num1=0,num2=0,wei[4]=0,wei[1]=0,wei[2]=0,wei[3]=0;fh=0;
}
keyvalue1 = 0;
}
main() //主函數
{
init();
while(1)
{
keyscan();
yunsuan();
display();
}
}
作者: 荒蕪. 時間: 2020-7-10 11:25
能不能批注下每個代碼的意思呢,我有些不太懂
作者: HSCCSH 時間: 2020-7-25 08:06
最好配上仿真原理圖和注釋就好了,作為新手的我是一頭霧水。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
九九九久久国产免费
|
伊人无码高清
|
日韩欧美在线免费观看视频
|
www.久久久.com
|
国产精品一区二
|
亚洲国产精品suv
|
高清一区二区三区
|
日韩精品一区二区三区在线观看
|
午夜在线免费观看视频
|
日本视频一区二区三区
|
中文字幕精品一区二区三区精品
|
在线免费av观看
|
日本在线精品视频
|
91高清免费
|
成人午夜视频在线观看
|
日本涩涩视频
|
在线三级网址
|
国产精品一区一区
|
国产日韩欧美精品
|
国产日韩一区二区三免费
|
成人在线一区二区
|
精品一区电影
|
日韩视频精品在线
|
国产综合网站
|
日韩免费网站
|
99热视|
久久久久久亚洲精品
|
国精产品一品二品国精在线观看
|
久久久精品视频免费
|
九九在线精品视频
|
免费一级毛片
|
日韩av一区二区在线
|
av中文在线
|
久久精品免费一区二区
|
一区二区免费在线
|
丝袜 亚洲 欧美 日韩 综合
|
亚洲精品2区
|
国产日韩久久
|
一级中国毛片
|
日韩美女一区二区三区在线观看
|
黄色大片在线视频
|