#include "smg.h" #include "MK60_gpio.h" volatile uint8 segNum[4]; volatile uint8 segXs = 0; // 小数位置 void smg_csh(void) { int i; for(i=0; i<12; i++) gpio_init((PTXn_e)(PTC0+i), GPO, 1); gpio_init(PTC19, GPO, 1); } void smg_xs(int wz, int sz, int xs) //0: 左 12.34 { // int biao[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; int biao[10] = {0x80,0xd9,0x44,0x50,0x19,0x12,0x02,0xd8,0x00,0x10 }; int wzbiao[4] = {0x0E, 0x0D, 0x0b, 0x7}; int i; for(i=0; i<8; i++) gpio_set((PTXn_e)(PTC0+i), (biao[sz]>>i)&1); //0xf9 最低位 1111, 1001 & 1 for(i=8; i<12; i++) gpio_set((PTXn_e)(PTC0+i), (wzbiao[wz]>>(i-8))&1); if(xs) gpio_set(PTC19, 0); else gpio_set(PTC19, 1); } void smg_set(int num, int dotPos) { int qian = num/1000; int bai = (num%1000)/100; int shi = (num%100)/10; int ge = num%10; segNum[0] = qian; segNum[1] = bai; segNum[2] = shi; segNum[3] = ge; segXs = dotPos; }
时间: 2024-03-15 21:41:43 浏览: 21
这段代码看起来像是在控制一个数码管显示器。其中包括一个函数用于初始化控制引脚,一个函数用于设置小数点位置和显示数字,以及一个函数用于显示小数。其中,数码管的引脚通过 MK60_gpio.h 中定义的 PTXn_e 枚举类型来表示,而显示的数字则通过一个长度为4的 uint8 数组 segNum 来存储,小数点位置则通过一个 uint8 类型的变量 segXs 来表示。在显示数字时,使用了常见的共阴数码管的编码方式,即通过一个长度为10的数组 biao 来存储每个数字的编码,然后通过按位与操作将数字的每一位对应的引脚控制成高电平或低电平。在显示小数时,则是将小数点对应的引脚控制成低电平。
相关问题
修改C51代码将显示的数字变为285: #include "public.h" #include "24c02.h" #include "key.h" #include "smg.h" #include "lcd1602.h" #define EEPROM_ADDRESS 0 //定义数据存入EEPROM的起始地址 void main() { u8 key_temp=0; u8 save_value=197; u8 save_buf[3]; lcd1602_init(); while(1) { key_temp=key_scan(0); save_value=at24c02_read_one_byte(EEPROM_ADDRESS); if(key_temp==KEY3_PRESS) { save_value++; } else if(key_temp==KEY4_PRESS) { save_value--; } save_buf[0]=save_value/100+48; save_buf[1]=save_value%100/10+48; save_buf[2]=save_value%100%10+48; lcd1602_show_string(0,0,save_buf); at24c02_write_one_byte(EEPROM_ADDRESS,save_value); } }
要将显示的数字变为285,可以将保存的初始值改为285,即将 `u8 save_value=197;` 改为 `u8 save_value=285;`。同时,将显示的位数也要相应地增加,可以将 `u8 save_buf[3];` 改为 `u8 save_buf[4];`,并在计算每位数字时进行相应的修改,具体地,可以将 `save_buf[0]=save_value/100+48;` 改为 `save_buf[0]=save_value/1000+48;`,将 `save_buf[1]=save_value%100/10+48;` 改为 `save_buf[1]=save_value%1000/100+48;`,将 `save_buf[2]=save_value%100%10+48;` 改为 `save_buf[2]=save_value%100/10+48;`,将 `lcd1602_show_string(0,0,save_buf);` 改为 `lcd1602_show_string(0,0,save_buf+1);`。最后,将修改后的代码烧录到目标板上即可。
smg.h添加在哪里
smg.h是一个.h文件,通常用于包含一些类、函数或宏的声明。根据文件名可以推测,它可能与SMG(System Management Gateway,系统管理网关)相关。
一般情况下,smg.h文件应该被添加到需要使用SMG功能的源代码文件中。在C/C++编程中,可以通过使用#include指令来引入smg.h文件。
在添加smg.h文件之前,需要确保文件路径、文件名以及编译器的设置是正确的。一般选择一个源代码文件中的合适位置添加即可,比如主功能函数的上方。可以在需要使用SMG功能的函数上方添加#include "smg.h"语句。
需要注意的是,如果使用的是第三方库或开源代码,需要查看相关文档或示例代码,了解如何正确添加smg.h文件。有时候可能需要按照特定的顺序添加头文件,以确保正确的编译和链接。
总之,smg.h文件应该被添加到需要使用SMG功能的源代码文件中,并且需要符合正确的文件路径、文件名和编译器设置。