⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 基于W78E51单片机的消防员安全报警接收机系统源程序。
💻 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 + -