不知道怎樣控制位號
#include "reg51.H"
#include "intrins.h"
sbit pOR_Disp_Clk=P1^0;
sbit pOR_Disp_Da=P1^1;
sbit pOR_Disp_Stb=P1^2;
unsigned char b_DispBuf[14];
unsigned char code letter_tab[]=
{
0x3f,
0x06,
0x5b,
0x4f,
0x66,
0x6d,
0x7d,
0x07,
0x7f,
0x6f,
0x77,
0x7c,
0x39,
0x5e,
0x79,
0x71,
0x40,
0x00,
0x76,
0x38,
0x73,
0x58,
0x00
};
void s_Send_Start(void) //stb下降沿
{
pOR_Disp_Stb=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
pOR_Disp_Stb=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void s_Send_Data(unsigned char para_dispsend)//寫數據
{
unsigned char i;
for(i=0;i<8;i++)
{
if((para_dispsend&0x01)==0x01)
{
pOR_Disp_Da=1;
}
else
{
pOR_Disp_Da=0;
}
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
pOR_Disp_Clk=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
pOR_Disp_Clk=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
para_dispsend >>= 1;
}
}
void s_Drive_2618(void)
{
unsigned char i;
unsigned char p_disp_com_buff;
s_Send_Start();
s_Send_Data(0x00);//顯示模式四位八段
s_Send_Start();
s_Send_Data(0x40);//0100 0000寫數據到顯示寄存器,固定位置
s_Send_Start();
s_Send_Data(0xc0);//1100 0000設置顯示寄存器地址00H
p_disp_com_buff=0;
for(i=0;i<8;i++)
{
s_Send_Data(b_DispBuf[i]);
}
s_Send_Start();
s_Send_Data(0x8f);//顯示開
pOR_Disp_Stb=1;
}
void main()
{
s_Drive_2618();
while(1)
{
}
}
|