文档库 最新最全的文档下载
当前位置:文档库 › 基于STM32的汉字显示系统

基于STM32的汉字显示系统

基于STM32的汉字显示系统
基于STM32的汉字显示系统

摘要

随着社会经济的迅速发展,如今汉字显示系统应用于各个领域中。LCD显示屏的技术和产业都取得了长足的发展,作为重要的现代信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。汉字显示系统主要由STM32芯片作为LCD彩色显示屏的主要核心控制器,并且通过字库制作软件制作相应的字库经过SD卡将自己所制作的字库中的汉字在屏幕中依次显示出来,同时可以通过按键控制,来控制现实的汉字的暂停,继续,更新字库。本系统是利用STM32开发板配合SD卡实现将已存入字库中的汉字完整的显示在LCD彩色显示屏上。

关键词:STM32开发板;LCD彩色显示屏;开关

目录

1 引言 .................................................................................................... 错误!未定义书签。

2 总体设计 ............................................................................................ 错误!未定义书签。

2.1 汉字显示设计分析 (2)

2.2 汉字显示的基本原理 (2)

2.3 系统的结构框图 (3)

3 详细设计 ............................................................................................ 错误!未定义书签。

3.1 硬件设计 ................................................................................... 错误!未定义书签。

3.1.1 芯片介绍 ........................................................................ 错误!未定义书签。

3.1.2 功能简介 ........................................................................ 错误!未定义书签。

3.2 软件设计 (8)

3.2.1 录字软件 (8)

3.2.2 主函数部分 (9)

3.2.3 硬件部分程序 (12)

3.2.4 字库相关程序 (14)

3.2.5 FAT系统 (18)

3.2.6 程序流程图 (19)

4 实验结果及分析 (20)

4.1 硬件实验结果 (20)

4.2 结果分析 (20)

5 结论 (21)

参考文献 (22)

1引言

随着嵌入式技术的迅猛发展,人机交互界面也越来越显示出它的重要性。实际的LCD应用中要显示的汉字一般很有限,并不需要完整的汉字库,再加上完整字库在程序中要占用大量空间,因而非完整汉字库的研究就有了其自身的现实必要性。本次课程设计主要以TFTLCD的LCD显示模块,完整的实现了汉字库的建立与显示。TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。

目前,显示技术和显示工业的发展迅速。显示技术是传递视觉的信息技术。液晶显示器件LCD是当今最有发展前途的一种平板显示器件,它具有很多独到的优异特性。它具有显示信息多、易于多彩化、体积小、重量轻、功耗低、寿命长、价格低、无辐射、无污染、接口控制方便等优点。

2 总体设计

2.1 汉字显示设计分析

首先,要通过字库制作软件建立一个小的自己设计的汉字字库;其次需要将创建好的字库文件复制到SD卡中并将其插入到STM32的开发板上;最后就是编写程序,下载程序反复调试得出想要的结果。

具体要实现的目标如下:

1.更新字库,即文档可进行变换;

2. 初始状态显示本次课设的基本信息;

3.可以将输出的文字进行字体、颜色、大小的变换;

4. 可对显示过的汉字进行计数;

5. 显示显每个汉字所对应的内存字节;

6. 在运行过程中可实现暂停、继续、变速等功能。

7. 每显示一个汉字后,LED0 小灯会闪烁提示一下。

2.2 汉字显示的基本原理

汉字在液晶上的显示其实就是一些点的显示与不显示,这就相当于我们的笔一样,有笔经过的地方就画出来,没经过的地方就不画,所以只要知道了一个汉字点阵的生成方法,那么我们在程序里面就可以把这个点阵数据解析成一个汉字。首先需要用字库制作软件制作一个GBK字库,将制作好的字库放在SD卡里面,然后通过SD卡,将字库文件复制到W25X16里,这样,W25X16就相当于一款汉字字库芯片了,从而使STM32芯片读取其中的数据显示到LCD显示屏上。

2.3 系统的结构框图

按键控制

图2.1 系统结构框图

3 详细设计

3.1 硬件设计

3.1.1 芯片介绍

STM32开发板主要采用STM32F103RBT6作为MCU,STM32F103的型号众多,我们选择这款的原因是看重其性价比,作为一款低端开发板,选择STM32F103RBT6是最佳的选择。128K FLASH、20K SRAM、2个SPI、3个串口、1个USB、1个CAN、2个12位的ADC、RTC、51个可用IO脚…,这样的配置无论放到哪里都是很不错的了,更重要的是其价格,不到13元的批量价,足以秒杀很多其他芯片了,所以我们选择了它作为我们的主芯片。

3.1.2 功能简介

开机的时候先检测 W25X16中是否已经存在字库,如果存在,则按次序显示汉字。如果没有,则检测 SD卡和文件系统,并查找 SYSTEM 文件夹下的FONT 文件夹,在该文件夹内查找UNI2GBK.SYS和GBK16.FON。在检测到这些文件之后,就开始更新字库,更新完毕才开始显示汉字。每显示一个汉字LED0 小灯会闪烁一下。WK_UP按键调整显示汉字的速度;key1控制继续和暂停;key0更新SD卡。

所要用到的硬件资源如下:

1)STM32F103RBT6。

2)外部LED0。

3)TFTLCD 液晶模块。

4)按键WK_UP、key1、key0。

5)W25X16。

6) SD卡。

1、 STM32的简单介绍

图3.1 STM32原理图

选择STM32F103RBT6 作为MCU,原因是其性价比高,128K FLASH、20K SRAM、2 个SPI、3 个串口、1 个USB、1 个CAN、2 个12 位的ADC、RTC、51 个可用IO 脚…,所以我们选择了它作为我们的主芯片。

2、外部LED0

图3.2 外部LED0原理图

其中PWR 是系统电源指示灯,为蓝色。LED0 和LED1 分别接在PA8 和PD2 上,PA8 还可以通过TIM1 的通道1 的PWM 输出来控制DS0 的亮度。

3、 TFTLCD 液晶模块

图3.3 TFTLCD 液晶显示原理图

TFT_LCD 是一个通用的液晶模块接口。OLED 是一个给OLED 显示模块供电的接口,它和TFT_LCD 拼接在一起。当使用2.4’/2.8’的LCD 时,我们接到TFT_LCD 上就可以了,而当我们使用ALIENTEK的OLED 模块时,则接OLED 排阵做电源,同时会连接到TFT_LCD 上的部分管脚,从而实现OLED 与MCU 的连接。

4、按键

图3.4 按键输入原理图

KEY0 和KEY1 用作普通按键输入,分别连接在PA13 和PA15 上,他们都连接在了JTAG相关的引脚上(KEY0 还连接在SWDIO 上),KEY0 和KEY1 还和PS/2 的DAT 和CLK 线共用,他们都通过JTAG 的上拉电阻来提供上拉。

WK_UP 按键连接到PA0(STM32 的WKUP 引脚),它除了可以用作普通输入按键外,还可以用作STM32 的唤醒输入。这个按键是高电平触发的。

5、 W25X16

图3.5 25X16原理图

这是ALIENTEK MiniSTM32 开发板板载的一颗 FLASH芯片,型号为W25X16。这颗芯片的容量为16M bit,也就是 2M字节,容量和AT45DB161 一样。适合存储不常修改的数据,比如字库等。

6、 SD 卡

图3.6 SD卡部分原理图

插入SD 卡可以外扩大容量存储设备,可以用来记录数据。SD 卡我们使用的是SPI 模式通信,SD 卡的SPI 接口连接到STM32 的SPI1 上,SD_CS 接在PA3 上。

3.2 软件设计

汉字显示系统需要有STM32开发板配合SD卡使用,因此其程序需要分为以下几个文件夹,用来读取SD卡上的字库和UNICODE到GBK的转换码表的FAT系统文件,硬件组成文件HARDWARE系统文,汉字字库存储,及读取相应的文件TEXT文件,以及存放主程序文件USER文件件,和STM32的系统文件。

3.2.1 录字软件

双击如图所示的软件,进入主界面,如图3.7。选择中文—>小字库—>开始输入文本—>创建—>确定,如图3.8。完成后,将生成的文件拷入SD卡中。

图3.7 点阵字库生成器

图3.8 创建字库

3.2.2 主函数部分

int main(void)

{

u32 fontcnt; u8 i,j; u16 fx,fy;

u8 fontx[2]; u8 key; u16 t,ts;

Stm32_Clock_Init(9); delay_init(72);

uart_init(72,9600); LCD_Init();

KEY_Init(); LED_Init();

SPI_Flash_Init();

if(Font_Init())

{ UPD:

POINT_COLOR=BLACK;

LCD_Clear(WHITE);

LCD_ShowString(60,50," STM32 ");

LCD_ShowString(60,70,"Font Updating...");

SD_Initialize();

while(FAT_Init())

{ LCD_ShowString(60,90,"FAT SYS ERROR");

i= SD_Initialize();

if(i)

{ LCD_ShowString(60,110,"SD_CARD ERROR"); }

delay_ms(500);

LCD_Fill(60,90,240,126,WHITE);

delay_ms(500); LED0=!LED0; LED1=!LED1; } while(Update_Font()!=0)

{ LCD_ShowString(60,110,"SYSTEM FILE LOST");

delay_ms(500);

LCD_ShowString(60,130,"Please Check....");

delay_ms(500);

LED0=!LED0; LED1=!LED1; };

LCD_Clear(WHITE); }

RESET:

LCD_Clear(WHITE); POINT_COLOR=RED;

Show_Str(5,5,"电子系统设计",16,0);

Show_Str(140,5,"汉字显示系统",16,0);

POINT_COLOR=BLUE;

Show_Str(10,40,"内码:高字节",16,0);

Show_Str(130,40,"低字节",16,0);

Show_Str(10,60,"对应汉字",16,0);

Show_Str(130,60,"计数器",16,0);

Show_Str(60,270," 张政马舒阳刘佳萍",16,0);

Show_Str(90,290," 2015年7月9日",16,0);

POINT_COLOR=BLACK;

fx=15; fy=80; ts=600;

while(1)

{ fontcnt=0;

for(i=0x81;i<0xp;i++)

{ fontx[0]=i; LCD_ShowNum(100,40,i,3,16);

for(j=0x40;j<0xfe;j++)

{ if(j==0x7f)continue;

fontcnt++;

LCD_ShowNum(210,40,j,3,16);

LCD_ShowNum(190,60,fontcnt,5,16);

fontx[1]=j; fx+=15;

if(fx>=220)

{ fx=5;fy+=20; }

if(fy>130)

{ POINT_COLOR=RED;

while(1)

{ key=KEY_Scan();

if(key==1)goto UPD;

if(key==2)goto RESET;

LCD_ShowString(60,190,"Show Over");

delay_ms(500);

LCD_ShowString(60,210,"Please Check....");

delay_ms(500);

LCD_Fill(60,210,220,230,WHITE); } } Show_Font(100,60,fontx,16,0);

Show_Font(fx,fy,fontx,16,0); t=ts;

while(t--)

{ delay_ms(1);

key=KEY_Scan();

if(key==1)goto UPD;

else if(key==2)

{ while(1)

{ key=KEY_Scan();

if(key==1)goto UPD;

if(key==2) break; }

break; }

else if(key==3)

{ if(ts==600) ts=200;

else ts=600; } }

LED0=!LED0; } } } }

3.2.3 硬件部分程序

void KEY_Init(void) // 键盘相应程序

{

RCC->APB2ENR|=1<<2;

GPIOA->CRL&=0XFFFFFFF0;

GPIOA->CRL|=0X00000008;

GPIOA->CRH&=0X0F0FFFFF;

GPIOA->CRH|=0X80800000;

GPIOA->ODR|=1<<13;

GPIOA->ODR|=1<<15; }

u8 KEY_Scan(void)

{ static u8 key_up=1; JTAG_Set(JTAG_SWD_DISABLE);

if(key_up&&(KEY0==0||KEY1==0||KEY2==1))

{ delay_ms(10); key_up=0;

if(KEY0==0)

{ JTAG_Set(SWD_ENABLE);

return 1; }

else if(KEY1==0)

{JTAG_Set(SWD_ENABLE); return 2;}

else if(KEY2==1)

{JTAG_Set(SWD_ENABLE); return 3;}

} else if (KEY0==1&&KEY1==1&&KEY2==0) key_up=1;

JTAG_Set(SWD_ENABLE); return 0;}

void LED_Init(void) // led相应程序

