液晶点阵显示屏课程设计报告 通信09235-宗慧(5)

2019-04-14 13:27

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

ch=ch<<1; //待发数据左移 Delay1us(8); //延时8μ

Clr7279CLK; //置CLK低电平 Delay1us(8); //延时8μ }

Clr7279DAT; //发送完毕,DATA端置低,返回 }

unsigned char Receive7279Byte(void) {

unsigned char i,ch; ch=0;

Set7279DAT; //DATA端置为高电平,输入状态 Delay1us(50); //延时50μ for (i=0;i<8;i++) {

Set7279CLK; //置CLK高电平 Delay1us(8); //延时8μ

ch=ch<<1; //接收数据左移1位 if (HD7279_DAT)

ch+=1; //接收1位数据

Clr7279CLK; //置CLK低电平 Delay1us(8); //延时8μ }

Clr7279DAT; //接收完毕,DATA端重新置成低电平(输出状态) return ch; }

void FlashLED(unsigned char No) {

char i;

Send7279Byte(0x88); //发闪烁指令 i=0x1; while (No) {

i=i<<1; No--; }

Send7279Byte(~i); //1闪烁

NOSELECT7279; //置CS高电平 } /*

void BlankLED(unsigned char ch) {

Send7279Byte(0x98); file://发消隐指令 Send7279Byte(ch); file://1-显示 0-消隐

20

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

NOSELECT7279; file://置CS高电平 } */

void MoveLeft(void) {

Send7279Byte(0xA1); //发左移指令 NOSELECT7279; //置CS高电平 }

void MoveRight(void) {

Send7279Byte(0xA0); //发右移指令 NOSELECT7279; //置CS高电平 }

unsigned char code BdSeg[]={

0x7e,0x30,0x6d,0x79, // 0 1 2 3

0x33,0x5b,0x5f,0x70, // 4 5 6 7 0x7f,0x7b,0x77,0x1f, // 8 9 a b 0x4e,0x3d,0x4f,0x47, // c d e f 0x00,0x01}; /*

; b6 ; ---- ; b1| b0 |b5

; ---- small ; b2| b3 |b4 ; ---- .b7 */

void DispLED(char *DispBuf,char ShowDot)//ShowDot 显示小数点位 {

char i,ch; ShowDot--; for (i=0;i<6;i++) {

ch=DispBuf[i];

if ((ch>='a') && (ch<='f')) {

ch-='a';ch+=0xa; }

if ((ch>='A') && (ch<='F')) {

ch-='A';ch+=0xa; }

Send7279Byte(0x90+5-i); //不译码 if (ch==' ')

21

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

Send7279Byte(0x00); else

if (ch=='-')

Send7279Byte(0x01); else {

if (ShowDot==i)

Send7279Byte(0x80|BdSeg[ch&0x0f]); else

Send7279Byte(BdSeg[ch&0x0f]); } }

NOSELECT7279; //置CS高电平 }

char GetKeyValue(void) {

char KeyValue;

if (CPT1CN&0x40) return -1; //无键按下 Send7279Byte(0x15); //发读键盘指令 KeyValue=Receive7279Byte();

NOSELECT7279; //置CS高电平 return KeyValue; }

void WaitKeyOff(void) {

while (!(CPT1CN&0x40)); }

void Test7279(bit LoopFlag) {

char i,KeyValue;

Delay1ms(25); //等待25ms复位时间 Send7279Byte(0xA4); //发复位指令 NOSELECT7279; //置CS高电平 if (LoopFlag==0) return;

DispLED(\ //显示123456 for (i=0;i<8;i++) {

Delay1s(1); MoveLeft(); }

DispLED(\显示123456 DispLED(\ //显示123456 DispLED(\ //显示123456 for (i=0;i<6;i++)

22

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

{

Delay1s(1); MoveRight(); }

DispLED(\ //显示123456 FlashLED(0); //第一位闪烁 Delay1s(1);

FlashLED(1); //第二位闪烁 Delay1s(1);

FlashLED(8);//关闪烁

//BlankLED(0x23); //注意:执行消隐后,键盘输入中断口不能恢复. for (;;) {

KeyValue=GetKeyValue(); if(KeyValue!=-1) {

Send7279Byte(0xC8); //发送键码值,按方式1译码下载显示 Send7279Byte(KeyValue);

NOSELECT7279; //置CS高电平 WaitKeyOff(); } } }

五.调试过程

将如下源文件c8051F020.h,main.c, ADC.c,KS0108.c,test7279.c加入到开发工具中,调试程序,并下载到单片机中运行,首先有“江苏大学计算机学院”一行字向上滚动,然后显示“2010年单片机课程设计”一行向下滚动,再显示“液晶点阵显示屏程序设计”向右滚动,再显示“姓名:宗慧;班级:通信 0902; 学号:3090601035;”向左滚动。当这些字显示完毕后,最后显示请选择:1.温度;2.电;3.压力;

在程序设计和调试过程中,遇到和解决了以下几个问题:

1)一开始在取模,我在文字输入区输入”江苏大学计算机学院“后,得到的点阵是一个字一个字的,并不像程序中原来的模板那样是一大串的,后来经过讨论和研究,应该将文字以128x64的图片的形式进行点阵输出。但是在使用图片时,我犯了一个错误,就是在截完图之后,我是先将它粘贴在QQ的对话框里,再进行另存,但是后果是出现了乱码,之后我直接在写完之后就保存为图片,再在软件中打开,就不会出现这种情况。之后我自己认为可能是粘贴到QQ中之后意义就不同了,它将是对这一整幅画进行点阵处理而不是那几个字,所以才会出现乱码。

六.运行结果

第一页从下到上滚动显示:江苏大学计算机学院

23

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

第二页从下到上滚动显示:2010年单片机课程设计 第三页向右滚动显示:液晶点阵显示屏程序设计

第四页向左滚动显示:姓名:宗慧;班级:通信 0902; 学号:3090601035; 第五页显示:请选择:1.温度;2.电;3.压力; 按“1”显示温度:****℃ ; 按“2”显示电压:****mV; 按“3”显示压力:****N; 按“4”返回原画面。

七.心得体会

将平时学习到的单片机和C语言知识运用到实验中,使得我们对所掌握的单片机和C语言知识的一次很好的巩固和加深。不但如此,我们还收获了其他的一些平时不知道的内容。比如:对字模提取的软件的使用,一开始不了解如何取模,后来发现了取模软件,通过将一行字编辑为以“bmp\结尾的图片,通过在取模软件中打开图片,然后就生成一幅我们所需要的图片的字模。虽然程序老师已经给出,但是还是需要我们施加一些整改,在不断地报错又不断地修改中,最终还是将程序运行成功。虽然程序中我还有很多不了解和不懂,在老师的最终提问的问题中还有很多不会,但是我个人觉得我的这次课程设计的收获还是不错的,获得了不少知识。

24


液晶点阵显示屏课程设计报告 通信09235-宗慧(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:老庄小学学校体育与健康课程实施计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: