• slider image 442
  • slider image 492
  • slider image 493
  • slider image 494
  • slider image 495
  • slider image 496
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






18F4520 如何使用3*3鍵盤
#1
新會員
新會員


查看用戶資訊
並接 RA0 (出發往下)
R38 20K 接低
R39 10K 接 K1 K4 K7
R40 20K 接 K2 K5 K8
R41 30K 接 K3 K6 K9

並接 VCC (出發往下)
R43 10K 接 K1 K2 K3
R44 4.7K 接 K4 K5 K6
R45 2.2K 接 K7 K8 K9
AD01   
#include    <p18f4520.h>

void ADInit(void){
    
ADCON0 0b00000011;
    
ADCON1 0b00001110;
    
ADCON2 0b00100010;
}

unsigned char ADProc(void){
unsigned char TEMP=1;
    if (
ADRESH 1*32){ TEMP 1;}
    if (
ADRESH 2*32){ TEMP 2;}
    if (
ADRESH 3*32){ TEMP 3;}
    if (
ADRESH 4*32){ TEMP 4;}
    if (
ADRESH 5*32){ TEMP 5;}
    if (
ADRESH 6*32){ TEMP 6;}
    if (
ADRESH 7*32){ TEMP 7;}
    if (
ADRESH 250){ TEMP 8;}
ADCON0bits.GO=1;
    return 
TEMP;
}

LCD 及主程式
#include    <p18f4520.h>
#include    <delays.h>

unsigned char ADProc (void);
void ADInit(void);

#define        LCD_E    LATAbits.LATA2
#define        LCD_RS    LATDbits.LATD4
#define        LCD_RW    LATDbits.LATD5
#define        LCD_DATA    LATD
void LCDCMDunsigned char CMD);
void LCDCHAR unsigned char DATA);

void LCDCMDunsigned char CMD){
unsigned char TEMP;
    
TEMP CMD;
    
LCD_DATA = ( LCD_DATA 0b11110000 ) | ( TEMP >> 4);
        
LCD_RS 0;
        
LCD_RW 0;
            
Nop();Nop();
        
LCD_E 1;
            
Nop();Nop();
        
LCD_E 0;
        
//----------------
    
LCD_DATA = (LCD_DATA 0b11110000) | ( TEMP 0b00001111 ) ;
        
LCD_RS 0;
        
LCD_RW 0;
            
Nop();Nop();
        
LCD_E 1;
            
Nop();Nop();
        
LCD_E 0;
    
Delay10TCYx(16/*4);
}

void LCDCHAR unsigned char DATA){
unsigned char TEMP;
    
TEMP DATA;
    
LCD_DATA = ( LCD_DATA 0b11110000 ) | ( TEMP >> 4);
        
LCD_RS 1;
        
LCD_RW 0;
            
Nop();Nop();
        
LCD_E 1;
            
Nop();Nop();
        
LCD_E 0;
        
//----------------
    
LCD_DATA = (LCD_DATA 0b11110000) | ( TEMP 0b00001111 ) ;
        
LCD_RS 1;
        
LCD_RW 0;
            
Nop();Nop();
        
LCD_E 1;
            
Nop();Nop();
        
LCD_E 0;
    
Delay10TCYx(16/*4);
}
void Init(void){
        
TRISD  0b00000000;
        
ADCON1 0b00001111;
        
TRISA  0b11111011;
        
LCD_RS 0;
        
LCD_RW 0;
        
LCD_E  0;
}
void LCDCLEAR(void){
    
LCDCMD(0b00000001);
    
Delay10KTCYx(16/5);
}
void main (void){
    
unsigned char VAL;
        
Init();
    
Delay10KTCYx(16/*50);    //0.5Sec
        
LCDCMD(0b00101000);
        
LCDCMD(0b00101000);    //Function Set
        
LCDCMD(0b00001110);    //Display On/Off
        
LCDCMD(0b00000110);    //Entry Mode
        
LCDCMD(0b00010100);    //Cursor

    
LCDCLEAR();        //Clear
    
ADInit();

while(
1){
    
Delay10KTCYx(16/4*10);
    
VAL ADProc();
    
LCDCMD(0b10000000);
    switch (
VAL){
        case 
1:
            
LCDCHAR(0xFF);
            
LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');
            
LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');
            break;
        case 
2:
            
LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');
            
LCDCHAR(' ');LCDCHAR(' ');
            break;
        case 
3:
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');
            
LCDCHAR(' ');
            break;
        case 
4:
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');
            break;
        case 
5:
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(0xFF);
            
LCDCHAR(' ');LCDCHAR(' ');LCDCHAR(' ');
            break;
        case 
6:
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(' ');LCDCHAR(' ');
            break;
        case 
7:
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(' ');
            break;
        case 
8:
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            
LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);LCDCHAR(0xFF);
            break;
    }
}
}

為何我的 LCD 從開始3*3鍵盤的接法,不能一個一個的亮,
按鍵1 2格
按鍵2,5,6,7,8 3格
按鍵3, 4格

我希望按鍵1是一格,按鍵7是七格,8是八格,9是歸零

附檔是APP001的線路圖

發表於: 2009/10/29 0:42

Edited by Ryang on 2009年10月29日 11:54:29
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------