0.png (26.77 KB, 下載次數: 28)
下載附件
2019-5-19 02:11 上傳
單片機源程序如下:
- #include "Absacc.h"
- #define C8255_A XBYTE[0x7F00] //8255 端口地址定義
- #define C8255_B XBYTE[0x7F01]
- #define C8255_C XBYTE[0x7F02]
- #define C8255_CON XBYTE[0x7F03]
- unsigned char a[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
- 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
- unsigned char b[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // 顯示緩沖
- unsigned char key_down;
- unsigned char key_value;
- unsigned char key_count;
- void delay(unsigned int time)
- {
- unsigned int i;
- for(i=0; i<time; i++);
- }
- void keyscan() // 按鍵掃描函數
- {
- unsigned char cc;
- C8255_A = 0x00; //X1 ~ X4 置 0
- cc = C8255_C; // 得到 Y1 ~ Y4 的值
- key_down = (~cc) & 0x0f;
- }
- void display() // 顯示函數
- {
- unsigned char i, j = 0xDF;
- for(i=0; i<6; i++)
- {
- C8255_A = 0xFF;
- C8255_B = a[b[i]]; // 查表輸出顯示
- C8255_A = j;
- delay(0x100);
- j = (j>>1)|(j<<7);
- }
- }
- void clear() // 清屏
- {
- C8255_B = 0x00;
- }
- void writebuffer()
- {
- b[key_count] = key_value;
- key_count--;
- if(key_count == -1)
- key_count = 5;
- display();
- clear();
- keyscan();
- while(key_down) // 鍵盤消抖
- {
- display();
- clear();
- keyscan();
- }
- }
- void getkey() // 得到按鍵值
- {
- unsigned char value;
- unsigned char i, j = 0xFE;
- for(i=0; i<4; i++)
- {
- C8255_A = j;
- value = C8255_C;
- if(!(value & 0x01)) // 行 1
- {
- key_value = i + 0;
- writebuffer();
- return;
- }
- if(!(value & 0x02)) // 行 2
- {
- key_value = i + 4;
- writebuffer();
- return;
- }
- if(!(value & 0x04)) // 行 3
- {
- key_value = i + 8;
- writebuffer();
- return;
- }
- if(!(value & 0x08)) // 行 4
- {
- key_value = i + 12;
- writebuffer();
- return;
- }
- j <<= 1;
- }
- }
- void main()
- {
- C8255_CON = 0x81; //8255 初始化
- key_count = 5;
- while(1)
- {
- display(); // 顯示
- clear(); // 清屏
- keyscan(); // 按鍵掃描
- if(key_down) // 判是否有鍵按下
- {
- display();
- delay(0x80);
- clear();
- keyscan();
- if(key_down)
- {
- getkey(); // 得到按鍵值
- }
- }
- }
- }
復制代碼
所有資料51hei提供下載:
課程設計.zip
(293.17 KB, 下載次數: 4)
2019-5-11 20:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
keshetu.doc
(256.5 KB, 下載次數: 3)
2019-5-11 20:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|