
STM32F103R6仿真计数器程序,配合Proteus软件使用。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
以下为m32f103r6仿真计数器程序以及配套的Proteus单片机源程序:
#include stm32f10x.h
#include Delay.h
#include smg.h
#include sys.h
#include timer.h
#include led.h
#include fmq.h
#include key.h
#include stm32f10x_tim.h
uint16_t table[] = {
/* 0, 1, 2, 3, 4, 5, 6, 7, 8, */
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, /* 9, A, B, C, D, E, F */
/* ., none */
0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x80 , /* */
/* */
/* */
// 添加一些注释,方便理解代码逻辑。例如:初始化函数,GPIO设置等。这里省略了具体的注释。
};
uint16_t t;
uint16_t num[3], inc = 0x00;
int main(void) {
SMG_Init(); // 初始化系统模块,具体初始化方法请参考相关文档。
GPIO_Write(GPIOA,(~table[num[2]]) <<8); // 设置GPIOA端口的输出值,根据num[2]的值选择不同的表项。注意位移操作。
GPIO_Write(GPIOB,((~inc) <<8) + table[num[2]]); // 设置GPIOB端口的输出值,同样根据inc和table进行计算。注意位移操作。
GPIO_Write(GPIOA,(table[num[1]] <<8) + table[num[2]]); // 设置GPIOA端口的输出值,根据num[1]和table进行计算。注意位移操作。
while (1) {
t = KEY_Scan_KEY_INC(); // 获取按键输入,并递增计数器。如果按键按下,则递增计数器inc。
if (t != // 如果t不等于零(即按键被按下)...{ // ...执行下面的代码块} else { // ...执行else分支的代码块}
inc++; // 如果按键被按下,则递增计数器inc 。
if (inc <= // 如果inc小于等于FF...{ // ...执行下面的代码块} else { // ...执行else分支的代码块}
num[2]=inc%10; num[1]=inc/10%10; num[0]=inc/10/1 %1 ; GPIO_Write(GPIOB,((~inc) <<8) + table[num[2]]); GPIO_Write(GPIOA,(table[num[1]] <<8) + table[num[2]]); } else { inc = };
}
}
}
全部评论 (0)


