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

📄 hd7279a.c

📁 // This is a demo program for 7279a // It is test for 500R circuit // This is a demo for HD7279A
💻 C
字号:
// This is a demo program for 7279a
// It is test for HY500R circuit
// This is a demo for HD7279A
// Last change :27,Jan,06
//**************************************** 
#include <reg51.h>
#include "hd7279a.h"

// 数据类型定义
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long


//变量及IO口定义
uchar digit[5];
uchar key_number, j, k;
uint delay;
ulong wait_cnter;
sbit cs_7279=P1^4; 
sbit clk=P1^7; 
sbit dat=P1^6; 
sbit key=P2^7; 
sbit SPEAKER    =   P1^3; 


/***************主函数***********************/
main()
{
	delay10ms(5);	// 上电延时

	while (1)
	{
	SPEAKER=0;
	for (delay=0;delay<0x2000;delay++); // 加电延时
		send_byte(RESET_7279); // 复位7279A
		delay10ms(2);
	//******************************************
	// test demo
	//******************************************
	send_byte(TEST_7279); // 测试指令,全亮并闪烁
	for (j=0;j<3;j++) // 延时约3秒
	{
		delay10ms(100);
	}
	send_byte(RESET_7279); // 复位,清除显示
	
	
	write7279(DECODE1+0,0x00);
write7279(DECODE1+1,0x01);
write7279(DECODE1+2,0x02);
write7279(DECODE1+3,0x03);
write7279(DECODE1+4,0x04);
write7279(DECODE1+5,0x05);
write7279(DECODE1+6,0x06);
write7279(DECODE1+7,0x07);
//ite7279(DECODE1+0,8);

	//*********************************************
	//译码方式1及右移指令测试
	//*********************************************
//	for (j=0;j<16;j++)
//	{
	//	send_byte(RTR_UNCYL); // 不循环右移指令
//		write7279(DECODE1+7,j);
		// 译码方式0指令,显示在第8位
		delay10ms(50);
//	}
	delay10ms(1500);
	//*********************************************
	}
}
	// 写指令--------------------------
	void write7279(uchar cmd, uchar dta)
	{
		send_byte (cmd);
		send_byte (dta);
	}
	// 读数据--------------------------
	uchar read7279(uchar cmd)
	{
		send_byte(cmd);
		return(receive_byte());
	}
	// 发送一个字节
	void send_byte(uchar sbyte)
	{
		uchar i;
		cs_7279=0;        
		long_delay();
		for (i=0;i<8;i++)
		{
			if (sbyte&0x80)
			{
				dat=1;          // 第8位为1则置发送的第一个电平为高
			}
			else
			{
				dat=0;
			}
			clk=1;              // 在上升沿写入
			short_delay();
			clk=0;
			short_delay();   
			sbyte=sbyte*2;      // 左移一位
		}
		dat=0;                  // 发送完一个字节后置数据线为0,输出状态
	}
	
	// 接收一个字节
	uchar receive_byte(void)
	{
		uchar i, ibyte;
		dat=1;                  // 设为输入状态
		long_delay();
		for (i=0;i<8;i++)
		{
			clk=1;
			short_delay();
			ibyte=ibyte*2;      // 左移一位
			if (dat)
			{
				ibyte=ibyte|0x01;
			}
			clk=0;
			short_delay();
		}
		dat=0;
		return (ibyte);
	}
	
	// 处理按键
	void key_process(void)
	{
	   // add code here
	}
	
	// delay 160us
	void long_delay(void)
	{
		uchar i;
		for (i=0;i<0x30;i++);
	}
	
	// delay 33us
	void short_delay(void)  
	{
		uchar i;
		for (i=0;i<8;i++);
	}
	
	// *********************延时n*10ms **********************
	void delay10ms(uchar ms)
	{
		uchar i;
		uint j;
	
		for (i=0;i<ms;i++)
		{
		for(j=0;j<0x390;j++)
			{
				if(!key)             // 有按键则先处理按键中断
				{
					key_process();
				}
			}
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -