F360最小系统测试程序_第1页
F360最小系统测试程序_第2页
F360最小系统测试程序_第3页
F360最小系统测试程序_第4页
F360最小系统测试程序_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*功能:f360最小系统测试程序12864开机时显示”键盘显示测试程序”和正弦波形; 每按一个按键,lcd ±显示相应字符;p2.0p2.7显示不同频率的方波;idao产生锯齿波。*#include <c8051f360.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define cs10x4000#define cs20x8000#define ledencs 0xc004#define wcomaddr0xc008#define wdataddr0xc

2、009#define rcomaddroxcooa#define rdataddroxcoob#define keycsoxcooc外部扩展片选地址1外部扩展片选地址2/lcd模块背光控制片选信号写命令寄存器的地址写数据寄存器的地址读命令寄存器的地址读数据寄存辭的地址读键盘的地址uchar countl;uchar keycode;uchar ledcon=oxoo;最低位为1时开启led背光,ucharidata wavedata128;bitkeysig n=0;sbitstart=p3a0;sbitsw0=p3al;sbitsw1=p3a3;软件计数器存放键值/lcd模块背光控制字,最低

3、位为0时关led背光,波形数据缓冲区键标志,0:无键输入,1:有键输入uchar code hanzilo="键盘显示测试程序 uchar code hanziko = "ko"uchar code hanzikl = "ki"uchar code hanzik2 = "k2"uchar code hanzik3 = "k3"uchar code hanzik4 = hk4"uchar code hanzik5 = "k5"uchar code hanzik6 = "

4、;k6"uchar code hanzik7 = hk7h; uchar code hanzik8 = "k8" uchar code hanzik9 = "k9" uchar code hanzika = "ka'1; uchar code hanzikb = "kb" uchar code hanzikc = hkch; uchar code hanzikd = hkdh; uchar code hanzike = "ke" uchar code hanzikf = "kf

5、"uchar code sindata128=0x80/0x86/0x8c/0x92/0x98/0x9t0xa5/0xab/0xb0/0xb6/0xbc/0xcl/0xc7/0xcc,0xdl/0xd5/0xda,0xde,0xe2/0xe6,0xea,0xed/0xf0/0xf3/0xf6/0xf8,0xfa,0xfc/0xfd,0xfe,0xff,0xff/0xft0xff0xff,0xfe,0xfct0xfc0xfa,0xf&0xf6,0xf3qxf0,0xed,0xea,0xe6,0xe2qxde,0xda,0xd5qxdb0xccqxc7qxcb0xbcqxb6,0

6、xb0qxabqxa5qx9f,0x98qx92,0x8c,0x86/0x7f,0x79,0x73,0x6d,0x67,0x60,0x5a,0x54,0x40x49,0x43,0x3e,0x3&0x33,0x2e,0x2a”0x25,0x21,0xld,0x19,0x15,0x12,0x0f,0x0c,0x09,0x07,0x05,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x05,0x07,0x09,0x0c,0x00x12,0x15,0xl9,0xld,0x21,0x25,0x2a,0x2e,0x33,0x38,0

7、x3e,0x43,0x49,0x4f,0x54,0x5a,0x60,0x67,0x6d,0x73,0x79, ;/ function prototypes/void xramlnit(void); void smblnit(void); void uartlnit(void); void daclnit(void); void adclnit(void); void intolnit(void);void timerlnit(void); void pcalnit(void);void osclnit(void); void portlolnit(void);i2c总线初始化界步串口通信接口初

8、始化 /d/a转化器初始化 /a/d初始化外部中断初始化定时器初始化/pca初始化void interruptslnit(void);/中断系统初始化void initdevice(void);void checklcd();检查lcd是否空闲子程序void writecom(ucharn);/led写指令子程序void writedata(ucharm);/led写数据了程序void lnsitilcd();/led初始化了程序void disphan( uchar code *a,uchar m,uchar k);显示汉字子程序 void wavedata_lnit();写128 了节波形

