PIC单片机C语言编程实例Word格式文档下载.docx

上传人:b****1 文档编号:5251891 上传时间:2023-05-04 格式:DOCX 页数:29 大小:23.36KB
下载 相关 举报
PIC单片机C语言编程实例Word格式文档下载.docx_第1页
第1页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第2页
第2页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第3页
第3页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第4页
第4页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第5页
第5页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第6页
第6页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第7页
第7页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第8页
第8页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第9页
第9页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第10页
第10页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第11页
第11页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第12页
第12页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第13页
第13页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第14页
第14页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第15页
第15页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第16页
第16页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第17页
第17页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第18页
第18页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第19页
第19页 / 共29页
PIC单片机C语言编程实例Word格式文档下载.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PIC单片机C语言编程实例Word格式文档下载.docx

《PIC单片机C语言编程实例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《PIC单片机C语言编程实例Word格式文档下载.docx(29页珍藏版)》请在冰点文库上搜索。

PIC单片机C语言编程实例Word格式文档下载.docx

//读液晶显示器状态子程序

voidLCDSTA1()

while

(1){

TRISD=0XFF;

//设置D口为输入

RB0=1;

//E1=1

RA3=0;

//E2=0

RE0=1;

//R/W=1

RE1=0;

//A0=0

if(RD7==0)break;

//为忙状态,则继续等待其为空闲

//对液晶显示器发指令子程序(指令保存在TRANS寄存器中)

voidTRANS1()

LCDSTA1();

//判断液晶是否为忙

TRISD=0X00;

//置D口为输出

RE0=0;

//R/W=0

PORTD=TRANS;

//需要写入的命令字送入数据线

RB0=0;

//E1=0写入指令

//对液晶显示器写数据子程序(数据保存在WRITE寄存器中)

voidWRITE1()

TRANS=CLMADD;

//设置列地址

TRANS1();

//查询液晶是否为空闲

//D口为输出

//E1=1

//E2=0

//R/W=0

RE1=1;

//A0=1

PORTD=WRITE;

//需要写入的数据放入D口

//E1=0,写入数据

CLMADD++;

//列地址加1

//开E1显示子程序

voidDISP1()

while

(1)

TRANS=0XAF;

//送出控制命令

//判断液晶是否为空闲

if(RD5==0)break;

//如果液晶没被关闭,则继续关

//E1边清屏子程序

voidCLEAR1()

PAGEADD=0xB8;

//设置页地址代码

for(PAGENUM=0X04;

PAGENUM>

0;

PAGENUM-){

TRANS=PAGEADD;

CLMADD=0x00;

//设置起始列

for(CLMSUM=0X50;

CLMSUM>

CLMSUM-){

WRITE=0X00;

WRITE1();

//写入00H以清屏

PAGEADD++;

//页号增1

//关E1显示子程序

voidDISOFF1()

TRANS=0XAE;

//发出控制命令

//D口设置为输入

if(RD5==1)break;

有了以上的通用子程序,就可以构造出各种显示程序,如字符。

汉字。

曲线等。

执行这些程序前,必须对液晶进行初始化。

初始化的顺序为:

关显示→正常显示驱动设置→占空比设置→复位→ADC选择→清屏→开显示,程序如下:

//E1边初始化

voidlcd1()

DISOFF1();

//关显示E1

TRANS=0XA4;

//静态显示驱动

TRANS=0XA9;

//占空比为1/32

TRANS=0XE2;

//复位

TRANS=0XA0;

//ADC选择正常输出

CLEAR1();

//清屏

DISP1();

//开显示

15.4程序清单

下面给出一个已经在模板上调试通过的程序。

注意在调试该程序时,需把模板上的J9跳针短接。

#include<

pic.h>

//该程序用于液晶显示功能的演示

//运行程序后,液晶上显示"

电流有效值"

和"

电压有效值"

字样

//系统总的初始化子程序

//存放总页数寄存器

constchartable[192]={0X00,0XF8,0X48,0X48,0X48,0X48,0XFF,0X48,

0X48,0X48,0X48,0XFC,0X08,0X00,0X00,0X00,

0X00,0X07,0X02,0X02,0X02,0X02,0X3F,0X42,

0X42,0X42,0X42,0X47,0X40,0X70,0X00,0X00,//"

电"

0X00,0X00,0XFE,0X02,0X82,0X82,0X82,0X82,

0XFE,0X82,0X82,0X82,0XC3,0X82,0X00,0X00,

0X40,0X30,0X0F,0X40,0X40,0X40,0X40,0X40,

0X7F,0X40,0X42,0X44,0X4C,0X60,0X40,0X00,//"

压"

0X04,0X04,0X04,0X84,0XE4,0X3C,0X27,0X24,

0X24,0X24,0X24,0XF4,0X24,0X06,0X04,0X00,

0X4,0X2,0X1,0X0,0XFF,0X9,0X9,0X9,

0X9,0X49,0X89,0X7F,0X0,0X0,0X0,0X0,//"

有"

0X88,0X48,0XB8,0X9,0XA,0X98,0X2C,0X48,

0X20,0XD0,0X1F,0X10,0X10,0XF8,0X10,0X0,

0X40,0X20,0X18,0X5,0X2,0XD,0X30,0X80,

0X80,0X41,0X36,0X8,0X37,0XC0,0X40,0X0,//"

效"

0X80,0X40,0X20,0XF8,0X7,0X4,0XE4,0XA4,

0XA4,0XBF,0XA4,0XA4,0XF6,0X24,0X0,0X0,

0X0,0X0,0X0,0XFF,0X40,0X40,0X7F,0X4A,

0X4A,0X4A,0X4A,0X4A,0X7F,0X40,0X40,0X0,//"

值"

0X10,0X22,0X64,0XC,0X80,0X44,0X44,0X64,

0X55,0X4E,0X44,0X54,0X66,0XC4,0X0,0X0,

0X4,0X4,0XFE,0X1,0X0,0X80,0X40,0X3F,

0X0,0XFF,0X0,0X3F,0X40,0X40,0X70,0X0//"

流"

};

//A0=1

//E2边的处理部分

voidLCDSTA2()

//E1=0

RA3=1;

//E2=1

//对液晶显示器发指令子程序指令保存在TRANS寄存器中

voidTRANS2()

LCDSTA2();

//E2=0写入指令

voidWRITE2()

TRANS2();

//E2=0,写入数据

//开E2显示子程序

voidDISP2()

//E2边清屏子程序

voidCLEAR2()

WRITE2();

//关E2显示子程序

voidDISOFF2()

//E2边初始化

voidlcd2()

DISOFF2();

CLEAR2();

DISP2();

//LCD的E1边显示函数,调用一次该函数,则在相应的位置显示相应的字

voiddis1()

TRANS=row;

i=i*32;

//i变成数组指示指针

for(k=0;

k<

16;

k++){

WRITE=table[i+k];

//查得需要显示的字节

//在WRITE1子程序里面,列地址加1

CLMADD=CLMADD-16;

//恢复列地址

PAGEADD=PAGEADD+1;

//页地址加1

for(;

32;

//在WRITE1子程序里面,列地址已经加1

//LCD的E2边显示函数,调用一次该函数,则在相应的位置显示相应的字

voiddis2()

//主程序

main()

INITIAL();

//系统初始化

lcd1();

//E1边初始化

lcd2();

//E2边初始化

row=0XC0;

//显示起始列为第0行

//以下显示不同的字符

PAGEADD=0XB8;

//显示起始页为第0页

CLMADD=0X00;

//起始列为第0列

i=0;

//显示数组中对应的第一个字

dis1();

//调用显示函数

CLMADD=16;

//起始列为第16列

i=1;

//显示数组中对应的第二个字

CLMADD=32;

//起始列为第32列

i=2;

//显示数组中对应的第三个字

CLMADD=48;

//起始列为第48列

i=3;

//显示数组中对应的第四个字

CLMADD=0;

i=4;

//显示数组中对应的第五个字

dis2();

//调用E2边显示函数

PAGEADD=0XBA;

//显示起始页为第2页

i=5;

//显示数组中对应的第六个字

 

PIC单片机C语言编程实例——秒表

程序清单

该源程序已在实验板上调试通过,读者可直接引用,并可利用软件编程的灵活性,加以拓展,实现更为复杂的功能。

math.h>

//此程序实现计时秒表功能,时钟显示范围00.00~99.99秒,分辨度:

0.01秒

unsignedchars0,s1,s2,s3;

//定义0.01秒。

0.1秒。

1秒。

10秒计时器

unsignedchars[4];

unsignedchark,data,sreg;

unsignedinti;

consttable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};

//不带小数点的显示段码表

consttable0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};

//带小数点的显示段码表

//TMR0初始化子程序

voidtmint()

T0CS=0;

//TMR0工作于定时器方式

PSA=1;

//TMR0不用分频

T0IF=0;

//清除TMR0的中断标志

T0IE=1;

//TMR0中断允许

//spi显示初始化子程序

voidSPIINIT()

PIR1=0;

SSPCON=0x30;

SSPSTAT=0xC0;

//设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送。

与"

74HC595,当其

//SCLK从低到高跳变时,串行输入寄存器"

的特点相对应

TRISC=0xD7;

//SDO引脚为输出,SCK引脚为输出

TRISA5=0;

//RA5引脚置为输出,输出显示锁存信号

//系统其它部分初始化子程序

voidinitial()

TRISB1=0;

TRISB2=0;

TRISB4=1;

TRISB5=1;

//设置与键盘有关的各口的输入输出方式

RB1=0;

RB2=0;

//建立键盘扫描的初始条件

//SPI传输数据子程序

voidSPILED(data)

SSPBUF=data;

//启动发送

do{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2