单片机课设
- 格式:docx
- 大小:124.34 KB
- 文档页数:10
西安工业大学---单片机课程设计学院:计算机科学与工程学院专业:计算机科学与技术专业班级:学号:姓名:指导教师:完成日期:2014年6月20号一.LED点阵显示实验1、实验目的了解点阵LED的工作原理,用单片机对其的控制2、实验说明在做该实验时请把该实验区的四个DIP开关设置在ON状态。
16X16LED汉字显示实验,移动显示“欢迎来到单片机实验室”列扫描由74LS154译码控制,行扫描由74HC595移位控制。
开发板HXE。
3、实验连线P1.0—LA、P1.1—LB、P1.2—LC、P1.3—LDP1.4—SER、P1.5—SCLR、P1.6—SRCLK、P1.7—RCK4、实验程序#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit SER=P1^4;sbit SCLR=P1^5;sbit SCK=P1^6;sbit RCK=P1^7;uint k1,k2;bit flag;uint code tab[]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,//欢0x2804,0x2408,0x2232,0x21C2,0x26C2,0x3834,0x0404,0x1808,0xF030,0x17C0,0x1060,0x1018,0x140C,0x1806,0x1004,0x0000,0x0000,//迎 CD3AD0x0202,0x8204,0x73F8,0x2004,0x0002,0x03E2,0x2042,0x4082, 0x4002,0x3FFA,0x2002,0x2042,0x2022,0x3FC2,0x0002,0x0000, 0x0000,//来 CC0B40x0010,0x1014,0x1310,0x10FF,0x1010,0x1116,0x1010,0x0000, 0x8484,0x8888,0x90A0,0xC0FF,0xC0A0,0x9088,0x8884,0x8400, 0x0000,//到 CB5BD0x4246,0x4A52,0x6342,0x4A46,0x4300,0x1F00,0x00FF,0x0000, 0x0223,0x2222,0xFE24,0x2424,0x0400,0xF002,0x01FE,0x0000, 0x0000,//单 CB5A50x0010,0x0010,0x1FD0,0x1490,0x9490,0x7490,0x5490,0x1FFF, 0x1490,0x3490,0xD490,0x5490,0x1FD0,0x0010,0x0010,0x0000, 0x0000,//片 CC6AC0x0001,0x0002,0x000C,0x7FF0,0x0880,0x0880,0x0880,0x0880, 0x0880,0xF880,0x0880,0x08FF,0x0800,0x1800,0x0800,0x0000, 0x0000,//机 CBBFA0x1020,0x10C0,0x1300,0xFFFF,0x1200,0x1182,0x100C,0x0030, 0x7FC0,0x4000,0x4000,0x4000,0x7FFC,0x0002,0x001E,0x0000, 0x0000,//实 CCAB50x0000,0x0841,0x3041,0x2042,0x3242,0x2DC4,0x2948,0xA050, 0x6FE0,0x2050,0x2048,0x2047,0x2842,0x3040,0x2040,0x0000,0x0000,//验 CD1E90x4010,0x5F10,0x4120,0x4124,0x7F02,0x01FC,0x0244,0x0634, 0x1A84,0x6274,0x1204,0x0A0C,0x0434,0x04C4,0x0404,0x0000, 0x0000,//室 CCAD20x0002,0x0802,0x3412,0x2492,0x2592,0x2692,0xA492,0x64FE, 0x2492,0x2492,0x2592,0x24D2,0x2C12,0x3402,0x2002,0x0000, 0x0000,0xFFF0,};void send(uint a);void disp(uint dat);uint getcode(uint k);/* 取得要显示的代码 */uint getcode(uint k){uint dat;dat=tab[k];dat=dat;return (dat);}/* 显示子程序 */void disp(uint dat){SCLR=0;SCLR=1;send(dat);RCK=0;RCK=1;P1++;}/* 发送16位数据 */void send(uint a){uchar i;uint temp1;for(i=0;i<16;i++){temp1=(a>>i)&0x0001;if(temp1==0x0001)SER=1;else SER=0;SCK=0;SCK=1;}}void ddsp(){uint dat,k3,s,d;for(s=0;s<0x03;s++) //字符运动的速度{ k3=k1;for(d=0;d<16;d++) //一段字符点亮次数,即亮度 {dat=getcode(k1);if(dat==0x0fff0) //是最后一个字符返回{flag=0;goto loop1;}else disp(dat);k1++;}k1=k3;}k2++;k1=k2;loop1:;}void main(void){loop:P0=0xFF;P1=0xFF;flag=1;k2=0;k1=0;do{ddsp();if(flag==0) goto loop;}while(1);}二.步进电机1、实验目的了解步进电机的基本控制方法2、实验说明实现步进的正转,反转以及在进行正反转的同时要求加速和减速开发板HXE3、实验连线A:P1.0,B:P1.1,C:P1.2,D:P1.3,开关1:P0.0低,开关2:P0.1 P3.1 正转 P3.3 反转 P0.0 加速 P0.1减速4、实验代码#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit key=P3^2;sbit zz=P3^1; //正转sbit fz=P3^3; //反转sbit up=P0^0; //加速sbit down=P0^1; //减速sbit stop=P0^2; //stopuint flag=1,flag1=1,flag2=1;uchar code table[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; uchar code table1[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; uint speed=5000,time;void Delay(uint i){while(i--);}void Speedup(){time=speed-500;if(time<=1000){time=1000;}speed=time;}void Speeddown(){time=speed+500;if(time>=9000){time=9000;}speed=time;}void Key()interrupt 0 {while(!key){if(zz==0)flag=0;elseflag=1;if(fz==0)flag1=0;elseflag1=1;if(stop==0)flag2=0;elseflag2=1;}}void main(){uint i,j;TCON=0x01;IE=0x81;P1=0xff;P3=0xff;while(flag==0){for(i=0;i<8;i++){P1=table[i];Delay(speed);if(up==0){Speedup();}if(down==0){Speeddown();}}}while(flag1==0){for(j=0;j<8;j++){P1=table1[j];Delay(speed);if(up==0){Speedup();}if(down==0){Speeddown();}}}while(flag2==0){P1=0;}}心得体会:通过这次单片机课程设计的学习与实践,自己对单片机有了更深的认识,了解和学习了很多知识,包括定时器计数器的使用方法和相应的工作方式及控制关键字,还有中断方式的应用等等,而且加深了c语言的编程方法和技巧,更加懂得了合作才能共赢,要积极与同学老师进行交流,不懂就问,不耻下问,只要这样,学习才能进步和高效。
总而言之,本次试验给了我很大的帮助,对于我今后的学习和生活都有积极的作用,自己在今后的日子里,一定要努力学习,这样才对得起所有关心自己的人,当然也包括自己!。