9、数据子程序void showwave();波形显示子程序/*主函数void main() uchar xdata *addr; lnitdevice();lnsitilcd();disphan(hanzilo,0x80,0x10); writecom(0x34);wavedata_lnit();showwave();writecom(0x36);writecom(0x30);/*/f360初始化/lcd模块初始化显示“键盘显示测试程序”关绘图显示,设为扩充指令将128字节的正弦波数据读入显示ram显示波形开绘图显示设为基本指令集while (1)if (keysi gn = 1)keysign

10、 = 0;switch(keycode)/k0 键/lcd模块初始化显示“k0”开/关lcd模块背光kl键case 0x00:lnsitilcd();disphan(hanziko,0x84,0x02); addr=ledencs;ledcon=ledcon;*addr=ledcon; break;case 0x01:insitilcdf);disphan(hanzikl,0x85,0x02);sw0=0;sw1=o;break;case 0x02:lnsitilcd();disphan(hanzik2,0x86,0x02);swo=1;sw1=o;break;case 0x03:lnsiti

11、lcd();disphan(hanzik3,0x87z0x02);sw0=0;sw1=1;break;case 0x04:lnsitilcd();disphan(hanzik4,0x94,0x02);swo=1;sw1=1;break;case 0x05:in sitilcd();disphan(hanzik5,0x95,0x02); break;case 0x06:insitilcdf);disphan(hanzik6,0x96,0x02); break;显示“ki”k2键显示“k2”k3键显示“k3”k4键显示“k4”k5键显示“k5”k6键显示“k6”k7键case 0x07:“羽” 土

12、習mpv/“a” 士晉和”/“刖” 土習腸羽“” 土習m明“6»”丰習7/w 6”“8>1” 土習® 8v/“o” 土習30x0 9seo f>|e9jq(乙 0 x0za6x0zp>l!zueq)uehds!a :()p刀!1!su|:00xo aseo f>|eajq (0><0z36x0>l!zueq)uehds!a:()p3-|!1!su| 00x0 aseo f>|eajq (z0x098x0zq>|!zueq)u ehds!g f()pd-|risu|:日0x0 3su f>|e9jq (zoxoz38

13、xoze>|!zueq)uehds!a f()p3-|risu|:v0x0 3sp3 樽q (zoxo'agxo'zueqjuehdsia")p 刀!1!su| :60x0 3su f>|eajq(乙 oxo':)8xo0>l!zueq)uehds!( f()p3-!j!su| :8cp<0 bsq f>|eajq (20x076x07>l!zueq)uehds!g 1()pm!su|lnsitilcd();disphan(hanzike,ox9e,oxo2); 显示"ke” break;case oxof:/kf

14、 键insitilcdf);disphan(hanzikf,0x9f,0x02); 显示 “kf” break;*外部中断0功能:读入键值*/void readkey() interrupt 0 uchar xdata *addr;屏蔽无效的高四位置按键标志位addr=keycs; keycode 二* addr; keycode &二 oxof; keysig n =1;* *定时器0中断功能:定时10ms, p2 口产生方波*void timer0() interrupt 1tlo=oxfo;th0=0xd8;重置时间常数10msp2+;*定时器1中断功能:定时10ms, ida0

15、产牛锯齿波*/void timerl() interrupt 3 uchar count; tll=oxoc; thl=oxfe;定时0.5mscoun t+;ida0h=c ount;*内部资源初始化了程序*函数功能:各种内部资源初始化*void osclnit(void)内部振荡器初始化oscicn=oxc2;clksel=oxoo;sfrpage=oxoo;允许内部振荡器,频率除2作为sysclk=12mhz选择内部振荡器sfrpage=oxof;选择特殊功能寄存器页地址0scicl=0scicl+4;void portlolnit(void)/i/o 口初始化sfrpage=oxof;

