首页 > 编程知识 正文

51单片机基础知识,51单片机教程

时间:2023-05-06 16:10:18 阅读:179225 作者:2752

TM1640功能实现功能是将具体的灯珠定位在TM1640的初始化TM1640时钟配置开始信号、写入数据、结束信号、发送显示IO端口的初始化宏定义部分,实现控制

功能详细信息

本工艺在于使用51系列单片机实现多盏LED灯的定位显示控制功能

TM1640的初始化voidTM1640_init(U8invalue ) gpio _ write high (gpio 4,GPIO_PIN_1); //P41高dinDelay_some_time(1); gpio_writehigh(gpio4,GPIO_PIN_0); //P40高sclkif(invalue==dsptm1640_dis )//显示器({ TM1640Start ); //数据写入模式设定TM1640writebyte(DSP1640_dis ); //关闭显示控制TM1640Stop (; (else ) TM 1640开始); //数据写入模式设定TM1640writebyte(TM1640_fiexd ); //在数据命令设定地址中自动添加1 TM1640Stop (; TM1640Start (; //显示亮度设定TM1640writebyte(TM1640_display ); //显示命令控制脉冲宽度14/16 TM1640Stop (; TM1640时钟配置驱动TM1640必须自行根据数据手册配置时钟。 时钟信号的配置决定了tm1640的使用。

开始信号voidTM1640start(void ) gpio_writehigh ) gpio4,GPIO_PIN_1; 写//P41高丁Pio _ write high (gpio 4,GPIO_PIN_0)//P40高SCLK Delay_Some_Time(1 (写1 ); Gpio_writelow(gpio4,GPIO_PIN_1); //p41低电平dindelay_some_time(1; Gpio_writelow(gpio4,GPIO_PIN_1); //p40低电平sclkdelay_some_time(1; }写入数据void TM 1640写入字节(u8 date ) U8I; u8 Tmp; Tmp=date; Gpio_writelow(gpio4,GPIO_PIN_1); //p41低电平dingpio_writelow(gpio4,GPIO_PIN_0); //p40低电平sclkfor(I=0; i8; I ) gpio_writelow(gpio4,GPIO_PIN_0); //p40低电平sclkdelay_some_time(1; if(tmp0x01 ) gpio_writehigh ) gpio4,GPIO_PIN_1); //P41高dinDelay_some_time(1); }else{gpio_writelow(gpio4,GPIO_PIN_1); //p41低电平dindelay_some_time(1; }gpio_writehigh(gpio4,GPIO_PIN_0); //P40灯高SCLK Tmp=Tmp1; }gpio_writelow(gpio4,GPIO_PIN_0); //p40低电平sclkgpio_writelow(gpio4,GPIO_PIN_1); //p41低电平din (结束信号voidTM1640stop ) void ) gpio_writelow ) gpio4、GPIO_PIN_1; //p41低电平dingpio_writehigh(gpio4,GPIO_PIN_0); //P40高SCLK Delay_Some_Time(1 (写1 ); gpio_writehigh(gpio4,GPIO_PIN_1); delay_some_time(1; }发送显示voidTM1640_display(U8*a ) ) U8I; TM1640Start (; TM1640writebyte(0x40; //设定开始地址TM1640Stop (; TM1640Start (; TM1640writebyte(0xc0; for(I=0; i16; I ) ) TM 1640写入字节(a [ I ]; } TM1640Stop (; TM1640Start (; TM1640writebyte(0x8b; //设定开始地址TM1640Stop (; } IO端口初始化voidTM1640_gpio_config(void ) gpio_init ) gpiox、GPIO_PIN_x、GPIO_MODE_OUT_PP; //控制tm1640引脚dingpio_init(gpiox,GPIO_PIN_x,GPIO_MODE_OUT_PP ); //控制tm1640针SCLK}宏定义部#defineaddr_TM1640(0xc00x01 ) definedsptm 1640 _ dis0# definedsptm 1640 _ en B1////模式设定# 可以通过宏定义固定地址模式#define DSP1640_DIS0x80 //宏定义亮度关#define TM1640_DISPLAY0x8f //宏定义亮度11/16脉冲宽度调节特定的灯珠# definedsptm 1640 _ dis0u8r _ level [ 48 ]={0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,00,0x 00,000x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0x 00,0 u8 current _ level=0 //当前移位u16 led_data[8]={0}; u8 F[4]={0}; wile(1) disp_level(current_level; //--------/for(I=0; i 8; I ) for(j=0; j 4; j ) )/I1f(j ) ) (((r_level ) )2)0xf0)4)==current_level )/0 )8| ) ) ) ) r_level ) ) ) ) ) ) r_level ) ) ) I ) ) 652//i1j 315 } led _ data [ I ]=(f [1] 12 )|)| (F[0]8)| (F[3]4 //最后,显示TM1640_display((u8* ) led_data ); }voidmain(void ) { TM1640_GPIO_Config; TM1640_init(dsptm1640_dis; //TM1640初始化while(1) {deal_Disp ); }结束! 呃! 呃!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。