- 打卡等级:初来乍到
- 打卡总天数:3
- 最近打卡:2025-03-29 11:47:19
已绑定手机
中级会员
- 积分
- 287
|
发表于 2025-3-2 10:22:08
|
显示全部楼层
视频第九集《数码管》
一.如何用STG公司提供的,AIapp-ISP单片机在线升级编程仿真调试平台软件生成数码管显示段码数据:
1.工具进入:
第一步:点工具按钮
第二步:点弹出菜单的:字库生成
二.获得段码数据:
1.以共阴极数码管位例:一个byte有8个bit,每个bit刚好对应数码管的一个段位,假如硬件设计是如下对应的:
DP点对应:bit7
G段对应:bit6
F段对应:bit5
E段对应:bit4
D段对应:bit3
C段对应:bit2
B段对应:bit1
A段对应:bit0
2.获得段码数据:右边表格第二栏就是段码数据。
3.在c语言编写中:可以将这些数据如下定义别名,就可直观使用。
列如:
#define DISP_NUM0 0x3F //数字'0';
#define DISP_NUM1 0x06 //数字'1';
#define DISP_NUM2 0x5B //数字'2';
......
4.还有更好的方法,方便硬件修改的时候容易维护程序:
列如:
//宏定义,段式LED a~g及DP各段对应的比特,更换硬件只需改动以下8行
#define SEG_AA 0x01 //对应原理图SEG0
#define SEG_BB 0x02 //对应原理图SEG1
#define SEG_CC 0x04 //对应原理图SEG2
#define SEG_DD 0x08 //对应原理图SEG3
#define SEG_EE 0x10 //对应原理图SEG4
#define SEG_FF 0x20 //对应原理图SEG5
#define SEG_GG 0x40 //对应原理图SEG6
#define SEG_DP 0x80 //对应原理图SEG7
//----------------------------------------------------------
//用宏定义自动生成字形码宏定义,
#define DISP_NUM0 (SEG_AA+SEG_BB+SEG_CC+SEG_DD+SEG_EE+SEG_FF) //数字'0';
#define DISP_NUM1 (SEG_BB+SEG_CC) //数字'1';
#define DISP_NUM2 (SEG_AA+SEG_BB+SEG_DD+SEG_EE+SEG_GG) //数字'2';
#define DISP_NUM3 (SEG_AA+SEG_BB+SEG_CC+SEG_DD+SEG_GG) //数字'3';
#define DISP_NUM4 (SEG_BB+SEG_CC+SEG_FF+SEG_GG) //数字'4';
#define DISP_NUM5 (SEG_AA+SEG_CC+SEG_DD+SEG_FF+SEG_GG) //数字'5';
#define DISP_NUM6 (SEG_AA+SEG_CC+SEG_DD+SEG_EE+SEG_FF+SEG_GG) //数字'6';
#define DISP_NUM7 (SEG_AA+SEG_BB+SEG_CC) //数字'7';
#define DISP_NUM8 (SEG_AA+SEG_BB+SEG_CC+SEG_DD+SEG_EE+SEG_FF+SEG_GG) //数字'8';
#define DISP_NUM9 (SEG_AA+SEG_BB+SEG_CC+SEG_DD+SEG_FF+SEG_GG) //数字'9';
#define BL_ 0x00 //全段熄;
#define A_ (SEG_AA+SEG_BB+SEG_CC+SEG_EE+SEG_FF+SEG_GG) //字母A;
#define b_ (SEG_CC+SEG_DD+SEG_EE+SEG_FF+SEG_GG) //字母b ;
#define C_Small (SEG_DD+SEG_EE+SEG_GG) //字母c;
#define C_Big (SEG_AA+SEG_DD+SEG_EE+SEG_FF) //字母C ;
#define d_ (SEG_BB+SEG_CC+SEG_DD+SEG_EE+SEG_GG) //字母d;
#define E_ (SEG_AA+SEG_DD+SEG_EE+SEG_FF+SEG_GG) //字母E;
#define F_ (SEG_AA+SEG_EE+SEG_FF+SEG_GG) //字母F;
#define G_ (SEG_AA+SEG_CC+SEG_DD+SEG_EE+SEG_FF) //字母G;
#define H_ (SEG_BB+SEG_CC+SEG_EE+SEG_FF+SEG_GG) //字母H;
#define I_ (SEG_EE+SEG_FF) //字母I;
#define J_ (SEG_BB+SEG_CC+SEG_DD+SEG_EE) //字母J;
#define K_ (SEG_BB+SEG_DD+SEG_EE+SEG_FF+SEG_GG) //字母K;
#define L_ (SEG_DD+SEG_EE+SEG_FF) //字母L;
#define N_Small (SEG_CC+SEG_EE+SEG_GG) //字母n;
#define N_Big (SEG_AA+SEG_BB+SEG_CC+SEG_EE+SEG_FF) //字母N;
#define M_ (SEG_AA+SEG_CC+SEG_EE+SEG_GG) //字母M;
#define O_Small (SEG_CC+SEG_DD+SEG_EE+SEG_GG) //字母o;
#define O_BIG DISP_NUM0 //字母O;
#define P_ (SEG_AA+SEG_BB+SEG_EE+SEG_FF+SEG_GG) //字母P;
#define q_ (SEG_AA+SEG_BB+SEG_CC+SEG_FF+SEG_GG) //字母q;
#define r_ (SEG_EE+SEG_GG) //字母r;
#define S_ (SEG_AA+SEG_CC+SEG_DD+SEG_FF+SEG_GG) //字母S;
#define T_ (SEG_DD+SEG_EE+SEG_FF+SEG_GG) //字母T;
#define U_Big (SEG_BB+SEG_CC+SEG_DD+SEG_EE+SEG_FF) //字母U;
#define U_Small (SEG_CC+SEG_DD+SEG_EE) //字母u;
#define v_ (SEG_CC+SEG_DD+SEG_EE) //字母v;
#define W_ (SEG_BB+SEG_DD+SEG_FF+SEG_GG) //字母W;
#define y_ (SEG_BB+SEG_CC+SEG_DD+SEG_FF+SEG_GG) //字母y;
#define Z_ DISP_NUM2 //字母Z;
#define NEG SEG_GG //负号-,亦即中划线;
#define Line_Top SEG_AA //上划线;
#define Line_Bottom SEG_DD //下划线;
|
|