| 
 
| 本帖最后由 superminx 于 2014-4-21 15:32 编辑 
 各位大神。本人是刚接触单片机的,很菜鸟。最近在自学PIC这东西。关于PIC驱动1621有些问题,求大神解救
 
 
 #include<PIC16F73.h>
 #include <stdio.h>
 
 #define BIAS        0X52                      //1/3偏压,4COM
 #define XTAL        0X28                      //系统时钟选择为外部XT振荡器
 #define WDTDIS      0X0A                      //禁止WDT溢出标志输出
 #define TIMERDIS    0X08                     //时基输出禁能
 
 #define SYSDIS      0X00                      //关闭系统时钟和偏压发生器
 #define SYSEN       0X02                      //打开系统时钟
 #define LCDON       0X06                      //打开偏压发生器
 #define LCDOFF      0x04                      //关闭LCD显示
 #define nop();
 
 #define CS   RC5
 #define WR   RC3
 #define DATA RC4
 #define LED  RC2                    //这个是我验证的输出端口,接LED;
 
 
 #define uchar unsigned char
 #define uint unsigned int
 /***************************延时子函数******************************/
 
 void delay1s()                            //延时1S
 {
 uchar i;
 uint j;
 for(i=0;i<10;i++)
 for(j=0;j<13000;j++);
 }
 
 /*************************写数据函数***************************/
 void Ht1621Wr_Data(uchar dat,uchar cnt)   //从高位cnt写入数据
 {
 uchar i;
 for(i=0;i<cnt;i++)
 {
 if((dat&0x80)==0)
 DATA=0;
 else
 DATA=1;
 WR=0;
 nop();
 nop();
 nop();
 WR=1;
 dat<<=1;
 }
 }
 
 
 /*************************发送命令写入函数***************************/
 void Ht1621WrCmd(uchar Cmd)
 {
 CS=0;
 nop();
 nop();
 Ht1621Wr_Data(0x80,4);                    //写入命令标志100
 Ht1621Wr_Data(Cmd,8);                     //写入8位 Cmd命令数据
 nop();
 nop();
 CS=1;
 nop();
 nop();
 
 }
 
 /***********************显示函数**************************/
 void display(unsigned char col,unsigned char pag)
 {
 pag<<=2;
 col<<=4;
 CS=0;
 nop();
 nop();
 Ht1621Wr_Data(0xA0,3);          //写入数据标志101
 Ht1621Wr_Data(pag,6);           //写入Y轴的数据(写入6位数据地址)
 Ht1621Wr_Data(col,4);            //写入X轴数据 (写入低4位数据)
 CS=1;
 nop();
 nop();
 }
 //*************************LCD off函数********************************/
 void LCD_OFF()
 {
 uchar i;
 uchar j=0;
 for(i=0;i<32;i++)
 {display(0x00,j);
 j++;
 }
 }
 
 /*************************HT1621B初始化设置*************************/
 void SETUP_HT1621()                       //HT1621偏压、背极、工作方式设置
 {
 CS=1;
 WR=1;
 DATA=1;
 nop();
 nop();
 nop();
 Ht1621WrCmd(BIAS);
 Ht1621WrCmd(XTAL);
 Ht1621WrCmd(WDTDIS);
 Ht1621WrCmd(SYSEN);
 Ht1621WrCmd(LCDON);
 Ht1621WrCmd(TIMERDIS);
 }
 
 //*******************************主函数******************************/
 main()                                  //主函数
 {
 ADCON1=0x06;           //这里,我查了很多网上的资料,不知道设置是否对
 TRISB=0x7C;                             //这是我设置按键输入的设置
 TRISC=0X00;                             //C口设为输出,以控制HT1621驱动LCD
 SETUP_HT1621();
 LCD_OFF();
 delay1s();
 
 while(1)
 {
 display(0x0f,2);          //在COM和SEG组成的4X32表格中,显示第二行的4个点。
 LED=~LED;
 delay1s();
 }
 }
 
 
 烧录进去,LED正常工作,但是LCD屏就死无反应,我实在是想不出办法,所以求各位大神解救。
 本人菜鸟一个,请见谅
 | 
 |