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

📄 lcd.c

📁 该程序在DSP2407芯片上实现液晶显示的功能
💻 C
字号:
/*;==========================================================================*
* File name : lcd.c *
* Author: Davidlee *
* Data: 2007.05.17*
* Version: 2.0 *
* Organization: Tianhuang Technology Co.ltd
* Description :
*          液晶显示结果:
*
*          THF-2  DSP 
*          实验与开发系统        
*          天煌教仪伴你成长     
*		   日期:2007.05.17
;==========================================================================*
*/
#include "F2407_c.H" 	         //;the header file  

#define led_0  port2000          //对应发光二极管外部存储单元地址       
#define led_en port6000          //对应数码管使能脚外部存储单元地址
#define led_da port8000          //对应送数码管数据脚外部存储单元地址
#define lcd_en portC000          //对应液晶显示器使能脚外部存储单元地址
#define lcd_da port4000          //对应液晶显示器数据脚外部存储单元地址

ioport  unsigned   port2000;
ioport  unsigned   port6000;
ioport  unsigned   port8000;
ioport  unsigned   portC000;
ioport  unsigned   port4000;

int temp1,temp2,lcd_enable,lcd_disable;
	    
 	     asm(" .word   #0ffffh ");    //密码位
	     asm(" .word   #0ffffh ");
	     asm(" .word   #0ffffh ");
	     asm(" .word   #0ffffh ");
//=======================================================
//子程序声明
//=======================================================
void interrupt nothing();                            /*空指令,直接返回*/
void Delay();                                        /*延时子程序*/
void KICK_DOG();                                     /*看门狗子程序*/
void system_init();                                  /*系统初始化子程序*/
void LCDinitial();                                   /*液晶初始化子程序*/
void display();                                      /*显示子程序*/
void lcd_set();                                      /*写LCD子程序*/

//=======================================================
//液晶显示字符数组
//=======================================================
unsigned int lcd_table[]={0x20,0x54,0x48,0x46,0x2D,0x32,0x20,0x20,0x20,0x20,0x20,
	                      0x44,0x53,0x50,0x20,0x20,0xCC,0xEC,0xBB,0xCD,0xBD,0xCC,
	                      0xD2,0xC7,0xB0,0xE9,0xC4,0xE3,0xB3,0xC9,0xB3,0xA4,0xCA,
	                      0xB5,0xD1,0xE9,0xD3,0xEB,0xBF,0xAA,0xB7,0xA2,0xCF,0xB5,
	                      0xCD,0xB3,0x20,0x20,0xC8,0xD5,0xC6,0xDA,0x3A,0x32,0x30,
	                      0x30,0x37,0x2E,0x30,0x35,0x2E,0x31,0x37,0x20};
//=======================================================
main()
{
    system_init();

	lcd_enable=0x0F7;           /* 变量初始化*/
	lcd_disable=0x0F5;
	
	LCDinitial();
	display();
						
    while(1) 
    {
         ;
    }
}
//=======================================================
//该中断服务程序主要是为了防止干扰,不作任何其他操作
//=======================================================
void  interrupt nothing()
{
         return;                 /*中断直接返回*/
}

void Delay(unsigned int count)
{
    int  i;
    for (i = 0; i < count; i++) {}
}

void  KICK_DOG()                 /*复位看门狗密钥*/
{ 
     WDKEY=0x5555;
     WDKEY=0xAAAA;
}
//=======================================================
//系统初始化子程序
//=======================================================
void   system_init()
{
     asm(" SETC INTM " );       //关中断
     asm(" CLRC  SXM " );       //符号位不作扩展    
     asm(" SETC  OVM " );       //遇到溢出,累加器被设置为它的最大正值或负值
     asm(" CLRC  CNF " );       //B0设置为数据存储区

     IMR=0;
     IFR=0xFFFF;                //清除全部中断标志,"写1清0"

     WDCR=0x6F;
     KICK_DOG();                //看门狗不使能
        
     temp1=0x0;
     asm(" OUT _temp1,0ffffh"); //设置外部等待为0
 
     MCRB=0xFFFD;               //设置仿真端口
     
     temp2=0xFFFF;
     asm(" OUT _temp2,02000h"); //关闭I/O口发光二极管
     asm(" OUT _temp2,06000h"); //关闭数码管*/
}

void lcd_set(unsigned int enable,unsigned int data,unsigned int disable)
{
	lcd_en=enable;
	lcd_da=data;
	Delay(30);
	lcd_en=disable;
	Delay(300);
}
//=======================================================
//LCD初始化子程序
//=======================================================
void LCDinitial()
{
	lcd_set(lcd_enable&0x0FE,0x030,lcd_disable&0x0FE);//基本指令
	lcd_set(lcd_enable&0x0FE,0x001,lcd_disable&0x0FE);//清寄存器,也为待命模式
	Delay(5);
	lcd_set(lcd_enable&0x0FE,0x008,lcd_disable&0x0FE);//送数据,显示关(整体显示,游标,游标位置均关)
	lcd_set(lcd_enable&0x0FE,0x00C,lcd_disable&0x0FE);//整体显示
	Delay(2);
}
//=======================================================
//LCD显示子程序
//=======================================================
void display()
{
	unsigned int count,lcd_data;
		
	lcd_set(lcd_enable&0x0FE,0x080,lcd_disable&0x0FE);//启动液晶显示
	for(count=0;count<64;count++)
	{
		lcd_data=lcd_table[count];
		lcd_set(lcd_enable,lcd_data,lcd_disable);
	}
}




⌨️ 快捷键说明

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