一、实验目的
用单片机实现汉字的显示
二、实验器材
装有keil的计算机、大板单片机
三、实验步骤
1.观看原理视频和PPT
2.了解原理之后,连接好单片机
3.用K51编写代码(借鉴了百度和老师的代码)
4.用普中科技烧录软件进行烧录(别忘了先调试之后再进行创建.hex文件)
5.最后在单片机上进行显示
四、实验代码
1 初始定义
#include<reg51.h> //定义单片机的一些特殊功能寄存器
#include<intrins.h> //包含移位函数的头文件sbit SRCLK=P3^6; //定义SRCLK位为P3.6sbit RCLK=P3^5; //PCLK位为P3.5sbit SER=P3^4; //定义SER位为P3.4#define COMMONPORTS P0 //将P0端口定义为通用端口COMMONPORTSunsigned char code TAB[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //8位段选信号2 赋值函数unsigned char code CHARCODE[6][8]={0x38,0x28,0x2b,0xFE,0x28,0x28,0x38,ox00,//中0x00,0xFE,0x82,0xD6,0xFE,0X00,//国 0x00,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,//I0x00,0x00,0x7E,0x02,0x02,0x02,0x02,0x00,//L0x00,0x00,0x7E,0x42,0x42,0x42,0x7E,0x00,//O 0x00,0xF8,0x04,0x02,0x02,0x04,0xF8,0x00,//V 0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x00,//E 0x00,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,//U}; //位选信号void delay(unsigned int time)//延时函数{ unsigned int i,j; for(i=0;i<time;i++) for(j=0;j<121;j++);}void Hc595SendByte(unsigned char dat){ unsigned char a; SRCLK=0; RCLK=0; for(a=0;a<8;a++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); RCLK=0;}3主函数void main() //主函数{ unsigned char tab, j; //tab限定位选次数 unsigned int i; //执行i次使人眼可以看见 while(1) //循环显示 { for(i=0; i<50; i++ ) //执行50次显示一个字,考虑视觉暂留效应 { for(tab=0;tab<8;tab++) //每一个字8次位选 { //Hc595SendByte(0x00); //通过关闭位选进行消隐 COMMONPORTS = TAB[tab]; // 进行段选 Hc595SendByte(CHARCODE[j][tab]); //进行位选 delay(2); //延时 } } j++; //显示下一个字 if(j== 6) //从第一个字开始循环显示 { j= 0; } } }//代码解释:首先需要在练习本上画出每个点阵应该在的位置,然后用十六进制格式写出来,亮则为一,不亮则为0
五、实验结果
六、实验心得
1终于知道了C语言的重要性,说实话,一开始自己收到这个作业的时候很蒙,单片机怎么显示字,因为上课的时候一走神有的知识点就过去了,所以知识断断续续的在脑子中,有时候说下课学,下了课就忘了,作业越积越多,为了做这个作业把网盘中能借鉴的资源都借鉴了一遍,这应该是知识增长最快的时候把,聚精会神的坐在电脑前研究代码,多亏后面的解释,让工作轻松了许多,电脑百度手机百度同时使用,那时候才知道自己多么后悔,但我最欣慰的是,我在单片机上可以显示文字了,虽然有一部分的原理还没有搞懂,但是大部分内容我已经掌握了。这是我做此份作业的收获。
2,关于出现的问题,因为涉及的软件两三个,而且自己电脑上有很多下载下来的关于单片机的资源,所以最常出现的问题就是找不到.hex文件,所以有时候保存了好多次才找到,而且有时候保存了没有文件,应该是没有调试成功的事。还有就是代码我自己按照老师的写了一遍,然后错误百出,看着老师的代码一字不拉的抄了一遍还有错误,我内心也很崩溃,没有找到错误,就在word里面看两份文档哪里不同,终于才成功,主函数自己不会写就搬得别人的
3虽然这次任务自己完成的很痛苦,但自己确实学到了不少东西,无论从同学那还是度娘都教会了我不少东西,C 语言没学好真让自己很后悔啊,还有就是不知道为什么文字复制过来就会乱码,所以自己每次复制了都得改文字