📄 lcd.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 + -