- 打卡等级:偶尔看看II
- 打卡总天数:27
- 最近打卡:2025-06-15 07:41:52
已绑定手机
中级会员
- 积分
- 240
|
冲哥第九节数码管静态显示已完成
按照冲哥教学,
第一步完成模块化建立工程,main.c test.c test.h 文件创立。
工程中添加test.c 。
test.h 中添加#ifndef __test_h #define __test_h 。
并把需要引用的头文件全部引用。
声明全部声明。
test.c 中引用#include “test.h”
实现第一个数码短0-9之间循环显示,按键时蜂鸣器鸣叫。
P3.2按键每按一次数字循环递增,P3.3按键每按一次循环递减。
P3.4按键按下依据显示数字蜂鸣器响几声。
main.c 文件内容
#include "test.h" //调用模块化定义文件
void main() //主函数
{
//---------------------------------调用 --------------------------------
sys_init(); //调用系统初始化函数
usb_init(); //调用USB初始化函数
EA = 1; //中断总使能
while(1)
{
//---------------------------------USB --------------------------------
if(bUsbOutReady) //读取USB口状态
{
usb_OUT_done(); //确认USB口完成传输
}
////---------------------------------按键 --------------------------------
Test();
}
}
test.c文件
#include "test.h"
char mun = 0,i;
u8 SEG_TAB[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void Test(void) //
{
P70 = 0;
P6 = SEG_TAB[mun];
if(Key1 == 0)
{
delay_ms(10);
if(Key1 == 0)
{
Beep = 0;
delay_ms(10);
Beep = 1;
mun++;
if(mun > 9) mun = 0;
}
while(Key1 == 0);
}
if(Key2 == 0)
{
delay_ms(10);
if(Key2 == 0)
{
Beep = 0;
delay_ms(10);
Beep = 1;
mun--;
if(mun < 0) mun = 9;
}
while(Key2 == 0);
}
if(Key3 == 0)
{
delay_ms(10);
if(Key3 == 0)
{
for( i = mun;i > 0;i--)
{
Beep = 0;
delay_ms(10);
Beep = 1;
delay_ms(200);
}
}
while(Key3 == 0);
}
}
void delay_ms(u16 ms)
{
u16 i;
do
{
i = MAIN_Fose/6000;
while(--i);
}while(--ms);
}
void sys_init()
{
EAXFR = 1;
WTST = 0;
CKCON = 0;
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
}
test.h文件
#ifndef __TEST_H
#define __TEST_H
#include "stc32g.h" //调用头文件
#include "ai_usb.h" //调用USB文件
#define Key1 P32 //定义端口名称
#define Key2 P33 //定义端口名称
#define Key3 P34
#define Beep P54
#define MAIN_Fose 24000000UL
void delay_ms(u16 ms);
void sys_init();
void Test(void);
#endif
|
|