PIC单片机-LED阵列的使用
来源:互联网 发布:集散流程方案设计优化 编辑:程序博客网 时间:2024/06/09 23:38
编写程序,在Led阵列上依次循环显示自己的学号及姓名拼音的缩写
/******************************************************************************** 标 题: LED点阵显示* 功能描述: LED点阵循环显示"141270049ZRJ"*******************************************************************************/#include <htc.h>#define uint8 unsigned char#define uint16 unsigned int__CONFIG(FOSC_HS &WDTE_OFF &BOREN_OFF &PWRTE_OFF &LVP_OFF); //设置配置位//WDTE_OFF:disable watchdog timer 看门狗禁止//LVP_OFF:low voltage programming disabled 低电压编程禁止//FOSC_HS:high speed crystal/resonator 4M以上晶振选择HS高速//PWRTDIS:disable power up timer//BOREN_OFF:disable brown out reset#define SCK_595 RA5#define RCK_595 RE0#define SER_595 RC0void DelayUS(uint8 delay);void HC595_Init(void);void HC595_Write_Byte(uint8 data);uint8 LED_Datachage(uint8 data);const uint8 dot[12][8] ={ {0x00, 0x08, 0x18, 0x28, 0x08, 0x08, 0x08, 0x00}, //"1" {0x00, 0x08, 0x18, 0x28, 0x7E, 0x08, 0x08, 0x00}, //"4" {0x00, 0x08, 0x18, 0x28, 0x08, 0x08, 0x08, 0x00}, //"1" {0x00, 0x18, 0x24, 0x08, 0x10, 0x3C, 0x00, 0x00}, //"2" {0x00, 0x3C, 0x04, 0x08, 0x10, 0x20, 0x20, 0x00}, //"7" {0x00, 0x18, 0x24, 0x24, 0x24, 0x24, 0x18, 0x00}, //"0" {0x00, 0x18, 0x24, 0x24, 0x24, 0x24, 0x18, 0x00}, //"0" {0x00, 0x08, 0x18, 0x28, 0x7E, 0x08, 0x08, 0x00}, //"4" {0x00, 0x18, 0x24, 0x24, 0x1C, 0x08, 0x10, 0x00}, //"9" {0x00, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x00}, //"Z" {0x00, 0x70, 0x48, 0x70, 0x60, 0x50, 0x48, 0x00}, //"R" {0x00, 0x7C, 0x10, 0x10, 0x10, 0x50, 0x20, 0x00} //"J"};/******************************************************************************** 函 数 名: DelayUS(uint8 delay)* 函数功能: 微秒延时 for 20MHZ* 入口参数: delay* 返 回: 无*******************************************************************************/void DelayUS(uint8 delay){ while(--delay);}/******************************************************************************* 函 数 名: HC595_Init(void)* 函数功能: 74HC595初始化* 入口参数: 无* 返 回: 无*******************************************************************************/void HC595_Init(void){ ADCON1 = 0x8E; TRISA5 = 0; TRISE0 = 0; TRISC0 = 0;}/******************************************************************************* 函 数 名: HC595_Write_Byte(uint8 data)* 函数功能: 74HC595写8位数据* 入口参数: 无* 返 回: 无*******************************************************************************/void HC595_Write_Byte(uint8 data){ uint8 i; for(i = 0; i < 8; i++) { if(data & 0x80) { SER_595 = 1; } else { SER_595 = 0; } SCK_595 = 0; data <<= 1; SCK_595 = 1; } RCK_595 = 0; RCK_595 = 1;}/******************************************************************************* 函 数 名: LED_Datachage(uint8 data)* 函数功能: 将8位数据的bit0和bit7、bit1和bit6,bit2和bit5,bit3和bit4互相对换* 入口参数: data:待对换的数据* 返 回: 无*******************************************************************************/uint8 LED_Datachage(uint8 data){ uint8 temp, temp1; temp = (data & 0x01) << 7; temp1 = (data & 0x80) >> 7; data = (data & 0x7E) | temp | temp1; temp = (data & 0x02) << 5; temp1 = (data & 0x40) >> 5; data = (data & 0xBD) | temp | temp1; temp = (data & 0x04) << 3; temp1 = (data & 0x20) >> 3; data = (data & 0xDB) | temp | temp1; temp = (data & 0x08) << 1; temp1 = (data & 0x10) >> 1; data = (data & 0xE7) | temp | temp1; return data;}/******************************************************************************** 函 数 名: main(void)* 函数功能: LED点阵循环显示0~9数字*******************************************************************************/void main(void){ uint8 i, j; uint16 k; TRISA &= 0xE3; //RA2、RA3、RA4设置成输出模式 PORTA |= 0x1C; //RA2 = 1、RA3 = 1、RA4 = 1,不选通任何数码管,则关掉数码管显示 TRISE &= 0xEF; //配置PORTD为普通IO口,对PORTD的操作务必加上这句 TRISD = 0x00; //设置PORTD为输出 HC595_Init(); //74HC595初始化 while(1) { for(j = 0; j < 12; j++) //"141270049ZRJ" { for(k = 0; k < 1500; k++) //每个数字重复显示次数 { for(i = 0; i < 8; i++) //8行 { HC595_Write_Byte((0x01 << i)); //选择行 PORTD = ~LED_Datachage(dot[j][i]); //送字 DelayUS(50); //延时50us PORTD = 0xFF; //关显示 } } } }}
0 0
- PIC单片机-LED阵列的使用
- PIC单片机花式点亮LED
- PIC单片机-七段数码管的使用
- PIC单片机控制LED点阵显示屏
- 单片机LED灯的使用
- PIC单片机的指针
- PIC单片机-蜂鸣器使用示例
- PIC单片机-继电器使用示例
- pic单片机使用printf函数
- PIC单片机定时器的使用(16F877)
- PIC单片机的中断过程
- PIC单片机的时钟模式
- PIC单片机-定时器的应用
- PIC单片机之第一个工程分析,点亮LED
- PIC单片机与51单片机的区别
- 通过PIC单片机使用DHT21温度传感器
- 基于A20 Android使用SPI通讯接口8*8LED阵列的驱动开发
- PIC单片机的红外遥控与解码
- 怎么查看ubuntu是32位还是64位以及版本信息
- 部署架构
- POJ 1129 (dfs)
- SDRAM理论篇之基础知识及操作时序讲解
- 设计模式之简单工厂模式
- PIC单片机-LED阵列的使用
- (转)Retrofit用法详解
- 本地微擎系统不用注册云服务也可以更新和卸载模块
- java1.8连接Access过程详解
- springmvc之Restful
- Python学习笔记(3):MongoDB的安装
- 使用JetBrains Rider EAP开发和调试 Unity
- PIC单片机-普通IO口模拟I2C总线对24C02进行读写操作
- linux串口操作及设置