历史上的今天
今天是:2024年11月06日(星期三)
2019年11月06日 | TM1650模块单片机源程序(子函数)
2019-11-06 来源:51hei
单片机源程序如下:
#include #include"tm1650.h" void Delay_us(uint i) //us延时 { for(;i>0;i--) { _nop_(); // _nop_(); // _nop_(); } } void I2CStart(void) //开始信号 { CLK_H; DIO_H; Delay_us(5); DIO_L; } void I2Cask(void) //ACK信号 { uchar timeout = 1; CLK_H; Delay_us(5); CLK_L; while((DIO)&&(timeout<=100)) { timeout++; } Delay_us(5); CLK_L; } void I2CStop(void) //停止信号 { CLK_H; DIO_L; Delay_us(5); DIO_H; } void I2CWrByte(uchar oneByte) //写一个字节高位在前,低位在后 { uchar i; CLK_L; Delay_us(1); for(i=0;i<8;i++) { oneByte = oneByte<<1; DIO = CY; CLK_L; Delay_us(5); CLK_H; Delay_us(5); CLK_L; } } uchar Scan_Key(void) // 按键扫描 { uchar i; uchar rekey; I2CStart(); I2CWrByte(0x49);//读按键命令 I2Cask(); //DIO_H; for(i=0;i<8;i++) { CLK_H; rekey = rekey<<1; if(DIO) { rekey++; } Delay_us(5); CLK_L; } I2Cask(); I2CStop(); return(rekey); } void TM1650_Set(uchar add,uchar dat) //数码管显示 { //写显存必须从高地址开始写 I2CStart(); I2CWrByte(add); //第一个显存地址 I2Cask(); I2CWrByte(dat); I2Cask(); I2CStop(); }
史海拾趣
|
我想在两个程序中使用同一个串口,由于不能使用CreateFile打开两次串口,所以需要使用同一个HANDLE,而直接使用这个HANDLE又不行,在PC上可以使用DuplicateHandle来进行一个拷贝,但是在CE上这个函数说只能拷贝Event、Mutex、Semaphore这三种类型的 ...… 查看全部问答> |
|
最近做了一块S3C2440的板子,程序从FLASH搬4K到2440内部的SRAM中初始化CPU,SDRAM后,(前4K代码运行正常,有指示灯显示),搬代码到SDRAM中,在SDRAM运行,就运行不了,程序跑飞,不知道为什么? &n ...… 查看全部问答> |
|
http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41 Windows Driver Installer Setup Program (For PL2303 HXA, XA, HXD, EA, RA, SA, TA, TB versions) Installer version & Build date: 1.8.19 (2013-8-14) Windows XP (3 ...… 查看全部问答> |
|
【IAR Error】IAR MSP430编译报错:error 无编号警告类型: 1、Sat Jun 23, 2012 17:41:05: The stack pointer for stack \'Stack\' (currently Memory:0xF5336) is 原因:http://blog.sina.com.cn/s/blog_4c0cb1c0010153l9.html IAR相关设置:Tools->Option->Stack->Wa ...… 查看全部问答> |
|
我在使用PIC24HJ128GP204,发现程序在休眠状态下会被复位,仿真发现复位后RCON的值是0x48,即发生了软件复位,但我的程序中并没有调用过RESET指令。有大侠遇到过这样的问题的吗?求解… 查看全部问答> |




