单片机C语言基础编程源码六则

时间:2023-03-19来源:佚名

1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直到0,然后再从0逐渐增大,一直这样输出。试编写一函数,使从P2口输出的值产生三角波,并且使三角波的周期和最大值通过入口参数能够改变。

#include #define DAC0832 XBYTE[0x7FFF] void san(unsigned char max1,unsigned char zhou1)

{ unsigned char i,j,max,zhou;max=max1;zhou=zhou1;while(1)

{ for(i=0;i0,i——)

{ DAC0832=i;for(j=0;j1,j——)

{ for(i=0;i*(ptr i 1))

{ temp=*(ptr i 1);*(ptr i 1)=*(ptr i);*(ptr i)=temp;} *ptr1=*(ptr 20/2);}

2.在数字滤波中有一种叫做“去极值平均滤波”技术,就是对采集的数据按照从大到小或者从小到大进行排序,然后去掉相同数目的极大值和极小值,对中间部分数据求算术平均值作为采样值。试编写一函数,对存放在片外数据存储器中从0x150开始的16个单元的采样数据,用选择法进行“去极值平均滤波”,把得到的采样数据存放到0x14f单元中。

void teaf()

{ unsigned char xdata *ptr;unsigned char data temp,i,j,*ptr1;ptr=0x150;ptr1=0x4f;for(j=16;j>1,j——)

{ for(i=0;i*(ptr i 1))

{ temp=*(ptr i 1);*(ptr i 1)=*(ptr i);*(ptr i)=temp;} temp=0;for(i=0;i void main()

{ unsigned char data *dpt;unsigned char i=0,temp;dpt=0x40;while(1)

{ temp=_getchar();if(temp==0x0d)

break;*(dpt i)=temp;i ;}

3.利用库函数scanf编写一函数,实现从单片机串行口接收数据的C51程序,把接收的数据存放在片外数据存储器从0x240开始的区域,遇到回车符CR(ASCII码是0x0d)结束。

include void main()

{ unsigned char xdata *xdpt;unsigned char i=0,temp;xdpt=0x240;while(1)

{ scanf(“%c”,if(temp==0x0d)

break;*(xdpt i)=temp;i ;}

4.利用库函数putchar编写一函数,实现从单片机串行口发送数据的C51程序,发送的数据存放在片内数据存储器从0x50开始的区域,遇到回车符CR(ASCII码是0x0d)结束。

include void main()

{ unsigned char data *dpt;unsigned char i=0;dpt=0x50;while(*(dpt i)!=0x0d)

{ putchar(*(dpt i));i ;}

5.利用库函数printf编写一函数,实现从单片机串行口发送数据的C51程序,发送的数据存放在片外数据存储器从0x100开始的区域,遇到回车符CR(ASCII码是0x0d)结束。

include void main()

{ unsigned char xdata *xdpt;unsigned char i=0;xdpt=0x100;while(*(xdpt i)!=0x0d)

{ printf(“%c”,*(xdpt i));i ;}

6.编写一定时器/计数器0定时100ms中断处理函数,使函数实现时钟的功能,即产生时钟的秒、分钟和小时。设定时初值的高、低字节分别为TIMER_H和TIMER_L.设fosc=6mhz #include sfr TIMER_H=0x8b;sfr TIMER_L=0x8a;unsigned char data shi,fen,miao,bfm;

void main()

{ TMOD=0x01;TIMER_H=15536/16;TIMER_L=15536;ET0=1;EA=1;TR0=1;while(1);}

void time0_int() interrupt 1 { TIMER_H=15536/16;TIMER_L=15536;bfm ;if(bfm==10)

{ bfm=0;miao ;} if(miao==60)

{ miao=0;fen ;} if(fen==60)

{ fen=0;shi ;} if(shi==24)

{ shi=0;}

相关阅读

相量法计算单相交流电路的方法,简单明了

【实例】 如图1-1所示,已知电源为交流50Hz,电压U 为220V,R 1 为60Ω,R 2 为30Ω, 为80Ω,L 2 为0.159H,C 为40μF。试求: ①回路电流I 1 、I 2 和I 。 ②有功功率P 、无功功率Q 和视在功率S...
2023-06-13
相量法计算单相交流电路的方法,简单明了

松下小型PLC的FP1单元模块和指令功能

  松下电工生产有FP-e、FP0、FP1、FP-X、FPZ、FP2、FP3、FP10等系列PLC产品。其中FP-e、FPO、FP1、FP-X、FPZ是小型PLC,FP2、FP3、FP10是中大型PLC。所有系列产品都使用相同的编程工具软件FPWIN...
2023-06-27
松下小型PLC的FP1单元模块和指令功能

什么叫延边三角形降压起动?

延边三角形降压起动和星形一三角形降压起动的原理相似,即在起动时将电动机 定了绕组的一部分接成星形(丫),另一部分接成三角形( △ ),从图形上看好像将一个三角形( △...
2023-03-21

零线断了,回路就一定会断开吗?

【免费下载】 PLC软件下载_PLC软件安装教程_PLC手册下载_PLC案例下载! 【免费学习】 变频器精品课程_西门子PLC精品教程_三菱PLC精品教程! 零线断了,家里的回路就一定会断吗?嘿,还真...
2023-06-27

功率因数 补偿容量计算 无功补偿提升线路电压质量 低压电容柜装用注意事项

在交流电路中,负载除了消耗有功功率的外,还存在一些消耗无功功率的负载,如果电网无法提供足够的无功功率,就会导致电压下降、线路损耗增加等问题。由于感性、容性或非线性负荷的...
2024-08-21
功率因数 补偿容量计算 无功补偿提升线路电压质量 低压电容柜装用注意事项

热销商品

加厚abs安全帽电工建筑工地程施工领导监理透气防砸头盔可印字V型

这款加厚ABS安全帽专为电工、建筑工地施工人员、领导及监理设计,采用高强度ABS工程塑料,抗冲击、防砸性能优异,有效保障头部安全。帽体加厚设计,增强耐用性与防护等级...
5.8

欧普led筒灯3w孔灯超薄桶灯吊顶天花灯过道嵌入式洞灯客厅5w

欧普LED筒灯是一款高品质嵌入式照明产品,适用于客厅、过道、吊顶等多种场景。采用优质LED光源,提供3W和5W两种功率选择,光线柔和均匀,显色指数高,有效还原真实色彩。超...
7.45

水口钳高硬度模型剪钳电子钳工业级口水剪斜嘴钳偏口斜口专用钳子

水口钳高硬度模型剪钳是一款工业级精密工具,专为电子、模型制作及精细作业设计。采用优质高碳钢材质,经热处理工艺打造,具备卓越的硬度和耐磨性,可轻松剪切金属引脚、...
4.8

170电子剪钳II 如意斜口钳 工业斜嘴钳水口钳 模型剪塑胶钳尖嘴钳

170电子剪钳II如意斜口钳是一款专业级精密工具,集工业斜嘴钳、水口钳、模型剪、塑胶钳与尖嘴钳功能于一体,适用于电子维修、模型制作、手工艺及精密作业。其采用优...
4.5

安全帽国标工地加厚施工领导透气安全头盔建筑工程监理免费印字

本款安全帽严格遵循国家GB 2811-2019标准,专为建筑工程、工地施工及监理人员设计。采用高强度ABS工程塑料,加厚壳体有效抗冲击,保障头部安全。帽体轻盈透气,内置可调...
10

网站栏目