用于1621B的测试程序,或者IC
根据提供的文件信息,本文将对涉及的1621B测试程序进行详细的解析与知识点的归纳,主要包括以下几个方面:定义宏、控制命令、数据结构、显示驱动器的配置以及具体的编程逻辑。 ### 宏定义 #### 基础类型定义 - `define uchar unsigned char` - `#define uint unsigned int` 这两个宏定义了`uchar`和`uint`两种类型,分别对应无符号字符型(`unsigned char`)和无符号整型(`unsigned int`)。这样的定义有助于提高代码的可读性和一致性。 #### 控制命令宏定义 - `#define ComMode 0x52 // 4COM, 1/3bias 100001010010` - `#define RCosc 0x30 // ڲRC(ϵĬ) 100000110000` - `#define LCD_on 0x06 // LCDƫѹ 100000000110` - `#define LCD_off 0x04 // رLCDʾ` - `#define Sys_en 0x02 // ϵͳ 100000000010` - `#define Ctrl_cmd 0x80 // д` - `#define Data_cmd 0xa0 // д // ˿HT1621ݶ˿` 这些宏定义了不同的控制命令,如`ComMode`表示设置为4个公共端模式,1/3偏置;`RCosc`代表内部RC振荡器的设置;`LCD_on`和`LCD_off`分别用来开启或关闭LCD显示;`Sys_en`表示系统使能;`Ctrl_cmd`和`Data_cmd`分别定义了控制命令和数据命令。 #### I/O端口操作宏定义 - `#define WR1 sbi(PORTD,7)` - `#define WR0 cbi(PORTD,7)` - `#define DATA1 sbi(PORTD,6)` - `#define DATA0 cbi(PORTD,6)` - `#define CS1 sbi(PORTC,0)` - `#define CS0 cbi(PORTC,0)` 这些宏定义了对端口的操作,例如`WR1`和`WR0`分别用于将端口D的第7位设置为1和0,`DATA1`和`DATA0`则用于控制数据线的状态,而`CS1`和`CS0`用于选择芯片。 #### 显示位置定义 - `#define ZA 10` - `#define ZB 11` - `#define ZC 12` - `#define ZD 13` - `#define ZE 14` - `#define ZF 15` - `#define H 16` - `#define L 17` - `#define T 18` - `#define N 19` - `#define SUBB 20` - `#define P 21` - `#define R 22` - `#define NO 23` 这些定义指定了不同的显示位置,便于在编程时直接引用。 ### 字符映射表 ```c const char num[] = { 0x5f, 0x06, 0x6b, 0x2f, 0x36, 0x3d, 0x7d, 0x07, 0x7f, 0x3f, // 0123456789 0x77, 0x7c, 0x59, 0x6e, 0x79, 0x71, 0x76, 0x58, 0x51, 0x57, 0x20, 0x73, 0x60, 0x00, // ABCDEFHLTN-PRNO }; ``` 这里定义了一个字符映射表,通过一系列十六进制数来表示不同的字符,如数字0到9以及部分字母。 ### 变量定义 - `uchar SMG1 = 0; // 1` - `uchar SMG2 = 0; // 2` - `uchar SMG3 = 0; // 3` - `uchar SMG4 = 0; // 4` - `uchar SMG5 = 0; // 5` - `uchar SMG6 = 0; // 6` - `uchar SIGN1 = 0; // -1` - `uchar SIGN2 = 0; // -2` 这些变量定义了不同的信号标志,用于控制显示的不同部分。 ### 信号控制宏定义 - `#define ADD_SMG1 0x0` - `#define S1(SMG1 & 0x80)` - `#define S1_ON(SMG1 |= 0x80) // -S1 "ON"` - `#define S1_OFF(SMG1 &= 0x7f)` 这些宏定义了如何控制各个信号标志,例如`S1_ON`用于将`SMG1`中的最高位设置为1,即打开相应的显示段。 通过上述的分析可以看出,这段代码主要实现了一个基于1621B IC的测试程序,用于检查IC或者LCD的显示功能。通过对不同的信号标志进行控制,可以实现对不同显示段的开关操作,从而验证IC的功能是否正常。此外,还定义了一系列的控制命令,以便于进一步控制显示的状态。
#define uint unsigned int
//定义HT1621的命令
#define ComMode 0x52 //4COM,1/3bias 1000 010 1001 0
#define RCosc 0x30 //内部RC振荡器(上电默认)1000 0011 0000
#define LCD_on 0x06 //打开LCD 偏压发生器1000 0000 0 11 0
#define LCD_off 0x04 //关闭LCD显示
#define Sys_en 0x02 //系统振荡器开 1000 0000 0010
#define Ctrl_cmd 0x80 //写控制命令
#define Data_cmd 0xa0 //写数据命令
//定义端口HT1621数据端口
#define WR1 sbi(PORTD, 7)
#define WR0 cbi(PORTD, 7)
#define DATA1 sbi(PORTD, 6)
#define DATA0 cbi(PORTD, 6)
#define CS1 sbi(PORTC, 0)
#define CS0 cbi(PORTC, 0)
#define ZA 10
#define ZB 11
#define ZC 12
#define ZD 13
#define ZE 14
#define ZF 15
#define H 16
#define L 17
#define T 18
#define N 19
#define SUBB 20
#define P 21
#define NO 23
const char num[]={0x5f,0x06,0x6b,0x2f,0x36,0x3d,0x7d,0x07,0x7f,0x3f,
//0 1 2 3 4 5 6 7 8 9
0x77,0x7c,0x59,0x6e,0x79,0x71,0x76,0x58,0x51,0x57,0x20,0x73,0x60,0x00,
// A B C D E F H L T N - P R NO
};
uchar SMG1=0; //1号数码管
uchar SMG2=0; //2号数码管
uchar SMG3=0; //3号数码管
uchar SMG4=0; //4号数码管
uchar SMG5=0; //5号数码管
uchar SMG6=0; //6号数码管
uchar SIGN1=0; //标志1
uchar SIGN2=0; //标志2
#define ADD_SMG1 0x0
#define S1 (SMG1&0x80)
#define S1_ON (SMG1|=0x80) //标志S1"ON"
#define S1_OFF (SMG1&=0x7f)
#define ADD_SMG2 0x02
#define S2 (SMG2&0x80)
#define S2_ON (SMG2|=0x80) //标志S2"OFF"
#define S2_OFF (SMG2&=0x7f)
#define ADD_SMG3 0x04 //数码管3的地址00 010000
#define COL (SMG3&0x80)
#define COL_ON (SMG3|=0x80) //标志COL":"
#define COL_OFF (SMG3&=0x7f)
剩余14页未读,继续阅读
- dcy22372013-04-14谢谢楼主分享学习了 很受用
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js基础但是这个烂怂东西要求标题不能少于10个字才能上传然后我其实还没有写完之后再修订吧.md
- electron-tabs-master
- Unity3D 布朗运动算法插件 Brownian Motion
- 鼎微R16中控升级包R16-4.5.10-20170221及强制升级方法
- 鼎微R16中控升级包公版UI 2015及强制升级方法,救砖包
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目