新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2016-3-6
- 在线时间
- 43 小时
|
发表于 2016-4-12 20:44:18
|
显示全部楼层
void Nixie_tube_GPIO_Init(void)
{
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRH&=0XFFFFFF00;// LOAD CLK MAX7219_数码管
GPIOB->CRH|=0X00000033;// PB8 和 PB9 推挽输出
GPIOB->CRL&=0XFFFF0FFF;
GPIOB->CRL|=0X00003000;// PB3 推挽输出
// CLK
GPIOB->ODR|=1<<3; //PB3 输出高
GPIOB->ODR|=1<<8; //PB8 输出高
GPIOB->ODR|=1<<9; //PB9 输出高
}
//------------------------------------向 Max7219移位寄存器 写单个字节-----
void Write_Max7219_byte(u8 temp)
{
u8 i;
for (i=0;i<8;i++) //共 8 个时钟上升沿,发送 8 位,即一个字节
{
CLK=0; //时钟低电平
DIN=((temp>>7)&0x01);//取字节最高位
temp<<=1; //字节左移 1 位
CLK=1; //时钟上升沿,发送(每个上升沿发送 1 位)
}
}
//-----------------------------向 Max7219双口SRAM 写地址和数据(指令)----
void Write_Max7219(u8 address,u8 dat)
{
LOAD=0; //加载数据 低电平
Write_Max7219_byte(address);//发送地址
Write_Max7219_byte(dat); //发送数据
LOAD=1; //加载数据 上升沿,发送 1 个字(16位)
} //D0---D7:数据,D8---D11:地址,D12---D15:未用
//-------------------------------------------------- Max7219 初始化 ------
void Init_Max7219(void)
{
Write_Max7219(SHUT_DOWN,0x00); //正常工作 XXXXXXX1 关机模式 XXXXXXXX0
Write_Max7219(DECODE_MODE,0x00); //译码方式 D7~D0: 1---B译码 0---无译码
Write_Max7219(SCAN_LIMIT, 0x07); //扫描界限 0~7 0xX0~0xX7
Write_Max7219(INTENSITY, 0x0A); //亮度 0xX0~0xXf
Write_Max7219(DISPLAY_TEST, 0x00);//显示测试 正常工作 XXXXXXX0 测试模式 XXXXXXX1
Write_Max7219(SHUT_DOWN, 0x01); //正常工作 XXXXXXX1 关机模式 XXXXXXXX0
//clear(); // 8 个数码管全显示 0
}
//-------------------------------------------------- 数码管 清屏 ------
void Clear_Nixie(void)
{
Write_Max7219(1,0x00); //黑
Write_Max7219(2,0x00); //黑
Write_Max7219(3,0x00); //黑
Write_Max7219(4,0x00); //黑
}
//--------------------------------------------单个数码管显示------
void Single_Nixie_tube(u8 position ,u8 Value)
{
Write_Max7219(position,dis_code[Value]);
}
//-----------------------------------显示全部4个数码管----------------
void Display_all_Nixie_tube(void)
{
if(fixed_time_flash>0||flag_work==0) // 如果定时显示未结束,或体控和非体控都没工作
{
Single_Nixie_tube(1,fixed_time/10);// 定时时间 十位
Single_Nixie_tube(2,fixed_time%10);// 定时时间 个位
fixed_time_flash--; // 定时时间显示数递减
}
else
{
Single_Nixie_tube(1,minutes/10); // 运行时间 十位
Single_Nixie_tube(2,minutes%10); // 运行时间 个位
}
Single_Nixie_tube(3,TK_level/10); // 体控强度 十位
Single_Nixie_tube(4,TK_level%10); // 体控强度 个位
|
|