一.实验目的
本驱动程序展示了如何在Small RTOS 中编写图形液晶显示器的驱动程序。
二.实验设备及器件
IBM PC 机 一台
DP-51PROC 单片机综合仿真实验仪 一台
三.实验步骤
1. A2 区的A0~A2 分别连接到B3 区的A0~A2。
2. 将A2 区的P10 连接到B3 区的RST。
3. 将A3 区的Y0 连接到B3 区的/CS。
4. 将A2 区的A15~A10 分别连接到A3 区的相应接线柱,如下:
A15 --- /G2B
A14 --- /G2A
A13 --- G1
A12 --- C
A11 --- B
A10 --- A
5. 在B3 区的J92 插入图形液晶模块(单色,128×64 点)。
6. 将B3 区的J85 短接,A3 区的JP4 短接。
7. 使用TKSMonitor51 进行仿真调试。
四.实验参考程序主要部分
#include "config.h"
void TaskA(void);
void TaskB(void);
void TaskC(void);
void TaskD(void);
void TaskE(void);
uint8 random(uint8 seed)
{
uint16 temp;
OS_ENTER_CRITICAL();
temp = ((((uint16) rand()) ^ ((uint16) rand()) + TL0) % (uint16)seed);
OS_EXIT_CRITICAL();
return temp;
}
void main(void)
{
OSInit();
TMOD = (TMOD & 0XF0) | 0X01;
TL0 = 0x0;
TH0 = 0x0;
TR0 = 1;
ET0 = 1;
TF0 = 0;
OSSemCreate(ZL12864_SEM, 1);
LCM_DispIni();
OSDispClr();
//以下的字符串将在液晶上显示出来
OSDispStr(0, 0, "Small RTOS the Real-Time Kernel");
OSDispStr(4, 1, "ChenMingJi");
OSDispStr(5, 3, "ZL12864 Ex1");
OSTaskCreate(TaskA, NULL, 0);
while(1)
{
PCON = PCON | 0x01; /* CPU 进入休眠状态 */
}
}
void TaskA(void)
{
uint8 x,y;
OSWait(K_TMO, 30);
OSDispClr();
OSTaskCreate(TaskB, NULL, 1);
OSTaskCreate(TaskC, NULL, 2);
OSTaskCreate(TaskD, NULL, 3);
OSTaskCreate(TaskE, NULL, 4);
while (1)
{
x = random(16);
y = random(8);
OSDispChar(y, x, '1');
OSWait(K_TMO,1);
}
}
void TaskB(void)
{
uint8 x,y;
while (1)
{
x = random(16);
y = random(8);
OSDispChar(y, x, '2');
OSWait(K_TMO,1);
}
}
void TaskC(void)
{
uint8 x,y;
while (1)
{
x = random(16);
y = random(8);
OSDispChar(y, x, '3');
OSWait(K_TMO,1);
}
}
void TaskD(void)
{
uint8 x,y;
while (1)
{
x = random(16);
y = random(8);
OSDispChar(y, x, '4');
OSWait(K_TMO,1);
}
}
void TaskE(void)
{
uint8 x,y;
while (1)
{
x = random(16);
y = random(8);
OSDispChar(y, x, '5');
OSWait(K_TMO,1);
}
}