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

📄 main.c

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 C
字号:
//-----------------------------------------------------------------
//  名称: 74HC595驱动14段数码管演示
//-----------------------------------------------------------------
//  说明: 本例运行时,8只集成式14段数码管在按键控制下依次显示几组英文与
//        数字字符串.案例中14段数码管段码表编码规则见程序内说明.
//  
//-----------------------------------------------------------------
#include <pic.h> 
#include <math.h>
#include <ctype.h>
#include <string.h>
#define INT8U   unsigned char
#define INT16U  unsigned int
#define _XTAL_FREQ 4000000UL
#define K1     RD7   //按键定义
//595引脚定义
#define SH_CP  RB0   //移位时钟脉冲
#define DS     RB1   //串行数据输入 
#define OE     RB2   //使能输出
#define ST_CP  RB3   //输出锁存器控制脉冲
//本例编码按数码管各段字母顺序设计编码(先外框循环,后内部米字循环):
//A B C D E F H I J G2 K L M G1 DP(编码时注意逆向)
//14段共阳数码管段码表(本例用的是共阴数码管,输出时要取反)
const INT16U SEG_CODE14[] = 
{ 0xFB80,0xFFF9,0xDDE4,0xDDF0,0xDDD9,0xDDD2,0xDDC2,0xFFF8,0xDDC0,0xDDD0,//0-9
  0xDDC8,0xDCC2,0xFFC6,0xF770,0xDFC6,0xDFCE,0xFDC2,0xDDC9,0xF776,0xEF6E,//A-J
  0xDACF,0xFFC7,0xFE89,0xFB89,0xFFC0,0xDDCC,0xFBC0,0xD9CC,0xDBD6,0xF77E,//K-T
  0xFFC1,0xEECF,0xEBC9,0xEABF,0xF6BF,0xEEF6                             //U-Z
};
//数码管扫描码
const INT8U scan_Code[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//待显示字符串
const char str_buffer[] = "DEMO 509abcdefghijKLMNOPQRSTUVWXYZ 0123456789";
//上次按键状态
INT8U pre_key_status = 1;
// 595并行输出宏定义(上升沿将数据送到输出锁存器)
#define Parallel_Output() {ST_CP = 0; NOP(); ST_CP = 1; NOP(); }
//------------------------------------------------------------------
// 获取字符的16位段码
//------------------------------------------------------------------
INT16U get_16_segcode(char c)
{





}

//-----------------------------------------------------------------
// 串行输入595子程序
//-----------------------------------------------------------------
void Serial_Input_595(INT8U dat)
{




  
}

//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
void main() 
{ 
     INT8U  i,j,len = strlen(str_buffer),n = ceil(len / 8.0);   
     INT16U sCode = 0x0000;
     ADCON1 = 0x06;                               //RA端口设为数字端口
     TRISD7 = 1;                                  //按键输入引脚
     TRISB = 0x00;                                //数码管输出端口(595输出)
     while(1)
     { 






     }
}

⌨️ 快捷键说明

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