?? text1.c
字號:
#include <reg54.h>
#include <absacc.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
void long_delay(void);
void short_delay(void);
void delay10ms(unsigned char);
void write7279(unsigned char,unsigned char);
unsigned char read7279(unsigned char);
void send_byte(unsigned char);
unsigned char receive_byte(void);
sbit dat=P1^2; // dat P1.2
sbit key=P1^3; // key P1.3
sbit cs=P1^4;
sbit clk=P1^5; // clk P1.5
#define CMD_RESET 0xa4
#define CMD_TEST 0xbf
#define DECODE0 0x80
#define DECODE1 0xc8
#define CMD_READ 0x15
#define UNDECODE 0x90
#define RTL_CYCLE 0xa3
#define RTR_CYCLE 0xa2
#define RTL_UNCYL 0xa1
#define RTR_UNCYL 0xa0
#define ACTCTL 0x98
#define SEGON 0xe0
#define SEGOFF 0xc0
#define BLINKCTL 0x88
//***主程序 ***
main()
{ unsigned char key_number,j,k;
unsigned int tmr;
unsigned long wait_cnter;
while (1)
{
for (tmr=0;tmr<0x2000;tmr++); //
send_byte(CMD_RESET); // HD7279A
//******************************************
//******************************************
send_byte(CMD_TEST); //
for (j=0;j<3;j++) // 3
{
delay10ms(100);
}
send_byte(CMD_RESET); //
//**********************************************
//**********************************************
wait_cnter=0;
key_number=0xff;
write7279(BLINKCTL,0xfc); // 1 2
write7279(UNDECODE,0X08); // 1 '_'
write7279(UNDECODE+1,0x08);// 2 '_'
do
{
if (!key) //
{
key_number=read7279(CMD_READ);
write7279(DECODE1+1,key_number/16);
// 2 8
write7279(DECODE1,key_number&0x0f);
// 1 8
while (!key); //
wait_cnter=0;
}
wait_cnter++;
}
while (key_number!=0 && wait_cnter<0x30000);
// 0
write7279(BLINKCTL,0xff);
delay10ms(150);
send_byte(CMD_RESET);
write7279(UNDECODE+7,0x49);
delay10ms(80);
for (j=0;j<23;j++)
{
send_byte(RTR_CYCLE); // 23
delay10ms(12);
}
for (j=0;j<23;j++)
{
send_byte(RTL_CYCLE); // 23
delay10ms(12);
}
for (j=0;j<16;j++)
{
send_byte(RTL_UNCYL); //
write7279(DECODE0,j);
// 0 1
delay10ms(50);
}
delay10ms(150);
send_byte(CMD_RESET);
//*********************************************
// 1
//*********************************************
for (j=0;j<16;j++)
{
send_byte(RTR_UNCYL); //
write7279(DECODE1+7,j);
// 0 8
delay10ms(50);
}
delay10ms(150);
//*********************************************
//
//*********************************************
k=0xff;
for (j=0;j<6;j++)
{
k=k/2;
write7279(ACTCTL,k);//
delay10ms(100);
}
write7279(ACTCTL,0xff); // 8
delay10ms(100);
send_byte(CMD_RESET); //
for (j=0;j<64;j++) // 段點亮
{
write7279(SEGON,j); // 64
write7279(SEGOFF,j-1); //
delay10ms(20);
}
}
}
void write7279(unsigned char cmd, unsigned char dta)
{
send_byte (cmd);
send_byte (dta);
}
unsigned char read7279(unsigned char command)
{
send_byte(command);
return(receive_byte());
}
void send_byte( unsigned char out_byte)
{
unsigned char i;
cs=0;
long_delay();
for (i=0;i<8;i++)
{
if (out_byte&0x80)
{
dat=1;
}
else
{
dat=0;
}
clk=1;
short_delay();
clk=0;
short_delay();
out_byte=out_byte*2;
}
dat=0;
}
unsigned char receive_byte(void)
{
unsigned char i, in_byte;
dat=1; //
long_delay();
for (i=0;i<8;i++)
{
clk=1;
short_delay();
in_byte=in_byte*2;
if (dat)
{
in_byte=in_byte|0x01;
}
clk=0;
short_delay();
}
dat=0;
return (in_byte);
}
void long_delay(void)
{
unsigned char i;
for (i=0;i<0x30;i++);
}
void short_delay(void)
{
unsigned char i;
for (i=0;i<8;i++);
}
void delay10ms(unsigned char time)
{
unsigned char i;
unsigned int j;
for (i=0;i<time;i++)
{
for(j=0;j<0x390;j++)
{
if (!key)
{
key_int();
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -