最开始所有代码都写在main.c中,发现实在太乱套了,于是,数码管设置相关的函数被抽离出来,写到了seg.h中
- #ifndef SEG_H
- #define SEG_H
- #include "STC8H.h"
-
- #define SEG_NULL 0xff
-
- //led数字
- uchar xdata seg_led_data[]={
- 0xC0, //"0"
- 0xF9, //"1"
- 0xA4, //"2"
- 0xB0, //"3"
- 0x99, //"4"
- 0x92, //"5"
- 0x82, //"6"
- 0xF8, //"7"
- 0x80, //"8"
- 0x90, //"9"
- 0x88, //"A"
- 0x83, //"B"
- 0xC6, //"C"
- 0xA1, //"D"
- 0x86, //"E"
- 0x8E, //"F"
- 0x89, //"H"
- 0xC7, //"L"
- 0xC8, //"n"
- 0xC1, //"u"
- 0x8C, //"P"
- 0xA3, //"o"
- 0xBF, //"-"
- 0xFF, //熄灭
- };
- //4位数码管的具体数据
- uchar seg_4bit_data[4] = {SEG_NULL,SEG_NULL,SEG_NULL,SEG_NULL};
-
- //设置前2个数码管,show_dot为是否显示冒号
- void SetSeg4BitData_1(uchar d,uchar show_dot)
- {
- if(d == SEG_NULL)
- {
- seg_4bit_data[0] = 0xff;
- if(show_dot)
- seg_4bit_data[1] = 0x7f;
- else
- seg_4bit_data[1] = 0xff;
- }
- else
- {
- seg_4bit_data[0] = seg_led_data[d/10];
- if(show_dot)
- seg_4bit_data[1] = seg_led_data[d%10] & 0x7f;
- else
- seg_4bit_data[1] = seg_led_data[d%10];
- }
- }
- //设置后2个数码管
- void SetSeg4BitData_2(uchar d)
- {
- if(d == SEG_NULL)
- {
- seg_4bit_data[2] = 0xff;
- seg_4bit_data[3] = 0xff;
- }
- else
- {
- seg_4bit_data[2] = seg_led_data[d/10];
- seg_4bit_data[3] = seg_led_data[d%10];
- }
- }
- #endif //SEG_H
复制代码
外部直接调用SetSeg4BitData_1,SetSeg4BitData_2来设置前2位数码管和后2位数码管所显示的内容,也就是seg_4bit_data的内容 |