?? ch4521.c
字號(hào):
#include <pic.h>
/********************************************************************************************
CH452驅(qū)動(dòng)程序
與單片機(jī)接口方式:4線
********************************************************************************************/
typedef unsigned int uint;
typedef unsigned char uchar;
unsigned int Led_seg[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,
0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x02,0x01}; //*0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,-,.的字符碼*/
unsigned int Bitmap[]={0xc00,0xd00,0xe00,0xf00,0x800,0x900,0xa00,0xb00}; //顯示用位碼列表
//管腳定義
#define CH452_DCLK RD0 // 串行數(shù)據(jù)時(shí)鐘上升沿激活
#define CH452_DIN RD1 // 串行數(shù)據(jù)輸出,接CH452的數(shù)據(jù)輸入
#define CH452_LOAD RD2 // 串行命令加載,上升沿激活
#define CH452_DOUT RB0 // INT0,鍵盤中斷和鍵值數(shù)據(jù)輸入,接CH452的數(shù)據(jù)輸出
// 4線接口的位操作,與單片機(jī)有關(guān)
#define CH452_DCLK_SET (CH452_DCLK=1)
#define CH452_DCLK_CLR (CH452_DCLK=0)
#define CH452_DIN_SET (CH452_DIN=1)
#define CH452_DIN_CLR (CH452_DIN=0)
#define CH452_LOAD_SET (CH452_LOAD=1)
#define CH452_LOAD_CLR (CH452_LOAD=0)
// 與單片機(jī)有關(guān),與中斷連接方式有關(guān)
#define DISABLE_INTERRUPT (INTE=0)
#define ENABLE_INTERRUPT (INTE=1)
#define CLEAR_INTER_FLAG (INTF=0)
//命令碼
#define CH452_NOP 0x0000 // 空操作
#define CH452_RESET 0x0201 // 復(fù)位
#define CH452_LEVEL 0x0100 // 加載光柱值
#define CH452_CLR_BIT 0x0180 // 段位清0
#define CH452_SET_BIT 0x01C0 // 段位置1
#define CH452_SLEEP 0x0202 // 進(jìn)入睡眠狀態(tài)
#define CH452_LEFTMOV 0x0300 //設(shè)置移動(dòng)方式-左移
#define CH452_LEFTCYC 0x0301 //設(shè)置移動(dòng)方式-左循
#define CH452_RIGHTMOV 0x0302 //設(shè)置移動(dòng)方式-右移
#define CH452_RIGHTCYC 0x0303 //設(shè)置移動(dòng)方式-右循
#define CH452_SELF_BCD 0x0380 //自定義BCD碼
#define CH452_SYSOFF 0x0400 //關(guān)顯示、鍵盤(設(shè)置系統(tǒng)參數(shù))
#define CH452_SYSON1 0x0401 //開(kāi)顯示 (設(shè)置系統(tǒng)參數(shù))
#define CH452_SYSON2 0x0403 //開(kāi)顯示、鍵盤 (設(shè)置系統(tǒng)參數(shù))
#define CH452_SYSON2W 0x0423 //開(kāi)顯示、鍵盤, 真正2線接口 (設(shè)置系統(tǒng)參數(shù))
#define CH452_DSP 0x0500 //設(shè)置默認(rèn)顯示方式 (設(shè)置顯示參數(shù))
#define CH452_BCD 0x0580 //設(shè)置BCD譯碼方式
#define CH452_TWINKLE 0x0600 //設(shè)置閃爍控制
#define CH452_GET_KEY 0x0700 // 獲取按鍵
void InitCh452();
void WrietCh452(uint da);
void DelayUs();
void Bit_Display_Num(uint bite,uint buf);
void Display_Reset();
void Flash_SingleBit(uint bitnumber);
uint ReadCh452();
void Flash_AllBit();
void display(uint keyda);
void initial();
//系統(tǒng)初始化函數(shù)*/
void initial()
{
INTCON=0x00;
ADCON1=0x07;
PIE1=0;
PIE2=0;
}
/********************************************************************************************
初始化
********************************************************************************************/
void InitCh452()
{
WrietCh452(CH452_SYSON1); //打開(kāi)顯示
WrietCh452(CH452_DSP); //設(shè)置默認(rèn)方式
//Display_Reset();
}
/********************************************************************************************
向CH452發(fā)送指令和數(shù)據(jù)
da;指令和數(shù)據(jù)
********************************************************************************************/
void WrietCh452(uint da)
{
uint iq0;
//DISABLE_INTERRUPT; //關(guān)閉鍵盤中斷
CH452_LOAD_CLR; //復(fù)位LOAD信號(hào)
for(iq0=0;iq0<24;iq0++)
{
if((da&0x0001)==1)
CH452_DIN_SET;
else
CH452_DIN_CLR;
CH452_DCLK_CLR;
da >>=1;
CH452_DCLK_SET; //CH452上升沿讀取數(shù)據(jù)
}
CH452_LOAD_SET; //加載數(shù)據(jù),LOAD上升沿
DelayUs();
//ENABLE_INTERRUPT; //打開(kāi)鍵盤中斷
}
/*--------------------------------------------------------------------------------------------
單個(gè)位上顯示數(shù)據(jù)
---------------------------------------------------------------------------------------------*/
void Bit_Display_Num(uint bite,uint buf)
{
WrietCh452(Bitmap[bite]+Led_seg[buf]);
}
/****************************************************************
顯示復(fù)位
****************************************************************/
void Display_Reset()
{
WrietCh452(0x201);
}
/*--------------------------------------------------------------------------------------------
單個(gè)位的閃爍操作
---------------------------------------------------------------------------------------------*/
void Flash_SingleBit(uint bitnumber)
{
WrietCh452(CH452_TWINKLE+(0x01<<bitnumber));
}
/*--------------------------------------------------------------------------------------------
全閃操作
---------------------------------------------------------------------------------------------*/
void Flash_AllBit()
{
WrietCh452(CH452_TWINKLE+0xff);
}
/***************************************************************************************
延時(shí)
***************************************************************************************/
void DelayUs()
{
asm("nop");
asm("nop");
asm("nop");
}
void main()
{
uint i;
TRISD=0x00;
//CLEAR_INTER_FLAG;
initial();
InitCh452();
//GIE=1;
for(i=0;i<16;i++)
{
Bit_Display_Num(i,i);
}
Flash_AllBit();
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -