#include #include #include #include "DHT11.h" #include "OLED.h" #include "hal_max7219.h" uchar ExternFlag=0; void clock_setup(void) { CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定 CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ } void init_sensor_io(void) { //1.设置IO为普通IO P0SEL |= 0xC0; P1SEL |= 0x07; //2.设置编码口为输入 P0DIR &= ~0xC0; P1DIR &= ~0x07; } uchar get_sensor_id(void) { volatile uchar temp = P0_6<<4|P0_7<<3|P1_0<<2|P1_1<<1|P1_2; return temp; } /**************************************************************************** * 程序入口函数 ****************************************************************************/ void main(void) { uchar disp[]="实验人体红外声音";//点阵需要显示的汉字,需包含在字库中的汉字才能显示 uchar temp8,i; uchar buf[16]; uchar chinese[3]; clock_setup(); //系统时钟设置,精确延时必须要设置 Delay_ms(1000); //让设备稳定 port_init(); initial_lcd(); Init_MAX7219(); clear_screen(); //清屏 disp_string_8x16_16x16(1,1,"武汉唯众智创科技"); //显示字符串,括号里的参数分别为(PAGE,列,字符串指针) disp_string_8x16_16x16(3,1,"----实验3.3-----"); Delay_ms(1000); while(1) { ChineseUpdate(disp); //最多转换8个汉字 for(i=0;i<8;i++){ chinese[0] = disp[i*2]; chinese[1] = disp[i*2+1]; chinese[2] = '\0'; clear_screen(); temp8 = get_sensor_id(); sprintf(buf,"编号: %d",temp8); disp_string_8x16_16x16(1,1,buf); sprintf(buf,"当前显示: %s",chinese); disp_string_8x16_16x16(3,1,buf); Display_Dianzhen(4+i*4,3000); //点阵显示函数 } } } |