|
制作出來的實物圖如下:
01.png (794.64 KB, 下載次數: 73)
下載附件
實物圖
2018-12-26 21:33 上傳
電路原理圖如下:
捕獲01.PNG (78.81 KB, 下載次數: 72)
下載附件
仿真圖
2018-12-26 21:33 上傳
剛好老師要求做一個簡單的計算器,就順便發到這里來了。 首先是部分代碼:
- #include<reg51.h>#define uint unsigned int
- #define uchar unsigned char
- // 0 1 2 3 4 5 6 7 8 9 c = + - * /
- uint tab[17] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e,0xff};
- uchar i;//這個放按鍵值
- uchar j;//這個在等號按出前暫時放加減乘除的運算
- uchar memory_N=0,memory_O=0;//這個用來放置輸入的數字 memory_0 是第一個數字,memory_N 是第二個數
- uchar nextNeedClearly = 0;//這個用來判斷下一個輸入的數字顯示在屏幕前要不要清楚舊的顯示內容
- uchar sh[4];//顯示字符存放
- uint choose[4]={0x01,0x02,0x04,0x08};//數碼管選中
- uchar useToShow = 0;//等于0選中最左邊數碼管,往右類推
- void delay(uchar i){
- uchar j,k;
- for (j = 0; j < i; j++){
- for (k = 0; k < 128; k++){
- }
- }
- }
- void pushFun(uchar i){//挪位函數,負責在數據輸入時顯示在屏幕上向左移
- if ((sh[2] == tab[16])&&(sh[3] == tab[0])){
- sh[3] = tab[i];
- }else{
- sh[0] = sh[1];
- sh[1] = sh[2];
- sh[2] = sh[3];
- sh[3] = tab[i];
- }
- }
- void pushNem(uint i){//這個函數實現將數字i變換為要顯示的4位
- uchar a,b,c,d;
- a = i / 1000;
- b = (i / 100)%10;
- c = (i / 10)%10;
- d = i%10;
- sh[0] = tab[a];
- sh[1] = tab[b];
- sh[2] = tab[c];
- sh[3] = tab[d];
- if (a == 0){
- sh[0] = tab[16];
- if (b == 0){
- sh[1] = tab[16];
- if (c == 0){
- sh[2] = tab[16];
- }
- }
- }
- }
- void clearly(){
- sh[0] = tab[16];//初始化屏幕顯示"0"
- sh[1] = tab[16];
- sh[2] = tab[16];
- sh[3] = tab[0];
- }
- void main(){
- uint row,column,temp;
- EA = 1;
- ET1 = 1;
- TMOD = 0X10;
- TH1 = 0xf6;
- TL1 = 0x3c;
- TR1 = 1;//open T1
- clearly();
- while(1){
- P1=0x0f;
- if(P1!=0x0f){
- delay(10);
- if(P1!=0x0f){
- row=P1;
- P1=0xff;
- P1=0xf0;
- column = P1;
- temp = (row)|(column);
- if(temp == 0xee)i=7;
- if(temp == 0xde)i=8;
- if(temp == 0xbe)i=9;
- if(temp == 0x7e)i=15; // /
- if(temp == 0xed)i=4;
- if(temp == 0xdd)i=5;
- if(temp == 0xbd)i=6;
- if(temp == 0x7d)i=14; // *
- if(temp == 0xeb)i=1;
- if(temp == 0xdb)i=2;
- if(temp == 0xbb)i=3;
- if(temp == 0x7b)i=13; // -
- if(temp == 0xe7)i=10; // c
- if(temp == 0xd7)i=0;
- if(temp == 0xb7)i=11; // =
- if(temp == 0x77)i=12; // +
- while(P1!=0xf0);
復制代碼 用到的開發板圖及元件圖貼出來和仿真圖,以及文檔和仿真文件和c文件都在附件里面了!
|
-
-
制作一個簡單的計算器.rar
2018-12-26 21:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.63 MB, 下載次數: 34, 下載積分: 黑幣 -5
評分
-
查看全部評分
|