电子信息工程技术专业《外围电路模块设计》 显示与按键
else if((text[i]>=0x20) &&(text[i]<=0x7e)) {
unsigned char fontbuf[16]; fontaddr = (text[i]- 0x20);
fontaddr = (unsigned long)(fontaddr*16);
fontaddr = (unsigned long)(fontaddr+0x3cf80); addrHigh = (fontaddr&0xff0000)>>16; addrMid = (fontaddr&0xff00)>>8; addrLow = fontaddr&0xff;
get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,16 );/*取 16 个字节的数据,存到\
display_graphic_8x16(y,x,fontbuf); /*显示 8x16 的 ASCII 字到 LCD 上,y 为页地址,x 为列地址,fontbuf[]为数据*/ i+=1; x+=8; } else i++; } }
void display_string_5x7(uchar y,uchar x,uchar *text) {
unsigned char i= 0;
unsigned char addrHigh,addrMid,addrLow ; while((text[i]>0x00)) {
if((text[i]>=0x20) &&(text[i]<=0x7e)) {
unsigned char fontbuf[8]; fontaddr = (text[i]- 0x20);
fontaddr = (unsigned long)(fontaddr*8);
fontaddr = (unsigned long)(fontaddr+0x3bfc0); addrHigh = (fontaddr&0xff0000)>>16; addrMid = (fontaddr&0xff00)>>8; addrLow = fontaddr&0xff;
get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,8);/*取 8 个字节的数据,存到\
display_graphic_5x7(y,x,fontbuf);/*显示 5x7 的 ASCII 字到 LCD 上,y 为页地址,x 为列地址,fontbuf[]为数据*/ i+=1; x+=6; } else i++;
21
电子信息工程技术专业《外围电路模块设计》 显示与按键
} }
//===============main program=================== void main(void) {
uchar a;
Rom_CS=1; lcd_cs1=0; initial_lcd(); clear_screen(); //clear al
display_GB2312_string(1,1,\ 好好学习 \在第 1 页,第 1 列,显示一串 16x16 点阵汉字或 8x16 的 ASCII 字*/
display_GB2312_string(3,1,\ 天天向上 \/*显示一串 16x16 点阵汉字或 8x16 的 ASCII 字.以下雷同*/
display_GB2312_string(5,1,\ 第3组成员 \ display_GB2312_string(7,1,\何培杉.郭琴.小灰\ delay(1100); clear_screen(); while(1) {
a=Key_Scan(); if(a!=0) { clear_screen(); if(a=='0') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\}
if(a=='1') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\ }
if(a=='2') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\
22
电子信息工程技术专业《外围电路模块设计》 显示与按键
}
if(a=='3') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\}
if(a=='4') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\ if(a=='5') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\ if(a=='6') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\ if(a=='7') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\ if(a=='8') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\ if(a=='9') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(5,1,\display_GB2312_string(7,1,\
23
电子信息工程技术专业《外围电路模块设计》 显示与按键
}
if(a=='A') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(3,1,\display_GB2312_string(7,1,\}
if(a=='B') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(3,1,\display_GB2312_string(7,1,\}
if(a=='C') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(3,1,\display_GB2312_string(7,1,\}
if(a=='D') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(3,1,\display_GB2312_string(7,1,\}
if(a=='E') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(3,1,\display_GB2312_string(7,1,\}
if(a=='F') {
display_GB2312_string(1,1,\display_GB2312_string(3,1,\display_GB2312_string(3,1,\display_GB2312_string(7,1,\} }
24
电子信息工程技术专业《外围电路模块设计》 显示与按键
} }
12864LCD结果显示图如下:
图9 12864与按键显示结果
七、仿真过程综述
1、按照设计思路在proteus软件中找到相元器件,按照正确的连线方法将各个元器件连起来。再用proteus软件仿真时,为避免连线的复杂性,可以使用在要连线的引脚上标注相同的符号的方法。这样可以使proteus软件窗口中的连线少一些,使电路图更加清晰。
2、按照硬件电路在keil c软件中编写程序,对编写的程序进行翻译,在确定没有错误后生成十六进制文件加载到proteus软件中原理图AT89S52芯片中。
3、在proteus软件中点击运行按钮,实现仿真,按下键盘上的按键,观察数码管显示的是否正确。
25