} }
8、DISPLAY-LED-数码管显示测试程序
/******************************************************************** //DM430-A型开发板数码管显示程序,依次显示0~7
//数码管控制采用74HC573锁存器控制,采用动态显示机制
//数码管为4位共阴型,对应的位低电平有效,可以控制位信号选择哪一位显示 ********************************************************************/
#include
#include \ //开发板配置头文件,主要配置IO端口信息
//*********************************************************************** // MSP430IO口初始化
//*********************************************************************** void Port_Init() {
LED8SEL = 0x00; //设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; //设置IO口方向为输出 LED8PORT = 0xFF; //P2口初始设置为FF
DATASEL = 0x00; //设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; //设置IO口方向为输出 DATAPORT = 0xFF; //P4口初始设置为FF
CTRSEL = 0x00; //设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; //设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; //P6口初始设置为FF }
//*********************************************************************** // 74HC573控制数码管动态扫描并显示数据
//***********************************************************************
void Display() {
uchar i,j;
j=0x01; //此数据用来控制位选 for(i=0;i<8;i++) {
DCTR1; //控制数码管段数据的74HC573的LE管脚置高 WCTR1; //控制数码管位的74HC573的LE管脚置高
DATAPORT=~j; //设置要显示的位,也就是哪一个数码管亮 WCTR0; //锁存位数据,下面送上段数据以后,就显示出来了
DATAPORT=table[i]; //送要显示的数据,就是段数据,如显示0送的是0x3f
DCTR0; //锁存段数据,数码管亮一个时间片刻 j=j<<1; //移位,准备进行下一位的显示
delay_ms(200); //显示一个时间片刻,会影响亮度和闪烁性 } }
//*********************************************************************** // 主程序
//*********************************************************************** void main(void) {
WDT_Init(); //看门狗初始化 Clock_Init(); //时钟初始化
Port_Init(); //端口初始化,用于控制IO口输入或输出 while(1) {
Display(); //调用显示函数,依次显示1~7 } }
9、DS18B20-DS18B20采集温度测试程序
/******************************************************************** //DM430-A型开发板温度传感器DS18B20控制程序,显示环境温度,未校准
//DS18b20的C语言驱动程序,三位数码管显示,读取当前环境温度,显示精度达0.1度,温度范围0-99度
//DS18B20 详细引脚功能描述1、GND 地信号;2、DQ数据输入出引脚。开漏单总线接口引脚。当被用在寄生电源下
//也可以向器件提供电源;3、VDD可选择的VDD 引脚。当工作于寄生电源时,此引脚必须接地。
//DS18B20 的使用方法。DS18B20 采用的是1-Wire 总线协议方式 //即在一根数据线实现数据的双向传输,数据脚接在P53上
********************************************************************/ #include
//************************************************************************* // 初始化IO口子程序
//************************************************************************* void Port_Init() {
LED8SEL = 0x00; //设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; //设置IO口方向为输出 LED8PORT = 0xFF; //P2口初始设置为FF
DATASEL = 0x00; //设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; //设置IO口方向为输出 DATAPORT = 0xFF; //P4口初始设置为FF
CTRSEL = 0x00; //设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; //设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; //P6口初始设置为FF }
//************************************************************************* // 74HC573控制数码管动态扫描显示函数,显示采集到的温度
//*************************************************************************
void Display_DS18B20(uint data_b,uint data_s,uint data_g) {
uchar i,j;
j=0x01; //此数据用来控制位选 for(i=0;i<5;i++) //用后3位数码管来显示 {
DCTR1; WCTR1; DATAPORT=~j; WCTR0; j=(j<<1);
DATAPORT=0x00; //前5位都不显示,送数据00即可 DCTR0; delay_ms(2); }
DCTR1; //开始显示10位 WCTR1; DATAPORT=~j; WCTR0; j=(j<<1);
DATAPORT=table[A1]; DCTR0; delay_ms(1);
DCTR1; //开始显示个位 WCTR1; DATAPORT=~j; WCTR0; j=(j<<1);
DATAPORT=table[A2]|0x80; //显示小数点 DCTR0; delay_ms(1);
DCTR1; //开始显示小数点后面的数据 WCTR1; DATAPORT=~j; WCTR0; j=(j<<1);
DATAPORT=table[A3]; DCTR0; delay_ms(1);
DCTR1; WCTR1; DATAPORT=0xff; WCTR0; }
//************************************************************************* // DS18B20初始化
//*************************************************************************
unsigned char DS18B20_Reset(void) //初始化和复位 {
unsigned char i; DQ_OUT; DQ_CLR; delay_us(500); DQ_SET; DQ_IN;
delay_us(80); i = DQ_R;
delay_us(500); if (i) {
//延时500uS(480-960)
//延时80uS //延时500uS(保持>480uS)
return 0x00; } else {
return 0x01; } }
//************************************************************************* // DS18B20读一个字节函数
//*************************************************************************
unsigned char ds1820_read_byte(void) {
unsigned char i;
unsigned char value = 0; for (i = 8; i != 0; i--) {
value>>= 1; DQ_OUT; DQ_CLR;
delay_us(4); //*延时4uS DQ_SET; DQ_IN;
delay_us(10); //*延时10uS if (DQ_R) {
value|=0x80; }
delay_us(60); //*延时60uS }
return(value); }
//************************************************************************* // 向18B20写一个字节函数
//*************************************************************************
/*DS18B20字节写入函数*/
void ds1820_write_byte(unsigned char value) {
unsigned char i; for (i = 8; i != 0; i--) {
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库MSP430x14x系列单片机程序实例(6)在线全文阅读。
相关推荐: