⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1415.lst

📁 BH1415调频芯片的控制程序
💻 LST
字号:
C51 COMPILER V6.12  1415                                                                   12/12/2007 00:28:05 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 1415
OBJECT MODULE PLACED IN .\1415.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE .\1415.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #include<stdio.h>
   4          #include<intrins.h>
   5          
   6          #define uchar unsigned char
   7          #define uint  unsigned int 
   8          
   9          sbit MUTE = P2^4;
  10          sbit DI   = P2^5;
  11          sbit CLK  = P2^6;
  12          sbit CE   = P2^7;
  13          sbit KEY_1= P1^4;
  14          sbit KEY_2= P1^5;
  15          sbit KEY_3= P1^6;
  16          sbit KEY_4= P1^7;
  17          
  18          sbit rs	= P2^0;
  19          sbit rw  = P2^1;
  20          sbit ep  = P2^2;
  21          sbit lg  = P2^3;
  22          
  23          void Send_16(uint ui_Date, uchar uc_MONO ,uchar uc_PD);        //发送数据函数
  24          void Key_Scan_1(void);     //控制静音
  25          void Key_Scan_2(void);     //频率步进 精度0.1MHZ
  26          void Key_Scan_3(void);     //频率步退 精度0.1MHZ
  27          void Key_Scan_4(void);     //立体声控制
  28          
  29          void Delay(uchar ms);
  30          
  31          void Disp(void);
  32          void lcd_wdat(uchar dat);
  33          void lcd_wcmd(uchar cmd);
  34          void lcd_pos(uchar pos);
  35          void lcd_init(void);
  36          void lcd_disp(uchar pos,uchar dat);	
  37          bit  lcd_bz(void);
  38          
  39          
  40          uchar uc_Count_1;
  41          uchar uc_Count_2;
  42          uchar uc_Count_3;
  43          uchar uc_Count_4;
  44          uint ui_TEMP_1;      //保存频率数据
  45          uint ui_TEMP_2;      //保存立体声数据
  46          uint ui_TEMP_3; 	   //保存静音数据
  47          uint ui_TEMP_4; 	   //
  48          
  49          /**********************************主程序*************************************/
  50          
  51          void main(void)
  52          {
  53   1      
  54   1          Send_16(0x3e7,0x01,0x00);
  55   1      	 ui_TEMP_2=0x01;
C51 COMPILER V6.12  1415                                                                   12/12/2007 00:28:05 PAGE 2   

  56   1      	 MUTE=0;
  57   1          Disp();
  58   1          while(1)
  59   1                 { 
  60   2      
  61   2                     Key_Scan_1();
  62   2                     Key_Scan_2();
  63   2                     Key_Scan_3();
  64   2                     Key_Scan_4();
  65   2      //               Disp();
  66   2                  }
  67   1      	 					    
  68   1      
  69   1      }
  70          
  71          /**********************************主程序*************************************/
  72          
  73          /**********************************显示子程序*************************************/
  74          
  75          void Disp(void)
  76          {
  77   1      
  78   1      	lcd_init();				// 初始化LCD			
  79   1      	Delay(10);
  80   1      		 
  81   1      	    lcd_disp(0,70);
  82   1      		 lcd_disp(1,77);
  83   1      		 lcd_disp(2,58);
  84   1      		 if(ui_TEMP_1>=1000)
  85   1      	       {
  86   2      	         lcd_disp(3,ui_TEMP_1/1000%10+48);
  87   2      			 }
  88   1      	    lcd_disp(4,ui_TEMP_1/100%10+48);
  89   1      		 lcd_disp(5,ui_TEMP_1/10%10+48);
  90   1      		 lcd_disp(6,46);
  91   1      		 lcd_disp(7,ui_TEMP_1%10+48);
  92   1      		 
  93   1      		 if(ui_TEMP_2)
  94   1      		 {
  95   2      		   lcd_disp(9,83);
  96   2      		   lcd_disp(10,84);
  97   2      		   lcd_disp(11,69);
  98   2      		 }
  99   1      		 
 100   1      		 if(ui_TEMP_3)
 101   1      		 {
 102   2      		 	lcd_disp(13,77);
 103   2      		    lcd_disp(14,85);
 104   2      		 }
 105   1      		  lcd_disp(15,127);
 106   1      		  lcd_disp(64,126);
 107   1      		  lcd_disp(66,57);
 108   1      		  lcd_disp(67,57);
 109   1      		  lcd_disp(69,77);
 110   1      		  lcd_disp(70,85);
 111   1      		  lcd_disp(71,83);
 112   1      		  lcd_disp(72,73);
 113   1      		  lcd_disp(73,67);
 114   1      		  lcd_disp(76,79);
 115   1      		  lcd_disp(77,78);
 116   1      		  lcd_disp(79,127);
 117   1      
C51 COMPILER V6.12  1415                                                                   12/12/2007 00:28:05 PAGE 3   

 118   1      
 119   1      }
 120          
 121          /**********************************显示子程序*************************************/
 122          
 123          /**********************************延时子程序********************************/
 124          
 125          
 126          void Delay(uchar ms)
 127          {							// lcd延时子程序
 128   1         uchar i;
 129   1      	while(ms--)
 130   1      	{
 131   2      		for(i = 0; i< 250; i++)
 132   2      		{
 133   3      			_nop_();
 134   3      			_nop_();
 135   3      			_nop_();
 136   3      			_nop_();
 137   3      		}
 138   2      	}
 139   1      }
 140          
 141          /**********************************延时子程序********************************/
 142          
 143          /**********************************LCD函数*********************************/
 144          
 145          void lcd_init()
 146          {							//LCD初始化设定
 147   1      	lcd_wcmd(0x38);			//
 148   1      	Delay(1);
 149   1      	lcd_wcmd(0x38);			//
 150   1      	Delay(1);
 151   1      	lcd_wcmd(0x38);			//
 152   1      	Delay(1);
 153   1      	lcd_wcmd(0x0c);			//
 154   1      	Delay(1);
 155   1      	lcd_wcmd(0x06);			//
 156   1      	Delay(1);
 157   1      	lcd_wcmd(0x01);			//清除LCD的显示内容
 158   1      	Delay(1);
 159   1      }
 160          
 161          
 162          bit  lcd_bz()
 163          {							// 测试LCD忙碌状态
 164   1      	bit result;
 165   1      	rs = 0;
 166   1      	rw = 1;
 167   1      	ep = 1;
 168   1      	_nop_();
 169   1      	_nop_();
 170   1      	_nop_();
 171   1      	_nop_();
 172   1      	result = (bit)(P0 & 0x80);
 173   1      	ep = 0;
 174   1      	return result;	
 175   1      }
 176          
 177          void lcd_wcmd(uchar cmd)				  // 写入指令数据到LCD
 178          {							
 179   1      
C51 COMPILER V6.12  1415                                                                   12/12/2007 00:28:05 PAGE 4   

 180   1      	while(lcd_bz());
 181   1      	rs = 0;
 182   1      	rw = 0;
 183   1      	ep = 0;
 184   1      	_nop_();
 185   1      	_nop_();	
 186   1      	P0 = cmd;
 187   1      	_nop_();
 188   1      	_nop_();
 189   1      	_nop_();
 190   1      	_nop_();
 191   1      	ep = 1;
 192   1      	_nop_();
 193   1      	_nop_();
 194   1      	_nop_();
 195   1      	_nop_();
 196   1      	ep = 0; 
 197   1      }
 198          
 199          void lcd_disp(uchar pos,uchar dat)	
 200          {	
 201   1      					
 202   1      	lcd_wcmd(pos | 0x80);		 //设定显示位置			
 203   1         while(lcd_bz());				 //写入字符显示数据到LCD
 204   1      	rs = 1;
 205   1      	rw = 0;
 206   1      	ep = 0;
 207   1      	P0 = dat;
 208   1      	_nop_();
 209   1      	_nop_();
 210   1      	_nop_();
 211   1      	_nop_();
 212   1      	ep = 1;
 213   1      	_nop_();
 214   1      	_nop_();
 215   1      	_nop_();
 216   1      	_nop_();
 217   1      	ep = 0;
 218   1      }
 219          
 220          /**********************************LCD函数*********************************/
 221          
 222          /**********************************键盘扫描1*********************************/
 223          
 224          void Key_Scan_1(void)      //控制静音
 225          {
 226   1       if(KEY_1==0)
 227   1        {
 228   2          {
 229   3            Delay(20);
 230   3            if(KEY_1==0)
 231   3              {
 232   4                 MUTE=(uc_Count_1++)%2;
 233   4      			  ui_TEMP_3=MUTE;
 234   4                 while(KEY_1==0);
 235   4      		   }
 236   3      		Disp();
 237   3            while(KEY_1==0);
 238   3          } 
 239   2        }   
 240   1      }
 241          /**********************************键盘扫描1*************************************/
