C
语
言
课
程
实训报告姓名:赵建升
学号:1013232120
班级:信息101班
时间:第五周
地点:实训楼4楼EDA实验室
目录
第一章:实训概述
1.1、实训目的
1.2、实训要求
第二章:学生管理界面
2.1、C语言特点
2.2、实训内容
第三章:总结
第一章、实训概述:
1.1、实训目的:
利用这五天的实训,使我们进一步巩固C++程序设计课程所学知识,更加深入地了解面向对象程序设计的主要技术特点以及C++语言的强大编程功能指导学生利用获取信息的手段进一步获取新知识,以解决实训过程中遇到的技术难点,从中提高自学能力;按照软件开发的基本要求引导我们完成实训课题,以便我们了解软件开发的几个重要环节。
1.2、实训要求:
(1)掌握C语言中的基本数据输入、输出;
(2)熟练掌握C语言中的三种基本结构的使用;
(3)熟练使用C语言中的数组;
(4)熟练使用C语言中的函数;
第二章、学生管理界面:
2.1、C语言特点:
1. 简洁紧凑、灵活方便
2. 运算符丰富
3. 数据结构丰富
4. C是结构式语言
5. C语法限制不太严格、程序设计自由度大
6. C语言允许直接访问物理地址,可以直接对硬件进行操作
7. C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8. C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。
2.2、实训内容:
(1)上学期学过的三个作业:
① 1、使用变量赋值的方法分别将最右侧高8个LED点亮成红色,将低8个LED点亮成绿色。
2、在项目中加入以下代码,观察显示结果是否正确,分析原因
…
unsigned char i,j;
…
i= - 5;
DisplayNum(0,0,COLOR_RED,i);
j = 300;
DisplayNum(0,16,COLOR_RED,j);
程序:
//*************************************************//
#include "sysinit.h"
#include "LED_Screen.h"
//*************************************************//
void main(void)
{
unsigned char y;
unsigned char i,j;
sys_init();
y=0;
while(y<=7)
{
DrawPoint(31,y,COLOR_RED,ON);
y=y+1;
}
y=24;
while(y<=31)
{
DrawPoint(31,y,COLOR_GREEN,ON);
y=y+1;
}
i=8,j=8;
i= - 5;
DisplayNum(0,0,COLOR_RED,i);
j = 300;
DisplayNum(0,16,COLOR_RED,j);
while(1)
{
}
}
//**************************************************//
运行结果:点亮LED屏,
②指定的点坐标为(7,7)和(7,35),用绿色点亮合理坐标的点,用红色点亮非合理坐标的点。
程序:
//******************************************************//
#include "sysinit.h"
#include "LED_Screen.h"
//*******************************************************// void main(void)
{
unsigned char COLOR;
unsigned char x;
unsigned char y;
sys_init();
x=7;
y=7;
if(y>31)
{
y=31;
COLOR=1;
}
if(x>31)
{
x=31;
COLOR=1;
}
if(COLOR==1)
{
DrawPoint(x,y,COLOR_RED,ON);
}
else
{
DrawPoint(x,y,COLOR_GREEN,ON);
}
x=7;
y=35;
if(y>31)
{
y=31;
COLOR=1;
}
if(x>31)
{
x=31;
COLOR=0;
}
if(COLOR==1)
{
DrawPoint(x,y,COLOR_RED,ON);
}
else
{
DrawPoint(x,y,COLOR_GREEN,ON);
}
while(1)
{
}
}
//***********************************************************//
运行结果:点亮LED屏。
③1、实现教材学习内容3。
2、计算0-20以内所能被3整除的数的和,用红色显示在(0,0)位置上
程序:
//************************************************//
#include "sysinit.h"
#include "LED_Screen.h"
//************************************************//
void main(void)
{
unsigned char x;
unsigned char i;
unsigned char sum;
x=0;
i=20;
sum=0;
sys_init();
while(x<32)
{
if(x%2==0)
{
DrawPoint(x,x,COLOR_RED,ON);
}
else
{
DrawPoint(x,x,COLOR_GREEN,ON);
}
x++;
}
while(i>0)
{
if(i%3==0)
{
sum+=i;
DisplayNum(0,0,COLOR_RED,sum);
}
i--;
}
while(1)
{
}
}
//*************************************************// 运行结果:点亮LED屏。
(2)使用数组方式在LED屏上显示字母“A”
程序:
//******************************//
#include "sysinit.h"
#include "LED_Screen.h"
void delay(long time)
{
while(--time);
}
void main(void)
{
unsigned char x[16];
unsigned char y[16];
unsigned char a,b,c;
sys_init();
for(a=1;a<17;a++)
{
DrawPoint(x[a],-2*x[a]+32,COLOR_RED,ON); delay(1000);
}
for(b=16;b<32;b++)
{
DrawPoint(x[b],2*x[b]+32,COLOR_RED,ON); delay(1000);
}
for(c=8;c<24;c++)
{
if(c%2==0)
{
DrawPoint(x[c],16,COLOR_RED,ON);
delay(10000);
}
}
return;
while(1)
{
}
}
//*****************************//
运行结果:点亮LED屏。
(3)①在LED上显示自己的姓氏。
②动态显示一副自选的图片。
程序①:
//*************************************************//
#include "sysinit.h"
#include "LED_Screen.h"
//*************************************************//
void n(long time)
{
while(--time);
}
unsigned char xdata zhao[]=
{
/*-- 文字: 赵--*/
/*-- 仿宋_GB231224; 此字体下对应的点阵为:宽x高=32x33 --*/
0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x01,
0x00,0x0E,0x00,0x01,0x00,0x0E,0x80,0x03,0x00,0x06,0x80,0x03,0x00,0x06,0x83,0x03,
0x00,0x36,0x82,0x01,0xF0,0x7F,0xC6,0x01,0xE0,0x0F,0xCC,0x00,0x00,0x06,0xCC,0x00, 0x00,0x06,0xF8,0x00,0x00,0x46,0x78,0x00,0x00,0xFF,0x71,0x00,0xFC,0xFF,0x70,0x00,
0x38,0x06,0xF8,0x00,0xC0,0x0E,0xF8,0x00,0xC0,0x6E,0xDC,0x01,0xC0,0xFF,0xCC,0x01, 0xC0,0x3E,0x86,0x03,0xE0,0x0E,0x87,0x03,0x60,0x0E,0x03,0x03,0xE0,0x8F,0x01,0x03, 0xF0,0xCF,0x00,0x02,0x30,0x3E,0x00,0x00,0x30,0xF8,0x00,0x00,0x18,0xE0,0x03,0x00,
0x18,0x80,0x1F,0x00,0x0C,0x00,0xFE,0x07,0x06,0x00,0xF8,0x3F,0x00,0x00,0xE0,0x07,
0x00,0x00,0x00,0x00,
};
void main(void)
{
unsigned char xdata i,j;
unsigned char xdata index=0;
sys_init();
for(i=0;i<=30;i++)
{
for(j=0;j<=3;j++)
{
Display_Red[i][j]=zhao[index++];
n(1000);
}
//***********************************************//
}
return;
while(1)
{
}
}
运行结果:点亮LED屏。
程序②:
//*************************************************//
#include "sysinit.h"
#include "LED_Screen.h"
//*************************************************//
void main(void)
{
unsigned char xdata tupian[]=
{
/*-- 调入了一幅图像:这是您新建的图像--*/
/*-- 宽度x高度=31x31 --*/
/*-- 宽度不是8的倍数,现调整为:宽度x高度=32x31 --*/
0x00,0x00,0x00,0x00,0x00,0x80,0x15,0x00,0x00,0x40,0x1A,0x00,0x00,0x00,0x00,0x00, 0x00,0x20,0x00,0x00,0x00,0x68,0x00,0x00,0x0C,0x10,0x00,0x00,0x29,0x0A,0x00,0x00, 0x84,0xA8,0x06,0x00,0x01,0x06,0x10,0x00,0x04,0x04,0xC0,0x00,0x05,0x00,0x10,0x06, 0x00,0x3C,0x00,0x08,0x9E,0x01,0xBB,0x0A,0x66,0x0C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00, 0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x1A,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char xdata i,j;
unsigned char xdata n;
sys_init();
for(i=0;i<=31;i++)
{
for(j=0;j<4;j++)
{
Display_Green[i][j]=tupian[n++];
}
}
while(1)
{
}
}
//******************************************//
运行结果:点亮LED屏。
③.“帅哥靓女”程序:
//*************************************************//
#include "sysinit.h"
#include "LED_Screen.h"
//*************************************************//
void main(void)
{
unsigned char xdata shuai[]=
{
/*-- 文字: 帅--*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x02,0x20,0x02,0x24,0x02,0x24,0x02,0x24,0x1E,0xA4,0x13,0xA4,0x12,0xA4,0x12, 0x94,0x12,0x94,0x12,0x90,0x16,0x88,0x0A,0x08,0x02,0x04,0x02,0x02,0x02,0x00,0x00, };
unsigned char xdata ge[]=
{
/*-- 文字: 哥--*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x1C,0xFC,0x07,0x00,0x04,0xE0,0x04,0x90,0x04,0x70,0x04,0x00,0x3C,0xFE,0x07, 0x00,0x04,0xF0,0x04,0x88,0x04,0x78,0x04,0x00,0x04,0x00,0x06,0x00,0x04,0x00,0x00, };
unsigned char xdata liang[]=
{
/*-- 文字: 靓--*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x00,0x38,0x1C,0x8E,0x13,0xB8,0x10,0x8C,0x12,0xF8,0x12,0x87,0x12,0xB8,0x12, 0xA4,0x12,0xAC,0x12,0xA4,0x02,0x2C,0x26,0x24,0x25,0xB4,0x24,0x64,0x38,0x00,0x00, };
unsigned char xdata nv[]=
{
/*-- 文字: 女--*/
/*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0xE0,0x3F,0x3E,0x02,0x20,0x02, 0x10,0x02,0x30,0x01,0xC0,0x00,0x40,0x03,0x20,0x0C,0x18,0x08,0x06,0x00,0x00,0x00,
};
unsigned char xdata i,j;
unsigned char xdata n;
sys_init();
n=0;
for(i=0;i<=15;i++)
{
for(j=0;j<2;j++)
{
Display_Red[i][j]=shuai[n++];
}
}
n=0;
for(i=0;i<=15;i++)
{
for(j=2;j<4;j++)
{
Display_Red[i][j]=ge[n++];
}
}
n=0;
for(i=16;i<=31;i++)
{
for(j=0;j<2;j++)
{
Display_Red[i][j]=liang[n++];
}
}
n=0;
for(i=16;i<=31;i++)
{
for(j=2;j<4;j++)
{
Display_Red[i][j]=nv[n++];
}
}
while(1)
{
}
}
//***********************************************//
第三章、总结:
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到不在身边的时候也可以完成一些简单的程序编写与错误排除。还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁
琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解。