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

📄 displa.c

📁 这个是汽车制动台控制程序的C语言版本. 用于实际产品中.单片机用的是PIC16F877A.
💻 C
字号:
#include <pic.h>
#include "total.h"

#define	SRCK			RD5		//串行时钟
#define	RCK				RD6		//并行时钟
#define SER_IN			RD7		//串行数据
#define BITS			 4		//每个短整数包含有4位数值。

const unsigned char number_handle[16] = {0xAF,0x03,0x9D,0x97,0x33,0xB6,0xBE,		//数字的字模
					0x83,0xBF,0xB7,0xBB,0x3E,0xAC,0x1F,0x00,0x10};

/************************************************************************************************
* 函数名称: void SelectDisplay273(void)
* 功能: 选通控制显示数据输出的74HC273
* 入口参数: 无
* 出口参数: 无
* 全局变量: ENABLE_DISPLAY
* 调用模块: 无
* 设计者: 饶阳胜
* 日期: 05/2/28
************************************************************************************************/
void SelectDisplay273(void)	//选通273,让数据送到595中。
{	
	asm("nop");	
	asm("nop");
	ENABLE_DISPLAY = FALSE;		//RE1为显示数据输出273的选通脚
	asm("nop");
	asm("nop");	
	asm("nop");
	asm("nop");	
	asm("nop");
	ENABLE_DISPLAY = TRUE;
	asm("nop");
}	

/************************************************************************************************
* 函数名称: void display(unsigned char *ptr)
* 功能: 数据显示
* 入口参数: 	unsigned short *ptr  指向要显示数据的指针  
*			unsigned char number 要显示的数据个数	
* 出口参数: 无
* 全局变量: SER_IN, SRCK, RCK
* 调用模块: void SelectDisplay273 	选通显示数据输出芯片74HC273
* 设计者: 饶阳胜
* 日期: 05/2/28
************************************************************************************************/
void Display(unsigned short *ptr,unsigned char number)
{
	unsigned char i;				//显示数据个数
	unsigned char j;			
	unsigned char display_temp;		//存放字模值

	for (;number > 0; number--){		
		for (i = BITS ; i > 0; i--){
			display_temp = number_handle[(*ptr >> (i - 1) * 4) & 0x0f];		//得到要显示数字的字模
			if(display_weigh == 1)						
				if(i == 2)							//轴重检测下的显示
					display_temp |= 0x40;			
			if(display_weigh == 2)
				if(number != 3)						//轴重标定下的显示
					if(i == 2)
						display_temp |= 0x40;
			for (j = 0; j < 8; j++){
				SER_IN	= display_temp >> (7 - j);	//得到当前要输出的数据位状态	
				SelectDisplay273();					//选通数据位输出
				SRCK = FALSE;						//串行时钟拉低
				SelectDisplay273();					//选通串行时钟输出
				SRCK = TRUE;						//串行时钟拉高
				SelectDisplay273();					//选通串行时钟输出
			}
		}
		*ptr++;				//数据指针加1
	}		
	RCK = FALSE;			//并行时钟拉低
	SelectDisplay273();		//选通并行时钟输出
	RCK = TRUE;				//并行时钟拉高
	SelectDisplay273();		//选通并行时钟输出
}

/*****************************************************************************************
*
*****************************************************************************************/
void Normal_Display(void)
{
	display_data[0] = 0;
	display_data[1] = 0;
	display_data[2] = 0;
	Display(display_data,DISPLAY_SIZE);
}

⌨️ 快捷键说明

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