{ RCC->APB2ENR|=1<<2;

RCC->APB2ENR|=1<<5;

GPIOA->CRH&=0XFFFFFFF0;

GPIOA->CRH|=0X00000003;

GPIOA->ODR|=1<<8;

GPIOD->CRL&=0XFFFFF0FF;

GPIOD->CRL|=0X00000300; G PIOD->ODR|=1<<2; }

void SPIx_Init(void) //SD卡驱动程序

{ RCC->APB2ENR|=1<<2;

RCC->APB2ENR|=1<<12;

GPIOA->CRL&=0X000FFFFF;

GPIOA->CRL|=0XBBB00000;

GPIOA->ODR|=0X7<<5;

SPI1->CR1|=0<<10; SPI1->CR1|=1<<9;

SPI1->CR1|=1<<8; SPI1->CR1|=1<<2;

SPI1->CR1|=0<<11; SPI1->CR1|=1<<1;

SPI1->CR1|=1<<0; SPI1->CR1|=7<<3;

SPI1->CR1|=0<<7; SPI1->CR1|=1<<6;

SPIx_ReadWriteByte(0xff); }

void SPIx_SetSpeed(u8 SpeedSet)

{ SPI1->CR1&=0XFFC7;

switch(SpeedSet)

{ case SPI_SPEED_2: SPI1->CR1|=0<<3; break;

case SPI_SPEED_4: SPI1->CR1|=1<<3; break;

case SPI_SPEED_8: SPI1->CR1|=2<<3; break;

case SPI_SPEED_16: SPI1->CR1|=3<<3; break;

case SPI_SPEED_256: SPI1->CR1|=7<<3; break; }

SPI1->CR1|=1<<6; }

u8 SPIx_ReadWriteByte(u8 TxData)

{ u8 retry=0;

while((SPI1->SR&1<<1)==0)

{ retry++; if(retry>200)return 0;}

SPI1->DR=TxData; retry=0;

while((SPI1->SR&1<<0)==0)

{ retry++; if(retry>200)return 0; }

return SPI1->DR; }

3.2.4 字库相关程序

u32 FONT16ADDR ; u32 FONT12ADDR ;

u32 UNI2GBKADDR;

#ifdef EN_UPDATE_FONT

u8 temp[512]; u8 Update_Font(void)

{ u32 fcluster=0; u32 i; u32 tempsys[2];

float prog; u8 t; FileInfoStruct FileTemp;

if(FAT32_Enable) fcluster=FirstDirClust;

else fcluster=0;

FileTemp=F_Search (fcluster, (unsigned char *) folder[0], T_FILE);

if(FileTemp.F_StartCluster==0) return 1;

{ FileTemp=F_Search(FileTemp.F_StartCluster, (unsigned char*)folder[1], T_FILE);

if(FileTemp.F_StartCluster==0) return 2;

fcluster=FileTemp.F_StartCluster;

FileTemp=F_Search (fcluster, (unsigned char *) sysfile[2], T_SYS);

if(FileTemp.F_StartCluster==0) return 3;

LCD_ShowString (20,90,"Write UNI2GBK to FLASH...");

LCD_ShowString (108,110,"%");

F_Open(&FileTemp);i=0;

while (F_Read (&FileTemp,temp) )

{ if (i

{ SPI_Flash_Write (temp,i+100000,512) ; i+=512;}

prog=(float)i/FileTemp.F_Size; prog*=100;

if(t!=prog)

{ t=prog; if(t>100) t=100;

LCD_ShowNum(84,110,t,3,16); } }

UNI2GBKADDR = 100000;

tempsys[0] = UNI2GBKADDR;

tempsys[1] = FileTemp.F_Size;

SPI_Flash_Write((u8*)tempsys,0,8);

delay_ms(1000);

FONT16ADDR = FileTemp.F_Size+UNI2GBKADDR;

FileTemp = F_Search(fcluster, (unsigned char*)sysfile[0] , T_FON); if (FileTemp.F_StartCluste r== 0) return 4;

LCD_ShowString (20,90,"Write FONT16 to FLASH... ");

F_Open(&FileTemp); i=0;

while(F_Read(&FileTemp,temp))

{ if(i

{ SPI_Flash_Write(temp,i+FONT16ADDR,512); i+=512; } prog = (float)i/FileTemp.F_Size;

prog* = 100; if(t!=prog)

{ t=prog;if(t>100)t=100;

LCD_ShowNum(84,110,t,3,16); } }

tempsys[0]=FONT16ADDR;

tempsys[1]=FileTemp.F_Size;

SPI_Flash_Write((u8*)tempsys,8,8);

delay_ms(1000);

FONT12ADDR = FileTemp.F_Size+FONT16ADDR; }

t=0XAA; SPI_Flash_Write(&t,24,1);

LCD_ShowString (20, 90," Font Update Successed ") ;

return 0;} #endif

u8 Font_Init(void)

{ u32 tempsys[2]; u8 fontok=0 ;

SPI_Flash_Read(&fontok,24,1) ;

if(fontok!=0XAA) return 1;

SPI_Flash_Read((u8*)tempsys,0,8) ;

UNI2GBKADDR=tempsys[0];

SPI_Flash_Read((u8*)tempsys,8,8) ;

FONT16ADDR=tempsys[0];

SPI_Flash_Read((u8*)tempsys,16,8) ;

FONT12ADDR=tempsys[0];

return 0; }//获取字库资源信息

void Get_HzMat(unsigned char *code,unsigned char *mat,u8 size)

{ unsigned char qh,ql; unsigned char i;

unsigned long foffset; qh=*code;ql=*(++code);

if(qh<0x81||ql<0x40||ql==0xff||qh==0xff)

{ for(i=0;i<(size*2);i++)*mat++=0x00;return; }

if(ql<0x7f)ql-=0x40; else ql-=0x41;qh-=0x81;

foffset=((unsigned long)190*qh+ql)*(size*2);

if(size==16)SPI_Flash_Read(mat,foffset+FONT16ADDR,32);

else SPI_Flash_Read(mat,foffset+FONT12ADDR,24); }

void Show_Font(u16 x,u16 y,u8 *font,u8 size,u8 mode)

{ u8 temp,t,t1; u16 y0=y; u8 dzk[32]; u16 tempcolor;

Get_HzMat(font,dzk,size); if(mode==0)

{ for(t=0;t

{ temp=dzk[t]; for(t1=0;t1<8;t1++)

{ if(temp&0x80) LCD_DrawPoint(x,y);

else { tempcolor=POINT_COLOR;

POINT_COLOR=BACK_COLOR;

LCD_DrawPoint(x,y);

POINT_COLOR=tempcolor; }

temp<<=1; y++;

if((y-y0)==size) {y=y0;x++;break;} } } }

else { for (t=0; t

{ temp=dzk[t]; for(t1=0;t1<8;t1++)

{ if(temp&0x80) LCD_DrawPoint(x,y);

temp<<=1; y++;

if((y-y0)==size)

{ y=y0;x++;break; } } } } }

void Show_Str(u16 x,u16 y,u8*str,u8 size,u8 mode)

{ u8 bHz=0; while(*str!=0)

{ if(!bHz) { if(*str>0x80)bHz=1;

else { if(x>(LCD_W-size/2)

{ y+=size; x=0 ; }

if (y>(LCD_H-size) break;

if (*str==13) { y+=size;x=0;str++; }

else LCD_ShowChar(x,y,*str,size,mode);

str++; x+=size/2; } }

else { bHz=0; if(x>(LCD_W-size))

{ y+=size;x=0; }

if(y>(LCD_H-size))break;

Show_Font(x,y,str,size,mode); str+=2; x+=size; } } } u16 my_strlen(u8*str)

{ u16 len=0; while(*str!='\0')

{ str++; len++; } return len; }

void my_stradd( u8*str1, u8*str2 )

{ while(*str1!='\0')str1++; while(*str2!='\0')

{ *str1=*str2;str2++;str1++;}*str1='\0'; }

void Show_Str_Mid(u16 x,u16 y,u8*str,u8 size,u8 len)

{ u16 strlenth=0; strlenth=my_strlen(str);

strlenth*=size/2;

if(strlenth>len)Show_Str(x,y,str,size,1);

else {strlenth=(len-strlenth)/2;

Show_Str(strlenth+x,y,str,size,1); } }

3.2.5 FAT系统

//用来读取SD卡上的字库FAT系统相关程序:

DWORD FirstDirClust;

DWORD FirstDataSector;

WORD BytesPerSector;

DWORD FATsectors;

WORD SectorsPerClust;

DWORD FirstFATSector;

DWORD FirstDirSector; fat32

DWORD RootDirSectors;

DWORD RootDirCount;

BYTE FAT32_Enable;

DWORD Cur_Dir_Cluster;

FAT_TABLE FAT_TAB;

FileInfoStruct F_Info[3];

u8 fat_buffer[512];

u8 LongNameBuffer [MAX_LONG_NAME_SIZE];

BOOL LongNameFlag = 0;

const unsigned char *filetype[23]=

{ "MP1","MP2","MP3","MP4","M4A","3GP","3G2","OGG","ACC","WMA","WA V","MID", "FLA","LRC","TXT","C ","H "," ","FON","SYS","BMP","JPG","JPE" };

基于STM32F103嵌入式实验指导书

实验一、STM32的开发环境与简单工程 一、实验目的 1、熟悉STM32开发板的开发环境; 2、熟悉MDK创建和配置STM32工程项目的基本流程; 3、熟悉STM32官方库的应用; 4、规范编程格式。 二、实验内容 本次实验配置MDK集成开发环境,新建一个简单的工程文件,添加STM32官方库并配置工程,编译运行这个工程文件。下载已经编译好的文件到开发板中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。 三、预备知识 基本单片机硬件知识、单片机软件编程语言、程序创建和调试的基本方法。 四、实验设备及工具 硬件:STM32开发平台 软件:STM32官方库;PC机操作系统Windows 98、Windows 2000或Windows XP;KEIL MDK 集成开发环境;串口转usb驱动。 五、实验步骤 1、在准备存放工程文件的目录下创建一新文件夹,命名为Proj_GPIO;在Proj_GPIO 文件夹里面分别再创建四个文件夹:CMSIS、USER、LIB、OBJ。如图1。 其中CMSIS(Cortex Microcontroller Software Interface Standard)用于存放Cortex-M 处理器系列的与供应商无关的软件抽象层和启动相关的代码文件; USER用于存放我们自己编写的代码文件(含自己移植的底层驱动),还有MDK工程; LIB存放所有的官方底层驱动库文件; OBJ用于工程输出的过程文件和最终的二进制文件。 图1

2、将官方库STM32F10x_StdPeriph_Lib_V3.5.0.rar解压。 1)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下的所有文件都到第一步所创建的CMSIS文件夹中; 2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目录下的文件(目录inc和scr)复制到第一步创建的LIB文件夹中; 3)把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件复制到USER文件夹中。 3、打开MDK软件,新建一个工程Proj_GPIO保存到Proj_GPIO/USER中。CPU选择STM32F103ZE,如图2; 图2 4、新建一个空文档main.c保存到USER中,然后根 据绝对路径将文件对应添加到工程中,如右图。 5、配置工程属性,右键点击工程文件中的Target 1选择Options for Target ‘Target 1’打开工程选项对话框。做如下修改: 1)Output选项勾选Create HEX File,然后点击Select Folder for Objects按钮定位输出文件保存目录到工程的OBJ文件; 2)Listing选项,同样点击Select Folder for Listings定位输出文件保存目录到工程的OBJ 文件; 3)C/C++选项,Define中填入 STM32F10X_HD, USE_STDPERIPH_DRIVER系统的两个基 本宏定义;配置Include Paths属性,加入工 程中包含头文件的目录;如右图

LED点阵显示屏实验报告解析

16?16点阵LED电子显示屏的设计 摘要:文章介绍了基于单片机AT89C51的16?16点阵LED电子显示屏的设计。分别阐述了显示屏显示的基本原理,硬件设计、控制方法及其程序的实现。经过调试和分析,设计的结果能够实现对汉字的静态和动态显示,动态显示的内容有多种方式,同时又可通过上位机更新显示的内容。 关键字:AT89C51;16?16点阵;LED;显示屏 一绪论 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。 1 LED点阵显示屏概述 LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。 目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。 2 LED显示屏控制技术状况 显示屏的控制系统包括输入接口电路、信号控制、转换和数字化处理电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输与并行传输技术、动态扫描与静态锁存技术、自动检测及远程控制技术等。

单片机类毕业设计题目汇总

单片机类毕业设计题目汇总

单片机类毕业设计题目汇总 1.孔子时钟的设计 2.?全自动节水灌溉系统--硬件部分 3.?数字式温度计的设计 4.?温度监控系统设计 5.?基于单片机的语音提示测温系统的研究 6.?简易无线电遥控系统 7.?数字流量计 8.?基于单片机的全自动洗衣机 9.冰塔智能水位控制系统 10.?温度箱模拟控制系统 11.?超声波测距仪的设计 12.?基于51单片机的LED点阵显示屏系统的设计与实现 16X16点阵显示屏 13.?基于AT89S51单片机的数字电子时钟 14.?基于单片机的步进电机的控制 15.?基于单片机的交流调功器设计 16.?基于单片机的数字电压表的设计 17.弹片机的数字钟设计 18.?智能散热器控制器的设计 19.弹片机打铃系统设计 20.?基于单片机的交通信号灯控制电路设计 21.?基于单片机的电话远程控制家用电器系统设计 22.?基于单片机的安全报警器 23.?基于单片机的八路抢答器设计 24.?基于单片机的超声波测距系统的设计 25.?基于MCS-51数字温度表的设计 26.?电子体温计的设计 27.?基于AT89C51的电话远程控制系统 28.?基于AVR单片机幅度可调的DDS信号发生器 29.?基于单片机的数控稳压电源的设计 30.?基于单片机的室内一氧化碳监测及报警系统的研究 31.?基于单片机的空调温度控制器设计

32.?基于单片机的可编程多功能电子定时器 33.?单片机的数字温度计设计 34.?红外遥控密码锁的设计 35.?基于51单片机的语音识别系统设计 36.?家用可燃气体报警器的设计 37.?基于数字温度计的多点温度检测系统 38.?基于凌阳单片机的语音实时采集系统设计 39.?基于单片机的数字频率计的设计 40.?基于单片机的数字电子钟设计 41.?设施环境中温度测量电路设计 42.?汽车倒车防撞报警器的设计 43.?篮球赛计时记分器 44.?基于单片机的家用智能总线式开关设计 45.?设施环境中湿度检测电路设计 46.?基于单片机的音乐合成器设计 47.?设施环境中二氧化碳检测电路设计 48.?基于单片机的水温控制系统设计 49.?基于单片机的数字温度计的设计 50.?基于单片机的火灾报警器 51.?基于单片机的红外遥控开关设计 52.?基于单片机的电子钟设计 53.?基于单片机的红外遥控电子密码锁 54.?大棚温湿度自动监控系统 55.?基于单片机的电器遥控器的设计 56.?单片机的语音存储与重放的研究 57.?基于单片机的电加热炉温度控制系统设计 58.次外遥控电源开关 59.?基于单片机的低频信号发生器设计 60.?基于单片机的呼叫系统的设计 61.?基于PIC16F876A单片机的超声波测距仪 62.?基于单片机的密码锁设计 63.?单片机步进电机转速控制器的设计 64.術AT89C51控制的太阳能热水器

单片机STM32实验报告

实验报告 课程名称:单片微机原理与车载系统 学生姓名蒋昭立 班级电科1601 学号16401700119 指导教师易吉良 成绩 2018年12月17日

实验1 GPIO实验 1.1 实验目的 1)熟悉MDK开发环境; 2)掌握STM32单片机的GPIO使用方法。 1.2 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)一套STM32F103开发板; 3)STlink硬件仿真器。 1.3基本实验内容 1)熟悉MDK开发环境,参考《STM32F1开发指南(精英版)-寄存器版本_V1.0》第3章,安装MDK 并新建test工程,运行例程,在串口窗宽观察结果,并记录如下: 从图片可以看出,例程运行成功,没有错误。 2)按键输入实验,《STM32F1开发指南(精英版)-寄存器版本_V1.0》第8章。实现功能:3 个按钮(KEY_UP、KEY0和KEY1),来控制板上的2 个LED(DS0 和DS1)和蜂鸣器,其中KEY_UP 控制蜂鸣器,按一次叫,再按一次停;KEY1 控制DS1,按一次亮,再按一次灭;KEY0 则同时控制DS0 和DS1,按一次,他们的状态就翻转一次。 理解连续按概念及其实现代码。参数mode 为0 的时候,KEY_Scan 函数将不支持连续按,扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候比较不合适。当mode 为1 的时候,KEY_Scan 函数将支持连续按,如果某个按键一直按下,则会一直返回这个按键的键值,这样可以方便的实现长按检测。 寄存器方法实现不支持连续按的关键代码,以及程序运行后的效果。

毕业设计日记

毕业设计日记 篇一:毕业设计工作日志 篇二:毕业设计日志(8篇)doc 广州大学松田学院 毕业论文日志薄 题目(中)基于单片机的公交站点显示系统的设计(英) 姓名*** 年级班级07信工(1)班 指导教师(签名) 二○一一年三月 广州大学松田学院 XX 届本科生毕业论文日志XX年 2 月 28 日第1周星期一 今天是做毕业设计的第一天,我做的题目是“基于单片机的公交站点显示系统的设计”。乍一看,题目很简单,因为“公交站点”和“显示”都是我们熟悉的字眼,可是真要动手去做,我还真是一头雾水…

首先,做毕业设计不光要把原理弄懂、吃透,还要理论结合实际,做出具有相应功能的实物来。其次,要把理论知识按毕业设计的格式和各种要求整理成Word文档。千头万绪,枝枝节节的很多东西要做。幸好,在毕业实习阶段我搜集了很多相关的资料,这为我下一步的行动奠定了良好的基础。 我决定分步去实现我的计划。我以一篇类似的资料作为底稿,经过大体修改和增减确定了大体框架,明确了下一步我要做的事情,同时在这个过程中,我对毕业设计的一些格式要求和模块有了初步的了解。这使我想起了我国在大连改造的“瓦良格”号航母,此时此刻,我觉得自己也在改造一艘“航母”,并且要在这个基础上发明创造,开拓视野,立足新意,设计出一些新的东西来,融入新的思维和技巧。之后,我就大刀阔斧地开始了我的毕业设计历程。 做毕业设计的前期,我专门学习了如何使用Word系统撰写和排版毕业论文。因为论文的质量包含着两个方面的内容,一方面是论文的构思、结构、内容及观点;另一方面就是论文的排版质量。其实论文的撰写和编辑是个比较麻烦的过程,因为在撰写过程中,我们需要不断地修改,还可能有论文排版格式的修改。往往由于某一部分的变动,使其他部分进行相应的变动,因而常因调整格式而烦恼。但是如果对

公交车汉字显示系统 (6)

公交车汉字显示系统 专业名称:应用电子 学生姓名:蔡红磊 导师姓名:刘云朋 焦作大学机电工程系 2015年月

中图分类号:密级:UDC:单位代码: 公交车汉字显示系统 Chinese characters display bus control system 姓名学制三 专业应用电子研究方向 导师职称 论文提交日期论文答辩日期 焦作大学机电工程系

焦作大学 毕业设计公交车汉字显示系统 题目:公交车汉字显示系统 院、系:机电工程 姓名:蔡红磊 指导教师:刘云鹏 系: 焦作大学机电工程系 2015年05月25 日

公交车汉字显示系统 摘要 本文介绍了一种新型的公交车自动报站汉字显示系统的设计原理,同时提供了一种以89C51单片机为核心,控制ISD4004语音芯片及LED点阵显示汉字的新方案。利用89C51单片机作为CPU来进行总体控制,通过语音控制电路进行各种提示语音的播放,同时使用LED点阵电路进行汉字显示,实现了公共汽车的语音自动报站以及汉字提示的功能,实现了图文、语音一体化协调工作,减轻了司售人员的劳动强度,提高了车辆的服务质量,是一种科技、时尚的新产品。同时它摆脱传统电子屏"线"的束缚,使其应用更加市场化,其“流动”显示的特点更为广告界所推崇,是一种全新的媒体。 本系统是以C语言来进行软件设计,指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件的控制下协调运作。 关键词89C51单片机;LED点阵显示;语音芯片

目录 摘要...................................................................................................................... I 第1章绪论 (1) 1.1 课题背景 (1) 1.2 问题的提出及研究的意义 (1) 1.3 相关的理论与方法综述 (2) 1.3.1语音电路方法论证 (3) 1.3.2电路原理的总体设计 (4) 第2章硬件电路的设计 (5) 2.1 硬件组成部分 (5) 2.2 相关芯片介绍 (5) 2.2.1 STC89C52RC单片机芯片 (5) 2.2.2 ISD4004语音芯片 (7) 2.2.3 74HC138芯片 (10) 2.2.4 LM317芯片 (11) 2.3 硬件各模块设计 (12) 2.3.1 电源电路 (12) 2.3.2 LED点阵显示电路 (13) 2.3.3 ISD4004语音录放音电路 (14) 2.3.4按键控制电路 (14) 2.4 本章小结 (15) 第3章软件部分的设计 (16) 3.1软件总体设计 (16) 3.2软件各模块设计 (18) 3.2.1延时子程序 (18) 3.2.2 ISD4004语音录放程序 (18) 3.2.3 中断控制程序 (21) 3.2.4 LED点阵汉字显示程序 (22) 3.3 本章小结 (23) 结论 (24) 致谢 (25) 参考文献 (26)

基于51单片机的公交车报站系统设计

本科毕业设计(论文) 题目:基于51单片机的 公交车报站系统设计 专业:电子信息工程 班级: 姓名: 学号: 指导教师: 职称:副教授 完成日期:

本设计主要是研究公交车报站系统的LED点阵显示屏技术。本LED显示屏能够以动态扫描的方式同时显示两个32×16点阵汉字,并能通过外接按键来更改显示内容,实现公交报站显示。因为点阵显示屏广泛应用于医院、机场、银行等公共场所,所以本设计具有很强的现实应用性。 本设计具体是使用STC51高速单片机作为主控制模块,利用简单的外围电路来驱动32×16的点阵LED显示屏。利用STC12C系列高速单片机本身强大的功能和内部E2PROM,可以很方便的实现单片机与PC机间的数据传输及存储,并能利用软件方便的进行显示内容的多样变化。因为采用串行传输方式,使本系统的可扩展性得到提升,便于多个显示单元的级联。 本文从LED的显示原理入手,详细阐述了LED动态显示的过程,以及硬件电路的设计、和软件的设计等等。 关键词:公交报站系统;LED显示屏;单片机;串行传输

This design is to study the LED Dot Matrix Display technolog of the bus stations’ system. The LED display can also show two (32 ×16 dot matrix) characters by the way of dynamic scanning, and it can change the display to achieve bus-stop display through an external button. Because the Dot Matrix Display are widely used in hospitals, airports, banks and other public places, so this design has a strong practical applicability. This design uses specific High-Speed Microcontroller Family STC51as the main control module, and using simple external circuit to drive the 32 ×16 Dot Matrix LED display. The STC12C High-Speed Single Chip , owns powerful function and internal E2PROM.So that it can easily realize data transfer and storage between PC and MCU , and it's easy to use software to display the contents of variety . And for the serial transmission, the scalability of the system be enhanced to facilitate cascading multiple display units. Key Words:Bus Auto-Reporting-Calling System;LED display screen;High-Speed Single Chip;Serial Transmission

基于单片机的公交车汉字显示系统设计剖析

本科毕业设计

公交车汉字显示系统 摘要:随着时代的进步,公交车已经成为一般工薪族和学生族出门必须的交通工具。由于单片机技术以及电子语音技术飞速发展。目前,在公交车报站方面,也由传统的人工报站,逐渐改变为使用微电脑控制的语音文字报站系统。从以前售票员的大声报站变成现在的自动语音报站以及汉字提示等新型的报站系统,加快了现代化建设的进程。是国家自动化交通发展的标志。 本文介绍了一种新型的公交车自动报站汉字显示系统的设计原理,同时提供了一种以89C52单片机为核心,控制ISD4004语音芯片及LED点阵显示汉字的新方案。利用89C52单片机作为CPU来进行总体控制,通过语音控制电路进行各种提示语音的播放,同时使用LED点阵电路进行汉字显示,实现了公共汽车的语音自动报站以及汉字提示的功能; 本系统是以C语言为主,汇编语言为辅来进行软件设计,指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件的控制下协调运作。 该设计实现了图文、语音一体化协调工作,减轻了司售人员的劳动强度,提高了车辆的服务质量,是一种科技、时尚的新产品。同时它摆脱传统电子屏"线"的束缚,使其应用更加市场化,其“流动”显示的特点更为广告界所推崇,是一种全新的信息传播载体。 关键词:89C52单片机;LED点阵显示;语音芯片

