- 打卡等级:以坛为家I
- 打卡总天数:348
- 最近打卡:2026-06-09 08:04:25
已绑定手机
金牌会员
- 积分
- 1458
|
发表于 2026-5-2 08:39:07
|
显示全部楼层
#include "SEG.H"
sbit P_COM1 = P4^0;
sbit P_COM2 = P4^5;
sbit P_COM3 = P4^6;
sbit P_SEGA = P0^2;
sbit P_SEGB = P0^0;
sbit P_SEGC = P0^6;
sbit P_SEGD = P0^4;
sbit P_SEGE = P0^3;
sbit P_SEGF = P0^1;
sbit P_SEGG = P0^7;
sbit P_SEGH = P0^5;
u8 code SEG_TABLE[] = {
0xa0, /* "0", 0 */
0xbe, /* "1", 1 */
0x62, /* "2", 2 */
0x2a, /* "3", 3 */
0x3c, /* "4", 4 */
0x29, /* "5", 5 */
0x21, /* "6", 6 */
0xba, /* "7", 7 */
0x20, /* "8", 8 */
0x28, /* "9", 9 */
0x7F, /* "-", 10 */
0xFF, /* " ", 11 */
};
u8 Seg_Addr[3]={0x01,0x20,0x40}; //数码管位码显示数组
void Seg_Init()
{
P0M0 = 0x00; P0M1 = 0x00; //P0口准双向口
P4M0 = 0x61; P4M1 = 0x00; //P4口 推挽输出
P_COM1 = 0;
P_COM2 = 0;
P_COM3 = 0;
P0 = 0xFF;
}
void Seg_Display(dat,addr,point)
{
Seg_Init();
P4 |= Seg_Addr[addr];
if(point == 1)
{
P0 = SEG_TABLE[dat] & 0xDF;
}
else
{
P0 = SEG_TABLE[dat];
}
}
|
|