16、p0mdin=0xe7;pomdout=ox83;p0skip=0xf9;p0.3、p0.4模拟量输入/p0.0、p0.1、p0.7 推拉式输出/po.l、p0.2被交叉开关跳过plmdin=oxff;plmdout=oxff;plskip=oxff;p1设置为数字量输入/p1设置为推拉式输出/p1被交叉开关跳过p2mdin=0xff;p2mdout=oxff;p2skip=0xff;/p2设置为数字量输入/p2设置为推拉式输出p3mdin=0xff;p3mdout=oxff;/p3设置为数字量输入/p3设置为推拉式输出p3skip=0xff;p4mdout=oxff;/p4.5设为oc输出,

17、其余推拉式输出xbr0=0x01;xbrl=oxco;sfrpage=oxoo; return;使能uart禁止弱上拉,交叉开关允许void xramlnit(void)外部数据储存器初始化isfrpage=oxof; emi0cf=0x07;sfrpage=0x00; return;引脚复用方式void smblnit(void)f/i2c总线初始化smb0cf=0xcl; return;/定时器t1溢出作为时钟void uartlnit(void)异步串口通信接口初始化scono=oxoo; return;/10 位 uartvoid daclnit(void)/d/a转化器初始化ida0

18、cn=0xf2; return;/ida0使能,写ida0h触发dac输出更新,2ma满度输出void adclnit(void)/a/d初始化ref0cn=0x08;amx0p=0x08;amx0n=0xlf;adc0cf=0x2c;选择vdd作为电压基准正端接p0负端接地左对齐,转换时钟2mhzadc0cn=0x80; return;void intolnit(void)it01cf=0x05;ito=1; return;外部中断初始化选择p0.5为into/into下降沿触发void timerlnit(void)定时器初始化16位自动重装定时10ms双8位自动重装载,系统时钟1/12定

19、时looustmod=oxll;ckcon=oxoo;tl0=0x78;th0=0xec;tll=oxoc;thl=oxfe;tmr2cn=0x04;tmr2rll=oxfo;tmr2rlh=0xd8;tmr3cn=0x0c;tmr3rll=0xe0;tmr3rlh=oxff;tro=1;tr1=1;return;/to、t1 方式 1系统时钟12分频定时10ms定h'j' 0.5ms/pca初始化允许pca计数器/定时器禁止看门狗定时器void pealnit(void)pca0cn=0x40;pca0md=0x00; return;void interrupts!nit(v

20、oid) 中断系统初始化ie0=0;清into中断标志exo=1;pxo=o;eto=1;et1=1;/et2=1;/eie1=0x08;/允许 adc 中断/eso=1;ea=1;return;void initdevice(void)osclnit();portlolnit();xramlnit();/smblnit();/uartlnit();daclnit();/adclnit();lntolnit();timerl nit();pcalnit();lnterruptslnit(); return;/* function:检查lcd是否空闲子程序*/ void checklcd()uc

21、har temp = oxoo;uchar xdata *addr;while (1)addr=rcomaddr; temp=*addr; temp &二 0x80;if(temp = 0x00)break;*void writecom(uchar n)uchar xdata *addr;checklcdf);addr=wcomaddr;*addr 二n;/*function:led写数据子程序*/ void writedata(uchar m)uchar xdata *addr;checklcd(); addr=wdataddr;*addr = m;*function:led初始化子

22、程序void lnsitilcd()writecom(0x30);writecom(oxol);writecom(oxoc); 设为基本指令集清屏开整体显示* 显 子无呈 f?* * * 函数功能:在指定位置显示指定长度的字符串入口参数:怙是字符串m表示显示的起始地址,k表示字符串长度*/*void disphan( uchar code *a,uchar m,uchar k)uchar dat, i, j, length; length = k/2;writecom(m);for (i=0;i < length;i+)j = 2*i; dat = aj;提取国标码第一字节/提取国标码第二字节writedata(dat);dat = aj+l;writedata(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论