点阵字符型LCD是专门用于显示数字、字母、图形符号及少量自定义符号的液晶显示器。这类显示器把LCD控制器、点阵驱动器、字符存储器、显示体及少量的阻容元件等集成一个液晶显示模块。鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,因此,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示模块。
点阵字符型液晶显示模块的控制器大多数为日立公司生产的HD44780及其兼容的控制电路,如SED1278(SEIKO EPSON)、KS0066(SAMSUNG)、NJU6408(NER JAPANRADIO)等。字符型液晶显示模块的主要特点如下:
1.液晶显示屏是以若干5*8或5*11点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。
2.主控制电路为HD44780(HITACHI)及其他公司的兼容电路。从程序员的角度来说,LCD的显示接口与编程是面向HD44780的,只要了解HD44780的编程结构即可进行LCD的显示编程。
3.内部具有字符发生器ROM,可显示192种字符(160个5*7点阵字符和32个5*10点阵字符)。
4.具有64字节的字符发生器RAM,可以定义8个5*8点阵字符或4个5*11点阵字符。
5.具有64字节的数据显示RAM,供显示编程时使用 6.标准接口特性,与MC9S08系列MCU容易接口。 7.模块结构紧凑、轻巧、装配容易。
8.单+5V电源供电(宽温型需要加-7V驱动电源)。 9.低功耗、高可靠性。
7
第三章 系统软件设计
3.1 MCU方(C)程序
Main.c:
#include \#include \#include \#include \#include \//在此添加全局变量定义 uint8 g_time[8] ; uint8 g_DisplayInit[8] ; uint8 i; uint8 m;
#define GPIO_Run_PORT PORT_E void main(void) {
uint8 remember; uint32 mRuncount = 0; m=1; //1 关总中断
DisableInterrupt(); //禁止总中断 //2 芯片初始化 MCUInit(); //3 指示灯初始化
Light_Init(Light_Run_PORT,Light_Run,Light_OFF); TPMinit(TPM_NUM_1); LCDinit();
8
SCIInit(SCI_NUM_1,SYSTEM_CLOCK,9600); g_time[0] = 0; g_time[1] = 0; g_time[2] = ':'; g_time[3] = 0; g_time[4] = 0; g_time[5] = ':'; g_time[6] = 0; g_time[7] = 0; remember = g_time[7];
m=GPIO_Get(Light_Run_PORT,0); EnableSCIReInt();
EnabletimerInt(TPM_NUM_1); EnableInterrupt();
SCISendN(SCI_NUM_1,8,g_time); // LCDshow(g_time); //4 主循环
while (1) { m=GPIO_Get(GPIO_Run_PORT,0); mRuncount++;
if(mRuncount>=40000) { mRuncount = 0;
Light_Change(Light_Run_PORT,Light_Run); }
/**/ if(g_time[7]!=remember) { // SecAdd1(g_time); for( i=0;i<8;i++){ if(i!=2&&i!=5)
g_DisplayInit[i] = g_time[i]+'0'; else
9
g_DisplayInit[i] = g_time[i]; }
SCISendN(SCI_NUM_1,8,g_DisplayInit); // SCISendN(SCI_NUM_1,8,g_SCIreceive_data); LCDshow(g_DisplayInit); // g_SCIFlag=0;
SCISendN(SCI_NUM_1,3,g_time); remember= g_time[7]; } }; }
Isr.c:
//头文件
#include \//#include \#include \
//此处为用户新定义中断处理函数的存放处 interrupt void isrT1Out(void){ uint8 temp; DisableInterrupt(); if(m==0)SecAdd1(g_time);
TPM_CSTR(1) &=~(TPM1SC_TOF_MASK); EnableInterrupt(); } /*
interrupt void isrSCIre(void){ uint8 temp; uint8 SerialBuff[1]; DisableInterrupt();
10
相关推荐: