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

📄 displa.lst

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

     2: #include "total.h"

     3: 

     4: #define SRCK                    RD5             //串行时钟

     5: #define RCK                             RD6             //并行时钟

     6: #define SER_IN                  RD7             //串行数据

     7: #define BITS                     4              //每个短整数包含有4位数值。

     8: 

     9: const unsigned char number_handle[16] = {0xAF,0x03,0x9D,0x97,0x33,0xB6,0xBE,            //数字的字模

    10:                                         0x83,0xBF,0xB7,0xBB,0x3E,0xAC,0x1F,0x00,0x10};

    11: 

    12: /************************************************************************************************

    13: * 函数名称: void SelectDisplay273(void)

    14: * 功能: 选通控制显示数据输出的74HC273

    15: * 入口参数: 无

    16: * 出口参数: 无

    17: * 全局变量: ENABLE_DISPLAY

    18: * 调用模块: 无

    19: * 设计者: 饶阳胜

    20: * 日期: 05/2/28

    21: ************************************************************************************************/

    22: void SelectDisplay273(void)     //选通273,让数据送到595中。

    23: {       

    24:         asm("nop");     

    25:         asm("nop");

    26:         ENABLE_DISPLAY = FALSE;         //RE1为显示数据输出273的选通脚

    27:         asm("nop");

    28:         asm("nop");     

    29:         asm("nop");

    30:         asm("nop");     

    31:         asm("nop");

    32:         ENABLE_DISPLAY = TRUE;

    33:         asm("nop");

    34: }       

    35: 

    36: /************************************************************************************************

    37: * 函数名称: void display(unsigned char *ptr)

    38: * 功能: 数据显示

    39: * 入口参数:     unsigned short *ptr  指向要显示数据的指针  

    40: *                       unsigned char number 要显示的数据个数   

    41: * 出口参数: 无

    42: * 全局变量: SER_IN, SRCK, RCK

    43: * 调用模块: void SelectDisplay273       选通显示数据输出芯片74HC273

    44: * 设计者: 饶阳胜

    45: * 日期: 05/2/28

    46: ************************************************************************************************/

    47: void Display(unsigned short *ptr,unsigned char number)

    48: {

    49:         unsigned char i;                                //显示数据个数

    50:         unsigned char j;                        

    51:         unsigned char display_temp;             //存放字模值

    52: 

    53:         for (;number > 0; number--){            

    54:                 for (i = BITS ; i > 0; i--){

    55:                         display_temp = number_handle[(*ptr >> (i - 1) * 4) & 0x0f];             //得到要显示数字的字模

    56:                         if(display_weigh == 1)                                          

    57:                                 if(i == 2)                                                      //轴重检测下的显示

    58:                                         display_temp |= 0x40;                   

    59:                         if(display_weigh == 2)

    60:                                 if(number != 3)                                         //轴重标定下的显示

    61:                                         if(i == 2)

    62:                                                 display_temp |= 0x40;

    63:                         for (j = 0; j < 8; j++){

    64:                                 SER_IN  = display_temp >> (7 - j);      //得到当前要输出的数据位状态    

    65:                                 SelectDisplay273();                                     //选通数据位输出

    66:                                 SRCK = FALSE;                                           //串行时钟拉低

    67:                                 SelectDisplay273();                                     //选通串行时钟输出

    68:                                 SRCK = TRUE;                                            //串行时钟拉高

    69:                                 SelectDisplay273();                                     //选通串行时钟输出

    70:                         }

    71:                 }

    72:                 *ptr++;                         //数据指针加1

    73:         }               

    74:         RCK = FALSE;                    //并行时钟拉低

    75:         SelectDisplay273();             //选通并行时钟输出

    76:         RCK = TRUE;                             //并行时钟拉高

    77:         SelectDisplay273();             //选通并行时钟输出

    78: }

    79: 

    80: /*****************************************************************************************

    81: *

    82: *****************************************************************************************/

    83: void Normal_Display(void)

    84: {

    85:         display_data[0] = 0;

    86:         display_data[1] = 0;

    87:         display_data[2] = 0;

    88:         Display(display_data,DISPLAY_SIZE);

    89: }

⌨️ 快捷键说明

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