当前位置:首页 > 单片机原理及应用实习报告
{
PA=H[i]; P1=L[i];
} } }
(4)液晶模块:SED1520液晶屏在使用时分为左右两个半屏,0、1、2、3四页。注意在使用时不要与数码管显示模块的地址重复,根据字模形成软件去的字模确定要显示的汉字的字模,组成一个字模数组,以方便调用。其余注意事项在第一部分的实习的报告中已有说明,此处不在赘述。
主要程序是xdata unsigned char CWADD1 _at_ 0x1cff; // 写指令代码地址(E1)
xdata unsigned char DWADD1 _at_ 0x1eff; // 写显示数据地址(E1) xdata unsigned char CRADD1 _at_ 0x1dff; // 读状态字地址(E1) xdata unsigned char DRADD1 _at_ 0x1fff; // 读显示数据地址(E1) xdata unsigned char CWADD2 _at_ 0x3cff; // 写指令代码地址(E2) xdata unsigned char DWADD2 _at_ 0x3eff; // 写显示 数据地址(E2) xdata unsigned char CRADD2 _at_ 0x3dff; // 读状态字地址(E2) xdata unsigned char DRADD2 _at_ 0x3fff; // 读显示数据地址(E2)
void WriteCHN16x16()// 中文显示子程序 {
unsigned char i,j,k; i = 0; j = 0;
while(j<2) {
Command = ((Page_ + j) & 0x03) | 0xb8; // 设置页地址 WriteCommandE1(); WriteCommandE2();
k = Column; // 列地址值 while(k < Column + 16){
if (k < PD1) { // 为左半屏显示区域(E1) Command = k;
WriteCommandE1(); // 设置列地址值 LCDData = CCTAB[Code_][i]; // 取汉字字模数据 WriteDataE1(); // 写字模数据
} else{ // 为右半屏显示区域(E2) Command = k-PD1;
WriteCommandE2(); // 设置列地址值
LCDData = CCTAB[Code_][i]; // 取汉字字模数据 WriteDataE2(); // 写字模数据 }; i++;
if( ++k >= PD1 * 2) break; // 列地址是否超出显示范围 } ; j++; }; } void yejing()
{ unsigned char t; CS8255=1; Init(); Clear();
for(t=0;t<10;t++) { Page_ = 0x02; Column = 0x00; Code_ = 0x00; WriteCHN16x16();
Page_ = 0x02; Column = 0x10; Code_ = 0x01; WriteCHN16x16();
Page_ = 0x02; Column = 0x20; Code_ = 0x02; WriteCHN16x16();
Page_=0x02;
Column = 0x30; Code_ = 0x03;
WriteCHN16x16();
Page_ = 0x02; Column = 0x40; Code_ = 0x04; WriteCHN16x16();
Page_ = 0x02; Column = 0x50; Code_ = 0x05;
}
CS8255=0; }
WriteCHN16x16();
Page_ = 0x02; Column = 0x60; Code_ = 0x06; WriteCHN16x16();
Page_ = 0x04; Column = 0x00; Code_ = 0x07; WriteCHN16x16();
Page_ = 0x04; Column = 0x10; Code_ = 0x08; WriteCHN16x16();
Page_ = 0x04; Column=0x20; Code_ = 0x09; WriteCHN16x16();
Page_=0x04; Column=0x30; Code_ =0x0a; WriteCHN16x16;
Page_=0x04; Column=0x40; Code_=0x0b;
WriteCHN16x16();
Page_=0x04;
Column=0x50; Code_=0x0c; WriteCHN16x16();
Page_ = 0x04; Column = 0x60; Code_ = 0x0d; WriteCHN16x16();
4、技术小结与心得:
(1)关于焊接。在焊接元件前,要先看懂电路原理图;在焊接元件
时,一定要注意与PCB版的电路原理图相结合,最好能对照电路图来焊接相关元件,避免因元件管脚或元件型号弄错而对后面的功能实现产生影响。在焊接时同样要避免产生虚焊或的情况,硬件的正确焊接为以后的软件程序设计及系统功能的实现做好了铺垫。
(2)关于程序设计。还是要注意时刻与单片机硬件的结合,这与第
一部分的实习的要求是一样的。在编写C程序时,要注意是否有实际应用的可能,应当考虑与硬件的结合性。
(3)关于硬件调试和软件整合。在硬件调试时,要分模块调试,首
先要解决各模块端口的地址,这一部分的实习用到8255,涉及控制字地址、PA、PB、PC口地址,所以必须对8255有一定的认识,才能确定它的各个端口地址,而且模块之间有口地址复用的情况,需要改动地址方能整合到一块。在软件整合时,要简化程序,就需要对已编好的各个模块程序进行修改,以便于调用,更能加快程序执行的速度。
共分享92篇相关文档