The bus Chinese character display system Abstract:With the progress of The Times,the bus has become a general applicability and students go to the family transportation.Due to the microcontroller technology and electronic voice technology rapidly develope.At present, in the bus stops,also from the traditional artificial stops, gradually changing into using the microcomputer control system of bus stop announcement. From before the loud voice stops of the conductor to be the new characters suggest and stops system,accelerating the process of modernization.It's the national symbol of automation transportation development. In this paper, a new type of bus stops automatically design principle of Chinese character display system, and provides a 89 c52 as the core, control the ISD4004 voice chip and LED dot matrix display Chinese characters, a new solution. Using 89 c52 as the CPU for overall control, through the voice control circuit for a variety of prompt voice broadcast, at the same time the use of LED dot matrix Chinese characters display circuit, has realized the automatic voice of the bus stops and the function of the characters suggest that implements the graphic work in coordination, voice integration, reduce the labor intensity of the company sales personnel, improve the service quality of the vehicle, is a kind of science and technology, fashionable new products. At the same time it get rid of the bondage of traditional electronic screen "line", make its application more market-oriented, the characteristics of the "flow" shows more advertising, is a kind of new media. This system is based on the C language for software design, instruction execution speed, saving storage space. To facilitate the expansion and change, the design of software adopts modular structure, make the program design more concise and clear logical relations, make coordination of hardware in the software under the control of the operation. Key words: 89c52SCM; LED dot matrix display; Voice chip

公交线路查询系统

公交线路查询系统软件设计

摘要 摘要 随着经济的发展和旅游事业的发展,人们出入和游览其他城市的机会也随之增多,但是到达一个城市所面临的首要问题就是交通问题,为了让人们全面、及时、准确、迅速地掌握公交线路。运用我们学的知识做了个公交线路查询系统。就是为了方便于社会和服务于社会。 本文首先分析了公交查询系统设计的必要性,我们设计的公交查询系统要与触摸屏相结合。本文还介绍了在开发系统中需要用到的知识,比如TOMCAT和SQL Server2000等。 开发的公交查询系统实现了站站查询。整个系统的后台管理实现对系统中所有的数据的控制与管理。整个系统的实现中,对数据的添加与修改是最重要的操作,实现对所有数据的控制。数据的显示由JSP语言结合Dreamweaver mx实现。 关键词:公交查询系统JSP 数据

ABSTRACT With development of economic and tourism, people access and the opportunity to visit other cities also will be increased, but the arrival of a city facing the most important issue is the traffic problem, in order to allow people to comprehensive, timely, accurate and rapid control of TAC line. We use the knowledge acquired to be a bus lines enquiry system. Is to facilitate the social and service to society. This paper analyzed the public transport system design for the necessity, we have designed for the public transport system with touch-screen combination. This paper describes the development of systems need to use the knowledge, for example, such as TOMCAT and SQL Server2000. For the development of public transportation systems for the station. The background of the whole system of management to achieve all of the data system of control and management. Implementation of the system as a whole, to add and modify the data is the most important operation, and control of all the data. The data showed that by the JSP language with Dreamweaver mx achieve.

一年级新生学籍上传操作手册

全国中小学生学籍信息管理系统 小学一年级新生上传操作手册 第一部分:总述 (2) 1.新生注册流程 (2) 2.流程简要说明 (3) 3.学籍注册时间节点 (3) 4.增加一年级班级信息 (4) 第二部分:学生信息收集 (6) 1. 收集流程 (6) 2. 学生基本信息表格及填写说明 (6) 3. 无身份证号学生在校就读证明表 (12) 4. 新生信息输入模版 (13) 第三部分:新生学籍上传 (21) 1.模板导入学籍(大批量时使用) (21) 2.手工录入学籍(单个输入时使用) (24) 3.新生照片上传 (27) 第四部分: 新生学籍审核上报 (29) 1.新生学籍审核 (29) 2.新生学籍上报 (30) 白土岗镇中心学校 二零一四年九月 —1 —

第一部分:总述 1、新生注册流程(有变动,加入接续操作) 根据学籍管理办法第二章第四条规定,“学生初次办理入学手续后,学校应为其采集录入学籍信息,建立学籍档案,通过电子学籍系统申请学籍号。学籍主管部门应通过电子学籍系统及时核准学生学籍”。根据学籍管理办法第二章第六条学籍管理实行“籍随人走”的规定,特别强调,在全国学籍系统中,学生实际在哪所学校就读,就应该在哪所学校建立学籍。 2015年春期,多数幼儿园幼儿进行了学前学籍注册,因此部分一年级新生有幼儿学前学籍。因此2015年秋期一年级新生学籍注册须先进行学前幼儿学籍与一年级学籍接续,然后分类注册。因此与往年相比,此次必须加入一个是否有学前学籍的筛选环节:先下载《学前调档学生信息》(具体操作见后),然后把一年级新生的姓名、性别、出生日期、身份证件类型、身份证件号输入《学前调档学生信息》。输入完成后,把该表格导入学籍系统,对照看该学生是否已有学前学籍。如有该生则进行学前调档---学籍档案信息补录。如无该生信息,则对该生进行一年级新生注册。 2、流程简要说明 —2 —

(完整word版)STM32的485最简单例程

485最基本的半双工通信配置 采用STM32F103ZET6串口3连接485芯片通信口,485芯片的A,B通过485转串口模块与电脑相连,完成在串口软件上输入输出功能。 串口3,配置函数: void USART3_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); // USART3_TX -> PB10 , USART3_RX ->PB11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); USART_https://www.wendangku.net/doc/b43325745.html,ART_BaudRate = 115200; // 1200; USART_https://www.wendangku.net/doc/b43325745.html,ART_WordLength = USART_WordLength_8b; USART_https://www.wendangku.net/doc/b43325745.html,ART_StopBits = USART_StopBits_1; USART_https://www.wendangku.net/doc/b43325745.html,ART_Parity = USART_Parity_No; //USART_Parity_Even; USART_https://www.wendangku.net/doc/b43325745.html,ART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_https://www.wendangku.net/doc/b43325745.html,ART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #ifdef PDU_USART3_DMA

基于单片机的Led点阵广告牌设计

盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 基于单片机的LED广告牌设计 班级电子2班姓名秦地学号0902214075 成绩 一、设计背景 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED 显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。 二、任务要求 设计一个简易的LED广告牌,用于显示自己的名字或其它个性信息。显示的字符用LED 发光二极管排列成固定形状,在控制电路驱动下各字符轮流循环点亮。或者用LED点阵显示,显示内容可更新。汉字一般是以点阵式方式存储的,如16×16,24×24点阵。汉字的字模其实是汉字字形的图形化。所谓16点阵字模,就是把汉字写在一个16×16的网格内,汉字的笔划通过某网格时该网格就对应1,否则该网格对应0,这样,每一网格均对应1或0,把对应1的网格连起来看,就是这个汉字。汉字就是这样通过字节表示其点阵存储在字形中的。为了方便查找所需要汉字的点阵,每个汉字都与一个双字节的内码相对应。通过汉字的内码可以计算出它的点阵起始字节。 三、整体设计方案 如图所示,本设计通过单片机来控制行列驱动器使LED显示屏显示出汉字,单片机选用AT89C52芯片,行驱动器采用74HC154的P0口,列驱动器选用74HC595芯片。该系统主要由AT89C52芯片、电源、行驱动器、列驱动器、16×64LED点阵5部分组成。

RS-485总线收发实验要点

RS-485总线收发实验 在本章节,我们将介绍RS-485总线的使用。本实验一共需要两块神舟IV号STM32开发板,一块作为RS485的发送端,另一块作为RS485的接收端,接收总线上的数据。本节分为 如下几个部分: 1 RS-485总线实验的意义与作用 2实验原理 3软件设计 4硬件设计 5下载与验证 6实验现象 意义与作用 前面两个例程,我们分别讲解了串口printf实验和串口中断收发实验,对RS232串口原理及其应用有了一定的了解,但是由于RS232接口标准出现较早,难免有不足之处,主要有以 下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率为20Kbps。 (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。 针对RS232接口的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一, 它具有以下特点: (1)RS-485的电气特性:逻辑"1"以两线间的电压差为+(2—6)V表示;逻辑"0"以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232降低了,就不易损坏接口电 路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。 (2)RS-485的数据最高传输速率为10Mbps(实际取决于RS485接口芯片和电路)。(3)RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。 (4)RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米,另外RS-232接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连 接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地 建立起设备网络。 (5)因为RS485接口组成的半双工网络,一般只需二根连线(我们一般叫AB线),所以RS485接口均采用屏蔽双绞线传输。 基于以上原因,RS485总线在工业控制行业应用非常广泛,适合分散的,远距离(上千米)的多点通信,这是RS232所不能实现的,因此,通过使用STM32开发板实现RS485的通信,我们可以了解RS485总线的应用和基本原理,搭建RS485通信网络。 实验原理 RS-485总线简介

公交车实时站台站牌公告显示系统的设计与实现

南京工程学院 毕业设计说明书(论文) 作者:李申学号: 240092232 系部:康尼学院 专业:通信工程 题目:公交车实时站台站牌公告显示系统的设计与实现 指导者:宋红梅讲师 评阅者: 2013 年 6 月南京

摘要 本系统以单片机STC89C52为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制一个译码器74HC138和两个列驱动器74HC595来驱动显示屏显示。该电子显示屏可以显示各种文字全屏能显示1个汉字,采用4块8×8点阵LED显示模块来组成16×16点阵显示模式。显示采用动态显示,使得文字能够实现静止、移入移出等多种显示方式。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。 关键词:STC89C52单片机;LED点阵屏;74HC595;74HC138

Abstract In order to meet the needs of E-stop on real-time and Interoperability in Intelligent Transportation management System (ITS), this article introduces a design. The system base on a modular design concept,GSM communications module and LED screen display.Meanwhile it uses STC89C52RC single-chip microcomputer as a central control unit.GSM SMS moduleconnects with the Central Control Unit through RS232 serial port, and receive SMS information though the Serial port, achieves the communication between the Traffic Control Center and the E-stop. Then, the central control unit process and analysis those information received. The E-stop display the receives information on the screen by these characters stored in the ROM. Furthermore the screen can display real time and remain time by a Clock-chip. Key word: LED dot matrix screen;89C52;74HC595;74HC138

基于AT89C51控制器与显示模块的公交车液晶显示报站系统设计

基于AT89C51控制器与显示模块的公交车液晶显示报站系统设计 1 引言 公交车对提升城市形象、促进社会经济发展起到积极推动作用。但在我国偏远的西部和经济还不太发达的一些地方,公交车的发展还明显跟不上人们日益增长的物质需求,如2009 年3 月,康定县才成为四川藏区第一个开通公交服务的城市。对于我国二级以下的城市,目前公交车报站的情况大多还存在以下问题:①没有自动报站,实行人工报站;②有自动报站,却停留在单一的语言报站上;③LED站台数字编号(比如002)显示;④LED 汉字显示屏,但屏幕显示内容单一。这些在乘客对路线不熟悉或在乘车拥挤的情况下,势必会给乘客带来不便。本文设计了公交车报站系统液晶显示汉字的控制电路,并在Proteus 仿真平台上完成了模拟。 2 Proteus 介绍 Protus ISIS 是英国Labcenter 公司开发的电路分析实物仿真软件。该软件可以提供嵌入式系统(单片机应用系统、ARM 应用系统)软硬件设计仿真平台,支持主流单片机系统的仿真并集SPICE 分析于一身,把用户编写的应用程序下载到微处理器(MCU)中,结合外界连线及模拟、数字电路对微处理器进行系统逻辑功能的控制。该软件除了大量的元件库外,还有常用的虚拟仪器;在编译调试方面,还支持Keil 和MPLAB 等第三方集成开发工具。 3 报站系统液晶显示的硬件仿真电路设计 液晶显示器(Liquid Crystal Display ,LCD)具有体积小便于携带、功耗低、抗干扰能力强、信息丰富等优点,已被广泛地运用在了仪器仪表和控制系统中。在公交报站系统中,采用LCD 进行站名汉字显示,具有直观性,增强了系统的实用性。 表1 AMPIR 128 ×64 管脚说明 本文液晶模块选用Proteus 中的AMPIRE128 ×64 .其管脚说明见表1 ,显示模式见表2。根据表1 完成硬件电路的连接,根据表2 完成软件部分液晶驱动程序。

相关文档
相关文档 最新文档