分享

计算机软件技术

 昵称36048575 2016-08-29

近年来,计算机软件技术的发展十分迅速,开发出支持领域不同的软件,逐渐改变人们生活的方式,尤其是各种工具软件,使计算机发挥出更大的效能。计算机软件是使用计算机必不可少的工具,这些软件广泛应用于日常办公、商业销售、报表统计、科学计算以及家庭娱乐等领域,在信息化时代发挥着越来越重要的作用。 

1. 文本编辑软件:汉王PDF OCR 8.1.0.3 

源码就是指编写的最原始程序的代码。运行的软件是要经过编写的,程序员编写程序的过程中需要他们的语言。音乐家用五线谱,建筑师用图纸,那程序员的工作的语言就是源码了。人们平时使用软件时就是程序把源码翻译成我们可直观的形式表现出来供我们使用的。任何一个网站页面,换成源码就是一堆按一定格式书写的文字和符号,但我们的浏览器帮我们翻译成眼前的模样了。

单片机技术自发展以来已走过了近20年的发展路程 。单片机技术的发展以微处理器(MPU)技术及超大规模集成电技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。小到遥控电子玩具,大到航空航天技术等电子行业都有单片机应用的影子。针对单片机技术在电子行业自动化方面重要应用,为满足广大学生、爱好者、产品开发者迅速学会掌握单片机这门技术,于是产生单片机实验板普遍称为单片机开发板、也有单片机学习板的称呼。比较有名的例如电子人DZR-01A单片机开发板。

单片机开发板是用于学习51STCAVR型号的单片机实验设备。根据单片机使用的型号又有51单片机开发板、STC单片机开发板、AVR单片机开发板。常见配套有硬件、实验程序源码、电路原理图、电路PCB图等学习资料。例如电子人单片机开发板,针对部分学者需要特别配套有VB上位机软件开发,游戏开发等教程学习资料。开发此类单片机开发板的公司一般提供完善的售后服务与技术支持。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型,如智能型洗衣机等。

单片机Microcontrollers)诞生于1971年,经历了SCMMCUSoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL8051,此后在8051上发展出了

MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32单片机迅速取代16位单片机的高端地位,并且进入主流市场。

而传统的8单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的WindowsLinux操作系统

常见配套资源如下: 

1、硬件实验板及其配件如:连接线、CPU芯片、流水灯、点阵显示、ds18b20温度检测、彩色TFT液晶屏,SD卡,游戏开发(推箱子游戏)、收音机、mp3解码等。

2、实验程序源码,包含汇编源程序、C语言源程序。

3、电路原理图、PCB电路图。

4、实验手册、使用手册。

5、针对单片机开发板的详细讲解视频。

6、附加PCB设计制作、VB软件开发等计算机学习资料

18LED灯,可以练习基本单片机IO操作,在其他程序中可以做指示灯使用。

22个四联8段数码管,显示温度数据,HELLO欢迎词、时钟等。

3、高亮8*8点阵,如练习数字,字母,图片显示,或者小游戏的开发如贪吃蛇等。

44个独立按键,可以配置为中断键盘,为程序的按键扫描节省更多的时间。

58AD按键,主要设计为游戏开发如推箱子等,去掉了矩阵键盘,AD键盘在实际中的应用相当广泛,如电视机加减搜台等都是采用AD键盘,一根AD线可以扩展几百个按键,更接近工程。

6PCF8591具有AD/DA功能,其采用IIC总线协议,可练习IIC总线的操作。

7DS18B20温度检测:单线多点检测支持。

8、光敏电阻测试光线强度,感受白天黑夜的区别。

9FM收音机:能接收80M110MHz之间的FM频段。可实现自动搜台和手动搜台。

10DS1302时钟芯片提供实时时钟,带3V电池,在掉电的情况下,时钟仍然可以继续运行。

11、可读写SD卡文件系统,保存数据显示到TFT液晶屏等。

12、继电器可以控制高电压的设备,高压危险,请小心使用。

13、直流电机接口,控制直流电机。

14、步进电机接口,控制步进电机运行。

15、蜂鸣器,可以做电子琴、音乐发声等。

1674HC595芯片练习串行转并行数据扩展。

1774HC573锁存扩展芯片,可以扩展接口。

18ULN2003电机驱动芯片。(这里用它来驱动步进电机,直流电机,继电器和蜂鸣器)

19MAX232串口数据传输延长发送距离。(可与计算机通信,同时也可做为STC单片机下载程序的接口 20PL2303下载单片机,一线下载,直接的USB下载方式,高速下载。

21TFT液晶屏,单片机也可以控制彩屏了,让你的学习充满乐趣

22nRF24L01无线数据传输芯片接口,可以插nRF24L01芯片,做高速无线数据传输。

23LCD1602液晶接口,字符液晶两行,每行可以显示16个字符。

24LCD12864带字库液晶接口。

25LCD12864图形液晶接口。

26DS18B20单线多点温度采集接口。一根线上便可拓展多个DS18B20温度传感器,先提供两个。

27、提供ISP下载接口,可下载AVRAT的单片机。支持AVR单片机。

2840针扩展接口,可以无限扩展。以后的DZR-01A开发板配件将从此端口扩展出去。

29PS2鼠标键盘接口。配合红外遥控器甚至可以遥控我们的电脑!(配例程)

30AVR/51复位按键。可以复位51 STC AVR单片机,全部支持

31TEA5767IIC总线控制。学习IIC控制

32SD卡的SPI总线控制。扩展大容量存储器

33、红外遥控接收器,可采集红外遥控发出的信号,可使用遥控信号控制其他设备。

34、外接5V供电电源座。

35RXDTXDPOWER电源指示灯

3640PIN紧锁座(非常方便单片机芯片的取放)

37、带LM1117-3.3稳压芯片(为彩屏液晶,SD卡和无线模块供电)

38USB供电(USB可以提供500MA的电流,完全能满足开发板的需求了)

39、预留电源+5V,GND接口各四个(方便用户扩展其他外围电路时取电和共地)

学习51单片机必须做大量的实验,与其说51单片机是学出来的,倒不如说51单片机是“玩”出来的。就好像个人电脑一样,让你在那看十天使用说明不如你亲自玩一天收获大。为了方便大家做一些51单片机的入门实验,制作了这块51单片机实验板。该51单片机实验板,支持http://m./m/products.aspx?TypeId=66&fid=t3:66:3AT89C51AT89C52AT89S51AT89S52这四款51单片机进行实验。它由DS1302DS18B20AT24CXX(可以更换AT24C02AT24C04AT24C16等存储容量大小不同的EEPROM)、蜂鸣器、继电器、六个数码管、四个发光二极管、一个四乘四的矩阵键盘、四个独立按键、一个1602液晶接口等组成。如下图所示:

电路图左上角的接口如下:

该实验板利用7805构成了自己的稳压电路,为该实验板提供

+5V的稳压电源。其电路图如下:

说明:J4为心为负电压的DC插座;J5为接正电压的针脚;J6为接负电压的针脚;J9为接+5V的针脚。

实验板上硬件连接 

利用短路帽,使P2口的P20P25分别与数码管的位选16依次连接,用于控制选通哪一个数码管亮;使P0口的P00P07分别与数码管的段码SM1SM8依次连接,用于输出相应的段码。 

数字 0 1 2 3 4 5 6 7 8 9 段码 

c0 

f9 

a4 

b0 

99 

92 

82 

f8 

80 

90 

- 5 -

四、 源程序 

#include<at89x51.h> #include<intrins.h> 

#define unchar unsigned char #define unint  unsigned int 

/*****************************定义端口*****************************/ #define smg P2   //利用P2_0P2_5由右向左依次选择要显示的数码管 #define dm  P0   //利用P0口输出段码  

/***************************************************************** 函数功能:延迟子函数(晶振12MHz),延时时间为n乘以10us,n最大为255 入口参数:出口参数: 

*****************************************************************/ void delay_smg(unchar n) { 

 do{ 

       _nop_();        _nop_();        _nop_();        _nop_();        _nop_();        _nop_();        _nop_();        _nop_();     n--; 

    }while(n); }  

/***************************************************************** 函数功能:显示六位数以内的正整数,最高位不显示零 入口参数:dat 出口参数: 

*****************************************************************/ void xianshi_smg(unsigned long dat) { 

 bit flag=0;      //标志位 

 unchar i=0;      //确定所给正整数为几位数 

 unchar shu[6];   //05依次存放所给正整数的由高到低各位上的数  unchar code code0[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 

0x90};//将数码管的段码定义到程序存储区 

 unchar j,k; 

 unsigned long n; 

- 6 -

 for(j=0,n=100000;j<=5;j++,n=n/10) 

shu[j]=dat/n; 

if(shu[j]!=0||flag==1) //flag初值为0shu[j]不为0时,if语句 

{      //成立,i增加1flag1。无论shu[j] i++;     //为何值,if语句皆成立。故,可完成i  flag=1;    //记录所给正整数为几位数的功能。但,所 }      //给正整数若为零,会出现i0这种情况

   dat=dat%n;     //故,需在最后判断i是否为0。若i0, 

}        //需将i1 if(i==0) 

i=1;  

for(j=1,k=0xfe;j<=i;j++)   { 

smg=k; 

dm=code0[shu[6-j]]; delay_smg(100); k=~k; k=k<<1; k=~k; dm=0xff; smg=0xff; } }  

/*****************************主函数*******************************/ main() { 

unchar j; 

while(1)     //循环显示0314530705860922这五个正整 {       //数,以检验所编写的显示函数。 for(()j=0;j<200;j++)http://www./haishen/index.html xianshi_smg(0); for(j=0;j<200;j++) xianshi_smg(3); for(j=0;j<200;j++) xianshi_smg(145); for(j=0;j<200;j++) xianshi_smg(30005); for(j=0;j<200;j++) xianshi_smg(860922); } } 

4×4矩阵式键盘识别实验

 

实验任务 

51单片机的P1口接4×4矩阵键盘;在数码管上显示每个按键的“0”至“F”序号。对应的按键的序号排列如下图所示 

电路原理图

实验板上硬件连接 

利用短路帽,使P1口的P10P174×4矩阵键盘的ZJ1ZJ8依次连接,完成51单片机与矩阵键盘的连接;使P0口的P00P07分别与数码管的段码SM1SM8依次连接,用于输出相应的段码;使P2口的P20与数码管的位选1连接,利用一个数码管静态显示即可完成实验。 四、源程序 

#include<at89x51.h> #include<intrins.h> 

#define unchar unsigned char #define unint  unsigned int 

/****************************定义端口*******************************/ #define m1 P1_3 #define m2 P1_2 #define m3 P1_1 

#define m4 P1_0  //m1m4分别对应实验板由上到下对应的行 #define n1 P1_4 #define n2 P1_5 #define n3 P1_6 

#define n4 P1_7  //n1n2分别对应实验板由左向右对应的列 

/******************************************************************** 函数功能:延迟子函数(晶振12MHz),延时时间为n乘以10us,n最大为255 入口参数:出口参数: 

********************************************************************/ void delay_jzaj(unchar n) {  do{ _nop_();        _nop_();        _nop_();        _nop_();        _nop_();        _nop_();        _nop_();        _nop_();     n--; 

    }while(n); } 

- 9 -

/******************************************************************** 函数功能:按矩阵键盘上的16个按键使最右边的数码管显示由0F16个数 入口参数: 出口参数: 

********************************************************************/ void keyscan(void) {unchar m,n,a,b,c,d;  m1=0;  m2=0;  m3=0;  m4=0; 

 if(n1==0||n2==0||n3==0||n4==0)   {  

delay_jzaj(50); 

    if(n1==0||n2==0||n3==0||n4==0)      {  

a=n1; 

     b=n2;      c=n3;      d=n4; 

     switch(a*1000+b*100+c*10+d)       {  

case 111: n=1;break; 

       case 1011:n=2;break;        case 1101:n=3;break;        case 1110:n=4;break;        default:break; 

  }  m1=1;  m2=1;  m3=1;  m4=1;  n1=0;  n2=0;  n3=0;  n4=0; 

 if(m1==0||m2==0||m3==0||m4==0) 

delay_jzaj(50); 

    if(m1==0||m2==0||m3==0||m4==0) 

a=m1; 

- 10 -

b=m2;      c=m3;      d=m4; 

     switch(a*1000+b*100+c*10+d)        { 

case 111: m=1;break; 

        case 1011:m=2;break;         case 1101:m=3;break;         case 1110:m=4;break;  

 

  

    default:break; 

}  

 while(m1==0||m2==0||m3==0||m4==0); //直至按键松开此循环结束  n1=1;  n2=1;  n3=1;  n4=1; 

 switch(10*m+n)   { 

case 11:P0=0xc0;break; //显示"0" 

    case 12:P0=0xf9;break; //显示"1"      case 13:P0=0xa4;break; //显示"2"     case 14:P0=0xb0;break; //显示"3"     case 21:P0=0x99;break; //显示"4"     case 22:P0=0x92;break; //显示"5"     case 23:P0=0x82;break; //显示"6"     case 24:P0=0xf8;break; //显示"7"     case 31:P0=0x80;break; //显示"8"    case 32:P0=0x90;break; //显示"9"     case 33:P0=0x88;break; //显示"A"     case 34:P0=0x83;break; //显示"b"     case 41:P0=0xc6;break; //显示"C"     case 42:P0=0xa1;break; //显示"d"     case 43:P0=0x86;break; //显示"E"     case 44:P0=0x8e;break; //显示"F"     default:break; 

} } 

/******************************主函数*******************************/ main() 

{ P2=0xfe;  //选择最右边的那个数码管 while(1)   


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多