• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 25
    下载次数
  • 2010-03-05 06:05
    上传日期
MSP430为主控制器,HT1621驱动段式LCD源程序
HT1621MSP430C.rar
  • HT1621 C程序.txt
    5.5KB
内容介绍
/******************************************************************************** *program name:lcdht1621.c *function: TEST TO HT1621(drive) *Design: Zhengyingjun *Date:2005-06-28 *********************************************************************************/ #include<msp430x14x.h> #include<intrinsics.h> #define uchar unsigned char #define uint unsigned int /********************************************************* * 接口定义:DATA<--->P2.5; CS<--->P2.6; WR<--->P2.7 * **********************************************************/ #define BIAS 0X52 /*定义1 3 偏压4 背极*/ #define XTAL32 0X28 /*使用外部晶振*/ #define RC256 0X30 /*使用内部256KRC 振荡器*/ #define SYSEN 0X02 /*打开振荡发生器*/ #define LCDON 0X06 /*打开LCD*/ #define SYSDIS 0X00 /*关闭振荡发生器*/ #define LCDOFF 0X04 /*显示关闭*/ #define TONE4 0X80 /*设置BZ 输出频率为4K*/ #define TONEON 0X12 /*打开BZ 音频输出*/ #define TONEOFF 0X10 /*关闭BZ 音频输出*/ #define CLRWDT 0X1c /*清零WDT*/ #define F1 0X40 /*WDT设置为4 秒溢出*/ #define IRQEN 0X10 /*IRQ 输出禁止*/ #define IRQDIS 0X00 /*IRQ 输出允许*/ #define WDTEN 0X0e /*打开WDT*/ #define WDTDIS 0X0a /*关闭WDT*/ #define TIMERDIS 0X08 /*关闭时基输出*/ uchar table[32]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0xbf,0x86,0xdb,0xcf,0xe6,0xed, 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0xbf,0x86,0xdb,0xcf,0xe6,0xed }; void Start_spi(void); void Delay(void); void Delay1s(void); void SENDCOMA(uchar com); void SENDCOMB(uchar adr); void SENDCOMC(uchar com); void disp(uchar dat); void DISP_ALL(uchar data); void SendByte(uchar dat); void SendBit(uchar dat,uchar bitcnt); /********************************************************************** 延时函数 ***********************************************************************/ void Delay(void) { uchar i; for(i=0;i<10;i++); /*用于调整CLK 脉冲宽度*/ } /********************************************************************** 长延时函数 ***********************************************************************/ void Delay1s(void) { uchar i; uint j; for(i=0;i<100;i++) for(j=0;j<1300;j++); } /********************************************************************* 发送命令函数A类 发送HT1621 命令时要先发送ID 值,及命令字用于设置HT1621. *********************************************************************/ void SENDCOMA(uchar com) { Start_spi(); SendBit(0X80,4); /*发送设置命令ID=100 0*/ SendByte(com); /*发送命令字*/ } /********************************************************************* 发送命令函数B 类 发送HT1621 命令时要先发送ID 值,后发送要写入数据起始地址, 用于对RAM 写操作(调用此函数后即可发送数据) adr 是高5 位有效 *********************************************************************/ void SENDCOMB(uchar adr) { Start_spi(); SendBit(0XA0,4); /*发送写显示RAM 命令ID=101 0*/ SendBit(adr,5); /*指定写入地址*/ } /********************************************************************* 发送命令函数(C 类) 发送HT1621 命令时要先发送ID 值.然后发送C 类的命令字 *********************************************************************/ void SENDCOMC(uchar com) { Start_spi(); SendBit(0X90,4); /*发送命令ID=100 1*/ SendByte(com); /*发送命令字*/ } /********************************************************************** 向显示缓冲区填充,以最简便的形式显示数据 **********************************************************************/ void disp(uchar dat) { uchar i; SENDCOMB(0x00); /*把数据指针指回0 接着写入数据*/ for(i=0;i<16;i++) /*写入16 字节数据*/ { SendByte(dat); /*写入数据*/ } } /****************************************************** 全显示 ******************************************************/ void DISP_ALL(uchar data) { SENDCOMA(BIAS); /*设置偏压,背极数*/ SENDCOMA(RC256); /*设为内晶振256K*/ SENDCOMA(SYSEN); /*启动振荡器*/ SENDCOMA(LCDON); /*显示使能*/ SENDCOMA(TIMERDIS); /*禁止时基输出*/ disp(data); /*输出全显数据*/ } /********************************************************************** 主函数 **********************************************************************/ void main() { uchar i,temp; WDTCTL=WDTPW+WDTHOLD; P2DIR|=BIT5+BIT6+BIT7; while(1) { for(i=0;i<1;i++) { temp=0x88;//table[i]; DISP_ALL(temp); /*全显示测量*/ // Delay1s(); } } } /************************************************************************ 名称: 发送数据位 ************************************************************************/ void SendBit(uchar dat,uchar bitcnt) { uchar i; for(i=0;i<bitcnt;i++) { if(( dat & 0X80 ) == 0) P2OUT&=~BIT5;//SDA_PORT = 0; else P2OUT|=BIT5;//SDA_PORT = 1; /*发送数据由高位到低位传送*/ Delay(); P2OUT|=BIT7;//CLK_PORT = 1; /*置时钟线为高通知被控器开始接收数位*/ Delay(); P2OUT&=~BIT7;//CLK_PORT = 0; /*钳住总线准备下一个数据位*/ dat=dat<<1; /*发送数据左移一位*/ } } /********************************************************************** 起动ht1621 **********************************************************************/ void Start_spi(void) { P1OUT|=BIT6;//CS_PORT=1; P1OUT|=BIT7;//CLK_PORT=1; P1OUT|=BIT5;//SDA_PORT=1; Delay(); P1OUT&=~BIT6;//CS_PORT=0; P1OUT&=~BIT6;//CS_PORT=0; P1OUT&=~BIT7;//CLK_PORT=0; P1OUT&=~BIT7;//CLK_PORT=0; } /************************************************************************ 发送字节函数,向ht1621 发送字节数据数据单元dat ************************************************************************/ void SendByte(uchar dat) { SendBit(dat,8); /*发送字节*/ }
评论
    相关推荐
    • MSP430-LCD-HT1621-.rar
      MSP430和LCD驱动芯片HT1621的驱动程序
    • ht1622-msp430f149.zip
      HT1622数码管液晶显示器驱动程序,基于M430f149单片机,亲测可用!注意最后面的addr是地址,更改地址后,即可知道数码管亮的位置,便于编程!
    • ht1621formsp430.rar
      ht1621MSP430的C驱动程序
    • MSP430F2013_HT1621_01.rar
      MSP430f2013代码,ht1621显示代码
    • ht1621.rar
      一般的液晶显示驱动程序,是结合MSP430F149的微功耗芯片设计制作的.尽请提出宝贵的意见!
    • ht1621.rar
      msp430平台的ht1602驱动程序。
    • 23825749430-ht1621.rar
      经典msp149驱动液晶1621程序,是单片机利用c语言实现的经典范例
    • HT1621_1622_UART_DMA_RTC.rar
      和泰的HT1621B,1622 段码液晶,段码LCD,STM32驱动程序 内含RTC,DMA接收UART控制1621输出,设置、读取RTC时间,设置温度等参数。 HAL库和eclipse下编译,MDK的兄弟,请自行复制源码。驱动重点在main.h;ht1621b.h;ht...
    • MSP430例程
      MSP430单片机的开发例程
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路