?? 6961.c
字號(hào):
/********************************************************************
*
* 模 塊 名:顯示模塊 型號(hào):PT6961
*
* 創(chuàng) 建 人:yingjiangan 日期:2008-03-04
* 修 改 人: 日期:2000-00-00
* 功能描述:
* 其他說明:
* 版 本:V1.0
**********************************************************************/
/************頭文件************/
#include <intrins.h>
#include <sm5964.h>
#include "my_type.h"
#include "6961.h"
uint8 dsplay_dat[6];
uint8 dsplay_dot[6];
uint8 no_row;
/*********************************************************************
*
* 函 數(shù) 名: Dsplay
* 功能描述: 6961顯示
* 函數(shù)說明:
* 輸 入: p_dsp_dat數(shù)碼管顯示的數(shù)組指針,p_dsp_dot二極管顯示執(zhí)
* 返 回: 無
* 設(shè) 計(jì) 者:ying 日期:2008-03-07
* 修 改 者:ying 日期:2000-00-00
***********************************************************************/
void Dsplay()
{
uint8 dsplay_table[64]=
{0x3F, 0x12, 0x4F, 0x5B, 0x72, 0x79, 0x7D, 0x13,
// 0 1 2 3 4 5 6 7
0x7F, 0x7B, 0x77, 0x7C, 0x4C, 0x5E, 0x6D, 0x65,
// 8 9 A B C D E F
0x76, 0x10, 0x1A, 0x64, 0x2C, 0x55, 0x54, 0x5C,
// H I J K L M N O
0x67, 0x00, 0x44, 0x6C, 0x3E, 0x7A, 0x40, 0x00,
// P W R T U Y -
0xBF, 0x92, 0xCF, 0xDB, 0xF2, 0xF9, 0xFD, 0x93,
// 0. 1. 2. 3. 4. 5. 6. 7.
0xFF, 0xFB, 0xF7, 0xFC, 0xCC, 0xDE, 0xED, 0xE5,
// 8. 9. A. B. C. D. E. F.
0xF6, 0x90, 0x9A, 0xE4, 0xAC, 0xD5, 0xD4, 0xDC,
// H. I. J. K. L. M. N. O.
0xE7, 0x80, 0xC4, 0xEE, 0xBE, 0xFA, 0xC0, 0x80 };
// P. W. R. T. U. Y. -. .
uint8 *p_dsp_dat;
uint8 *p_dsp_dot;
uint8 *p_dsp_table;
p_dsp_dat=dsplay_dat;
p_dsp_dot=dsplay_dot;
p_dsp_table=dsplay_table;
Set_6961();
Write_6961_data(*(p_dsp_table + *(p_dsp_dat+4)));//5
Write_6961_data(*(p_dsp_dot + 4));
Write_6961_data(*(p_dsp_table + *(p_dsp_dat+5)));//6
Write_6961_data(*(p_dsp_dot + 5));
Write_6961_data(*(p_dsp_table + *(p_dsp_dat+2)));//3
Write_6961_data(*(p_dsp_dot + 2));
Write_6961_data(*(p_dsp_table + *(p_dsp_dat+3)));//4
Write_6961_data(*(p_dsp_dot + 3));
Write_6961_data(*(p_dsp_table + *(p_dsp_dat+0)));//1
Write_6961_data(*(p_dsp_dot + 0));
Write_6961_data(*(p_dsp_table + *(p_dsp_dat+1)));//2
Write_6961_data(*(p_dsp_dot + 1));
}
/*********************************************************************
*
* 函 數(shù) 名: Set_6961
* 功能描述: 6961初始化
* 函數(shù)說明:
* 輸 入: 無
* 返 回: 無
* 設(shè) 計(jì) 者:ying 日期:2008-03-05
* 修 改 者:ying 日期:2000-00-00
***********************************************************************/
void Set_6961(void)
{
Write_6961_cmd(0x02);//顯示模式6位12段
Write_6961_cmd(0x40);//設(shè)置數(shù)據(jù)讀寫 00寫、10讀鍵掃
Write_6961_cmd(0xc0);//地址設(shè)定
Write_6961_cmd(0x89);//消光度設(shè)置
}
/*********************************************************************
*
* 函 數(shù) 名: Read_key_6961
* 功能描述: 讀出6961鍵掃值
* 函數(shù)說明: 功能層
* 輸 入: 無
* 返 回: 鍵值
* 設(shè) 計(jì) 者:ying 日期:2008-03-19
* 修 改 者:ying 日期:2000-00-00
***********************************************************************/
uint8 Read_key_6961()
{
uint8 i,r_data;
Write_6961_cmd(0x42);
for(i=0;i<=3;i++)
{
r_data=Read_6961();
r_data&=0x3f;
if (r_data)
{
no_row=i;
break;
}
else
{
no_row=0x00;
r_data=0x00;
}
}
return(r_data);
}
/*********************************************************************
*
* 函 數(shù) 名: key_value
* 功能描述: 讀出6961鍵值
* 函數(shù)說明: 功能層
* 輸 入: 無
* 返 回: 鍵值
* 設(shè) 計(jì) 者:ying 日期:2008-03-20
* 修 改 者:ying 日期:2000-00-00
***********************************************************************/
uint8 Key_value()
{
uint8 idata key_table[30]=
{ 0x07,0x04,0x01,0x0b,0x05,0x02,
0x08,0x06,0x03,0x0a,0x09,0x0d,
0x0c,0x0e,0x12,0x11,0x0f,0x13,
0x15,0x14,0x16,0x19,0x18,0x17 };
uint8 temp,add,i,j,*p4;
bit low;
p4=key_table;
temp=Read_key_6961();
add=no_row;
if(temp)
{
for(i=0;i<=6;i++)
{
low=temp&0x01;
if (low)
{
j=i;
break;
}
temp>>=1;
}
temp=6*add+j;
temp=*(p4+temp);
}
else
{
temp=0x00;
}
return(temp);
}
/*********************************************************************
*
* 函 數(shù) 名: Write_6961_cmd
* 功能描述: 寫入6961一個(gè)字節(jié)命令
* 函數(shù)說明: 物理層 6961將SCL下降沿后的第一個(gè)字節(jié)做為命令
* 輸 入: 要寫入的命令
* 返 回: 無
* 設(shè) 計(jì) 者:ying 日期:2008-03-05
* 修 改 者:ying 日期:2000-00-00
***********************************************************************/
void Write_6961_cmd(uint8 cmd)
{
PT6961_RESET;
Write_6961_data(cmd);
}
/*********************************************************************
*
* 函 數(shù) 名: Write_6961_data
* 功能描述: 寫入6961一個(gè)字節(jié)數(shù)據(jù)
* 函數(shù)說明: 物理層
* 輸 入: 要寫入的數(shù)據(jù)
* 返 回: 無
* 設(shè) 計(jì) 者:ying 日期:2008-03-04
* 修 改 者:ying 日期:2000-00-00
***********************************************************************/
void Write_6961_data(uint8 temp)
{
uint8 i;
for(i=0;i<8;i++)
{
DIO=temp&LSB;
CLK=0;
temp>>=1;
CLK=1;
}
}
/*********************************************************************
*
* 函 數(shù) 名: Read_6961
* 功能描述: 讀6961數(shù)據(jù)
* 函數(shù)說明: 物理層
* 輸 入: 要讀出的地址
* 返 回: 無
* 設(shè) 計(jì) 者:ying 日期:2008-03-04
* 修 改 者:ying 日期:2000-00-00
***********************************************************************/
uint8 Read_6961()
{
uint8 i,temp=0x00;
DIO=1;
for (i=0;i<7;i++) //循環(huán)7次 讀取數(shù)據(jù)
{
CLK=0;
if(DIO)
{
temp|=0x80; //每次傳輸?shù)妥止?jié)
}
CLK=1;
temp>>=1; //右移一位
}
CLK=0;
CLK=1;
return (temp);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -