?? main.c
字號:
//-----------------------------------------------------------------
// 名稱: 用IIC接口控制MAX6955驅動16段數碼管
//-----------------------------------------------------------------
// 說明: 本例運行時,8只16段數碼滾動顯示數字0~9,字母A~Z
// 本例使MAX6955工作于全解碼模式,因此只需要向MAX6955輸出
// 待顯示字符ASCII碼即可,不需要編寫并發送各字符的段碼.
//
//----------Proteus中單只16段數碼管上下排引腳名稱------------------
// NO. 1 2 3 4 5 6 7 8 9
//******************************************
// 上: A1 A2 B C D2 D1 E F 位控制
// 下: H I J G2 K I M G1 DP
//-----------------------------------------------------------------
#include <pic.h>
#include <string.h>
#define INT8U unsigned char
#define INT16U unsigned int
#define _XTAL_FREQ 4000000UL
//子器件地址0xC0,0xC1
#define MAX6955R 0B11000001 //1 = READ
#define MAX6955W 0B11000000 //0 = WRITE
bit ack = 0;
//I2C通用操作宏定義
#define Idle() {while ((SSPCON2 & 0x1F)|(RW));}
#define Wait() {while (SSPIF == 0);SSPIF = 0;}
#define Start() {Idle(); SSPIF = 0; SEN = 1; Wait();}
#define Stop() {Idle(); SSPIF = 0; PEN = 1; Wait();}
#define RepStart() {Idle(); SSPIF = 0; RSEN = 1;Wait();}
#define WriteByte(x) {Idle(); SSPBUF = x; Wait(); ack = !ACKSTAT; }
#define EnableRecv() {Idle(); RCEN = 1; while (SSPIF == 0);}
#define AckI2C() {ACKDT = 0;ACKEN = 1;Wait();}
#define NoAckI2C() {ACKDT = 1;ACKEN = 1;Wait();}
//16段數碼管滾動顯示的字符串
char SEG_LED_String[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//-----------------------------------------------------------------
// 延時子程序
//-----------------------------------------------------------------
void delayX100ms(INT8U x)
{
while (x--) __delay_ms(100);
}
//-----------------------------------------------------------------
// 寫MAX6955子程序
//-----------------------------------------------------------------
void MAX6955_Write(INT8U addr, INT8U dat)
{
}
//-----------------------------------------------------------------
// MAX6955初始化
//-----------------------------------------------------------------
void MAX6955_INIT()
{
}
//-----------------------------------------------------------------
// IIC初始化
//-----------------------------------------------------------------
void IIC_Init()
{
}
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
INT8U i,j,Len = strlen(SEG_LED_String);
IIC_Init(); //IIC初始化
MAX6955_INIT(); //MAX6955初始化設置
while (1)
{
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -