南京的网站建设公司哪家好,番禺人才市场,前端ui设计是什么,软件技术可以从事什么工作首先 先画电路图吧#xff01;打开proteus#xff0c;导入相关器件#xff0c;绘制电路图。如下#xff1a;#xff08;记得要保存啊#xff01;发现模拟一遍程序就自动退出了#xff0c;有bug#xff0c;我是解决不了#xff0c;所以就是要及时保存#xff0c;自己重…首先 先画电路图吧打开proteus导入相关器件绘制电路图。如下记得要保存啊发现模拟一遍程序就自动退出了有bug我是解决不了所以就是要及时保存自己重画几次就长记性了我是不想重画了所以我及时保存了。 第二步打开CubeMX新建工程配置时钟和GPIO如下 第三步先来了解一下数码管的十六进制码的来源我自己画了个图我看着挺明白的不明白的自己想想明白了画出来就明白了其实很简单的就是给电就亮断电就灭而已。废话不说了看图 最后得出共阳极的断码为{0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}
接下来就是修改keil工程中的main文件中的内容了其实主要就那么点东西只不过放在了不同的地方而已
void duanxuan(uint8_t num); //声明断选函数传入每个数字的码值
void led_clear(void); // 清屏函数 主要将所有的数码管都关闭。 uint8_t duan[]{0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; //断码数组 uint8_t num 0; // 定义变量num for(num0; num100; num) // for循环 num的值从0到99{led_clear(); // 清屏GPIOB-ODR 0x0002; // GPIOB的值为0x0002 0000 0000 0000 0010 也就是PB1为高电平duanxuan(duan[num%10]); // 断选的值为 数组断中的 num模10 也就是个位的数字HAL_Delay(2); // 延时2msled_clear(); // 清屏GPIOB-ODR 0x0004; // GPIOB的值为0x0004 0000 0000 0000 0100 也就是PB2为高电平 duanxuan(duan[num/10]); // 断选的值为 数组断中的 num除10 也就是十位的数字 HAL_Delay(8); // 延时8ms 控制数码管中的数字增加的快慢} void duanxuan(uint8_t num) //断码显示函数 { GPIOA-ODR num; // A端口要显示几就传入几的断码 }
void led_clear(void) // 清屏函数 { GPIOA-ODR 0x00FF; // 清屏函数 A端口的值都是1就是都不亮 }
好了所有需要添加的代码都在这里了只需要按位置填进去编译就行了不按位置填对了也可以就是下次CubeMX有改动重新生成时自己写的代码是否还存在需不需要重新写估计都不想重新写的那就按照样式固定写代码的位置吧