C51 COMPILER V6.12  1415                                                                   12/12/2007 00:28:05 PAGE 5   

 242          
 243          /**********************************键盘扫描2*************************************/
 244          
 245          void Key_Scan_2(void)      //频率步进
 246          {
 247   1       if(KEY_2==0)
 248   1        {
 249   2         Delay(20);
 250   2          if(KEY_2==0)
 251   2           {
 252   3            uc_Count_2++;
 253   3            if(uc_Count_2==200)
 254   3             {
 255   4               uc_Count_2=0;
 256   4               Send_16(0x3e7,ui_TEMP_2,0x00);
 257   4             }
 258   3            Send_16(ui_TEMP_1+1,ui_TEMP_2,0x00);
 259   3      		Disp();
 260   3            while(KEY_2==0);
 261   3           }
 262   2        } 
 263   1        
 264   1      }
 265          
 266          /**********************************键盘扫描2*************************************/
 267          
 268          /**********************************键盘扫描3*************************************/
 269          
 270          void Key_Scan_3(void)      //频率步退
 271          {
 272   1       if(KEY_3==0)
 273   1        {
 274   2         Delay(20);
 275   2          if(KEY_3==0)
 276   2           {
 277   3            uc_Count_3++;
 278   3            if(uc_Count_3==300)
 279   3             {
 280   4               uc_Count_3=0;
 281   4               Send_16(0x3e7,ui_TEMP_2,0x00);
 282   4             }
 283   3            Send_16(ui_TEMP_1-1,ui_TEMP_2,0x00);  
 284   3      		Disp();
 285   3            while(KEY_3==0);
 286   3           }
 287   2        }
 288   1      
 289   1      }
 290          
 291          /**********************************键盘扫描3*************************************/
 292          
 293          /**********************************键盘扫描4*************************************/
 294          
 295          void Key_Scan_4(void)     //立体声控制
 296          {
 297   1       if(KEY_4==0)
 298   1        {
 299   2         Delay(20);
 300   2          if(KEY_4==0)
 301   2           {
 302   3            uc_Count_4++;
 303   3            if(ui_TEMP_2=uc_Count_4%2)
C51 COMPILER V6.12  1415                                                                   12/12/2007 00:28:05 PAGE 6   

 304   3             Send_16(ui_TEMP_1,0x01,0x00);
 305   3            else
 306   3             Send_16(ui_TEMP_1,0x00,0x00);
 307   3      		 Disp();
 308   3            while(KEY_4==0);
 309   3           }
 310   2        }  
 311   1      }
 312          
 313          /**********************************键盘扫描4*************************************/
 314          
 315          /**********************************数据发送*************************************/
 316          
 317          void Send_16(uint ui_Date,uchar uc_MONO ,uchar uc_PD)
 318          {
 319   1       uchar i;
 320   1       ui_TEMP_1=ui_Date;
 321   1       CLK=0;
 322   1       CE=0;
 323   1       CE=1;
 324   1       for(i=11;i;--i)
 325   1        {
 326   2        DI=ui_Date&0x01; 
 327   2        ui_Date>>=1;
 328   2        CLK=1;
 329   2        CLK=0;
 330   2        }  
 331   1       DI=uc_MONO&0x01;
 332   1       CLK=1;
 333   1       CLK=0;
 334   1       DI=uc_PD&0x20;
 335   1       CLK=1;
 336   1       CLK=0;
 337   1       uc_PD<<=1;
 338   1       DI=uc_PD&0x20;
 339   1       CLK=1;
 340   1       CLK=0;
 341   1       DI=1;
 342   1       CLK=1;
 343   1       CLK=0;
 344   1       DI=0;
 345   1       CLK=1;
 346   1       CLK=0;
 347   1       CE=0;
 348   1      }
 349          
 350          /**********************************数据发送*************************************/
 351          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    750    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -