单片机测试程序15615.pdf
《单片机测试程序15615.pdf》由会员分享,可在线阅读,更多相关《单片机测试程序15615.pdf(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实习步骤 本单片机最小系统是以 AT89S51 单片机为控制核心,由驱动芯片 ZLG7289 与16 键的键盘矩阵实现对两个 4 位一体共阴数码管 LED 的驱动显示,由 LCD1602 实现液晶显示,再通过电平转换芯片 MAX232 并连接到 232 接口实现串口通信,系统还包含有蜂鸣器,USB 及适配器供电接口,JTAG 程序下载接口,总线扩展等。首先,用 protel99se 软件制作硬件电路原理图及绘制 PCB 板;其次,安装焊接单片机最小系统开发板及下载线,并且进行电路调试;再次,在 Keil uVision2 软件环境下调试单片机汇编程序或 C 语言程序,用单片机下载软件 ISPL
2、AY 或 STC-ISP V31 实现程序下载,从而用编程实现最小系统的基本功能;最后,编写综合程序以实现系统功能的综合以及拓展功能,其中串口通信用到电脑自带的超级终端或AccessPort 软件。单片机最小系统板焊接 首先对照元件清单和电路图,检查器件是否完整,型号规格安装是否正确。然后将各器件根据焊接规则焊接到电路板上,其中对于器件的摆放方向和位置需十分注意。先焊发热器件电阻和较低的电容,再焊较大的器件,焊接 JTAG 线,JTAG 线里面的芯片电阻,电阻电容均为贴片封装,焊接时需小心谨慎,对于各条线引的焊接也需谨慎,按照其对应的顺序进行焊接,焊接结束后,自行组装。检查已经焊好的电路板和
3、JTAG 下载线是否无误:先用万用表检查电路板焊接是否都正确。当检查没有短路,断路,虚焊,漏焊等错误后,给电路板供电,看二极管是否亮,是否有器件过热,有可能二极管或三极管会在焊接的过程中被烧坏,那样的话就要重新焊器件。再用 Keil 软件给板子拷正确的程序,检查是否能按功能正常工作。单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。软件设计 在 Keil 软件环境下对照相关资料编写单片机最小系统开发板的有用程序,使设计好的程序编译无误,得到 hex 格式文件,用程序下载软件加载到单片机芯片中,实现仿真电路,在板上得出效果。设计工具:电脑,Keil 软件,Is
4、play 软件,STC-ISP V31 软件 蜂鸣器调试 主要是检验程序能否下载到芯片,蜂鸣器能正常工作,掌握程序的编译下载到芯片的方法。在 Keil 环境中用 C 语言编写简单是蜂鸣器程序或音乐播放程序。对 Keil 软件和程序下载软件进行相关配置设置。将编译产生的 hex 文件下载到芯片,检测其工作是否正常,若工作不正常,则从软件及硬件两方面进行检查。有用的报警声程序见附录 4 串口通信调试 实现计算机与单片机之间相互通讯功能 将编写的串口调试程序经过编译,下载到单片机。串口实现功能为在计算机上能显示单片机的输出。检测串口是否能正常工作,此阶段需用到串口软件及串口线。若不能正常工作,则需从
5、软件和硬件两方面进行检查。正确功能为在电脑超级终端不停显示输出内容,与预期相同,工作正常。液晶显示调试 保证液晶屏 LCD 能正常工作,输出效果有所扩展。在编写程序前,认真阅读 LCD 液晶屏资料,掌握 LCD1602 及 1602 液晶模块数据手册(中文)中的液晶的使用和编程方法,了解其工作时序,及各个指令及初始化。对照电路图中 LCD 连接情况,编写 LCD1602 移动显示程序,经编译下载至单片机,检测输出,若无输出,则调整电位器,若仍无输出则从软件及硬件两方面进行检查,找出错误原因,直至液晶屏能正常工作。在程序编写时应时刻注意各个指令间的延时控制。以保证液晶屏呈现效果移动循环显示,液晶
6、屏工作正常。之后也可用 LCD 做数字钟,这将在综合程序里被用到,液晶移屏显示程序见附录 6 数码管及键盘控制调试 保证数码管能正常显示,以及按键能控制数码管的显示.在编写程序前,应认真阅读 LED 和 ZLG7289A 资料,了解和掌握其工作时序,及各个指令及初始化,在程序编写时应时刻注意各个指令间的延时控制。对照电路图中 ZLG7289 模块的连接情况,编写程序,经过编译,然后下载到单片机,检测展现效果,是否与程序预期相同。实现效果逐个闪烁,逐个消隐,键盘控制改变数据并移动,与预期相同,工作状态正常。再利用单片机内部时钟中断,编写数码管时钟程序,使数码管能够实现计时功能,键盘能够控制时分秒
7、。系统综合功能设计 综合单片机开发板上的各个功能模块,以实现一个完整的系统功能:根据前面对各模块功能的理解和程序编写,结合各个模块实现一个整体系统,把各模块功能综合起来。设计一综合系统,使数码管实现数字钟且可右移闪烁,液晶屏实现时间、日期的显示且可移屏,键盘能够控制系统,蜂鸣器与键盘且可整点报时,可实现串口通信功能。鸣器调试程序 本程序根据蜂鸣器与单片机口相连设计,可以验证单片机及下载功能的正确.#include#include sbit buz=P33;unsigned char flag;void delayms(unsigned char ms)/*延时子程序*/unsigned cha
8、r i;while(ms-)for(i=0;i 120;i+);/*主程序*/main()TMOD=0 x01;flag=0 x00;TH0=0 x00;TL0=0 xff;TR0=1;IE=0 x82;while(1)flag+;delayms(1);/*中断控制*/void timer0()interrupt 1 using 1 TH0=0 xfe;TL0=frq;buz=buz;串口通信调试程序(单片机到 PC 机)此为串口通信程序,可在电脑上的超级终端显示相关语句,实现单片机与电脑的相互通信。遇到的问题:在进行单片机传信息到电脑终端时,可是利用宏文件,直接调用 printf.但是在实际
9、的运用中占用大量的空间资源,而且容易出现错误,让程序的工作不正常,因此我们改用字节的传送,利用串口一个字节一个字节的传送,这样就大大增加了程序的可读性。#include /*special function register declarations*/*for the intended 8051 derivative*/#include /*prototype declarations for I/O functions*/#ifdef MONITOR51 /*Debugging with Monitor-51 needs*/char code reserve 3 _at_ 0 x23;/*
10、space for serial interrupt if */#endif /*Stop Exection with Serial Intr.is enabled*/*-The main C function.Program execution starts here after stack initialization.-*/void main(void)/*-Setup the serial port for 1200 baud at 12MHz.-*/#ifndef MONITOR51 SCON =0 x50;/*SCON:mode 1,8-bit UART,enable rcvr *
11、/TMOD|=0 x20;/*TMOD:timer 1,mode 2,8-bit reload */TH1 =0 xe6;/*TH1:reload value for 1200 baud 12MHz */TR1 =1;/*TR1:timer 1 run*/TI =1;/*TI:set TI to send first char of UART*/#endif/*-Note that an embedded program never exits(because there is no operating system to return to).It must loop and execute
12、 forever.-*/while(1)printf(liu jing longn);/*Print liu jing long */串口通信调试程序(PC 机到单片机)#include#include#include#define uchar unsigned char#define uint unsigned int Uchar data ReceiveBuffer16=0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20;/设置 16 字节的串行通信接
13、收缓冲区 uchar data BufferPointer=0;/串行通信接收缓冲区指针,初始为 0 bit data OnReceive=0;/串行通信接收事件标志位 void Send(uchar data dat);/*以下为串行通信接收中断处理函数*/void serialport(void)interrupt 4 using 2 uchar data c,i;if(RI)c=SBUF;/读取接收到的数据 if(BufferPointer16)ReceiveBufferBufferPointer=c;/将接收到的数据存入接收缓冲区 BufferPointer+;else for(i=0
14、;i15;i+)ReceiveBufferi=ReceiveBufferi+1;/将缓冲区数据左移 ReceiveBuffer15=c;/将接收到的数据存入接收缓冲区 RI=0;/清空接收标志 Send(c);/发送接收到的数据,以便回显 OnReceive=1;/接收事标志位置 1 /*以下为串口初始化函数*/void Initserialport(void)TMOD=0 x20;SCON=0 x50;TH1 =0 xe6;/*TH1:reload value for 1200 baud 16MHz */ES=1;/允许串口中断 EA=1;TR1=1;/*TR1:timer 1 run */
15、void Send(uchar data dat)SBUF=dat;while(TI=0);TI=0;void main(void)/主函数 uchar data i;LcdReset();/初始化 LCD Initserialport();/初始化串口 DisplayListChar(0,0,Receive Data:,13);while(1)if(OnReceive)for(i=0;i16;i+)/接收显示 DispOneChar(i,1,ReceiveBufferi);OnReceive=0;液晶移屏显示程序 实现 LCD1602 的基本显示功能,以及使其能够实现移屏功能。#includ
16、e#define uchar unsigned char#define uint unsigned int uchar code dispcode1=happy new year!;uchar code dispcode2=thanks everyday!;sbit RS=P20;sbit RW=P21;sbit E=P22;void delay(uint t)uint k,l;for(k=t;k0;k-)for(l=0;l=10;l+);void wcom()RS=0;RW=0;E=0;delay(1000);E=1;void wdata()RS=1;RW=0;E=0;delay(1000)
17、;E=1;void init()/初始化子程序 /uint i;/for(i=0;i20;i+)P0=0 x38;wcom();/指令码设置 162 显示,8 位数据接口 P0=0 x0c;wcom();/开显示,不显示光标,不闪烁光标 P0=0 x06;wcom();/读或写一个字符后地址累加器加一,光标加一 P0=0 x01;wcom();/清屏 void main()/主函数显示 uchar i;init();P0=0 x80;wcom();for(i=0;i=15;i+)P0=dispcode1i;wdata();P0=0 xC0;wcom();for(i=0;i=15;i+)P0=d
18、ispcode2i;wdata();for(i=0;i=40;i+)P0=0 x1c;wcom();delay(100);ZLG7289 控制键盘及数码管显示程序 本程序根据 ZLG7289 芯片资料,来实现其对数码管和键盘的控制。首先在数码管上显示 0-7 八位数,然后循环左右各移八次,再分别左移右移各两次,而后实现闪烁消隐功能,再是按键时可以在数码管显示按键值,如没有按键则显示时钟,而且可用键盘对时钟的时分秒进行校对。#include#include#include#define uchar unsigned char#define uint unsigned int/*端口定义*/sbi
19、t CS=P10;sbit CLK=P11;sbit DIO=P12;sbit KEY=P32;/需要在 INT 区把 KEY 用跳线冒跳到 INT0,其余四个跳到 VCC/这样,P32 就相当于直接连接到 key bdata uchar com_data;/定义 8 位数据 data sbit mos_bit=com_data7;sbit low_bit=com_data0;/*变量定义*/uchar half_hign;uchar half_low;uchar sl,sh,ml,mh,hh,hl;uchar second=0;uchar minute=0;uchar hour=12;uin
20、t s_cnt,key;/*延时子程序*/void delay_8us()uchar i;for(i=0;i1;i+);void delay_50us()uchar i;for(i=0;i6;i+);void delay_50ms()uchar i,j;for(j=0;j50;j+)for(i=0;i125;i+);void delay_1s()uchar i=20;while(i-)delay_50ms();void delay_2s()uchar i=40;while(i-)delay_50ms();void delay_5s()uchar i=100;while(i-)delay_50m
21、s();/*发送单字节指令*/void send(uchar sebuf)uchar i;com_data=sebuf;CLK=0;CS=0;delay_50us();for(i=0;i8;i+)delay_8us();DIO=mos_bit;CLK=1;delay_8us();com_data=com_data1;CLK=0;DIO=0;/*接收数据*/uchar receive(void)uchar i,rebuf;CLK=1;delay_50us();for(i=0;i8;i+)com_data=com_data1;low_bit=DIO;CLK=1;delay_8us();CLK=0;
22、delay_8us();rebuf=com_data;DIO=1;CS=1;return rebuf;/*复位*/void reset(void)DIO=1;delay_50ms();send(0 xa4);CS=1;/*7289 数码管显示,addr 为显示位置 范围 07,dat 为现实内容*/void display(uchar addr,uchar dat)if(addr7)return;send(0 xc8+addr);delay_50us();send(dat);CS=1;/*功能:执行 ZLG7289 纯指令参数:cmd:命令字*/void ZLG(uchar t)CS=0;de
23、lay_50us();send(t);CS=1;delay_50us();/*发送双字节命令*/void sendcommand(uchar addr,uchar dat)send(addr);delay_50us();send(dat);CS=1;/*获取键盘的位置码*/uchar getkeycode(uchar dat)uchar key;switch(dat)case 0 x00:key=0 x00;break;case 0 x01:key=0 x01;break;case 0 x02:key=0 x02;break;case 0 x03:key=0 x03;break;case 0
24、x04:key=0 x04;break;case 0 x05:key=0 x05;break;case 0 x06:key=0 x06;break;case 0 x07:key=0 x07;break;case 0 x08:key=0 x08;break;case 0 x09:key=0 x09;break;case 0 x0a:key=0 x10;break;case 0 x0b:key=0 x11;break;case 0 x0c:key=0 x12;break;case 0 x0d:key=0 x13;break;case 0 x0e:key=0 x14;break;case 0 x0f
25、:key=0 x15;break;default:key=0 xee;break;return key;/*7289 按键指令*/ZLG7289_Key()uchar key,dat;send(0 x15);delay_50us();dat=receive();delay_50us();key=getkeycode(dat);/*按键设定时分加一*/void Set_time(void)/设定时间 if(key=0 x00)/按键 0,控制时 delay_50ms();if(key=0 x00)hour+;if(hour=24)hour=0;hl=hour%10;hh=hour/10;if(k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 测试 程序 15615
限制150内